Windows x86 physischer Speicher ist 24-Bit?

1439
George2

Ich lese gerade das neue Buch Windows Internals 5 zur Speicherverwaltung (Kapitel 9 im Abschnitt Physical Address Extension PAE). Es wird erwähnt "Ein 32-Bit-System stellt physikalische Adressen intern mit 24 Bit dar" auf Seite 770. Ich bin total verwirrt, und ich denke, x86-physischer Speicher sollte auch von 32-Bit adressiert werden. Deshalb nennt man das System 32 -Bitsystem.

Irgendwelche Ideen, was ist los?

5

3 Antworten auf die Frage

2
Preet Sangha

Weitere Informationen zu Booten / PAE finden Sie in Kapitel 7 des Buches "Inside Windows 2000" von David Solomon und Mark Russinovich.

Alle Prozessoren der Intel x86-Familie seit Pentium Pro verfügen über einen Speicherzuordnungsmodus, den Physical Address Extension (PAE). Mit dem richtigen Chipsatz ermöglicht der PAE-Modus den Zugriff auf bis zu 64 GB physischen Speicher. Wenn der x86 im PAE-Modus ausgeführt wird, teilt die Speicherverwaltungseinheit (MMU) die virtuellen Adressen in vier Felder auf.

Die MMU implementiert weiterhin Seitenverzeichnisse und Seitentabellen, aber eine dritte Ebene, die Seitenverzeichnis-Zeigertabelle, befindet sich darüber . Der PAE-Modus kann mehr Speicher als den Standardübersetzungsmodus ansprechen, nicht aufgrund des zusätzlichen Übersetzungsniveaus, sondern weil PDEs und PTEs eher 64 Bit als 32 Bit sind. Das System stellt physikalische Adressen intern mit 24 Bit dar, sodass der x86 maximal 2 ^ (24 + 12) Byte oder 64 GB Speicher unterstützen kann

Edit: Wie George sagt Also 24 Bit Seitenzahlen stehen für 24 + 12 = 36 Bit Byteadressen. Dies ist eine Adresserweiterung über den 32-Bit-Normalbereich.

Ja, Preet, das sind fast die genauen Wörter in Windows Internals 5, ich bin verwirrt über "Das System stellt physikalische Adressen intern mit 24 Bit dar", wie Sie zitiert haben, meine Verwirrung ist, wenn der physische Speicher mit 24 Bit adressiert wird, dann eine max von 2 ^ 24 = 16M eindeutige Standorte (in diesem Fall Bytes) könnten adressiert werden, wie können wir 4G ansprechen? vor 15 Jahren 1
@ George2, dieser Teil des Systems beschäftigt sich mit ganzen Speicherseiten. 24 Bit Seitenzahlen entsprechen also 24 + 12 = 36 Bit Byte-Adressen. RBerteig vor 15 Jahren 1
Whoops, ich habe mein eigenes Extra-Bit gelöscht :-) Preet Sangha vor 15 Jahren 1
"24 Bits von Seitenzahlen" - was meinen Sie mit Seitenzahlen? PFN (Seitenrahmennummer)? Wenn ja, können Sie mir bitte sagen, wo es heißt, dass PFN 24-Bit ist? Es sollte eine sehr hilfreiche Information sein. George2 vor 15 Jahren 0
@Preet, aus der von Ihnen angegebenen Formel - "24 + 12 = 36 Bits", ich denke, 24 bedeutet Seitennummer (Page Frame Number) und 12 bedeutet Versatz innerhalb einer Seite? Wenn ja, können Sie mir bitte sagen, wo es heißt, dass PFN 24-Bit ist? Es sollte eine sehr hilfreiche Information sein. George2 vor 15 Jahren 0
Die ersten Implementierungen von PAE unterstützten nur 24-Bit-Seitenrahmennummern und somit 64 GB RAM. Tatsächlich unterstützte die erste Version von Windows, die PAE unterstützte, offiziell nicht so viel Unterstützung, da bei der ersten Auslieferung keine Motherboards verfügbar waren, die mehr als 32 GB vertrugen. MS unterstützte dies also, die CPU jedoch 64 GB. Bei der Definition der x86-64-Architektur durch AMD wurde das PTE-Format sogar im Kompatibilitätsmodus von 24-Bit-PFNs auf 40-Bit erweitert, sodass 32-Bit-Betriebssysteme sie ebenso wie 64-Bit-Betriebssysteme verwenden können. Intel folgte mit ihren Intel64-CPUs. ... Jamie Hanrahan vor 6 Jahren 0
Wenn Sie nach Referenzen suchen möchten, die 24-Bit-PFNs dokumentieren, müssen Sie wahrscheinlich ältere Versionen des Handbuchs für Intel x86-Software-Entwickler suchen. Suchen Sie nach denen, die veröffentlicht wurden, bevor x86-64 auf den Markt kam. Jamie Hanrahan vor 6 Jahren 0
1
Rom

Ich lese gerade das Physical Address Extension (PAE) Kapitel in der vierten Ausgabe von Windows Internals (Seiten 435-437), und ich kann den Verweis auf 24 Bits nicht finden. Es gibt einen Verweis auf 25 Bits, die für die Basisseitenadresse verwendet werden, was bedeutet, dass der adressierbare Raum 2 ^ (12 + 25) = 128 GB wird. Aber wir kommen darauf zurück. Lassen Sie uns zunächst sehen, wie eine lineare Adresse in eine physische Adresse umgewandelt wird (und dies ist im Buch perfekt beschrieben): Die lineare Adresse wird in drei Teile aufgeteilt:

  • 12 niedrigere Bits sind innerhalb der Seite versetzt und adressieren jedes Byte auf der 4-KB-Seite.
  • die nächsten 10 Bits sind Index des Datensatzes in der Seitentabelle (PTE), die die Basisadresse (physikalische Adresse des ersten Bytes) der Seite enthält;
  • Die höchsten 10 Bits sind der Index des Datensatzes in der Page Directory Table (PDE), der die Basisadresse für das PTE enthält.

Jedes Element in PTE und PDE enthält einen 32-Bit-Datensatz, von dem 20 Bit die physische Adresse der Seite bzw. die Tabelle der nächsten Ebene enthalten. Die anderen 12 Bits sind Flags, die die Seite oder die Tabelle beschreiben (lesbar / schreibbar / ausführbar usw.). So haben 80386, x486 und Pentium gearbeitet.

Pentium Pro und neuere CPUs verwenden im PAE-Modus jetzt 64-Bit-Datensätze in PDE- und PTE-Tabellen. In diesen Aufzeichnungen können bis zu 40 Bits verwendet werden, um die Basisadresse der Seite im Speicher zu kodieren. Dies bedeutet, dass der PAE-Modus theoretisch 2 ^ 40 Seiten (1T-Seiten) von 2 ^ 12 (jeweils 4 KB) adressieren kann. Der theoretische Gesamtadressraum beträgt 2 ^ (40 + 12) = 2 ^ 52 = 4Peta-Bytes. Betriebssysteme verwenden jedoch nicht alle diese 40 Bit. Windows verwendet zum Beispiel nur 24 davon, was zu einem adressierbaren Adressraum von insgesamt 2 ^ (24 + 12) = 2 ^ 36 = 64 G Bytes führt.

Offensichtlich verwenden verschiedene Versionen (Varianten) von Windows eine andere Anzahl von Bits in dieser Tabelle, was etwas seltsam erscheint. Gemäß der 4. Ausgabe des fraglichen Buches werden in diesem Fall 25 Bits verwendet, was den adressierbaren Speicherplatz auf 128 GB erhöht, und dies wird auch von dieser Seite bestätigt . Dies ist die Quelle der Diskrepanz zwischen der 4. und der 5. Auflage, die oben erwähnt wurden.

Eine ausführlichere Beschreibung der Übersetzung finden Sie auf den Seiten 4-17 und 4-18 (Kapitel 4.4.2) des Intel 64- und IA32-Architekturentwickler-Handbuchs

Oh ja, und das System wird 32-Bit genannt, nicht weil es 2 ^ 32 Bytes adressiert. Dies liegt daran, dass die internen Register 32-Bit breit sind (was nicht immer mehr der Fall ist, der Realität jedoch nahe genug ist). Wenn der adressierbare Speicherplatz den Namen des Betriebssystems bestimmt, wäre DOS ein 20-Bit-Betriebssystem gewesen und alte Macs ein 24-Bit-Betriebssystem

Ja, ich denke genauso. Aber ich glaube nicht, dass Mark einen Fehler macht. :-) vor 15 Jahren 0
Danke Rom, ich interessiere mich für Ihre Punkte - "Es gibt einen Hinweis auf 25 Bits, die für die Basisadressenadresse verwendet werden, was bedeutet, dass der adressierbare Speicherplatz 2 ^ (12 + 25) = 128GB wird.", 25 bedeutet physischer Speicher Adresse wird durch 25 Bits dargestellt, aber 12 bedeutet was? George2 vor 15 Jahren 0
0
ennuikiller

Damit ist gemeint, dass ein virtueller 32-Bit-Adressraum einem physischen 24-Bit-Adressraum zugeordnet wird. Im Allgemeinen wird eine virtuelle 20-Bit-Seitennummer in eine physische 12-Bit-Seitennummer übersetzt, und die verbleibenden Bits sind der Versatz in die Seite

Ja, aber der physische Adressraum war seit der Zeit von 80286 (dh Mitte der achtziger Jahre) vor fast 25 Jahren nicht 24 Bit breit. Rom vor 15 Jahren 2
Hallo ennuikiller, ich bin verwirrt, meinst du, dass der physische Speicher mit 24-Bit adressiert ist, wenn ja, wir könnten max. 2 ^ 24 = 16M eindeutige Positionen (in diesem Fall Bytes) ansprechen. vor 15 Jahren 0
Hallo Rom, wenn physischer Speicher mit 24 Bit adressiert wird, könnten aus Ihrer Berechnung maximal 2 ^ 24 = 16M eindeutige Speicherorte (Bytes in diesem Fall) adressiert werden. Wie könnten wir 4G ansprechen? vor 15 Jahren 0
@ George2, siehe unten das Zitat von "Inside Windows 2000". Grundsätzlich kann jede physische Seite bis zu 16 MB adressieren ennuikiller vor 15 Jahren 1
@ George2: Das ist der Punkt: Physischer Speicher ist auf 32-Bit-Prozessoren 32 Bit breit (eigentlich können Pentium und neuere 32-Bit-Chips 36 Bit (IIRC) adressieren). Ich möchte darauf hinweisen, dass die physische Busgröße nicht 24 Bit breit sein darf Rom vor 15 Jahren 1
@Nennuikiller, ich lese ein Buch von Windows Internals 5 und zielt auf Windows Server 2008 ab. Denken Sie, dass in der Windows Server 2008-Umgebung physischer Speicher mit 24-Bit angesprochen wird? vor 15 Jahren 0
@Nennuikiller, ich denke, ich frage, und Mark spricht über physisches Gedächtnis 24-Bit aus, aber Sie sprechen von Seitenebene - "Grundsätzlich kann jede physische Seite bis zu 16 MB adressieren", reden wir über dasselbe ? vor 15 Jahren 0
Hallo @Rom, danke für deine Kommentare. Ich möchte besprechen, warum der physische Speicher durch Mark als 24-Bit dargestellt wird. Wenn der physische Speicher intern durch 24 Bit dargestellt wird, können nach der Berechnung nur 16 MB physischer Speicher im gesamten System angesprochen werden. Irgendwelche Kommentare? vor 15 Jahren 0