Es wird direkt in den zugewiesenen Cache-Block geschrieben und später mit der Leseanforderung zusammengeführt.
Nein, das sagt AMDs pdf nicht. Sie sagen, dass die Speicherdaten mit den gerade abgerufenen Daten aus dem Speicher zusammengeführt werden und dann im Datenarray des L1-Cachespeichers gespeichert werden.
Der Cache verfolgt die Gültigkeit mit der Granularität der Cache-Zeilen. Es gibt keine Möglichkeit, die Tatsache zu speichern, dass "die Bytes 3 bis 6 gültig sind; bewahren Sie sie auf, wenn Daten aus dem Speicher ankommen". Diese Art von Logik ist zu groß, um in jeder Zeile des Cache-Arrays zu replizieren. Bitte beachten Sie, dass das von Ihnen gefundene PDF ein bestimmtes Verhalten der AMD K6-Mikroarchitekturen beschreibt, das nur Single-Core-fähig ist und einige Modelle nur eine einzelne Cache-Ebene hatten, sodass kein Cache-Kohärenz-Protokoll erforderlich war. Sie beschreiben das K6-III (Modell 9) unter Verwendung von MESI zwischen L1- und L2-Caches.
Eine CPU, die in den Cache schreibt, muss die Daten behalten, bis der Cache bereit ist, sie zu akzeptieren. Es ist jedoch kein Wiederholungs-bis-Erfolg-Prozess. Es ist eher so, als ob der Cache die Speicherhardware benachrichtigt, wenn sie bereit ist, diesen Speicher zu akzeptieren (d. H. Sie hat diese Zeile aktiv und im modifizierten Zustand, wenn der Cache mit anderen Caches unter Verwendung der MESI protocol kohärent ist).
In einer echten CPU, multiple outstanding misses can be in flight at once (auch ohne vollständige spekulative Out-of-Order-Ausführung). Dies wird Miss unter Miss genannt. Die CPU < -> Cache-Verbindung benötigt einen Puffer für jeden ausstehenden Fehler, der parallel unterstützt werden kann, um die Speicherdaten zu speichern. z.B. Ein Kern könnte 8 Puffer haben und 8 ausstehende Lade- oder Speicherfehler unterstützen. Eine 9. Speicheroperation konnte nicht beginnen, bis einer der 8 Puffer verfügbar wurde.Bis dahin müssten Daten in der Speicherwarteschlange der CPU bleiben.
Diese Puffer können zwischen Lade- und Speichervorgängen aufgeteilt werden, oder Speicherpuffer. Das OP berichtet, dass die Suche nach Speicherpuffer viele verwandte Sachen von Interesse gefunden hat; ein Beispiel ist this part of Wikipedia's MESI article.
Der L1-Cache ist wirklich ein Teil eines CPU-Kerns in modernen Hochleistungs-Designs. Es ist sehr eng mit der Speicherordnungslogik integriert und muss in der Lage sein, atomare Operationen wie und viele andere Komplikationen (wie Speicherumordnung) effizient zu unterstützen. Siehe zum Beispiel https://en.wikipedia.org/wiki/Memory_disambiguation#Avoiding_WAR_and_WAW_dependencies.
Einige andere Begriffe:
- Speicherpuffer
- Speicherwarteschlange
- Speicherordnungspuffer
- Cache-Schreib-Port/Cache-Lese-Port/Cache-Port
- global sichtbar
entfernt bezogen: An interesting post Untersuchung der adaptiven Ersetzung Politik von Intel IvyBridge L3-Cache, so dass es resistenter gegen die Vernichtung wertvolle Daten beim Scannen einer großen Array.
Kann ich den Namen des Puffers lernen, der die Daten speichert? Ich weiß, dass die CPU mehrere ausstehende Leseanforderungen wegen fehlgeschlagener Statusbehandlungsregister haben kann, was sie zu einem blockierungsfreien Cache macht, aber ich kenne den Namen der Hardware nicht, die als Puffer für Speicherdaten dient, die mit geholt werden sollen Daten aus dem niedrigeren Speicher im Fall AMD K6. Ich würde es schätzen, wenn Sie mir den Namen oder Details oder Beispiele dieser Hardware mitteilen. – menderft
@menderft: "Speicherpuffer" enthält anscheinend diese Bedeutung. Der MESI-Artikel auf Wikipedia [verwendet diesen Begriff, wenn er beschreibt, dass Cache-Miss-Speicher beim Schreiben auf eine ungültige Cache-Zeile warten müssen] (https://en.wikipedia.org/wiki/MESI_protocol#Memory_Barriers). Bei einer Architektur mit starker Speicherordnung müsste eine CPU die Dinge koordinieren, um sicherzustellen, dass Speicher nicht in einer Reihenfolge festgeschrieben werden, die nicht architektonisch zulässig ist. Es muss auch Speicherpuffer für seine eigenen Ladevorgänge ausspionieren, um das Erscheinungsbild der Ausführung eines einzelnen Threads in der richtigen Reihenfolge zu erhalten. Daher sind die Puffer Teil der Speicherwarteschlange. –
Ja, es gibt viele Fragen zu meiner Frage, wenn ich nach dem Speicherpuffer suche. Vielen Dank. – menderft