Wird das BIOS vom BIOS-Chip gelesen oder beim Start in den RAM kopiert?

10

Wenn Sie Ihren Computer zum ersten Mal einschalten, wird der Abruf- / Ausführungszyklus zuerst eingerichtet, um Anweisungen vom BIOS-Chip direkt in das Befehlsregister in der CPU abzurufen, oder ist eine automatische Schaltung eingerichtet, damit beim Erkennen des Einschaltens die Anweisungen eingehen werden die BIOS-Chips automatisch in den RAM geladen?

Aktualisieren

Ich glaube, ich habe meine Antwort hier gefunden :

Nach dem Ausschalten des Rücksetzsignals beginnt die CPU zu arbeiten. Code im RAM kann nicht ausgeführt werden, da der RAM leer ist. Die CPU-Hersteller programmieren den Prozessor so vor, dass er immer mit der Ausführung des Codes unter der Adresse "FFFF: 0000" (normalerweise das ROM-BIOS) des ROM beginnt.

Die CPU ist also physisch so eingerichtet, dass sie die Speicheradresse FFFF: 0000 im ROM abruft und ausführt, sobald sie eingeschaltet ist.

mring
quelle
1
Wenn Sie eine Antwort selbst zu finden, Sie per Post als Antwort unten, statt es in die Frage nach der Bearbeitung. (Sie können Ihre eigenen Antworten nach einiger Zeit akzeptieren .)
user1686
In dem Buch Aktualisieren und Reparieren von PCs wird ein Speicherort erwähnt, von dem die CPU als erster liest. Und es gibt einen Prozess, den alte CS-Lehrer möglicherweise noch anwenden, der als Bootstrapping bezeichnet wird, wie wenn Sie sich an Ihren Bootstraps hochziehen Grundlage eines Betriebssystems wird geladen.
Barlop

Antworten:

3

Die meisten Karten hatten früher eine Option im BIOS, um dieses Verhalten zu konfigurieren. Es wurde normalerweise als Schatten bezeichnet und war normalerweise standardmäßig aktiviert. Ich glaube nicht, dass sich viele Boards heutzutage die Mühe machen, Ihnen die Option zu geben, und nur immer Schatten. Der Grund dafür ist, dass RAM schneller als ROM ist, sodass es schneller wird, es in den RAM zu kopieren und von dort aus auszuführen.

Beachten Sie, dass das Kopieren nicht von einer magischen Schaltung durchgeführt wird, sondern nur vom BIOS selbst, wenn es anfänglich aus dem ROM ausgeführt wird. Es kopiert sich einfach selbst in den RAM und fährt dann von dort aus fort.

psusi
quelle
Nach dem, was ich von dem verstehe, was Sie gesagt haben, liest die CPU beim Aufleben Anweisungen aus dem ROM. Diese Anweisungen lauten "Kopieren Sie alle Startanweisungen hier im ROM in den RAM und setzen Sie dann den Programmzähler auf die eine oder andere Anfangsadresse im RAM. " Ist das ungefähr richtig?
mring
@psusi Haben Sie einige Links, die erklären, wovon Sie sprechen? CPU-Shadowing bringt mir nicht viel und wie es konfiguriert werden könnte. Und wann redest du? Wann hatten Motherboards diese Option? Können Sie auf ein Motherboard-Modell verweisen, das diese Option gehabt hätte?
Barlop
18

Dies ist ein weiterer Fall, in dem die erhaltene Volksweisheit zu diesem Thema, wie sie leider durch psusidie Antwort und den Teil der Frage veranschaulicht wird, in der Welt steckt, wie es um 1991 war, trotz der Fülle verfügbarer technischer Referenzen, die erklären, wie es jetzt ist Andernfalls.

In der Welt der späten 1980er Jahre befand sich die Maschinenfirmware - eines von zwei Dingen, die in der Welt des IBM PC-kompatiblen als "BIOS" bezeichnet werden - tatsächlich in einem ROM-Chip auf dem ISA-Bus. und CPUs haben tatsächlich begonnen, Code an der physischen Adresse auszuführen 000FFFF0, einem Ort im "konventionellen Speicher", auf den über den Real-Mode-Zeiger zugegriffen wird. F000:FFF0Diese Welt ist längst vorbei.

(Die Welt, in der der Autor der WWW-Seite, auf die Sie hingewiesen haben, S. Ebrahim Shubbar, trotz des Schreibens im Jahr 2002 fälschlicherweise lebt, ist noch älter. CPUs haben seit dem 8086 nicht mehr mit der CS:IPKombination begonnen. FFFF:0000Der 80286 hat dies geändert F000:FFF0Aber die 80286-Welt selbst ist die höchst veraltete Welt der späten 1980er Jahre, in der die Volksweisheit immer noch zirkuliert.)

Ihr "BIOS-Chip" ist RAM; und Ihre CPU ist nicht 16-Bit.

In modernen PCs befindet sich die Maschinenfirmware im nichtflüchtigen RAM . Der NVRAM-Chip ist mit dem LPC-Bus (oder einer dedizierten "Firmwware Hub" -Schnittstelle) verbunden, und die LPC / FWH-Brücke im "Chipsatz" deaktiviert normalerweise Schreibzyklen. Beim "Flashen" der Firmware werden Chipsatzregister festgelegt, die Schreibvorgänge in den NVRAM und anschließend das Schreiben in den NVRAM ermöglichen. (Im Intel ICH10 heißt das Chipsatz-Registerbit, das Schreibzyklen ermöglicht BIOSWE, "BIOS Write Enable". Es gibt einige zusätzliche Details, die ich hier überspringen werde, aber das ist der Kern davon.)

x86-Prozessoren haben 000FFFF0seit den Tagen des 80286 nicht mehr mit der Ausführung vor Ort begonnen. 32-Bit-CPUs werden im umgangssprachlich als unwirklich bezeichneten Modus gestartet . Obwohl der Anfangswert des CSRegisters nach dem Zurücksetzen ist F000, enthält der diesem Register zugeordnete Segmentdeskriptor anfänglich FFFF0000seine Basisadresse. Die physische Adresse, die anfänglich der 16: 16 CS: IP-Adresse entspricht, F000:FFF0ist also tatsächlich und ist seit den Tagen des 80386 FFFFFFF0.

Und hier wird die Maschinenfirmware hauptsächlich auf 32-Bit- und 64-Bit-x86-Maschinen dem physischen Adressraum zugeordnet. Es gibt ein 128-KB-Fenster auf die Firmware im Bereich "konventioneller Speicher", aber der NVRAM, der die Maschinen-Firmware enthält, kann auf modernen PCs bis zu 16 MB (obwohl dies je nach Chipsatz variiert) betragen und wird hauptsächlich sofort auf den physischen Adressraum von 16 MB abgebildet unterhalb der 4GiB-Leitung - dh physikalische Adressen FF000000an FFFFFFFF. (Um das ICH10 noch einmal als Beispiel zu verwenden: Wie viel von diesem Adressraum dem NVRAM zugeordnet ist, wird durch ein Chipsatzregister gesteuert, das als FWH_DEC_EN"Firmware Hub Decode Enable" -Register bekannt ist. Die Firmware ist codiert, um das zu programmierenFWH_DEC_ENRegistrieren Sie sich entsprechend der Größe des tatsächlichen NVRAM-Chips, der auf dem Mainboard installiert ist. Aber die oben 512KiB des NVRAM wird immer abgebildet, auf physikalische Adressen FFF80000zu FFFFFFFund kann nicht deaktiviert werden.) Der Code zunächst durch den Prozessor unmittelbar nach Reset Leben in der oberen 64KiB dieses 16MiB Adressbereiches ausgeführt.

Was das BIOS-ROM-Shadowing betrifft (so wird es genannt - weshalb barlopdie CPU im Schatten gehalten wird, ist ein Rätsel): Ja, der Zugriff auf NVRAM auf dem LPC-Bus oder dem Firmware-Hub ist immer noch nicht so schnell wie der Zugriff auf das Hauptsystem (flüchtiger) RAM. Die Gründe, warum Shadowing wichtig ist, haben sich jedoch mit den Fortschritten von Betriebssystemen wie OS / 2 und Windows NT erheblich verringert - wiederum in den späten 1980er und frühen 1990er Jahren. Real-Mode-Betriebssysteme wie MS-DOS, PC-DOS, DR-DOS usw. wurden über die E / A-Funktionalität der Maschinenfirmware gelegt. Daher wurde zur Laufzeit häufig auf den Code und die schreibgeschützten Daten der Firmware zugegriffen. Betriebssysteme im geschützten Modus wie OS / 2 und Windows NT sind weitaus weniger abhängigbei von der Firmware bereitgestellten Diensten zur Laufzeit. Die Tatsache, dass Code, der aus dem NVRAM ausgeführt wird, und schreibgeschützte Daten im selben Prozessor langsamer zum Prozessor gelangen als im Schatten des System-RAM, ist weniger problematisch als früher.

Darüber hinaus befindet sich der Firmware-Code und die Firmware-Daten, auf die sie sich stützen, nicht unbedingt in dem Teil des NVRAM, der dem Teil des physischen Adressraums zugeordnet ist, dem oben erwähnten 128-KB-Fenster "konventioneller Speicher", der notwendigerweise überhaupt erst schattierbar ist. Firmware-Dienste im geschützten Modus müssen nicht alle im physischen Adressraum unter der 1-MB-Grenze liegen, wie dies bei Firmware-Diensten im realen Modus der Fall ist, und einige nicht. (Und natürlich wäre es nur möglich, den gleichen Trick mit dem Bereich des physikalischen Adressraumes zu tun , dass sie tun , leben in , wenn es zumindest 4GiB System - RAM.)

Ironischerweise ist Phil Crouchers Buch The BIOS Companion aus einem Jahr zuvor im Jahr 2001 eine genauere Informationsquelle als S. Ebrahim Shubbar aus dem Jahr 2002. M. Croucher stellt fest, dass Unices, Linux, Windows NT und "vermutlich (95 / 98) "" keinen Nutzen aus der Abschattung ziehen ". Es ist nicht unbedingt vollständig kein Vorteil, aber es ist vergleichsweise sehr wenig in Bezug auf der Welt der Menschen , MS-DOS, PC-DOS und DR-DOS im Real - Modus auf 16-Bit - 80286 Maschinen im Jahr 1989 laufen.

JdeBP
quelle