Workaround zum Thema
64GB RAM mit 32Bit Windows Betriebssystemen
Wir alle kennen die häufigen Fragen:
"Kann ich meine 4GB RAM unter Windows XP 32Bit zum Laufen bringen?" Klare Antwort immer: NEIN.
Ich hab mir mal Gedanken gemacht und ein kleines Workaround angefertigt, wie man die 4GB RAM vielleicht doch nutzbar machen könnte.
1. Das Prolem
1.1 Das physische Problem
Im Jahr 1985 leitete Intel im Bereich der Desktop-Prozessoren die 32bit Ära ein. Mit dem Intel 80i386 ("386er") wurde der erste 32bit x86 CPUs vorgestellt, auf dessen Grundlage auch die aktuellsten Desktop-CPUs basieren. Selbst die Aktuellen AMD64(z.B. Athlon64) und EMT64(z.B. der Conroe) basieren noch auf dem 386er und wurden lediglich um einen Befehlssatz und erweiterten Registern ausgestattet.
Nun was sagt uns diese Bit-Anzahl nun? Zum einen ist es die Breite der Code- und Datenregister(Akkumulatoren) zum Anderen allerdings auch die Breite der Adressregister. Adressregister werden für die Berechnung von Speicheradressen genutzt, die über die Adressleitung angesprochen werden.
Ein 32Bit Prozessor hat somit 32 Adressleitungen und kann demnach 2^32 = 4294967296 Speicherstellen ansprechen. Eine Speicherzelle besteht nun aus 8 Bit (entspricht 1 Byte), so dass eine 32bit-CPU halt bis zu 4 Gigabyte Speicher adressieren kann. Der für den User verwendbare Arbeitsspeicher liegt jedoch meist deutlich unter der maximal ansprechbaren Speicher, da für die Adressierung des VRAM und der Erweiterungskarten sowie des IO auch Adressbereiche verwendet werden.
Da das BIOS nicht weiß, ob ein 32-bit oder 64-bit Betriebsystem gebootet wird, startet es immer im 32-bit Mode. Darin stehen maximal 4 GB addressierbarer Speicher zur Verfügung. Deshalb müssen alle Memory- und Device-Adressräume unterhalb der 4 GB-Grenze eingeblendet werden. Wenn man nun >2 GB physikalischen Hauptspeicher einbaut, dann kommt es zum Ressourcenkoflikt zwischen physikalischem Hauptspeicher und den Device-Adressräumen.
Die meisten BIOS-Versionen lösen das Problem in der Form, dass sie ein Speicherloch unterhalb der 4 GB-Grenze einfügen. Dieses Loch wird auch als PCI-Loch (PCI Hole) bezeichnet. Der Speicher, den dieses Loch belegt, kann von keinem Betriebsystem angesteuert werden. Dadurch bleiben ~512 MB bis ~1.5 GB RAM ungenutzt. Es ist dabei unabhängig, ob es sich um ein 32-bit oder 64-bit OS handelt.
Die einzige Möglichkeit, diesen Speicher nutzbar zu machen, ist die Verlagerung in einen Bereich, der oberhalb von 4 GB liegt und nicht durch physikalischen Speicher schon belegt ist. Dazu bedarf es aber einiger Voraussetzungen:
* Betriebsystemunterstützung
Das Betriebsystem muss Speicher >4 GB ansprechen können. Windows 2000, Windows XP, Windows Server 2003 und Windows Vista unterstützen in den Standardvarianten mit 32-bit maximal 4 GB RAM. Die Advanced-, Enterprise- und Datacenter-Produkte sowie die 64-bit-Versionen können mehr Speicher addressieren, wobei die Grenzen hier von den jeweiligen Versionen abhängen und bis zu 1 TB reichen können.
* Prozessorunterstützung
Intel und AMD unterstützen 40-bit Addressierung in ihren aktuellen x64-Prozessoren (Intel EM64T/AMD64). Ältere Prozessoren sind auf 36-bit (PAE) oder auch 32-bit limitiert.
* Chipsatzunterstützung
Der Chipsatz des Mainboards muss Memory Remapping oberhalb von 4GB unterstützen. Leider beherrscht die grosse Mehrheit der derzeit auf dem Markt erhältlichen Chipsätze für Desktops und mobile Computer genau diese Funktion nicht. Sie lässt sich auch nicht mittels eines BIOS-Updates nachrüsten. Erst die Workstation-Chipsätze von AMD und nVidia sowie demnächst erscheinende neue Chipsätze für Desktops und mobile Computer unterstützen mehr als 4 GB RAM und können die Hauptspeicheradressen zur Umgehung des PCI-Lochs verlagern.
1.1 Das logische Problem
Ein weiteres Problem ist die Lizenz des gekaufen Windows, denn MS hat einfach logische Sperren eingebaut, die auf keiner physischen Grundlage basieren, abgesehen von der "Geld regiert die Welt"-Regel. Folgende Tabelle zeigt die logische Limitierung der bisher erschienen Windows-Betriebssysteme.
2. Die Lösung
Das Zauberwort ist PAE ("Physical Address Extension", -->
[Zur Link-Ansicht bitte registrieren.]
)
Diese Technik erlaubt es, auch mehr Arbeitsspeicher nutzbar zu machen, als durch die ursprüngliche CPU-Architektur vorgegeben.
2.1 Was macht PAE möglich?
Ziemlich genau 10 Jahre nach dem 386er stellte Intel den "Pentium Pro" vor. Dieser leider sehr wenig beachtete Prozessor brachte eine, damals nur im Servermarkt sinnvolle, wichtige Erweiterung mit sich. Zwar war der Pentium Pro ausschließlich für 32Bit Code optimiert, doch hatte er einen 36Bit breiten Adressbus. Dieser ermöglicht nun die Adressierung von satten 64GB RAM.
Auch nahezu alle neuen CPUs (und Mainboards, wenn ein externer Speichercontroller benötigt wird) haben diese 36bit breiten Adressbusse.
2.2 Wie nutzt man PAE nun?
Unter Windows NT(4/2000/XP) aktiviert man PAE, in dem man den Parameter /PAE in die boot.ini hinzufügt. Das einzige Windows NT, das keine boot.ini hat, ist Vista(von dessen Benutzung eh nur abzuraten ist) und dies unterstützt eh kein PAE.
Das geht so:
Start --> Systemsteuerung --> System --> Reiter Erweitert --> Einstellungen unter Starten und Wiederherstellen ==> Bearbeiten unter Systemstart. Nun kann die boot.ini-Datei beschrieben werden.
So könnte es beispielsweise aussehen:
Code:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /PAE
Nach einem Neustart sollte nun der volle RAM unter Windows NT verfügbar sein, sofern es die Lizenz erlaubt.
3. Das Problem
Zwar sind insgesamt theoretisch 64GB nun vergügbar, Windows NT kann jedoch nur maximal 2GB einem Task zuweisen. Fordert ein Programm mehr Arbeitsspeicher, so werden die Daten trotzdem in die Auslagerungsdatei geschrieben. Somit sind die 4GB auch nur auf dem Blatt verfügbar.
3. Die Lösung des Problems
Aber weil wir alle kreative Denker sind, ist uns der Nutzen des durch die PAE gewonnen zusätzlichen Gigabyte RAM klar: Wir erstellen eine RAM-Disk und verwenden diese virtuelle Partition zur Verwaltung der Auslagerungsdatei.
Installation der RAM-Disk:
1. Unter ==>
[Zur Link-Ansicht bitte registrieren.]
finden wir die benötigten Dateien
2. In einem temporären Verzeichnis entpacken. Das entpackte Archiv "installfiles.zip" entpacken. Es entsteht der Unterordner "INSTALL".
3. Systemsteuerung ==> Hardware ==> Ja, die Hardware wurde bereits installiert ==> Ganz runter scrollen ==> neue Hardware hinzufügen ==> Hardware manuell von einer Liste installieren ==> Alle Geräte anzeigen ==> Button Datenträger ==> zur "RAMdisk.inf" navigieren aus dem Unterverzeichnis "INSTALL". Installieren.
4. Falls er neustarten will nach der Installation, lassen wir ihn das machen.
5. Im Arbeitsplatz sollte jetzt die RAM-Disk zu sehen sein. Sie hat standartmäßig eine Größe von 3,1MB.
6. Um die Größe anzupassen: Systemsteuerung ==> System ==> Hardware ==> Gerätemanager ==> "RAM-Disk" ==> Eigenschaften
7. Zuletzt verlegen wir die Auslagerungsdatei auf die RAM-Disk-Partition. Fertig.
4. Verteilung des Arbeitsspeichers
Folgende Information ist für 32Bit-Anwender mit 4GB Arbeitsspeicher relevant:
Falls der Computer mit 4 GB physikalischem Speicher bestückt ist, dann werden zwischen 0,5 und 1,25 GB für den PCI-Adressbereich reserviert, bevor er für Anwendungen zur Verfügung steht. Deshalb stehen der 32-Bit-Version von Windows XP lediglich ca. 2,75 bis 3,7 GB Speicher zur Verfügung - abhängig von der AGP aperture size bzw. von dem Grafikspeicher auf der PCI-Express-Grafikkarte. Wenn mehr Arbeitsspeicher genutzt werden soll, dann muss ein 64-Bit-Betriebssystem eingesetzt werden.
Standardmäßig steht die Hälfte des 4GB großen virtuellen Adressraumes den Anwenderprogrammen zur Verfügung, die andere Hälfte ist für Kernel- und Ausführungsprogramme reserviert. Mit einem
/3GB-Schalter in der Boot.ini-Datei läßt sich diese Grenze zu Gunsten der Anwenderprogramme verschieben, so daß diese mit 3 GB bedacht werden, während auf das Betriebssystem lediglich 1 GB entfallen. Dies kann für einige Anwendungen vorteilhaft sein und ermöglicht größere ungeteilte Speicherblocke im Adressraum.
Der zusätzliche Parameter "/USERVA=2990" ist die Feineinstellung des 3GB-Switches und benötigt den Parameter "/3GB". Der Wert dahinter sollte 2990 (MB) betragen, da mit dem von Microsoft empfohlenen Wert von 3030 öfters Abstürze beobachtet wurden. "USERVA" steht nur ab Windows XP zur Verfügung.
Die Parameter müssten dann so aussehen:
Code:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /PAE /3GB /USERVA=2990
Allerdings wird der 3GB-Switch nicht von jedem Programm genutzt. Denn jeder Task, der davon profitieren soll, muss vom Hersteller dafür optimiert sein. Es gibt im Moment wenige Programme, die den 3GB-Switch unterstützen und von der zusätzlichen Speicher-Weite profitieren. Diese sind jedoch für den Consumer kaum von Interesse.
:nick:
Beste Grüße
Jonny aka die Nuss & AlexanderPCT
*Anmerkung1: Linux-User sind fein raus, ab dem Kernel 2.4.4 wird PAE
ohne Einschränkungen unterstützt.
*Anmerkung2: verwendete GB sind natürlich GiB