2016-09-25 1 views
1

Ist die Verzögerung gleich, wenn eine CPU zum Start des RAM oder zum Ende gehen muss, oder gibt es keinen Unterschied?Verzögerung zwischen Start und Ende des RAM

+1

Das ist keine Frage über das Programmieren in C. :) Interessant, obwohl. – unwind

+0

Hängt davon ab, was Sie als "RAM" betrachten. Den "RAM" sieht ein Prozess oder den physikalischen "RAM" einer Box vor. – alk

+0

Es hängt von der Struktur des RAM und des Speicherplatzes ab. Zum Beispiel hat ein Prozessor mit L1/L2/L3 SRAM und SDRAM grundsätzlich vier verschiedene Verzögerungen für vier verschiedene Adressbereiche. Auch für die NUMA-Architektur hat der Prozessor-Cluster eine geringere Latenz, indem er auf den Speicher zugreift, der näher bei ihm liegt. Adapteva Epiphany/Parallella ist ähnlich und hat eine lineare Latenz, abhängig von der Entfernung von Prozessor und Speicher. Wenn Sie GPU-Speicher als RAM betrachten, hat auch der dem Host-Adressraum zugeordnete Gerätespeicher eine längere Latenz. So variiert die Latenz, aber nicht unbedingt so einfach – user3528438

Antwort

0

Es gibt keinen Unterschied in der Leistung, wenn die CPU versucht, auf physischen Speicher unter einer beliebigen Adresse/Bereich zuzugreifen.

Soweit es die CPU betrifft, interagiert es mit einem Speichercontroller über einen Bus. Die Werte in Random Access Speicher werden mittels einer Adresse abgerufen, ohne sich um zu kümmern, wobei die Adresse physisch in einem Speichermodul befindet.

Wenn wir annehmen, dass die CPU Inhalte anfordert, die sich im RAM befinden, nachdem der Cache fehlgeschlagen ist, dann spielt es keine Rolle, ob die angeforderte Adresse x oder x + 100 ist. Die Zeitverzögerungen werden voraussichtlich im selben Leistungsbereich liegen.

Der ‚Start‘ und ‚Ende‘ Standorte würden Rolle, wenn Sie auf sequentiellen Zugriff (z Bandlaufwerke, die oft verwendet für Backups) auf Medien basiert wechseln waren.

Beachten Sie, dass ich das Thema einer Prozessansicht des Speichers bei der Ausführung durch das Betriebssystem (z. B. virtueller Speicher usw.) und die Idee, verschiedene Arten/Mengen von Speicher zu testen und zu vergleichen, vermeiden . Mit anderen Worten, ich nehme an, dass ein gegebenes System eine festgelegte Menge eines bestimmten Speichertyps für einen gegebenen Test hat.

Außerdem habe ich bei der Betrachtung von Speichermodul-Spezifikationen nie irgendwelche Informationen bemerkt, die auf eine Art Leistungseinbußen hinweisen, wenn ein bestimmter Adressbereich innerhalb des Moduls vermieden/verwendet werden sollte.

+0

So zum Beispiel, CPU muss für eine nächste Adresse im RAM zugreifen, wird es die gleiche Zeit als zehn Adressen weiter dauern, oder? Ich möchte sicher sein, dass es keinen Cache oder andere "schnelle Wege" zum Zugriff gibt, wie zum Beispiel Disk-Cache. – Kdmeizk

+0

@Kdmeizk Ich bin nicht klar, was Sie dort meinen. Systemcache-Daten zur Verbesserung der Leistung. Die CPU verfügt über mehrere Cache-Ebenen. Wenn ich verstehe, was Sie richtig meinen, dann ist es vermutlich egal, ob die CPU versucht, nach Cache-Fehlern auf RAM-Daten zuzugreifen, dann ist es egal, ob sie auf die Adressen "x" oder "x + 10" zugreifen will. Ich nehme auch an, dass Sie nicht über die Geschwindigkeit sprechen, mit der es verarbeitet werden würde, da Pipeline-CPUs Daten in Blöcken abrufen/verarbeiten, aber wenn sie etwas anderes benötigen (z. B. aufgrund einer Verzweigung), muss die Pipeline möglicherweise gelöscht werden und nimmt einen Leistungstreffer. – ray

+0

"_wenn die CPU nach einem Cache-Fehler versucht, auf RAM-Daten zuzugreifen, dann spielt es keine Rolle, ob sie versucht, auf Adresse x oder x + 10 zuzugreifen." Ja, das wollte ich hauptsächlich wissen. Danke euch allen für Antworten trotz meiner Klarheit. – Kdmeizk

Verwandte Themen