Wer lädt das BIOS im RAM während des Computer-Bootstraps?

8

Beim Start des Computers wird zuerst der Code im BIOS ausgeführt. Wie wird der Code im BIOS zur Ausführung in den RAM geladen?

Ich habe auf diese Frage verwiesen: Wird das BIOS vom BIOS-Chip gelesen oder beim Start in den Arbeitsspeicher kopiert? . Es hat mich jedoch mehr verwirrt. Wenn das BIOS aus dem ROM geladen wird und das ROM ein separater Chip ist, worum geht es dann bei Segmentadressen im RAM? Wo wird der BIOS-Code geladen - befindet er sich in den letzten 1 MiB des Adressraums im Real-Modus oder an einem anderen Ort?

Wenn jemand die Schritte vom Start des Computers bis zur Ausführung des ersten BIOS-Befehls einschließlich der verwendeten Speicheradressen auflisten könnte, wäre dies sehr hilfreich

Cygnus
quelle

Antworten:

7

Wie ich in meiner Antwort auf diese Frage schrieb, steckt die erhaltene Volksweisheit zu diesem Thema - wie leider durch andere Antworten dort (und anderswo in SuperUser) veranschaulicht - trotz der Fülle verfügbarer technischer Referenzen in der Welt fest, wie es um 1991 war wie es jetzt anders ist.

Sie wären nicht so verwirrt gewesen, wenn Sie meine Antwort gelesen hätten, denn Sie würden überhaupt nicht nach "BIOS aus ROM geladen" fragen.

Ihr "BIOS-Chip" ist kein ROM; Zwischen dem Prozessorstart und der ersten Anweisung in der Firmware befindet sich kein Maschinencode. und das "M" sowohl in "RAM" als auch in "ROM" bedeutet "Speicher".

Wie ich bereits geschrieben habe, wird die Maschinenfirmware in modernen PCs im nichtflüchtigen RAM gespeichert . Es ist nicht mehr ROM wie früher. In der vorherigen Antwort finden Sie Details zum NVRAM-Chip, der an den LPC-Bus angeschlossen ist. (Zum Beispiel: Auf einem Computer, der während der Eingabe zerlegt neben mir sitzt, ist der NVRAM, der die Firmware enthält, ein Pm49FL004T, ein LPC-Flash-RAM-Chip.)

32-Bit-CPUs werden nicht im Real-Modus gestartet und nicht mit einer Adresse, die unterhalb der 1-MB-Leitung liegt. Das ist jahrzehntelang veralteter Müll aus der Zeit von 16-Bit-x86-Prozessoren. Sie beginnen im umgangssprachlich als unwirklich bezeichneten Modus , und in meiner vorherigen Antwort gab ich erneut die Einzelheiten dessen an, was seit dem Aufkommen des 80386 tatsächlich der Fall war . Sie laden ihren ersten Befehl von einer Adresse, die sich tatsächlich ganz oben im 32-Bit-Adressraum befindet FFFFFFF0.

In meiner vorherigen Antwort habe ich Ihnen ausführlich gesagt, wo die Maschinenfirmware hauptsächlich auf 32-Bit- und 64-Bit-x86-Maschinen dem physischen Adressraum zugeordnet ist. Denken Sie daran: Sowohl RAM als auch ROM sind Speicher . Physikalische Adressen sind Speicheradressen auf dem Systembus. Sie können entweder RAM oder ROM adressieren. (Sie können auch andere Dinge ansprechen, aber das erschwert diese Diskussion nur.) Die physikalische Adresse FFFFFFF0befindet sich 16 Byte unter dem oberen Bereich des 512-KB-Bereichs, in dem die oberen 512-KB der Firmware im nichtflüchtigen RAM immer auf dem abgebildet sind Systembus durch den "Chipsatz".

Es gibt kein "Laden" von einem mythischen ROM-Chip, der bei der Prozessorinitialisierung oder beim Zurücksetzen ausgeführt wird. Der Chip, der die Firmware enthält, ist nichtflüchtiger RAM . Es behält seinen Inhalt, der beim "Blinken" geschrieben wird, über alle Stromzyklen hinweg bei. Und die CPU liest nur die Firmware-Anweisungen und -Daten von ihr über den Systembus und über einen LPC-Bus (und möglicherweise eine LPC / FWH-Brücke), der über den Chipsatz mit dem Systembus verbunden ist, unter Verwendung einer physischen Speicheradresse.

Weiterführende Literatur

JdeBP
quelle
Danke, das scheint mir viel klarer zu sein. Wenn Sie jedoch sagen, dass nichtflüchtiger RAM und Daten daraus gelesen werden, bedeutet dies, dass das BIOS in irgendeiner Weise mit dem RAM gekoppelt ist? Kommt jeder RAM-Chip mit einem BIOS? Ich weiß, das mag dumm erscheinen, aber ich bin ein Anfänger in diesem Thema.
Cygnus
Wenn er von nichtflüchtigem Direktzugriffsspeicher (NVRAM) spricht, bezieht er sich auf eine andere Technologie als den RAM, der als Hauptsystemspeicher verwendet wird (normalerweise dynamischer Direktzugriffsspeicher, DRAM). Es handelt sich um einen vom Hauptspeicher getrennten Chip, der die Firmware auch im ausgeschalteten Zustand enthält, also den "nichtflüchtigen" Teil.
Dougvj
@Dougvj: Warum haben wir in diesem Fall eine separate Adresse von FFFFFFF0 dafür? Wäre die NVRAM-Größe nicht nur die Größe der Firmware?
Cygnus
Ich denke, dass Ihre Fragen besser als tatsächliche Fragen behandelt werden, nicht als Kommentare zu dieser Antwort. Schauen Sie sich einige der "verwandten" Fragen auf der rechten Seite an und finden Sie dann eine Frage heraus, die Ihr Verständnis fördert. (Auf SuperUser ist sicherlich Platz für einige Fragen + Antworten zu den Grundlagen, wie aus einem kurzen Shufti hervorgeht.)
JdeBP
@JdeBP: Ich habe eine neue Frage- hinzugefügt superuser.com/questions/695769/...
Cygnus