Beziehung zwischen der Größe der CPU-Register und dem Hauptspeicher

1427
Michael

Ich habe diesen Beitrag gelesen, habe aber noch eine Frage.

Ich verstehe, dass die Angabe eines 32-Bit-Prozessors Register mit einer Größe von 32 Bit umfasst, die jeweils 2^32Daten aufnehmen können. Was bedeutet es, dass der 32-Bit-Prozessor 4 GB adressierbaren Speicher unterstützt? Was ist, wenn ich 8 GB RAM habe, bedeutet das mehr als nötig?

0
Wissen Sie, wie Montageanleitungen funktionieren? "damit jeder Befehl in dieser Region in einem Taktzyklus abgerufen werden kann?" - Sie wissen, dass dies nicht garantiert ist, richtig? Ramhound vor 7 Jahren 0
Ich habe meinen Beitrag geändert. Vielen Dank Michael vor 7 Jahren 0
Physical Address Extension (PAE) oder solche Tricks können verwendet werden, um mehr als 4 GB Speicher auf einem 32-Bit-Chip zu adressieren. thrig vor 7 Jahren 0
Was meinst du genau, wenn du fragst "Bedeutet das, dass es mehr als notwendig ist", ein 32-Bit-Prozessor, und ebenso kann ein 32-Bit-Betrieb nicht mehr als 4 GB Speicher ansprechen. Ramhound vor 7 Jahren 0

1 Antwort auf die Frage

2
Jamie Hanrahan

Jede kann bis zu 2 ^ 32 Daten aufnehmen

Ein 32-Bit-Register kann 32 Datenbits enthalten. Eine mögliche Verwendung davon wäre für eine ganze Zahl, die von 0 bis (2 ^ 32) -1 reichen kann, dh 0 bis einschließlich 4.294.967.295.

Was bedeutet es, dass der 32-Bit-Prozessor 4 GB adressierbaren Speicher unterstützt?

"Erinnerung" ist heutzutage zu vage. Wenn jemand von "Speicher" spricht, muss klargestellt werden, ob es sich um physischen Speicher (im Allgemeinen RAM) oder um virtuellen Speicher handelt. Für beide gibt es ein zusätzliches Konzept des "Adressraums" - also haben wir einen physischen Adressraum (die Menge von physischen Adressen, in den der gesamte RAM der Maschine passen muss) und einen virtuellen Adressraum (die Menge von virtuellen Adressen innerhalb von allen) definierter virtueller Speicher existiert).

Wenn die Adressübersetzung aktiviert ist und auf jedem modernen Betriebssystem kurz nach dem Booten aktiviert ist und bis zum Herunterfahren so bleibt, werden alle von der CPU referenzierten Adressen als virtuelle Adressen interpretiert. Eine 32-Bit-x86-CPU ist auf nur 4 GB virtuellen Adressraum beschränkt. Dafür gibt es einige Gründe. In x86 gibt es viele Kontexte, in denen verschiedene Register zum Halten von Adressen verwendet werden. Zwei wichtige Beispiele sind der Befehlszeiger (EIP) und der Stapelzeiger (ESP). Mit einem 32-Bit-Register auf x86 können virtuelle Adressen nur so hoch sein wie (2 ^ 32) -1. Das sind 4 GiB. Ein weiterer Grund für die Begrenzung der virtuellen 32-Bit-Adresse besteht darin, dass nur 32 Bit virtuelle Adresse vom Adressübersetzungsmechanismus (Seitentabellen und all dem) unterstützt werden. Gleiches gilt für die Segmentdeskriptoren, auch wenn moderne Betriebssysteme sie nicht viel verwenden, sie befinden sich immer noch im "Adressübersetzungspfad" und können nicht ignoriert werden.

Unter Windows bedeutet dies in der Regel, dass jeder Prozess bis zu 2 GiB vas für seinen Code hat und Daten und das Betriebssystem hat eine weiteren 2 gebt für seinen Code und Daten. Jeder Prozess erhält jedoch eine weitere Instanz dieser 2 GiB, sodass die Gesamtvas, die auf dem System für alle Prozesse verwendet werden, viel mehr als 4 GiB betragen können.

Ihre Frage scheint sich jedoch auf den Arbeitsspeicher zu konzentrieren. Wenn wir über x86 sprechen, und wenn der Writer unter "Arbeitsspeicher" RAM bedeutet, bedeutet dies, dass der Writer die Entwicklungen aus dem Jahr 1995 nicht kennt (der Pentium Pro, der als erster die Physical Address Extension - PAE implementierte). und der Vorläufer der Xeons).

Im Allgemeinen bedeutet dies, dass sie nicht wissen, wie virtueller Speicher funktioniert. Sie gehen davon aus, dass die RAM-Adressen durch die Universalregister des Prozessors begrenzt sind. Dies ist jedoch nicht der Fall, wenn Paging auf dem Prozessor aktiviert ist. Dies ist bei jedem modernen Betriebssystem der Fall. Wenn Paging aktiviert ist, wird jede durch den laufenden Code geltend gemachte Adresse über einen Satz von Tabellen, so genannte Seitentabellen, in eine physische Adresse übersetzt. Die maximale Größe einer physischen Adresse ist daher durch die Größe eines "Seitentabelleneintrags" und nicht durch die Register in der CPU begrenzt.

In dem von Intel auf ia32 implementierten ursprünglichen Paging-Schema sind physikalische Adressen ebenso wie virtuelle Adressen auf 32 Bit begrenzt. Wenn das Betriebssystem die CPU jedoch in den "PAE" -Modus versetzt, können physikalische Adressen zwischen 36 und 52 Bit breit sein (abhängig von der Prozessorfamilie - bei der ersten PAE-Implementierung waren es 36 Bit, beim Pentium Pro und den ersten Xeons). .

(Dies ist nichts Neues. Die Industriehistorie ist voll mit CPUs, deren physikalische Adressgröße sich von der Registerbreite der Maschine unterscheidet.) Der PDP-11 ist beispielsweise eine 16-Bit-CPU, unterstützt jedoch bis zu 4 MB RAM .)

Daher können fast alle modernen "32-Bit" x86-Prozessoren mindestens 64 GiB RAM (2 ^ 36 Byte) adressieren.

Beachten Sie jedoch, dass die Plattform (der Chipsatz und das Motherboard) dabei zusammenarbeiten müssen - viele Motherboards haben ein niedrigeres RAM-Limit als das, was die CPU unterstützen kann. Überprüfen Sie Ihr Mobo-Handbuch oder die technischen Daten.

Um mehr als 4 GB RAM zu verwenden, benötigen Sie auch ein Betriebssystem, das dies unterstützt. Windows 32-Bit-Client-Editionen, XP SP2 und höher, nicht - sie sind auf 4 GB RAM beschränkt. (Eine Windows-Client-Edition ist alles, was nicht "Server" im Namen enthält.) Sie sind auch auf RAM- Adressen beschränkt, die in 32 Bit passen.

Dies liegt jedoch nicht speziell daran, dass der Chip oder das Betriebssystem 32 Bit umfasst, sondern aufgrund einer künstlichen Begrenzung, die Microsoft in Windows kompiliert. Sie taten dies, weil sie feststellten, dass Gerätetreiber von einigen Herstellern, insbesondere von Grafikkarten, auf Computern mit mehr als 4 GB RAM Abstürze verursachten:

Das problematische Client-Treiber-Ökosystem führte dazu, dass [32-Bit] -Client- Editionen physischen Speicher mit mehr als 4 GB ignorieren, obwohl sie theoretisch adressiert werden können. - Russinovich, Solomon und Ionescu: Windows Internals, 6. Ausgabe, Teil 2, Abschnitt "Speichergrenzen für Windows-Clients", Seite 321 (Hervorhebung hinzugefügt)

Beachten Sie, dass es 32-Bit-Windows Server-Editionen gibt, die mehr als 4 GB RAM verwenden können. Viel mehr. Ein 32-Bit-Betriebssystem bedeutet also NICHT unbedingt, dass der Arbeitsspeicher auf 4 GiB beschränkt ist (wie oft behauptet wird). Das 4-GiB-RAM-Limit für Windows- Client- Editionen (tatsächlich liegt es bei etwas mehr als 3 GiB, wenn Ihre E / A-Geräte viel physischen Adressraum beanspruchen) ist kein architektonisches Limit. Es ist eine künstliche Lösung, die in das System eingefügt wird, um es vor schlecht geschriebenen Gerätetreibern von Drittanbietern zu schützen.

Was ist, wenn ich 8 GB RAM habe, bedeutet das mehr als nötig?

Wenn Ihr BIOS erkennt, dass 8 GB RAM vorhanden sind, können einige Betriebssysteme dies alles nutzen. Wenn Sie jedoch 32-Bit-Windows -Versionen außer den teureren Serverversionen verwenden, dann ja. Das Betriebssystem verwendet nicht mehr als 4 GB RAM. In diesem Fall sollten Sie entweder Linux oder eine 64-Bit-Version von Windows installieren, um den gesamten Arbeitsspeicher nutzen zu können.