AMD-Zen-2-Chiplet unter dem Mikroskop: Die-Shots interpretiert
Bilder von nackten Silizium-Chips sehen nicht nur interessant aus, sie erlauben auch Einblicke in den physischen Aufbau eines Prozessors. Leider erklären AMD, Intel und Nvidia diese Details nur ungern - wir wagen uns daher an eine eigene Analyse der bekannten Aufnahmen von Ryzen 3000 und Ryzen Threadripper 3000.
Auf dieser Seite
Bereits im November berichteten wir darüber, dass "Fritzchens Fritz" auf Flickr Detailaufnahmen von AMDs aktuellen Zen-2-CPUs veröffentlicht hat. Die Bilder stellt der Fotograf dankenswerter Weise unter CC0-1.0-Lizenz ohne Copyright zur Verfügung. Aber auch ohne Kommentar und viele Leser fragten uns im Anschluss, was genau sie da eigentlich sehen. Eine Anmerkung vornweg: Wissen tun wir das auch nicht mit Sicherheit, sonst hätten wir es schon damals dazu geschrieben. Leider hält sich AMD (wie auch alle anderen Hersteller) mit solchen Informationen vornehm zurück. Ohne direkte Beschreibung müssen wir uns also durch Vergleiche diverser Informationsquellen unsere eigenen Schlussfolgerungen ziehen und diese mit unserem, über die Jahre erarbeiteten, Hintergrundwissen abgleichen. Das Ergebnis finden sehen sie vor sich - gefüllt mit vielen Details, aber ohne Garantie, dass jedes einzelne davon richtig ist.
Zen-2-Die-Shots: Was ist das eigentlich?
Als Einstieg sollten wir die grundlegenden Begriffe erklären: "Die" ist der englische Singular von "dice", bezeichnet also ursprünglich einen einzelnen Würfel. Über den Umweg "dicing", dem Zerschneiden von Nahrung in kleine Würfel (z.B. "diced meat") floss der Begriff aber auch in die Halbleiterindustrie ein, die einen aus großen Silizium-Wafern herausgeschnittenen, einzelnen Chip als "die" bezeichnet. Der englische Plural lautet in diesem Fall "dies", um die Verwirrung insbesondere im Umfeld deutscher Pronomen auf die Spitze zu treiben, weswegen wir das Wort nach Möglichkeit vermeiden und lieber von "Silizium-Chips" sprechen, denn genau darum soll es gehen. Genauer: Um Fotos ("shots") derselben. Aber nicht in ihrer Einsatzform, wie man sie zum Beispiel auf Grafikkarten nach Demontage des Kühlers bewundern kann. Die-Shots werden nämlich für gewöhnlich von der spannenderen aktiven Seite eines Halbleiters angefertigt. Also dem Teil, der alle rechnenden Bauteile trägt und der deswegen mit seinen Kontakten auf der dem Trägersubstrat zugewandten Seite eines Chips liegt. Ehe diese unter dem Mikroskop fotografiert werden kann, müssen in der Regel noch die Überreste von Lötkontakten und Kleber abgeschliffen werden.
Zu sehen sind dann aber keineswegs die nackten Transistoren. Zwar sind Fritzchen Fritz' Die-Shots mit bis zu 100 MB in komprimierter JPEG-Form und über 1 GB Speicherbedarf in geöffnetem Zustand sehr groß, auch das reicht aber nur für eine Feinheit von ungefähr einem Pixel pro 1.000 nm. Einzelne, zum Teil nicht einmal 10 nm breite Transistoren kann man darin also nicht erkennen; solche Details aus der untersten Schicht direkt im Trägersilizium lassen sich mit einem Lichtmikroskop gar nicht ablichten. Auch die logischen Zellen, in denen mehrere Transistoren eine Schicht höher zu einem basalen Halbleiterelement verschaltet werden, sind mit Kantenlängen von 40 bis 600 nm deutlich kleiner. Mit Lichtmikroskopen angefertigte Die-Shots zeigen bestenfalls die darüber gestapelten Verdrahtungsebenen zwischen diesen logischen Zellen, wobei es zusätzlich geschickte Ausleuchtung und Nutzung von Beugungseffekten an den feinen Strukturen braucht, um dem kontrastarmen Silizium-Motiv überhaupt sichtbare Details zu entlocken.
Zen-2-Die-Shots: Das CPU-Chiplet
Quelle: Fritzchens Fritz auf Flickr
Ein Zen-2-Chiplet (rechts oben) in seiner natürlichen Umgebung: Zusammen mit einem AM4-I/O-Chip bildet einen Matisse-Prozessor mit maximal acht Kernen, also Ryzen 5 3600 bis Ryzen 7 3800X
Konzentrieren möchten wir uns heute auf die eigentliche Recheneinheit von AMDs Zen-2-CPUs. Die in 7 nm bei TSMC gefertigten, sogenannten CPU-Chiplets stellen die eigentliche Rechenleistung bereit und werden in wechselnder Anzahl auf Ryzen-3000- (ein oder zwei Chiplets), Ryzen-Threadripper-3000- (vier Chiplets) und aktuellen Epyc-Prozessoren (vier oder acht Chiplets) verbaut. Dazu kommt jeweils ein I/O-Chip, der die gesamte Kommunikation des Prozessors mit seiner Umgebung abwickelt. Gefällt Ihnen dieses Special? Dann legen wir gerne einen Teil 2 mit Die-Shots der für die Rechenleistung weniger wichtigen, aufgrund der Vielzahl an Schnittstellen aber ungleich komplexeren I/O-Chips auf.
Das diversen Ausschnitten dieses Artikels zugrunde liegende Foto können Sie in voller Auflösung in Fritzchen Fritz' Flickr-Auftritt herunterladen, dort sind auch weitere Ansichten aus wechselnder Perspektive und mit verschiedenen Beleuchtungen zu finden. Als Interpretationshilfsmittel haben wir auch die Aufnahmen der Vorgängergeneration Summit Ridge und des Matisse-I/O-Chips genutzt, alle weiteren gezeigten Ausschnitte drehen sich aber um das Zen-2-CPU-Chiplet.
Zen-2-Die-Shots: CCDs, CCX, Uncore
Schon auf den ersten Blick ist die Grobstruktur des auch CCD genannten Chips ersichtlich: Symmetrisch um die Längsachse gespielt gibt es zwei große Blöcke oben und unten und dazwischen einen schmalen, strukturierteren Balken. Da Ryzen-Prozessoren intern nicht nur in Chiplets, sondern noch feiner in je zwei "Core" oder auch "Compute Complexe" unterteilt sind, ist die Zuordnung einfach: Ein CCX oben, ein CCX unten.
Quelle: Fritzchens Fritz/PC Games Hardware
Während sich die beiden Rechencluster leicht zuordnen lassen, können wir bei der Aufteilung des zentralen Uncore-Bereichs von AMDs 7-nm-Chiplet auch nur raten.
Dazwischen liegt ein Uncore-Bereich, über dessen genauen Aufbau wir nur spekulieren können. Die Logik diktiert, dass hier die Endpunkte des Infinity-Fabric-Link liegen, der den gesamten Datenaustausch zwischen dem CPU-Chiplet und dem benachbarten I/O-Chip, also dem gesamten restlichen System regelt. Tatsächlich entspricht die Feinunterteilung des mittleren Uncore-Bereichs zahlenmäßig derjenigen der IF-Endpunkte auf den I/O-Chips. Im Aufbau der einzelnen, replizierten Strukturen gibt es aber klare Unterschiede und die Randbereiche erinnern nicht einmal oberflächlich an andere AMD-Chips. Denkbar wäre hier ein tatsächlich abweichendes Design für die in 7 nm gefertigten Chiplets und die in 12- oder 14-nm-Fertigung vom Band laufenden I/O-Chips, denn das Layout musste AMD aufgrund der unterschiedlichen Platzverhältnisse sowieso anpassen. Kleine Abweichungen können aber auch direkt aus der Präparation für die Fotos resultieren. Bleiben auf einem Chip zusätzliche Verdrahtungsebenen zurück, die auf einem anderen abgeschliffen wurden, ergeben sich unterschiedliche Bilder trotz gleicher Elektronik.
Zen-2-Die-Shots: Innerhalb eines CCX
Auf die innere Struktur der CCX geben dagegen schon AMDs offizielle Pressetexte Hinweise. Die Bezeichnung "CCD" für die gesamten CPU-Chiplets wird gerne als "Compute Cache Die" ausgeschrieben, wir suchen also nach Rechenkernen und Cache-Bereichen. Da ein Ryzen 7 3800X als größte CPU mit nur einem CCX über acht Kerne verfügt, sollten wir deren vier in jedem der beiden CCX eines CCDs finden - und das ist wirklich keine Herausforderung, zumal AMD eine sehr ähnliche CCX-Struktur auch schon in der Vorgängergeneration nutzte. Nahezu unmöglich ist dagegen die Interpretation des Kreuzungsbereiches zwischen den vier Kernen. Hier dürften sich die Crossbar für die direkte Kommunikation zwischen allen CCX-Quadranten und diverse Kontrolllogiken für Temperaturüberwachung, Power-Gating und Taktkontrolle befinden, zu deren optischen Aufbau es aber keinerlei Anhaltspunkte gibt.
Quelle: Fritzchens Fritz/PC Games Hardware
Caches sind in Die-Shots kaum zu übersehen, das Zählen von (Kern) Eins bis (Kern) Vier überfordert PCGH-Redakteure ebenfalls nicht – eine Interpretation des CCX-Grobaufbaus fällt uns daher leicht.
Zusätzlich erwarten wir jede Menge Cache und der ist auf Die-Shots noch leichter zu identifizieren: Während Logikschaltungen und insbesondere deren Ansteuerung oft komplex miteinander vernetzt und hierzu in bestimmten Positionen zu einander platziert werden müssen, lassen sich Speicherzellen sehr kompakt replizieren, ohne dass Verwaltungsstrukturen die Muster unterbrechen. Große, rechteckig gemusterte Bereiche stellen also nahezu immer Speicherarrays dar. Anhand eines Fotos lässt sich zwar nicht sagen, ob es Flash-Zellen, DRAM für Arbeitsspeicher, SRAM für Caches oder einfache Flip-Flops als Buffer von I/O-Systeme sind, da wir nur die logische Verdrahtung in Spalten und Zeilen sehen. Ein CPU-Chiplet verfügt aber primär über SRAM-Caches, sodass die Interpretation diesmal trotzdem leicht fällt.
Zen-2-Die-Shots: Der Cache
Gucken wir uns den jedem Kern zugeordneten Speicher noch einmal genauer an, fallen weitere Unterteilungen auf. Im der dem CCX-Zentrum näheren Hälfte zunächst ein Kreuz mit Balken aus regelmäßigen Strukturen und einem unregelmäßigen Zentrum, dass vier Felder mit symmetrischen Speicherblöcken definiert. Letztere bestehen wiederum aus vier Zeilen und acht Spalten von Achterblöcken. Den gleichen Grundaufbau gab es auch bei Zen+-Prozessoren schon, nur waren es dort vier Felder mit je vier mal acht Viererblöcken, also die Hälfte der von uns bei Zen 2 vorgefundenen Grundeinheiten. Beim gleichen Generationswechsel hat AMD die Größe der L3-Caches von 2 auf 4 MiB pro Kern verdoppelt (= 16 MiB pro CCX = 32 MiB pro CCD = 64 MiB insgesamt beim Ryzen 9 3950X). Wir zählen 1 und 1 zusammen und stellen fest: Der L3-Cache-Bereich jedes Zen-2-Kerns besteht aus 4 Speicherfeldern mit je 32 Untereinheiten zu je 8 Speicherblöcken, die demnach jeweils 4 KiB groß sind. Bei Zen und Zen+ waren sie genauso groß, aber es gab nur 4×32×4 Speicherblöcke je Kern. Das Kreuz zwischen diesen Feldern dürfte aus Begleiteinheiten des L3-Caches bestehen: Einerseits braucht dieser natürlich eine Form von Controller (der Zentralbereich), andererseits zahlreiche begleitende Speicher, beispielsweise TLBs, damit die Daten schnell gefunden und weitergeleitet werden können. Die kleinen Kreuze innerhalb der einzelnen Speicherblöcke könnten wiederum aus für die Zugriff nötigen Strukturen zusammengesetzt sein - eine Zeilen- und Spaltenmatrix brauchen weitere Schaltungen zur Ansteuerung.
Quelle: Fritzchens Fritz/PC Games Hardware
Innerhalb eines CCX-Quadranten wartet neben dem eigentlichen Rechenkern jede Menge flotter Zwischenspeicher. Die Cache-Arten lassen sich leicht zuordnen, benachbarte Areale aber nur aufgrund ihrer Lage von sonstigen kernspezifischen Einheiten unterscheiden.
Unmittelbar neben dem großen L3-Bereich finden wir ein zweites Areal mit sehr ähnlichen, aber sehr viel weniger Speicherblöcken und einem zunehmenden Anteil an Kontrolllogik. Dieser hat seine Größe und Struktur gegenüber der Vorgängergeneration kaum verändert. Zu sehen sind zwei Felder mit jeweils viermal acht Vierergruppen, wobei jeder einzelne Speicherblöcke etwas weniger Fläche als noch im L3-Cache einnimmt. Naheliegende Vermutung: Es handelt sich um eine schnellere, daher weniger kompakte und in dieser Größe vermutlich halb so viel Kapazität bietende Speicherart. 2 KiB × 4 Blöcke pro Gruppe × 8 Gruppen je Zeile × 4 Zeilen je Feld × 2 Felder ergibt 512 KiB und "etwas schneller als L3" spricht für den Second-Level-Cache. Davon hat jeder Zen-2- und Zen+-Kern 512 KiB. Passt! Drum herum die Ansteuerungs- und Verwaltungseinheiten.
Zen-2-Die-Shots: Der Kern
Korrektur vom 02.01.2020: Im Gegensatz zur ersten Generation hat Zen 2 keinen 64 KiB, sondern einen 32 KiB L1I-Cache. Wir danken PCGHX-Mitglied Locuza für die Korrektur und verweisen auf seine alternative Interpretation des inneren Kernaufbaus, die zumindest hinsichtlich der L2D-Zuordnung gut zu Erkenntnissen über die erste Zen-Generation passt. Unsere ursprünglichen, untenstehenden Spekulationen dürften aufgrund des Ausschlussverfahrens dagegen Folgefehler enthalten.
Bewegen wir uns noch einen Schritt weiter zum Rand des CCX, auf unserem letzten Ausschnitt also nach links, wird es schwieriger. Hier gibt es viele diffuse Bereiche, was bei der noch fehlenden komplexen Rechenlogik nicht überrascht, und in diese eingebettet ein paar größere, Cache-ähnliche Blöcke. Letztere passen gut in unser Schema, denn die CPU hat je Kern noch einen 32 KiB großen L1-Daten- und einen 64 32 KiB großen L1-Befehlscache. Wie schon die Aufteilung in verschieden Aufgabenbereiche zeigt: Diese arbeiten extrem eng mit den eigentlichen Recheneinheiten zusammen und werden tatsächlich auch räumlich nahe an diese herangeführt. Unsere Interpretation wird dadurch allerdings deutlich erschwert. Wir sehen auf unserem Ausschnitt eines Zen-2-Kerns ein Speicherfeld mit 4 × 4 Doppelgruppen unten links, das ergäbe mit einer weiteren Halbierung der Speicherblockgröße auf 1 KiB also den gesuchten 32-KiB-Daten-Cache. Von unten rechts bis in die Bildmitte zieht sich ein L-förmiger Bereich mit insgesamt weiteren 56 derartigen Doppelgruppen, ergänzt um 4 × 4 Einzelgruppen/einzelne Speicherblöcke oben rechts. Zusammen ergeben sich 64 KiB Instruktions-Cache, die geteilte Anordnung der Speicherareale können wir aber nicht erklären. Möglicherweise nutzen Decoder, Load-Store-Einheiten die Sprungvorhersage einen der beiden Bereiche mit?
Quelle: Fritzchens Fritz/PC Games Hardware
Innerhalb eines Kerns beginnt auch bei uns das Raten. Nur der für SSE- und AVX-Berechnungen zuständige SIMD-Bereich ist klar abgegrenzt. Die L1I-Markierung im Bild ging von einer falschen Größenannahme aus und dürfte weitere Speicherbereiche anderen Funktionseinheiten umfassen. L1D und Sprungvorhersage könnten vertausch sein.
Eigentlich wollen wir der Sprungvorhersage aber einen ganz anderen Speicherbereich zuschreiben: Oben links in unserer Darstellung finden sich zwei weitere, große regelmäßige Areale und drum herum viel diffuse Logikschaltungen. Offiziell nennt AMD keine weiteren Speicherbereiche, aber da Sprungvorhersagen systematisch den zurückliegenden Programmablauf auswerten und dafür bereits erfolgte Sprünge zwischenspeichern müssen, ist diese Struktur ein naheliegender Kandidat. Es könnte sich aber auch um die Befehlsdecoder handeln, die über einen Micro-Op-Cache zur Zwischenspeicherung von bereits für die Recheneinheiten dekodierten Instruktionen verfügen. Diesen erwarten wir aber noch näher bei den eigentlichen Recheneinheiten und dem Befehls-Cache. Und tatsächlich: Im vom L-förmigen Teil des L1I eingeschlossenen findet man nicht nur viel Logik, sondern auch zwei zwar kleine, aber regelmäßig in Zeilen und Spalten organisierte Strukturen. Damit ist unsere Feininterpretation der rechten zwei Drittel des Kernbereichs aber auch endgültig am Ende. Die wolkenähnlichen Logikbereiche den vier ALUs und zwei AGUs, diversen Register und ähnlichen Einheiten zuzuordnen, ist ohne weitere Informationen nicht möglich.
Wenden wir uns daher zum Abschluss dem Bereich links außen zu: Mittig ist dieser diffus, darüber und darunter finden sich zwei von oben nach unten strukturierte, aber sich von links nach rechts nicht wiederholende Bereiche, deren beinahe spiegelsymmetrischer Aufbau für je zwei doppelt vorhandene, sehr ähnliche Einheiten spricht. Was hat vier Pipelines und einen Scheduler? Zen 2s SIMD-Einheit, die, wie bei AMD üblich, getrennt vom Integer-Teil des Kerns arbeitet. Tatsächlich finden wir einen halbierte Form dieser Einheit auch auf Zen+-Die-Shots und der entscheidende SIMD-Unterschied zwischen beiden Generationen ist der Wechsel von 128-Bit- auf 256-Bit-Einheiten für schnellere AVX2-Bearbeitung.
Quelle: Fritzchens Fritz/PC Games Hardware
Links: Eine vollständige Zen+-SIMD-Einheit, rechts eine Hälfte des Zen-2-Gegenstücks. Die Ähnlichkeiten sind offensichtlich und erlauben eine eindeutige Zuordnung dieses Chip-Bereichs.

Gucke mir jetzt das zweite Video an. Bitte gerne mehr Videos von diesem Format!
PS: Ich weiß, der Kommentar kommt etwas verspätet.
Es sind 32KiB für I$ und D$, bei Zen1 waren es noch 64KiB L1I$ und 32KiB L1D$.
Bezüglich des L1D würde ich mich dann dieser, auch von Casurin geäußerten anschließen. Das dürfte der Bereich sein, den ich ursprünglich der Sprungvorhersage zuordnen wollte. Und dass sich Load/Store wie bei Zen um die von dir mit "?" markierten Puffer(?) gruppiert, habe ich weiter oben auch schon geäußert.
Beim L1I bleibt es aber schwierig. Der von dir markierte Hals des "L" ist zwar günstig gelegen (zwischen L2 und möglicher Decodier-Logik), aber in 6 × 4 = 24 Blöcke unterteilt. Das geht nicht auf für 32 KiB. Was passen würde: Der Querbalken des L (32 Blöcke). Sprungvorhersage darunter würde wegen räumlicher Nähe sinn machen, dann bliebe der 4 × 4 Block links als µOP-Cache übrig.
[Ins Forum, um diesen Inhalt zu sehen]
Bezüglich der Bilderbeschriftung beim L3$, was dort als TLBs bezeichnet wird, sind Cache Tags.
Über/Unter der L3$-Kontrolleinheit befinden sich sehr wahrscheinlich die Shadow Tag Macros, wo Adressteile von jedem L2$ gespeichert werden, damit man bei einem lokalen L2$ miss effizienter herausfindet, ob irgendein anderer L2$ die nötigen Daten hat.
Also anstatt bei einem local miss die anderen L2-Caches direkt zu überprüfen, wird zuerst bei den STMs nachgeschaut, was dazu führt das man insgesamt viel weniger Druck auf die L2-Caches ausübt und laut AMD sparen sie dadurch auch viel elektrische Energie deswegen.
---------------------------
Auch wenn zunehmend mehr Leser schon bei Temperaturdifferenzen in Kelvin irritiert sind.
(Außerdem hat mir der Duden unter hinterhältiger Ausnutzung einer DIN-Norm die Kurzschreibweise "%" für "/100" zu einer Maßeinheit deklariert. Iiiiiigitt.)
Gerne mehr davon.
Interessant fände ich einen direkten Vergleich zu Intel/monolitischem Aufbau
Wünsche meiner Seits wären abseits des IO-Die, die Unterschiede zu Intel, wie sich der Aufbau der CPU verändert hat im Vergleich zu einer 15 Jahre alten CPU, wie die Planung und die eigentliche Herstellung einer CPU abläuft. Ist schon faszinierend wie winzig das ganze ist, und dann schmiert Intel ihre Zahnpasta drauf.
https://www.pcgameshardwa...
Wünsche meiner Seits wären abseits des IO-Die, die Unterschiede zu Intel, wie sich der Aufbau der CPU verändert hat im Vergleich zu einer 15 Jahre alten CPU, wie die Planung und die eigentliche Herstellung einer CPU abläuft. Ist schon faszinierend wie winzig das ganze ist, und dann schmiert Intel ihre Zahnpasta drauf.