Zuordnung von Speicheradressen zu physischen Modulen in Windows XP

1304
Josef Grahn

Ich plane, 32-Bit-Windows XP auf einer Workstation mit zwei Prozessoren auszuführen, die auf Intels Nehalem-Mikroarchitektur und Dreikanal-RAM basiert. Obwohl XP auf 4 GB RAM beschränkt ist, kann ich davon ausgehen, dass mehr als 4 GB installiert sind, aber nur 4 GB (oder etwas weniger) verfügbar sind.

Meine Frage ist: Angenommen, 6 GB RAM sind in sechs 1-GB-Modulen installiert. Welche physischen 4 GB werden Windows tatsächlich in den Adressraum abbilden?

Im Speziellen:

  • Wird es alle sechs 1-GB-Module verwenden, um alle Speicherkanäle zu nutzen? (Meine Vermutung lautet ja und die Zuordnung zu einzelnen Modulen innerhalb einer Gruppe erfolgt in Hardware.)

  • Wird jedem der beiden NUMA-Knoten 2 GB Adressraum zugeordnet (da jeder Prozessor über eine eigene Speicherschnittstelle verfügt), oder erhält ein Prozessor einen schnellen Zugriff auf 3 GB RAM, während der andere nur 1 GB besitzt?

Vielen Dank!

5
Ich weiß, Sie setzen Windows-xp in das Tag, würden aber Windows 2003 Server in einem "Workstation" -Modus für Sie arbeiten, wodurch Sie besseren Speicherzugriff erhalten. Lizenz kostet mehr als wahrscheinlich der Mörder IrqJD vor 13 Jahren 0
Leider habe ich eine Hardware, die keine Treiber für etwas anderes als XP 32-Bit hat, und funktioniert nicht auf 2003 Server (laut Hersteller habe ich das eigentlich nicht selbst überprüft). Die zusätzlichen Lizenzkosten wären ein Ärgernis, in meinem Fall aber kein Killer. Josef Grahn vor 13 Jahren 0

1 Antwort auf die Frage

2
Breakthrough

Meines Wissens ist es so, dass der Motherboard-Controller die Zuordnung der virtuellen Speicherplätze zur physikalischen Adresse des Arbeitsspeichers übernimmt. Da der Triple-Channel-Speicher funktioniert und die meisten Motherboard-Controller funktionieren, werden beide CPUs zusammenarbeiten, um die unteren 4 GB RAM in gleichmäßigem Abstand entlang der ersten drei RAM-Module (die ersten drei Sätze von 3 GB zu füllen und zuerst zusammenarbeiten) abzubilden das letzte Gigabyte war zwischen den letzten drei Modulen verteilt.

Ohne diese Implementierung gibt es keinen "Triple-Channel" - Speicherzugriff, wodurch die Leistung stark beeinträchtigt wird. Aus diesem Grund ist die Implementierung des Speichers hardwarebasiert anstelle von Software, sodass es auf Ihrer Seite keine Probleme geben sollte.

Es sollte beachtet werden, dass die 4-GB-Grenze nur aufgrund der hartcodierten Beschränkung von 32-Bit-Speicheradressen besteht. Es gibt jedoch keinen Grund für Software, diese Erweiterung zu erweitern. Dieses Limit wurde für Lizenzprobleme sowie für Probleme mit der Inkompatibilität von Treibern ausgewählt (Dank an Josef Grahn). Dieses Konzept lässt sich leichter verstehen, wenn Sie verstehen, dass Ihr Motherboard und der System-RAM nur eine weitere Systemkomponente sind. Sie können zwar in Ihrem Arbeitsspeicher begrenzt sein, Sie können jedoch auf die zusätzlichen 2 GB zugreifen, die Ausführung von Programmen jedoch nicht zulassen.

Es ist eine Software vorhanden, mit der Sie eine RAM-Disk aus dem RAM erstellen können, auf die das Betriebssystem in 32-Bit-Umgebungen nicht zugreifen kann. SuperSpeed hat ein Programm namens RamDisk, mit dem Sie dies tun können. Eine weitere Option ist die Vsuite Ramdisk- Software (beide unterscheiden sich geringfügig - sehen Sie in der Funktionsliste nach, welche der Ihren Anforderungen entspricht).

Ich werfe nicht speziell für Software, aber dies sind einige, auf die ich gestoßen bin, die es Ihnen ermöglichen, etwas RAM außerhalb des adressierbaren Bereichs eines 32-Bit-Betriebssystems zu verwenden. Es ist zwar bei weitem nicht so gut wie ein direkter Zugriff des Betriebssystems auf den RAM, aber eine RAM-basierte Auslagerungsdatei ist viel besser als eine auf einer Festplatte basierende. Wenn Sie keine Auslagerungsdatei verwenden möchten, können Sie die zusätzliche RAM-Disk auch für auslagerungsintensive Programme (z. B. Bild- oder Videobearbeitung) verwenden.

Vielen Dank für eine gründliche Antwort. Bei einer vollständig transparenten Zuordnung vom physischen Adressraum zu den Speichermodulen würde ich erwarten, dass der Kernel die niedrigeren 4 GB und, wie Sie sagen, effektiv 3 GB vom ersten Modultripel und 1 GB vom anderen verwendet. Wenn der Kernel NUMA-fähig ist, kann diese Zuordnung jedoch nicht vollständig transparent sein. Meine Frage bleibt also: Wird der XP-Kernel trotz "Wissen", dass der physische Adressraum gleichmäßig auf zwei NUMA-Knoten aufgeteilt ist, einfach die niedrigsten physischen 4 GB verwenden, oder ist er in irgendeiner Weise schlauer? Josef Grahn vor 13 Jahren 1
Der Kernel ist zwar für den Software-NUMA-Teil zuständig, nicht für die Hardware. Da der XP-Kernel nur die unteren 4 GB RAM physisch "sieht", ist dies der Bereich, in dem die NUMA-Befehle aufgerufen werden. NUMA ist nur verantwortlich für * wo * in der Speicherzuordnung Dinge zugewiesen werden, und da der XP-Kernel nur eine 4-GB-Speicherzuordnung hat (wie in meiner Antwort beschrieben), und der Speicherort dieser Speicherzuordnung von der Hardware abhängt. Breakthrough vor 13 Jahren 0
Ok, ich akzeptiere deine Antwort. Ein kleiner Hinweis: Wenn man weiß, dass der XP-Kernel tatsächlich PAE-fähig ist, hätte ich erwartet, dass er den gesamten physischen RAM "sehen" kann und daher theoretisch mindestens 4 GB in den virtuellen Adressraum abbilden kann. unter Beibehaltung des Lizenzlimits von 4 GB. Später stieß ich jedoch auf diesen großartigen Blogeintrag von Mark Russinovich, der besagte, dass aufgrund von Treiberproblemen im Kernel ein 32-Bit-Adresslimit auferlegt wurde, das den nutzbaren physischen Adressraum trotz PAE auf 4 GB beschränkte: http: // blogs. technet.com/b/markrussinovich/archive/2008/07/21/3092070.aspx Josef Grahn vor 13 Jahren 0
Ich verstehe, dass der Motherboard-Controller die Zuordnung der virtuellen Speicherplätze zur physischen Adresse des Arbeitsspeichers übernimmt. Die Daten befinden sich tatsächlich in den Seitentabellen, die vom Betriebssystem im Arbeitsspeicher verwaltet werden. Die MMU der CPU greift auf diese zu (und speichert sie im TLB, Teil der CPU). Für jede definierte virtuelle Seitennummer gibt es einen PTE. Die MMU verwendet ihren Inhalt, um virtuelle Seitennummern in physische zu übersetzen. Der Speichercontroller (ob ein Teil des Chipsatzes auf der Hauptplatine oder ein Teil der CPU, wie in aktuellen Topologien), befasst sich nur mit physischen (RAM) Adressen. Jamie Hanrahan vor 6 Jahren 0