Zen 2 — AMD Ryzen 7 3700X und Ryzen 9 3900X im Test
Technische Details: CCX, CCD, Windows-Scheduler, CPPC2
Die grundsätzliche Zen-2-Architektur haben wir beleuchtet, nun sehen wir uns an, wie AMD daraus die CPU Matisse alias Ryzen 3000 geformt hat.
Wie mit Zen eingeführt besteht auch ein Zen-2-Die wieder aus zwei CCX mit je 4 Kernen. Der CCX-eigene L3-Cache wurde wie erwähnt verdoppelt, das Die aus zwei CCX nennt AMD nun CCD, was für Compute Cache Die stehen dürfte.
Anders als noch bei Zen 1 enthält das Die nun allerdings keinerlei I/O mehr; keinen Memory-Controller, keine PCIe-Controller, keine SoC-Komponenten wie USB, SATA, etc. Diese Sachen hat AMD nun in ein IO-Die (cIOD) ausgelagert. Ein Ryzen 3000 “Matisse” besteht also nicht mehr aus einem Die, sondern aus zweien; mindestens.
Ähnlich wie zuvor schon bei Threadripper realisiert AMD mehr als 8 Kerne nicht mithilfe eines größeren Dies mit mehr Kernen, sondern mithilfe von mehreren zusammengeschalteten Dies, im Falle von Ryzen 3000 “Matisse” mit zwei CCDs. Im Unterschied zu Threadripper 1000 und 2000 sind hier jedoch die genannten IO-Komponenten nicht mehrfach vorhanden, sondern nur einfach im cIOD, egal ob ein oder zwei CCDs verbaut sind.
Der Hintergedanke ist klar: kleine Dies sind einfacher und kostengünstiger zu fertigen, auch die Ausbeute (Yield) ist höher, als bei einem großen monolithischen Die. Doch was ist aus der Proklamation von nativen x‑Kern-Prozessoren geworden, beispielsweise zur Markteinführung des AMD Phenom, bei dem AMD als großen Vorteil pries, dass er eben nicht aus zwei Dual-Core-Dies bestand, sondern aus einem “nativen” Quad-Core-Die? Kleinere Dies waren damals wie heute einfacher und günstiger zu fertigen. Das Problem war damals jedoch, wie man mehrere Dies zusammenschaltet ohne dass die Leistung darunter litt. Bei Intel wurde dies seinerzeit über den langsamen Frontside-Bus bewerkstelligt, was nicht wirklich ideal war. In die richtige Richtung ging es bei späteren AMD Opterons (“Magny Cours”), die im Multi-Chip-Layout über HyperTransport verbunden wurden. Ähnlich wird es auch bei Threadripper gemacht und auch hier bei Ryzen 3000 “Matisse”, nur dass nicht mehr HyperTransport zum Einsatz kommt, sondern das daraus entwickelte Infinity Fabric. Erst damit ist die Bandbreite hoch und die Latenz niedrig genug, dass man den Vorteil der kleineren Dies mitnehmen kann ohne in Sachen Leistung Einbußen inkauf nehmen zu müssen.
Die Lesegeschwindigkeit zwischen CCD und cIOD liegt bei 32 B/cycle. Was die Grafik nicht zeigt ist, dass die Schreibgeschwindigkeit nur 16 B/cycle beträgt. AMD begründet dies damit, dass reine Schreibzugriffe bei Desktop-Workloads eher selten sind und man so Die-Fläche und Stromverbrauch sparen wollte. Wir werden später noch sehen, ob und wie sich das auswirkt.
Trotz der aufwändigeren Rechenwerke (z.B. doppelt so breite FPU) ist es AMD dank der neuen 7‑nm-Fertigung von TSMC gelungen, die Taktfrequenzen zu erhöhen, was im Zusammenspiel mit der höheren IPC und der optional je nach Modell erhöhten Anzahl an Kernen zu einer deutlichen Leistungssteigerung führen soll.
AMD verspricht eine deutlich verkürzte “effektive” Speicherlatenz. Das lässt Spielraum für Interpretationen, denn die Auslagerung des IO-Bereichs und damit auch des Memory-Controllers in ein eigenes Die kann eigentlich nur zu längeren und nicht zu kürzeren Latenzen führen gegenüber einem integrierten Memory-Controller; zumindest nicht ohne Gegenmaßnahmen. Was AMD hier wohl meint ist, dass der vergrößerte L3-Cache (“Gamecache”) seltener RAM-Zugriffe erfordert und falls doch, Ryzen 3000 “Matisse” dank der nun auch offiziell unterstützten DDR4-3200 – per Overclocking natürlich noch viel mehr, aber dazu später – die Daten schneller liefern kann. Daher wohl die Formulierung “effektive” Speicherlatenz. Die tatsächliche Speicherlatenz, also vom Kommando “hey, die Daten sind nicht im Cache, ich brauche sie aus dem RAM” bis zur Lieferung muss ob der Zustellung über Infinity Fabric aus einem externen Die länger dauern. Auch das werden wir prüfen.
Windows-Scheduler
AMD-Prozessoren und die jeweiligen Windows-Scheduler ihrer Zeit waren nicht immer die besten Freunde. Man denke nur an Windows 7, das mit der eigenwilligen Modul-Bauweise der Bulldozer-Prozessoren nicht warm wurde und daher gepatcht werden musste oder die damaligen K8 Dual-Cores, die sich als HyperThreading-Prozessoren ausgeben mussten, weil Windows XP Home keinen SMP-Support bot. Und auch mit der jüngsten Zen-Architektur arbeitet der Scheduler von Windows 10 nicht optimal zusammen, denn dieser kann nicht unterscheiden zwischen nahen Kernen innerhalb eines CCX und fernen Kernen in einem anderen CCX oder gar einem anderen CCD. Für den Windows-Scheduler ist oder war Zen bisher ein monolithischer 8‑Kern-Prozessor.
Seit Windows 10 “May 2019 Update” alias Version 1903 soll dieses Problem nun behoben sein. Dank “Topology Awareness” erkennt der Windows-Scheduler nun, dass es besser ist, mehrere Threads eines Tasks innerhalb eines CCX ablaufen zu lassen, da hier die Latenzen am kürzesten sind, statt die Last wahllos über die CCX hinweg zu verteilen. Das soll je nach Workload zu höherer Leistung führen. Von dieser Verbesserung profitiert im übrigen nicht nur Zen 2, sondern auch die bisherigen Zen-Prozessoren, sodass Windows-10-User ein baldiges Upgrade auf v1903 in Erwägung ziehen sollten.
CPPC2
Eine weitere Änderung diesbezüglich – allerdings ist dafür zwingend eine Zen-2-CPU erforderlich – betrifft die Art und Weise, wie die Taktfrequenz in Abhängigkeit von der Last gesteuert wird. Bei bisherigen AMD-CPUs erfolgte dies über die P‑States. Diese sind jedoch relativ träge. Gerade bei Workloads, die aus dem Idle heraus nur kurzzeitig Leistung fordern, z. B. Surfen, verweilt eine herkömmliche CPU unnötig lange auf niedriger Frequenz und bis die volle Leistung anliegt, ist die Aufgabe schon erledigt.
Bei Intel ist daher seit Skylake eine Technik namens Speed Shift im Einsatz, die es der CPU ermöglicht, das Rauf- und Runtertakten selbst zu steuern und damit wesentlich flinker auf Laständerungen zu reagieren als auf herkömmlichem Weg. Dafür war die Unterstützung per Betriebssystem erforderlich, was seit Windows 10 Version 1511 der Fall ist.
Eine ähnliche Steuerung ist nun auch in Zen 2 implementiert. Sie nutzt das UEFI-Feature “Collaborative Power and Performance Control ” (CPPC2) wie in den ACPI‑5.1‑Spezifikationen unter Absatz 8.4.5 beschrieben. Zur Freischaltung ist neben Windows 10 Version 1903 der AMD-Chipsatz-Treiber ab Version 1.07.07.0725 erforderlich. So soll eine Däumchen drehende Zen-2-CPU in 1 bis 2 ms aus dem Quark kommen statt in ca. 30 ms wie unter bisherigen Umständen via P‑States.