Wie schreibt die CPU Informationen zu RAM?

12178
Tom Wijsman

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

Soweit ich weiß, verwenden moderne CPUs verschiedene Cache-Ebenen, um den RAM-Zugriff zu beschleunigen. Der RAM erhält einen Informationsbefehl und sendet dann einen Datenstoß an die CPU, der die erforderlichen Daten (und ein Bündel zusätzlicher Daten, die nahe an der von der CPU gewünschten Adresse waren) im Cache auf der höchsten Ebene speichert Die verschiedenen Caches senden kleinere und kleinere Datenblöcke durch die Ebenen der Caches, 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 zurück (in umgekehrter Reihenfolge im Vergleich zum Lesen)? Wenn ja, wie wäre es, die Informationen in den verschiedenen Caches mit dem Hauptspeicher zu synchronisieren? Wie ist auch die Geschwindigkeit eines Schreibvorgangs im Vergleich zu einem Lesevorgang? Was passiert, wenn ich kontinuierlich in den RAM-Speicher schreibe, beispielsweise bei einer Bucket-Sortierung?

Danke im Voraus,

Gefangen

Edit: Ich habe immer noch keine Antwort bekommen, die ich voll und ganz akzeptieren kann. Ich möchte vor allem über den Synchronisationsteil des RAM schreiben. Ich weiß, dass wir direkt von der CPU in den L1-Cache schreiben, und dass die Daten auf den Cache-Level nach unten verschoben werden, wenn wir die verschiedenen Level des Caches synchronisieren und der Haupt-RAM schließlich mit dem Cache der höchsten Ebene synchronisiert wird. Was ich jedoch gerne wissen möchte, ist, WENN Caches mit dem Hauptspeicher synchronisieren und scynocronize und wie schnell sie in Bezug auf Lesebefehle sind.

10

2 Antworten auf die Frage

11
Skizz

Ah, das ist eine dieser einfachen Fragen, die sehr komplexe Antworten haben. Die einfache Antwort lautet: Nun, es hängt davon ab, wie das Schreiben ausgeführt wurde und welche Art von Zwischenspeicherung 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 gespeichert und die CPU wartet, bis der Schreibvorgang abgeschlossen ist. Beim Zwischenspeichern speichert die CPU normalerweise Daten in der Programmreihenfolge, dh, wenn das Programm in Adresse A und dann in Adresse B schreibt, wird der Speicher A vor dem Speicher B geschrieben, unabhängig von der Zwischenspeicherung. Die Zwischenspeicherung wirkt sich nur auf die Aktualisierung des physischen Speichers aus und hängt von der Art der Zwischenspeicherung ab (siehe Link oben). Einige CPUs können Daten auch nicht temporär speichern, dh die Schreibvorgänge können neu angeordnet werden, um die Speicherbandbreite optimal zu nutzen. Schreiben Sie also A, dann B und dann (A + 1), so dass in A, dann A + 1 in einem einzigen Burst und dann B umgeschrieben werden kann.

Eine weitere Komplikation ist, wenn mehr als eine CPU vorhanden ist. Je nach Aufbau des Systems werden Schreibvorgänge einer CPU von anderen CPUs nicht erkannt, da sich die Daten noch im ersten CPU-Cache befinden (der Cache ist fehlerhaft). In mehreren CPU-Systemen wird die Zwischenspeicherung der einzelnen CPU-CPUs mit dem im physischen Arbeitsspeicher befindlichen Cache-System übereinstimmen. Es gibt verschiedene Möglichkeiten, wie dies erreicht werden kann.

Natürlich richtet sich das oben auf Pentium-Prozessoren. Andere Prozessoren können andere Aufgaben ausführen. Nehmen Sie zum Beispiel den Cell-Prozessor der PS3. Die Basisarchitektur einer Zellen-CPU besteht aus einem PowerPC-Kern mit mehreren Zellkernen (auf der PS3 gibt es acht Zellen, von denen eine immer deaktiviert ist, um die Erträge zu verbessern). Jede Zelle hat einen 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 mittels DMA-Übertragungen (Direct Memory Access) übertragen werden. Die Zelle kann auf das System-RAM und das RAM anderer Zellen mit scheinbar normalen Lese- und Schreibvorgängen zugreifen, dies löst jedoch nur eine DMA-Übertragung aus (daher ist es langsam und sollte unbedingt vermieden werden). Die Idee hinter diesem System ist, dass das Spiel nicht nur ein Programm ist,

Zusammenfassend war das Schreiben in den RAM-Bereich in den Tagen, in denen 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

2
Am1rr3zA

Ja, es geht rückwärts durch die Cache-Ebenen und speichert sie im Arbeitsspeicher, aber der wichtige Hinweis ist, dass der Cache in einem Multi-Processing-System von zwei oder mehr Prozessoren (Core) gemeinsam genutzt wird und die Daten konsistent sein müssen. Dazu wurde der Cache für alle Multiprozessoren gemeinsam genutzt oder anderer Cache, aber Konsistenz durch Verwendung des kritischen Abschnitts speichern (wenn Daten in einem Cache geändert werden, erzwingen sie das Schreiben in den Speicher und das Aktualisieren eines anderen Cache).