PC-Multi-Core-Architektur, Planung des Zugriffs von Cores auf den Systemspeicher

606
Ryan Budney

Mein Bürocomputer verfügt über 8 Kerne. Ich habe das System kürzlich von 4 GB RAM (in zwei Modulen) auf 24 GB RAM (in sechs Modulen) aufgerüstet und habe eine deutliche Leistungssteigerung festgestellt, wenn mehrere Kerne aktiv sind. Insbesondere, wenn alle (oder fast alle) Kerne aktiv sind und Programme ausgeführt werden, die mehr verlangen als der Cache jedes Kerns (8 MB).

Der alte und der neue RAM haben die gleiche Geschwindigkeit (FSB 1333 MHz). Also vermute ich, dass das nicht so ist.

Ist es möglich, dass (einige?) PC-Architekturen Cores gleichzeitig auf den System-RAM zugreifen können, wenn der von ihnen verwendete Speicher ausreichend weit entfernt ist? Ich bin nicht sicher, was "weit auseinander" bedeuten könnte, aber vielleicht gibt es eine Möglichkeit, dass ein Kern auf Karte 1 (oder Chip 3 auf Karte 1) liest / schreibt, während ein anderer Kern gleichzeitig auf Karte 2 (oder Chip 1) lesen / schreiben könnte auf Karte 1)? Sind PC-Architekturen (und möglicherweise Betriebssysteme) so intelligent?

1

2 Antworten auf die Frage

3
AndrejaKo

Nun, da ist NUMA . Wenn es verwendet wird, wird jedem Kern ein RAM zugewiesen. Auf diese Weise passiert genau das, was Sie beschrieben haben. Ein Prozessor arbeitet mit dem zugewiesenen RAM und ein anderer mit einem anderen Teil des RAM. Einige Motherboards erkennen keinen RAM, es sei denn, es sind genügend CPUs vorhanden, um alle zu nutzen. Ich weiß nicht, ob dies bei Computern, die hier erwähnt werden, der Fall ist, aber wenn es sich um Computer auf Workstation-Ebene handelt, ist dies möglich.

Eine weitere Option ist die Speicherüberlappung . Einige Computer können schneller auf den Speicher zugreifen, wenn der Speicher "verteilt" ist. Während ein Modul gerade einen Schreibvorgang ausführt, kann ein anderes Modul Befehle annehmen, sodass Sie nicht warten müssen, bis der Schreibvorgang in einem Modul abgeschlossen ist, bevor Sie in einem anderen Modul beginnen.

Stellen Sie sich also ein Zahlenfeld vor. Jede Nummer steht für einen Speicherplatz. Nehmen wir an, dass in diesem Beispiel jeder Ort ein Byte groß ist. Wenn der Prozessor also 4 Byte schreiben muss, schreibt er Daten an die ersten 4 Speicherplätze. Normalerweise befindet sich der Speicher auf demselben Speichermodul und wahrscheinlich auf demselben Speicherchip. Der Computer muss auf jeden Schreibvorgang warten, bevor er das nächste Datum in den Speicher sendet. Wenn Interleaving verwendet wird, werden adressierte Adressen unterschiedlich abgebildet. Wenn wir einen Computer mit 4 Speichersteckplätzen haben, befindet sich Adresse 1 auf dem ersten Steckplatz, 2 auf dem zweiten, 3 auf dem dritten und 4 auf dem vierten. Auf diese Weise würde der Prozessor, wenn er 4 Bytes schreiben muss, diese an die ersten 4 Speicheradressen senden. Da sie sich jedoch auf unterschiedlichen Modulen befinden, muss er nicht auf den Abschluss der einzelnen Schreibvorgänge warten. Stattdessen wird das Datum an den ersten Ort und dann an den zweiten Ort usw. gesendet. Wenn der erste Schreibvorgang abgeschlossen ist, nähern sich die anderen drei dem Ende, sodass die Daten schneller in den Speicher geschrieben werden können.

Okay, NUMA ist das, worüber ich gesprochen habe. Und von den Links auf der Wikipedia-Seite, die Sie bereitstellen, klingt das so, als würde Intel i7 (mein Bürocomputer) einige Protokolle vom Typ NUMA implementieren. Ryan Budney vor 13 Jahren 0
2
sblair

Angenommen, das Motherboard unterstützt den Dreikanalbetrieb, dann ist die Leistungssteigerung zumindest teilweise auf den Wechsel von Zweikanal zu Dreikanal zurückzuführen.

Vielen Dank. Gibt es eine einfache Möglichkeit in Linux zu überprüfen, ob die DDR3-Spezifikation in einem bestimmten Computer aktiv ist oder nicht? Ihre Erklärung klingt plausibel. "sudo lshw -c memory" scheint diese Informationen nicht zu haben. Ryan Budney vor 13 Jahren 0
@Ryan Eine Möglichkeit, dies herauszufinden, wäre die Spezifikation des Motherboards nachzuschlagen. Wenn das Motherboard Triple Channel unterstützt, ist es wahrscheinlich aktiv, weil Sie alle sechs Speichersteckplätze belegt haben (vorausgesetzt, es sind insgesamt sechs). Das BIOS kann möglicherweise auch bestätigen, dass der Dreikanal aktiviert ist. sblair vor 13 Jahren 0
Ah, okay, das bestätigt es. Die 6 Speicherkarten sind identisch und unterstützen DDR3, und auch das Motherboard. Ryan Budney vor 13 Jahren 0