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
:
Verschoben durch Moderator
Albrecht schrieb: > Bitte klärt mich auf, vielen dank (: RAM bezeichnet man auch als Arbeitsspeicher. Er ist essenziell in einem PC!
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.
Der Pc lädt das Bios nach dem Einschalten ins RAM. Auch die Interrupttabelle, Systemvariablen und den stack. Deshalb braucht er den. mfg
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.
Beitrag #6639989 wurde von einem Moderator gelöscht.
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.
Fast vergessen: Für die AMD-Fans hier zum Nachlesen: https://developer.amd.com/wordpress/media/2012/10/31116.pdf Kapitel 2.3.3: Using L2 Cache as General Storage During Boot
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
(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.
:
Bearbeitet durch User
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%A4renz https://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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
(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: > Ich bin mit PC aufgewachsen, die gar keinen Cache hatten. Wir hatten nichtmal PCs
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.
:
Bearbeitet durch User
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!"
hinz schrieb: > "Wenn sie keine PCs haben, dann sollen sie doch Smartphones nehmen!" Manche nehmen dich beim Wort.
Beitrag #6640207 wurde vom Autor gelöscht.
100Ω W. schrieb im Beitrag #6640207:
> Ich glaub, dich sollte man für die Aussage aus dem Internet verbannen.
Nur aus dem Festnetz.
(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.
:
Bearbeitet durch User
(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.
:
Bearbeitet durch User
Beitrag #6640487 wurde von einem Moderator gelöscht.
(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. ;-)
:
Bearbeitet durch User
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?
:
Bearbeitet durch User
(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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
Rolf M. schrieb: > Der x86? Und dann noch im Real Mode? Der ist bekannt für seinen Mangel > an Registern. Als der PC noch einen 8088 drin hatte, hatte IBM das BIOS-Listing offen dokumentiert: http://www.retroarchive.org/dos/docs/ibm5160techref.pdf So macht mal einen CALL ohne RAM:
1 | mov sp, offset ret1 |
2 | jump target |
3 | ret2: ... |
4 | |
5 | ret1: dw ret2 |
:
Bearbeitet durch User
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.
Rolf M. schrieb: > Auf dem 486er gab es glaub ich noch nichts, das zwingend DMA > voraussetzte. Doch. Die Floppy-Disk.
Erstaunlich, wie viele dem Troll Antworten. das gibt von mir 9/10 Punkten. Gratulation! lg Heiner
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.