Dies ist ein weiterer Fall, in dem die erhaltene Volksweisheit zu diesem Thema, wie sie leider durch psusi
die 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:FFF0
Diese 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:IP
Kombination begonnen. FFFF:0000
Der 80286 hat dies geändert F000:FFF0
Aber 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 000FFFF0
seit 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 CS
Registers nach dem Zurücksetzen ist F000
, enthält der diesem Register zugeordnete Segmentdeskriptor anfänglich FFFF0000
seine Basisadresse. Die physische Adresse, die anfänglich der 16: 16 CS: IP-Adresse entspricht, F000:FFF0
ist 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 FF000000
an 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_EN
Registrieren 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 FFF80000
zu FFFFFFF
und 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 barlop
die 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.