Wie schreibt die CPU Informationen in den RAM?

10

Meine Frage ist, wie schreibt die CPU Daten in den RAM?

Soweit ich weiß, verwenden moderne CPUs unterschiedliche Cache-Ebenen, um den RAM-Zugriff zu beschleunigen. Der RAM erhält einen Befehl zur Information und sendet dann einen Datenburst an die CPU, der die erforderlichen Daten (und eine Reihe zusätzlicher Daten, die nahe an der von der CPU gewünschten Adresse lagen) im Cache der höchsten Ebene speichert. Die CPU fragt dann nach und nach Die verschiedenen Caches senden immer kleinere Datenblöcke über die Cache-Ebenen, bis sie sich im Cache der Ebene 1 befinden, der dann direkt in ein CPU-Register eingelesen wird.

Wie funktioniert dieser Prozess, wenn die CPU in den Speicher schreibt? Geht der Computer die Cache-Ebenen rückwärts (in umgekehrter Reihenfolge wie beim Lesen)? Wenn ja, wie sieht es mit der Synchronisierung der Informationen in den verschiedenen Caches mit dem Hauptspeicher aus? Wie ist die Geschwindigkeit einer Schreiboperation im Vergleich zu einer Leseoperation? Was passiert, wenn ich kontinuierlich in den Arbeitsspeicher schreibe, z. B. bei einer Bucket-Sortierung?

Danke im Voraus,

-Faken

Edit: Ich habe noch keine Antwort bekommen, die ich voll akzeptieren kann. Ich möchte vor allem über den Synchronisationsteil des RAM-Schreibens Bescheid wissen. Ich weiß, dass wir direkt von der CPU in den L1-Cache schreiben und dass Daten in den Cache-Ebenen nach unten verschoben werden, wenn wir die verschiedenen Ebenen der Caches synchronisieren, und dass schließlich der Haupt-RAM mit dem Cache der höchsten Ebene synchronisiert wird. Was ich jedoch gerne wissen würde, ist, wann Caches mit dem Haupt-RAM synchronisiert und scynocronisiert werden und wie schnell ihre Geschwindigkeiten im Verhältnis zu Lesebefehlen sind.

Tamara Wijsman
quelle

Antworten:

11

Ah, dies ist eine dieser einfachen Fragen, die wirklich komplexe Antworten haben. Die einfache Antwort ist, nun, es hängt davon ab, wie das Schreiben durchgeführt wurde und welche Art von Caching es gibt. Hier ist eine nützliche Einführung in die Funktionsweise von Caches .

CPUs können Daten auf verschiedene Arten schreiben. Ohne Zwischenspeicherung werden die Daten sofort im Speicher gespeichert und die CPU wartet, bis der Schreibvorgang abgeschlossen ist. Beim Caching speichert die CPU normalerweise Daten in Programmreihenfolge, dh wenn das Programm auf Adresse A und dann auf Adresse B schreibt, wird der Speicher A unabhängig vom Caching vor Speicher B geschrieben. Das Caching wirkt sich nur aus, wenn der physische Speicher aktualisiert wird. Dies hängt von der Art des verwendeten Cachings ab (siehe obigen Link). Einige CPUs können Daten auch nicht zeitlich speichern, dh die Schreibvorgänge können neu angeordnet werden, um die Speicherbandbreite optimal zu nutzen. Wenn Sie also nach A, dann nach B und dann (A + 1) schreiben, können Sie neu ordnen, dass Sie in einem einzigen Burst nach A und dann nach A + 1 schreiben, dann nach B.

Eine weitere Komplikation besteht darin, dass mehr als eine CPU vorhanden ist. Abhängig von der Art und Weise, wie das System ausgelegt ist, werden Schreibvorgänge von einer CPU von anderen CPUs nicht gesehen, da sich die Daten noch im ersten CPU-Cache befinden (der Cache ist verschmutzt). In Systemen mit mehreren CPUs wird es als Cache-Konsistenz bezeichnet, wenn der Cache jeder CPU mit dem im physischen Speicher befindlichen übereinstimmt. Es gibt verschiedene Möglichkeiten, wie dies erreicht werden kann.

Das oben Genannte richtet sich natürlich an Pentium-Prozessoren. Andere Prozessoren können Dinge auf andere Weise tun. Nehmen Sie zum Beispiel den Cell-Prozessor der PS3. Die Grundarchitektur einer Zellen-CPU besteht aus einem PowerPC-Kern mit mehreren Zellenkernen (auf der PS3 gibt es acht Zellen, von denen eine immer deaktiviert ist, um die Ausbeute zu verbessern). Jede Zelle hat ihren eigenen lokalen Speicher, eine Art L1-Cache, der niemals in den System-RAM geschrieben wird. Daten können zwischen diesem lokalen RAM und dem System-RAM unter Verwendung von DMA-Übertragungen (Direct Memory Access) übertragen werden. Die Zelle kann mit scheinbar normalen Lese- und Schreibvorgängen auf den System-RAM und den RAM anderer Zellen zugreifen, dies löst jedoch nur eine DMA-Übertragung aus (daher ist sie langsam und sollte wirklich vermieden werden). Die Idee hinter diesem System ist, dass das Spiel nicht nur ein Programm ist,

Zusammenfassend war das Schreiben in den RAM in den Tagen, als die CPU-Geschwindigkeit mit der RAM-Geschwindigkeit übereinstimmte, sehr einfach. Mit zunehmender CPU-Geschwindigkeit und Einführung von Caches wurde der Prozess jedoch mit vielen verschiedenen Methoden komplexer.

Skizz

Skizz
quelle
2

Ja, es geht rückwärts die Cache-Ebenen hinunter und speichert im Speicher, aber der wichtige Hinweis ist, dass im Multi-Processing-System der Cache von zwei oder mehr Prozessoren (Kern) gemeinsam genutzt wird und die Daten konsistent sein müssen. Dies wurde durchgeführt, indem ein gemeinsamer Cache für alle Multiprozessoren erstellt wurde oder ein anderer Cache, aber speichern Sie die Konsistenz mithilfe des Abschnitts "Kritisch" (wenn sich die Daten in einem Cache geändert haben, wird er gezwungen, in den Speicher zu schreiben und den anderen Cache zu aktualisieren)

Am1rr3zA
quelle