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

Artikel-Index:

Die Lade-/Speichereinheiten im Detail

Die Caches füt­tern natür­lich die Aus­füh­rungs­ein­hei­ten mit Daten. Bevor Letz­te­re aber in die Regis­ter gela­den oder geschrie­ben wer­den, müs­sen sie erst die Load-/Sto­re-Ein­hei­ten pas­sie­ren. Deren Auf­bau sehen wir auf dem nächs­ten Bild, unten mit­tig ist der 32 KiB gro­ße L1-Daten­cache positioniert:

Wie im gan­zen Kern üblich wird auch die­ser Vor­gang durch groß­zü­gi­ge War­te­schlan­gen abge­puf­fert, um Leer­läu­fe zu ver­mei­den und einen guten Durch­satz errei­chen zu kön­nen. In die­sem Fal­le gibt es eine Lade- und eine Spei­cher­war­te­schlan­ge. Ers­te­re ver­fügt über 72 War­te­plätz­te, letz­te­re über 44. Die Lade- und Spei­cher­schlan­ge sind über drei 128-Bit-Ports für zwei Lade- und eine Schrei­b­ope­ra­ti­on an den L1D-Cache ange­bun­den. Sowohl die Anzahl der War­te­plät­ze als auch die asym­me­tri­sche Auf­tei­lung liegt dar­in begrün­det, dass in den aller­meis­ten Fäl­len Rech­nun­gen nach dem Sche­ma A + B = C berech­net wer­den, wofür eben zwei Lade­vor­gän­ge plus ein Spei­cher­vor­gang nötig sind. Aus­nah­men kön­nen über Berech­nun­gen außer­halb der Befehls­rei­hen­fol­ge (OoO) und durch die vor­han­de­nen Puf­fer abge­fan­gen werden.

Flan­kiert wird die Spei­cher­ein­heit von einem bereits von Bull­do­zer bekann­ten Schreibe-&-Kombiniere-Puffer (Wri­te-Com­bi­ne-Buf­fer (WCB)), der Schrei­b­ope­ra­tio­nen zuerst sam­melt, zusam­men­fügt und erst dann schreibt, und dem MAB, einem Puf­fer für Speicheradressen.