Mahlzeit,
ich bin etwas verwirrt zu folgendem Szenario, angenommen ich entferne
aus einem Haushalts PC mit Windows 10 und einem i7 Prozessor alle RAM
Module, startet dieser nicht mehr richtig (Oder andere PCs). So sind
zumindest die aussagen vieler aus dem Internet. Ich selbst konnte es
noch nicht testen.
Nun verstehe ich nicht, warum das so ist. Liegt das an einer Abschaltung
vom Mainboard / BIOS? Grundsätzlich müsste der PC doch ganz normal
funktionieren wie davor? Eventuell Langsamer da nicht so viele Befehle
im RAM vorbereitet werden. Meiner Meinung nach verhält sich der Cache
gleich dem externen RAM Riegel bis auf Schnelligkeit und Kapazität.
Zumindest bei neueren Systemen. Oder stimmt das so nicht?
Oder liegt das ganze an Windows selbst da es min. 1GB RAM Anforderungen
hat und das ganze auf dem Cache natürlich dann keinen Platz mehr hat?
Bitte klärt mich auf, vielen dank (:
mfg
Albrecht
Das erste Programm, dass der Rechner startet, nennt sich BIOS. Das
befindet sich in einem ROM.
Dieses Programm benötigt bereits RAM.
Ohne RAM hat man in der Regel nur eine minimale Funktionen, nämlich die
Ausgabe von Pieps-Tönen die dir sagen wollen, dass kein RAM verfügbar
ist.
Viel mehr geht ohne RAM nicht.
Albrecht schrieb:> aus einem Haushalts PC mit Windows 10 und einem i7 Prozessor alle RAM> Module, startet dieser nicht mehr richtig (Oder andere PCs).
Logisch. Was macht ein Auto ohne Räder?
> Nun verstehe ich nicht, warum das so ist.
Siehe oben.
> Liegt das an einer Abschaltung> vom Mainboard / BIOS?
Vermutlich läuft nur das BIOS an, prüft ob und wieviel RAM da ist und
stellt fest, uuuuups, keiner zu hause.
> Grundsätzlich müsste der PC doch ganz normal> funktionieren wie davor?
Jain. Das BIOS läuft vermutlich direkt aus dem Flash, danach muss RAM
her.
> Eventuell Langsamer da nicht so viele Befehle> im RAM vorbereitet werden.
Unsinn. Die Menge an RAM bestimmt nicht die Arbeitsgeschwindigkeit beim
Bootvorgang.
> Meiner Meinung nach verhält sich der Cache> gleich dem externen RAM Riegel bis auf Schnelligkeit und Kapazität.
Theoretisch schon. Die Caches sind aber vermutlich beim Booten erstmal
deaktiviert, die schaltet das BIOS zu.
> Oder liegt das ganze an Windows selbst da es min. 1GB RAM Anforderungen> hat und das ganze auf dem Cache natürlich dann keinen Platz mehr hat?
So weit kommst du ohne RAM gar nicht.
> Bitte klärt mich auf, vielen dank (:
Welchen praktischen Nutzen hat diese Erkenntnis?
Falk B. schrieb:> Logisch. Was macht ein Auto ohne Räder?
Verstehe ich hier nicht da die "Räder" in dem Sinne nicht fehlen.
Falk B. schrieb:> Theoretisch schon. Die Caches sind aber vermutlich beim Booten erstmal> deaktiviert, die schaltet das BIOS zu.Falk B. schrieb:> Vermutlich läuft nur das BIOS an, prüft ob und wieviel RAM da ist und> stellt fest, uuuuups, keiner zu hause.
Wie soll das dann funktionieren? Das BIOS wird ja von der CPU bearbeitet
und ohne Cache und Arbeitsspeicher wird das ganze dann Schwierig oder
wird ein BIOS so programmiert, keine Temporären Speicher außer den
Prozessorregistern zu brauchen? Daher muss der Cache ja immer in
Benutzung sein oder nicht?
Hätten die Kompletten Caches ausreichend Speicher, müsste der PC doch
dann starten? Würde das BIOS keinen Fehler erzeugen. So verstehe ich das
nun zumindest?
Falk B. schrieb:> Welchen praktischen Nutzen hat diese Erkenntnis?
Für den Ruhigen Schlaf.
mfg
Albrecht
Vergiss die Caches in der CPU, die haben damit nichts zu tun.
Die Caches ersetzen kein RAM. Sie dienen lediglich dazu, wiederholte
Zugriffe auf die gleichen Speicherbereiche zu beschleunigen. Wo kein
Speicher ist, gibt es nichts zu beschleunigen.
Theoretisch könnte man Cache als Arbeitsspeicher missbrauchen. Nur wird
das beim PC halt nicht gemacht, da er dafür nicht vorgesehen ist.
Ich bin mit PC aufgewachsen, die gar keinen Cache hatten.
Nun du sprichst von moderner Hardware und da muss weil SPI Rom das BIOS
erst Mal ins Ram kopiert werden bevor es gestartet werden kann...
Wenn also kein Ram da ist geht das nicht. Das ist übrigens schon sehr
lange so. Ab dem 286 NEAT Chipsatz. Ja ich bin ein alter Sack.
Albrecht schrieb:> Wie soll das dann funktionieren? Das BIOS wird ja von der CPU bearbeitet> und ohne Cache und Arbeitsspeicher wird das ganze dann Schwierig oder> wird ein BIOS so programmiert, keine Temporären Speicher außer den> Prozessorregistern zu brauchen?
Theoretisch denkbar, praktisch glaube ich das eher nicht.
> Daher muss der Cache ja immer in> Benutzung sein oder nicht?
Oder nicht. Cache ist optimal.
> Hätten die Kompletten Caches ausreichend Speicher, müsste der PC doch> dann starten?
Nö, denn er ersetzt keinen echten RAM, auch wenn das rein theoretisch
möglich wäre.
>> Welchen praktischen Nutzen hat diese Erkenntnis?>> Für den Ruhigen Schlaf.
Trink ein Bier. Zähle Bitcoins. Oder summe die Internationale.
Ein PC arbeitet nach dem Urladerprinzuip.
Beim Eischalten ist der BIOS-Flash aktiv.
Da ist dann ne Startroutine drinne, die,
wenn dann RAM da ist, wird das BIOS im RAM
ganz oben entpackt.
Danach wird der Stack eingerichtet und das Flash
ausgeblendet.
Das im RaAM entpackte Bios wir dann aufgerufen,
das dann die Interrupttabelle aufbaut und nen
Warmstart auslöst.
mfg
Stefan ⛄ F. schrieb:> Vergiss die Caches in der CPU, die haben damit nichts zu tun.>> Die Caches ersetzen kein RAM. Sie dienen lediglich dazu, wiederholte> Zugriffe auf die gleichen Speicherbereiche zu beschleunigen. Wo kein> Speicher ist, gibt es nichts zu beschleunigen.
Okay das Akzeptiere ich ^^
Aber warum kann dann der PC ohne Arbeitsspeicher überhaupt bis zum BIOS
kommen? Zumindest ist es bei manchen so laut Internet?
Ich vergleiche das immer gern mit (sehr)kleinen Prozessoren (Attiny,
Atmega, pic8 usw.), man kann ohne RAM Programmieren (also Ausschließlich
ROM und Register) aber ich kann mir nicht vorstellen dass das beim BIOS
gemacht wurde da es doch meist Komplexer ist?
Stefan ⛄ F. schrieb:> Ich bin mit PC aufgewachsen, die gar keinen Cache hatten.
Ich auch aber hab in der Schule nicht aufgepasst.
mfg
Albrecht
Albrecht schrieb:> Aber warum kann dann der PC ohne Arbeitsspeicher überhaupt bis zum BIOS> kommen? Zumindest ist es bei manchen so laut Internet?Lotta . schrieb:> Ein PC arbeitet nach dem Urladerprinzuip.> Beim Eischalten ist der BIOS-Flash aktiv.> Da ist dann ne Startroutine drinne, die,> wenn dann RAM da ist, wird das BIOS im RAM> ganz oben entpackt.> Danach wird der Stack eingerichtet und das Flash> ausgeblendet.> Das im RaAM entpackte Bios wir dann aufgerufen,> das dann die Interrupttabelle aufbaut und nen> Warmstart auslöst.
Danke dann hat sich meine Frage beantwortet, danke (:
Falk B. schrieb:> Nö, denn er ersetzt keinen echten RAM, auch wenn das rein theoretisch> möglich wäre.
Okay danke, dass bringt licht ins Dunkle.
Falk B. schrieb:> Trink ein Bier. Zähle Bitcoins. Oder summe die Internationale.
Hoffe es hilft (:
mfg
Albrecht
Albrecht schrieb:> Aber warum kann dann der PC ohne Arbeitsspeicher überhaupt bis zum BIOS> kommen? Zumindest ist es bei manchen so laut Internet?
Als ich dir antwortete dachte ich an PC mit Bios in Eproms. Diese haben
eine direkte parallele Schnittstelle zur CPU, ebenso wie das RAM (falls
vorhanden). Der Code ist also direkt ausführbar, ohne Umwege.
Inzwischen wiesen ein paar Leute allerdings darauf hin, dass aktuelle PC
ihr Bios üblicherweise über eine serielle SPI Schnittstelle ins RAM
kopieren, bevor es ausgeführt wird.
Dazu wird wohl in der CPU ein kleiner Bootloader mitgeliefert sein, der
beim Einschalten ausgeführt wird. Also eine weitere Zwischenstufe vor
dem BIOS.
Die hier beliebten ESP Chips machen es ebenso.
Ganz am Anfang kommt ein BIOS komplett ohne jedwedes RAM aus. Es gibt
schlicht keines. Es startet also mit Code, der entsprechend geschrieben
ist. Das ist die Domäne von Assembler, wobei es aber mit ROMCC auch
einen C Compiler gibt, der rein mit Registern auskommt.
Cache lässt sich durchaus als Ersatz von RAM nutzen, wenn entsprechend
konfiguriert. Das ist folglich die nächste Phase, so läuft es bis zur
Konfiguration des Hauptspeichers.
1. Zum Bullshit mit dem Cache:
Richtig ist, dass im üblichen Betriebszustand (also im BS wie Linux,
Windows, etc.) die CPU den Cache nicht als Speicher nutzen kann.
Allerdings läßt sich sehr wohl der Cache als RAM nutzen, wenn das
entsprechend konfiguriert wird. Für die alten Säcke hier: Der dazu
nötige Befehl invd ist seit dem ranzalten 486er bereits in der ISA
vorhanden.
Genutzt wird das natürlich.
Ein bisschen - ebenfalls ranzalte (daher sollte das eigentlich bekannt
sein...) - Literatur dazu:
https://www.coreboot.org/images/6/6c/LBCar.pdf
2. Der Bullshit mit dem SPI-Flash
Auch hier gilt natürlich, dass PCs ebenso wie halbwegs aktuelle
Controller (ESP32, STM32, etc.) XIP beherrschen.
Beim PC ist das ein bisschen komplexer, da das dort über den Chipsatz
läuft, aber letztlich führt die CPU natürlich direkt Code aus dem Flash
aus.
Literatur hierzu gibt es ebenfalls zuhauf bei Intel. Stichwort z.B.
eSPI.
Stefan ⛄ F. schrieb:> Inzwischen wiesen ein paar Leute allerdings darauf hin, dass aktuelle PC> ihr Bios üblicherweise über eine serielle SPI Schnittstelle ins RAM> kopieren, bevor es ausgeführt wird.
Direktzugriff per Hardware, nur eben seriell statt parallel. Ist nicht
sonderlich schnell, muss es aber auch nicht sein.
In PCs gibt es Restbestände des uralten ISA-Busses, auf nurmehr 7
Leitungen mit einer Art Paket-Protokoll eingedampft: Der LPC (Low Pin
Count) Bus. Der ist ggf auch fürs BIOS-ROM vorgesehen. Die Hardware
eines PCs vom Prozessor über Zwischenbusse bis zum LPC kann ab Reset auf
Zugriff darauf eingerichtet sein.
John Doe schrieb:> Stichwort z.B. eSPI.
Ersetzt das BIOS am LPC durch eines mit SPI.
Albrecht schrieb:> Okay das Akzeptiere ich ^^> Aber warum kann dann der PC ohne Arbeitsspeicher überhaupt bis zum BIOS> kommen? Zumindest ist es bei manchen so laut Internet?
Glaubst Du jeden Mist der im Internet steht? Zeig doch mal einen Link.
Albrecht schrieb:> Ich vergleiche das immer gern mit (sehr)kleinen Prozessoren (Attiny,> Atmega, pic8 usw.), man kann ohne RAM Programmieren (also Ausschließlich> ROM und Register) aber ich kann mir nicht vorstellen dass das beim BIOS> gemacht wurde da es doch meist Komplexer ist?
Warum nicht? Die ersten Code-Zeilen mit Sicherheit, dass ist reiner
Assembler Code. Die CPUs haben soviele Arbeitsregister, da kommt man
ohne RAM schon ein ganzes Stück weit. Bis zum Piepsen wirds auf
jedenfall reichen.
Thomas Z. schrieb:> Nun du sprichst von moderner Hardware und da muss weil SPI Rom das BIOS> erst Mal ins Ram kopiert werden bevor es gestartet werden kann...
Nein. Das wird dynamisch von der Northbridge (NB) gemapt. D.h. CPU macht
Speicherzugriff -> NB erkennt BIOS Bereich -> NB führt SPI Zugriffe
durch um den benötigten Code aus dem Flash zu Laden -> NB liefert Daten
an CPU. Die CPU merkt nicht mal worauf sie gerade physikalisch zugreift
(höchsten daran das es länger dauert...)
https://www.intel.com/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf> Wenn also kein Ram da ist geht das nicht. Das ist übrigens schon sehr> lange so. Ab dem 286 NEAT Chipsatz. Ja ich bin ein alter Sack.
Möglich das man das früher so gemacht hat.
Zu beachten zu zudem, dass es in PCs neben dem Hauptprozessor
üblicherweise auch noch eines oder mehrere integrierte Steuersysteme
gibt. Das bekannteste dürfte Intels berüchtigte Management Engine sein.
Beim Startverfahren spielt die eine nicht unwesentliche Rolle.
Das ändert zwar nichts am Problem, dass man irgendwo anfangen muss, aber
es wird wohl eher die ME (bzw. AMDs Pendant) sein, die als Erste aus dem
ROM startet. Und das u.U. bereits mit Verfügbarkeit des Standby-Stroms,
nicht erst beim eigentlichen Power-Up.
(prx) A. K. schrieb:> John Doe schrieb:>> Stichwort z.B. eSPI.>> Ersetzt das BIOS am LPC durch eines mit SPI.
Unter anderem, eSPI ersetzt aber auch viel mehr. Sinn und Zweck des
"neuen" (seit 2013?) Busses ist ja, etliche Leitungen auf dem Mainboard
einzusparen, daher wird beim eSPI vieles inBand mit verwurstet, was
vorher out of Band lief (SMBus, GPIO).
Das BIOS testet ja den Speicher (sowie das Groß der Hardware) und bricht
üblicherweise mit einer Beep-Sequenz (und einer Schlüsselzahl auf dem
Bus) ab, um den Fehler zu signalisieren. Dafür ist zu dem Zeitpunkt noch
kein Speicher nötig.
Aber Abbruch bedeutet aber auch: Bis hier hin und nicht weiter.
Die Hersteller sind, wie auch viele Benutzer, der Meinung: Ohne Speicher
lohnt es sich nicht weiterzumachen. Ich schließe mich denen an.
Stefan ⛄ F. schrieb:> Theoretisch könnte man Cache als Arbeitsspeicher missbrauchen. Nur wird> das beim PC halt nicht gemacht, da er dafür nicht vorgesehen ist.Falk B. schrieb:>> Hätten die Kompletten Caches ausreichend Speicher, müsste der PC doch>> dann starten?>> Nö, denn er ersetzt keinen echten RAM, auch wenn das rein theoretisch> möglich wäre.
Kann eigentlich prinzipbedingt schon garnicht gehen (davon ausgehend wir
reden hier von dem Hardware-Cache das in einer CPU verbaut ist).
Der Cache hat keinen eigenständigen Adressbereich den die CPU ansprechen
könnte. Diese greift ja auf eine Adresse zu die eigentlich dem RAM
zugeordnet ist und der wird von der Hardware "dazwischen" abgefangen,
wenn deren Cache-Controller meint die angeforderten Daten habe ich schon
in der Cache-Line (und die "Stimmen" auch noch -> *1). Dafür müssen die
Daten aber mindestens schon einmal aus dem RAM erfolgreich gelesen
worden sein.
Dadurch das der Cache keinen eigen Adressbereich hat kann die MMU den
auch nicht in den (virtuellen) Adressraum einer Anwendung mappen und
diese somit garnicht ausgeführt werden. Mit dem DMA-Kontroller genauso,
der kann garkeine Daten irgendwo abholen und direkt im Cache ablegen
mangels eigenständigem Adressraum.
Von der Funktionsweise her ist der Cache der Teil der für das System
vollständig Transparent ist und es überhaupt nicht mitbekommt ob der da
ist oder nicht. Ist halt nur ggf. etwas langsamer, aber alles
funktioniert noch.
*1) https://de.wikipedia.org/wiki/Cache-Koh%C3%A4renzhttps://de.wikipedia.org/wiki/Cache-Konsistenz
Irgend W. schrieb:> Kann eigentlich prinzipbedingt schon garnicht gehen (davon ausgehend wir> reden hier von dem Hardware-Cache das in einer CPU verbaut ist).
Komischerweise geht es trotzdem. ;-)
Natürlich ist das nicht die normale Betriebsweise eines Caches. Aber
wenn die Cache-Tags die passenden Werte enthalten, entsteht ein
durchgängiger RAM-Bereich, der ohne Backing im RAM auskommt.
Schöne theoretische Abhandlung - lies dir mal die PDFs oben durch, dann
siehst du, dass es praktisch halt doch geht ;-)
Prinzipiell muss man aber schon die Assoziativität und Cache Line Size
berücksichtigen. Wenn aber sogar AMD selbst entsprechendes in seinen
Developer Guides beschreibt, ist es wohl auch offiziell abgesegnet.
Johannes schrieb:> Schöne theoretische Abhandlung - lies dir mal die PDFs oben durch, dann> siehst du, dass es praktisch halt doch geht ;-)
Das Kohärenzproblem muss man freilich berücksichtigen. Das könnte die
Eignung eines DRAM-freien Rechners möglicherweise auf einen Core mit
eingeschränkter I/O reduzieren.
Albrecht schrieb:> Bitte klärt mich auf, vielen dank (:
Wobei der Titel des Threads sich nicht gut mit den Inhalt verträgt. Ein
PC schleppt gut 4 Jahrzehnte Geschichte mit sich herum. Was dazu
geschrieben wurde, hat viel mit dem von dir im Text genannten PC zu tun.
Aber wenig mit anderen Systemen wie Raspberry Pi oder
STM32-Microcontroller, die besser zum Titel passen als ein PC.
(prx) A. K. schrieb:> Albrecht schrieb:>> Bitte klärt mich auf, vielen dank (:>> Wobei der Titel des Threads sich nicht gut mit den Inhalt verträgt.
So ist es. Ein PC ist halt von Grund auf in Hard- und Software so
konzipiert, daß er RAM benötigt.
Die Frage müsste lauten:
Kann ein aktueller PC-Prozessor ohne Ram ein Programm aus einem
boot-eeprom ausführen?
Antworten können dann die, die das irgendwie interessiert...
Oliver
(prx) A. K. schrieb:> Wobei der Titel des Threads sich nicht gut mit den Inhalt verträgt.
Auf Mikrocontroller passt das Thema nicht, da diese immer RAM haben.
Oliver S. schrieb:> Die Frage müsste lauten:>> Kann ein aktueller PC-Prozessor ohne Ram ein Programm aus einem> boot-eeprom ausführen?
Er führt doch das BIOS aus, auch wenn kein RAM vorhanden ist. Wenn er
das nicht täte, könnte er auch nicht piepsen als Signal, dass der RAM
fehlt. Und die BIOS-Meldungen kommen doch auch auf dem Bildschirm, wenn
der RAM fehlt.
Die Antwort lautet also "ja"
Stefan ⛄ F. schrieb:> Auf Mikrocontroller passt das Thema nicht, da diese immer RAM haben.
Beim ersten AVR kam man ein einfachen Fällen allerdings ganz gut ohne
RAM aus. Mit 32 Registern und einem Hardware-Stack ist RAM nicht
zwingend nötig.
Und der erste PIC, der 1650, hatte überhaupt kein RAM, nur 32 Register.
MeierKurt schrieb:> Stefan ⛄ F. schrieb:>> Ich bin mit PC aufgewachsen, die gar keinen Cache hatten.>> Wir hatten nichtmal PCs
"Wenn sie keine PCs haben, dann sollen sie doch Smartphones nehmen!"
(prx) A. K. schrieb:> hinz schrieb:>> "Wenn sie keine PCs haben, dann sollen sie doch Smartphones nehmen!">> Manche nehmen dich beim Wort.
Das stammt doch von einer bekannten Königin, oder so.
Stefan ⛄ F. schrieb:> (prx) A. K. schrieb:>> Wobei der Titel des Threads sich nicht gut mit den Inhalt verträgt.>> Auf Mikrocontroller passt das Thema nicht, da diese immer RAM haben.
Ist natürlich Unsinn, siehe ATtiny11/12.
John Doe schrieb:> Ist natürlich Unsinn, siehe ATtiny11/12.
Nein, das ist Quatsch. Auch wenn ein Stück RAM mal "register bank" heißt
und spezielle zusätzliche Möglichkeiten bietet, ist es trotzdem immer
noch RAM.
Bezogen auf das Thema des Threads spielt heute übrigens auch ein
spezielles Stück RAM eine Rolle, der Flash-Cache, beheimatet im
"Chipsatz" (der in modernen PC-CPUs Teil der CPU ist).
Dat Dingens hat eine Größe, die genügt, um den 1st level Bootcode
aufzunehmen, inclusive der initialen Vektoren. Das kommt 1:1 aus einem
kleinen Stück des UEFI(AKA: BIOS)-Flash und dieser Transfer wird in
Hardware abgewickelt, durch den "Chipsatz".
Dieser Code ist dann in der Lage, den "richtigen" RAM zu initialisieren.
Nachdem das erfolgreich passiert ist, verschiebt er sich selbst dorthin,
sorgt dafür, dass er auch von dort aus läuft und entpackt dann den Rest
des UEFI-Codes ebenfalls in den RAM, insbesondere auch den 2nd stage
Bootloader.
Ganz früher(tm) war das alles viel einfacher gestrickt. Da war der 1st
Level Code von der CPU aus noch ohne jede Verrenkung zugreifbar, weil
der ROM/EPROM/FLASH noch direkt am Bus angebunden war. Da konnte der
Code noch direkt aus dem NV-Speicher ausgeführt werden, wurde aber aus
Performancegründen dann oft nach Initialisierung des RAM in diesen
umkopiert.
Die 2nd Stage hielt so ungefähr mit der Einführung von Flash Einzug,
weil die BIOSe immer fetter wurden und der ganze Quatsch da nur noch
gepackt reingepasst hat, wenn es nicht zu teuer werden sollte.
Dann, mit der Einführung von seriellem Flash, kam der Flash-Cache.
Zunächst wurde das im Chipsatz abgewickelt, aber, wie schon gesagt, ist
der (noch später) dann Teil der CPU geworden.
c-hater schrieb:> Nein, das ist Quatsch. Auch wenn ein Stück RAM mal "register bank" heißt> und spezielle zusätzliche Möglichkeiten bietet, ist es trotzdem immer> noch RAM.
Beim PIC kann man über die Nomenklatur streiten. Microchip nebst
Vorgänger hat bei den 8-Bit PICs gerne Register genannt, was eigentlich
als RAM gilt.
Aber wenn du auch die Register des ATtiny11 als RAM bezeichnest, dann
gibt es überhaupt keine Prozessoren ohne RAM, ob Mikrocontroller oder
nicht, und der Begriff verliert an Bedeutung.
Albrecht schrieb:> ich bin etwas verwirrt zu folgendem Szenario, angenommen ich entferne> aus einem Haushalts PC mit Windows 10 und einem i7 Prozessor alle RAM> Module
Die Weltfremdhait mancher Leute muss man nicht verstehen, oder?
Was haben deine wirren Vorstellungen von PC-Hardware mit Fragen rund um
Mikrocontroller und sonstige digitale Elektronik zu tun?
c-hater schrieb:> Die 2nd Stage hielt so ungefähr mit der Einführung von Flash Einzug,> weil die BIOSe immer fetter wurden und der ganze Quatsch da nur noch> gepackt reingepasst hat, wenn es nicht zu teuer werden sollte.
Der Aufwand einer Seriell/Parallelwandlung beim Zugriff ist längst
geringer als der Aufwand paralleler Anbindung von ROM jedweder Art.
Völlig unabhängig von der Grösse.
c-hater schrieb:> Zunächst wurde das im Chipsatz abgewickelt, aber, wie schon gesagt, ist> der (noch später) dann Teil der CPU geworden.
Auch heute sind noch Teile der I/O-Aufgaben aus dem Prozessor-Die in
etwas ausgelagert, das meist als "Chipset" bezeichnet wird,
Flash-Interface inklusive. Bei Intels Mobilprozessoren ist das
mittlerweile als zweites Die auf dem Prozessormodul mit drauf, bei den
anderen weiterhin extern.
(prx) A. K. schrieb:> Aber wenn du auch die Register des ATtiny11 als RAM bezeichnest, dann> gibt es überhaupt keine Prozessoren ohne RAM, ob Mikrocontroller oder> nicht, und der Begriff verliert an Bedeutung.
Nein. Register sind einfach eine spezialisierte Form von RAM. Nämlich
SRAM, der sehr eng an die MCU angebunden ist und mit dem deshalb
spezielle Sachen gemacht werden können. Diese Register haben aber die
wesentliche Eigenschaft von RAM und die ergibt sich aus der Expansion
des Acronyms: random access memory.
Wobei der "random acces" bei Registern typisch durch die Wahl des
Registers im Opcode geschieht. Aber das muss nicht notwendigerweise so
sein, was man insbesondere bei den AVR8 (jedenfalls den klassischen)
daran sehen kann, dass sie sich eben auch problemlos und mit allen
Möglichkeiten in den SRAM-Space mappen liessen.
(prx) A. K. schrieb:> Der Aufwand einer Seriell/Parallelwandlung beim Zugriff ist längst> geringer als der Aufwand paralleler Anbindung von ROM jedweder Art.> Völlig unabhängig von der Grösse.
Ja, heute ist das ganz sicher so. Damals(tm) aber eben noch nicht. Da
war es eine (sogar recht lange) Zeit lang halt noch einfacher, Flash
parallel anzubinden, aber den Inhalt größtenteils zu packen.
Ich würde mal grob sagen: von sehr später 486er-Zeit bis sehr, sehr weit
in die Pentium-Ära war das absolut üblich. Ich habe noch einen Haufen
Flash aus dieser Zeit, größtenteil dürfte da noch tatsächlich das
jeweilige BIOS drauf sein. Aufgehoben für Basteleien, aber tatsächlich
niemals wirklich gebraucht...
c-hater schrieb:> Register sind einfach eine spezialisierte Form von RAM.
Das ist eine mögliche Form der Begriffsdefinition von "RAM" - aber eine
unübliche, wenn man sich von der direkten Transistortechnik löst, und im
Bereich der Architektur ist.
(prx) A. K. schrieb:> Das ist eine mögliche Form der Begriffsdefinition von "RAM" - aber eine> unübliche, wenn man sich von der direkten Transistortechnik löst, und im> Bereich der Architektur ist.
Nein. Du hast wohl das Konzept von Submengen und das Konzept von
Definitionen nicht verstanden.
RAM steht nunmal nur für "random acces memory", für nichts anderes. Und
die Anforderungen an selbigen erfüllen praktisch ALLE
CPU/MCU-Arbeitsregister.
c-hater schrieb:> Nein. Du hast wohl das Konzept von Submengen und das Konzept von> Definitionen nicht verstanden.
Definitionen sind bei diesem Thema kontextabhängig und selten exakt.
Beim Oberbegriff "Speicher" wäre ich dabei. Bei "RAM" im Kontext von
Rechnerarchitekturen bin ich es nicht.
Aber das macht nichts. So manche grossen Werke der Philosophie werden
erst verständlich, wenn man ein umfangreiches Zweitwerk zur vom Autor
verwendeten Begriffswelt zur Hand hat. ;-)
Hallo
Falk B. schrieb:> Welchen praktischen Nutzen hat diese Erkenntnis?
Leider ist diese Anschlussfrage recht typisch für viele "Techniker" und
Spezialisten- die haben leider zu einen größeren Teil es verlernt
einfach mal nur neugierig und ein wenig, im besten Sinne, kindlich zu
sein - das empfinde ich als sehr schade. => Schnell wird man (der
Experte) oft nicht ganz zu unrecht, zum unfreundlichen und weltfremden
Fachidioten abgestempelt.
Mal "einfach" (eben nicht denn es ist alles andere als einfach wenn man
sich auf den Fragenden einlässt) solch eine Fragen vernünftig und
freundlich zu beantworten oder wenigsten in verständlichen und vor allen
freundlich, geduldigen (!) Worten zu erklären mit was sich der Fragende
beschäftigen sollte damit er versteht warum seine Frage so nicht
funktioniert und "sinnlos" (Ist sie aber eigentlich nicht - "nur" halt
nicht so in wenigen Sätzen zu beantworten) schaffen tatsächlich viele
Techniker und Experten nicht - was ja kein Problem wäre wenn sie dann
einfach nichts sagen bzw. schreiben würden (gerade in einen Forum das
öffentlich für jeden einsehbar ist) oder -freundlich !- schreiben "Das
kann ich (ja ich der eine "Experte" ) dir leider nicht beantworten, da
ich (und niemand anderer) leider nun mal nicht in der Lage bin es dir
(Anfänger und bestenfalls Halbgebildeten)in verständlichen Worten zu
erklären."
Aber dann müsste ja man eine Schwäche und ein "ich kann es nicht" obwohl
ich das Fachwissen habe zugeben...
Leute die dann zurecht als Fachidioten oder (schlechte,
eigenbrötlerischere, weltfremde)Nerds bezeichnet werden sind dazu
einfach unfähig da sie sich für so einzigartig und "besser" als alle
anderen fühlen.
Dummerweise sind aber ausgerechnet diese Typen am lautestet und melden
sich generell und "immer" zu Wort...
Auch traurig das viele sich nicht in die Gedankenwelt von "Normalos" die
nun mal logischer Weise recht oberflächliches (aber immer noch mehr als
die breite Masse) Wissen haben hinein zu versetzen zu können - oder es
wenigstens mal versuchen.
Dieser Thread beweist das leider auch mehrfach - obwohl es noch relativ
gesittet und manchmal (aber trotzdem viel zu selten) auch für "Normalos"
wenigstens etwas verständlich und erklärend zugeht.
"Leute" oder besser "Experten" wann ist euch die Neugier abhanden
gekommen - wann habt ihr verlernt das ihr Experten seid und euer Wissen,
die (eure) Art des Lernen eben nicht dem entspricht wie es die
"Normalos" und selbst so manche schon grob vorgebildeten es haben und
können - ihr ward doch auch mal Anfänger und "Naiv" und wohl auch
neugierig?
Und warum (wie) schaffen es nur recht wenige Experten und Techniker das
sie nicht verlernen Neugierig zu bleiben und es nicht vergessen das es
auch auch die "Normalos" und Teilgebildeten gibt ?
Jemand
Erwin D. schrieb im Beitrag #6640487:
> Lies mal den Titel des Threads, Schwachkopf!
Mikrocontroller haben ihr RAM intern. Und genau darum geht es hier
offensichtlich nicht.
Forist schrieb:> Mikrocontroller haben ihr RAM intern. Und genau darum geht es hier> offensichtlich nicht.
Eigentlich schon.. Da der Cache des Prozessors ein RAM ist und intern
liegt.
An alle anderen Antworter, vielen dank für eure Antworten. Dennoch bin
ich schockiert das hier die Meinungen soweit auseinandergehen.
mfg
Albrecht
Albrecht schrieb:> Dennoch bin ich schockiert das hier die Meinungen soweit> auseinandergehen.
Weil die Gleichschaltung von Begriffen und Ansichten bisher
offensichtlich misslungen ist?
(prx) A. K. schrieb:> c-hater schrieb:>> Nein, das ist Quatsch. Auch wenn ein Stück RAM mal "register bank" heißt>> und spezielle zusätzliche Möglichkeiten bietet, ist es trotzdem immer>> noch RAM.>> Beim PIC kann man über die Nomenklatur streiten. Microchip nebst> Vorgänger hat bei den 8-Bit PICs gerne Register genannt, was eigentlich> als RAM gilt.
Ganz so stumpf haben sie das nicht gemacht.
SFR - Special Function Register (CPU-Register, Peripherie)
GPR - General Purpose Register (frei verwendbares RAM)
Und das ist nicht auf die 8-Bit Familien beschränkt.
> Aber wenn du auch die Register des ATtiny11 als RAM bezeichnest, dann> gibt es überhaupt keine Prozessoren ohne RAM, ob Mikrocontroller oder> nicht, und der Begriff verliert an Bedeutung.
Ja.
John Doe schrieb:> Ist natürlich Unsinn, siehe ATtiny11/12.c-hater schrieb:> Wobei der "random acces" bei Registern typisch durch die Wahl des> Registers im Opcode geschieht. Aber das muss nicht notwendigerweise so> sein, was man insbesondere bei den AVR8 (jedenfalls den klassischen)> daran sehen kann, dass sie sich eben auch problemlos und mit allen> Möglichkeiten in den SRAM-Space mappen liessen.
Jein. Soweit mir bekannt ist, kann man die Register des ATtiny 11 nicht
ins RAM mappen, sondern sie sind immer gleichzeitig RAM. Man hat da gar
keine andere Wahl.
Abgesehen davon ist dieser 20 Jahre alte Mikrocontroller nicht gerade
ein "moderner" Controller im Sinne des Thread Titels.
Insofern ist der ATtiny 11 gerade kein gutes Beispiel um mir zu
widersprechen. Ich bin allerdings zuversichtlich, dass es irgendwo in
dem großen Kuriositäten-Kabinett einen Mikrocontroller ohne RAM geben
könnte.
Also habe ich natürlich mal wieder gröbsten Unsinn von mir gegeben, und
alle die das aufgedeckt haben sind Helden.
John Doe schrieb:> Ist natürlich Unsinn, siehe ATtiny11/12.
Der hat dafür aber einen Hardwarestack, damit RET/RETI funktionieren.
Natürlich ist damit die Callingtiefe extremst eingeschränkt. Möge der
Erfinder des Hardwarestacks in der Hölle schmoren.
Albrecht schrieb:> Bitte klärt mich auf, vielen dank (:
Ab dem Reset Vector wird Code direkt aus dem SPI-Flash ausgeführt und
der Cache initialisiert. Diese Phase nennt man "Cache as RAM" (CAR).
Dann wird ein bisschen Hardware initialisiert und der Arbeitsspeicher.
Ab diesem Zeitpunkt wird der Inhalt des SPI Flash in den Arbeitsspeicher
kopiert und läuft ab da von dort. (PEI Phase)
Ab jetzt wird werden alle möglichen Treiber geladen, Protokolle geladen
und Hardware initialisiert, die in der frühen Phase nicht benötigt wird.
Dazu gehören auch die Treiber für SATA Controller etc. Das heißt, du
hast erst ab diesem Zeitpunkt überhaupt Zugriff auf auf die
Festplatte/SSD/eMMC/SD Karte. (DXE Phase)
Danach kommt die "Boot Device Selection" (BDS) genannte Phase, in der
die Datenträger enummeriert und das Boot Device gewählt und anschließend
der Bootloader des Betriebssystems geladen wird.
Natürlich ist das alles noch ein bisschen komplexer, aber um die Frage
zu beantwortet reicht dieser Anriss.
Wer es genauer wissen möchte, kann es in diesem Buch nachlesen:
https://link.springer.com/chapter/10.1007/978-1-4842-0070-4_6
Daher kann dein Windows nicht ohne RAM laufen.
Wenn du den Arbeitsspeicher entfernst, kommst du nur bis zur
Arbeitsspeicherinitialisierung, dann ist Schluss. Normalerweise ist bis
dahin auch keine Grafikausgabe möglich.
> Möge der Erfinder des Hardwarestacks in der Hölle schmoren.
Ja.
Ich meine: Das hätte man ja machen können wenn es wirklich nötig gewesen
wäre, um z.B. billig genug zu werden. Aber es gab doch schon vorher
billige Mikrocontroller im Handel. Niemand wird damit Reich, das
billigste Massenware nachzubauen - außer man macht es noch viel
billiger. Doch das kann ich mir bei Atmel kaum vorstellen, die sind ja
eher teuer.
Peter D. schrieb:> Möge der Erfinder des Hardwarestacks in der Hölle schmoren.
Stimmt. Branch-and-Link hätte es auch getan. Also mit CALL als
r2:r3 = saved pc
pc = <target>
und RET(I) als
pc = r2:r3
So ungefähr arbeiten ja die übrigens RISC.
Thomas Z. schrieb:> Nun du sprichst von moderner Hardware und da muss weil SPI Rom das BIOS> erst Mal ins Ram kopiert werden bevor es gestartet werden kann...> Wenn also kein Ram da ist geht das nicht. Das ist übrigens schon sehr> lange so. Ab dem 286 NEAT Chipsatz. Ja ich bin ein alter Sack.
Also ich hatte einen 486er, bei dem das BIOS in einem handelsüblichen
parallel angesprochenen EPROM stand. Man konnte einstellen, ob der Code
direkt von dort ausgeführt oder beim Start ins RAM kopiert werden soll.
Sicherlich hat das BIOS aber auch damals schon RAM gebraucht, um
vollständig zu funktionieren.
Andreas M. schrieb:> Warum nicht? Die ersten Code-Zeilen mit Sicherheit, dass ist reiner> Assembler Code. Die CPUs haben soviele Arbeitsregister, da kommt man> ohne RAM schon ein ganzes Stück weit.
Der x86? Und dann noch im Real Mode? Der ist bekannt für seinen Mangel
an Registern.
Erwin D. schrieb:> Oliver S. schrieb:>> Die Frage müsste lauten:>>>> Kann ein aktueller PC-Prozessor ohne Ram ein Programm aus einem>> boot-eeprom ausführen?>> Er führt doch das BIOS aus, auch wenn kein RAM vorhanden ist. Wenn er> das nicht täte, könnte er auch nicht piepsen als Signal, dass der RAM> fehlt. Und die BIOS-Meldungen kommen doch auch auf dem Bildschirm, wenn> der RAM fehlt.>> Die Antwort lautet also "ja"
Es gibt auch Boards, die ein BIOS-Update von einem USB-Stick machen
können - ohne Hauptspeicher und sogar ohne die CPU.
c-hater schrieb:> John Doe schrieb:>>> Ist natürlich Unsinn, siehe ATtiny11/12.>> Nein, das ist Quatsch. Auch wenn ein Stück RAM mal "register bank" heißt> und spezielle zusätzliche Möglichkeiten bietet, ist es trotzdem immer> noch RAM.
Das mag technisch so ein, aber wenn jemand vom RAM eines Rechners oder
µC spricht, meint er eigentlich nie die Register. Und das gilt auch für
die offiziellen Datenblätter der Hersteller. Beispielsweise steht im
Datenblatt des ATtiny13: "64 Bytes Internal SRAM", obwohl es inklusive
der 32 ALU-Register und der 64 I/O-Register ja eigentlich 160 Bytes
sind:
"The first 32 locations address the Register File, the next 64 locations
the standard I/O memory, and the last 64 locations address the internal
data SRAM."
Nenne mir mal einen µC-Hersteller, der im Datenblatt ALU-Register oder
I/O-Register als Teil des RAM bezeichnet.
Die Dalas Chips hatten immer schon ne handvoll Ram zur freien Verfügung
über. Es gab quasi schon immer Rechner, deren Bios Menü auch ohne
Raum-Riegel funktionierte, andere pipsten nur... Je nach Kunden Wunsch.
Wie das mit dem Uefi-Bios aussieht, kA. Ich glaube die bringen ihren
eigenen µCs mit?!
Teo D. schrieb:> Wie das mit dem Uefi-Bios aussieht, kA.
Mein Laptop macht jedenfalls keinen Mucks ohne RAM. Nur die Power LED
geht an und kurz danach von alleine wieder aus.
Rolf M. schrieb:> Also ich hatte einen 486er,
Schlechtes Beispiel, der hatte schon signifikant Cache im Prozessor mit
drin.
IIRC läuft die Initialisierung des RAM Controllers über die CPU, die
dann nur im Cache läuft.
Praktisch alles Andere (USB, Ethernet etc) braucht DMA (Direct Memory
Access), das funktioniert aber nicht mit den CPU Caches AFAIK sondern
über den RAM Controller. Daher wird direkt nach der CPU gleich der DRAM
initialisiert.
Rolf M. schrieb:> Es gibt auch Boards, die ein BIOS-Update von einem USB-Stick machen> können - ohne Hauptspeicher und sogar ohne die CPU.
Moderne Mainboards haben einen SMC integriert, d.h. da ist noch ein
zusätzlicher µC in einem der Chips mit drin der u.a. fürs Power
Management zuständig ist. Der kann auch auf den BIOS Flash zugreifen.
Jim M. schrieb:> Praktisch alles Andere (USB, Ethernet etc) braucht DMA (Direct Memory> Access), das funktioniert aber nicht mit den CPU Caches AFAIK sondern> über den RAM Controller. Daher wird direkt nach der CPU gleich der DRAM> initialisiert.
Auf dem 486er gab es glaub ich noch nichts, das zwingend DMA
voraussetzte. Aber so oder so klingt es für mich sinnvoll, erst mal den
RAM zu initialisieren, bevor man mit anderen Komponenten weitermacht.
> Rolf M. schrieb:>> Es gibt auch Boards, die ein BIOS-Update von einem USB-Stick machen>> können - ohne Hauptspeicher und sogar ohne die CPU.>> Moderne Mainboards haben einen SMC integriert, d.h. da ist noch ein> zusätzlicher µC in einem der Chips mit drin der u.a. fürs Power> Management zuständig ist. Der kann auch auf den BIOS Flash zugreifen.
Ja, das ist mir schon klar. Ich wollte damit nur sagen, dass das
Vorhandensein einer Reaktion beim Einschalten ohne RAM nicht
zwangsläufig bedeutet, dass das die CPU macht.