Details und Analyse der Zen-Architektur nach der Hot-Chips-Konferenz

Artikel-Index:

Die Lade-/Speichereinheiten im Detail

Die Caches füttern natürlich die Ausführungseinheiten mit Daten. Bevor Letztere aber in die Register geladen oder geschrieben werden, müssen sie erst die Load-/Store-Einheiten passieren. Deren Aufbau sehen wir auf dem nächsten Bild, unten mittig ist der 32 KiB große L1-Datencache positioniert:

Wie im ganzen Kern üblich wird auch dieser Vorgang durch großzügige Warteschlangen abgepuffert, um Leerläufe zu vermeiden und einen guten Durchsatz erreichen zu können. In diesem Falle gibt es eine Lade- und eine Speicherwarteschlange. Erstere verfügt über 72 Warteplätzte, letztere über 44. Die Lade- und Speicherschlange sind über drei 128-Bit-Ports für zwei Lade- und eine Schreiboperation an den L1D-Cache angebunden. Sowohl die Anzahl der Warteplätze als auch die asymmetrische Aufteilung liegt darin begründet, dass in den allermeisten Fällen Rechnungen nach dem Schema A + B = C berechnet werden, wofür eben zwei Ladevorgänge plus ein Speichervorgang nötig sind. Ausnahmen können über Berechnungen außerhalb der Befehlsreihenfolge (OoO) und durch die vorhandenen Puffer abgefangen werden.

Flankiert wird die Speichereinheit von einem bereits von Bulldozer bekannten Schreibe-&-Kombiniere-Puffer (Write-Combine-Buffer (WCB)), der Schreiboperationen zuerst sammelt, zusammenfügt und erst dann schreibt, und dem MAB, einem Puffer für Speicheradressen.

« Speichersubsystem im Detail» Die Fetch-Einheit im Detail