Zen 2 — AMD Ryzen 7 3700X und Ryzen 9 3900X im Test

Artikel-Index:

Technische Details: CCX, CCD, Windows-Scheduler, CPPC2

Die grund­sätz­li­che Zen-2-Archi­tek­tur haben wir beleuch­tet, nun sehen wir uns an, wie AMD dar­aus die CPU Matis­se ali­as Ryzen 3000 geformt hat.

Präsentation zu Ryzen 3000

Wie mit Zen ein­ge­führt besteht auch ein Zen-2-Die wie­der aus zwei CCX mit je 4 Ker­nen. Der CCX-eige­ne L3-Cache wur­de wie erwähnt ver­dop­pelt, das Die aus zwei CCX nennt AMD nun CCD, was für Com­pu­te Cache Die ste­hen dürfte.

Anders als noch bei Zen 1 ent­hält das Die nun aller­dings kei­ner­lei I/O mehr; kei­nen Memo­ry-Con­trol­ler, kei­ne PCIe-Con­trol­ler, kei­ne SoC-Kom­po­nen­ten wie USB, SATA, etc. Die­se Sachen hat AMD nun in ein IO-Die (cIOD) aus­ge­la­gert. Ein Ryzen 3000 “Matis­se” besteht also nicht mehr aus einem Die, son­dern aus zwei­en; mindestens.

Präsentation zu Ryzen 3000

Ähn­lich wie zuvor schon bei Thre­ad­rip­per rea­li­siert AMD mehr als 8 Ker­ne nicht mit­hil­fe eines grö­ße­ren Dies mit mehr Ker­nen, son­dern mit­hil­fe von meh­re­ren zusam­men­ge­schal­te­ten Dies, im Fal­le von Ryzen 3000 “Matis­se” mit zwei CCDs. Im Unter­schied zu Thre­ad­rip­per 1000 und 2000 sind hier jedoch die genann­ten IO-Kom­po­nen­ten nicht mehr­fach vor­han­den, son­dern nur ein­fach im cIOD, egal ob ein oder zwei CCDs ver­baut sind.

Der Hin­ter­ge­dan­ke ist klar: klei­ne Dies sind ein­fa­cher und kos­ten­güns­ti­ger zu fer­ti­gen, auch die Aus­beu­te (Yield) ist höher, als bei einem gro­ßen mono­li­thi­schen Die. Doch was ist aus der Pro­kla­ma­ti­on von nati­ven x‑Kern-Pro­zes­so­ren gewor­den, bei­spiels­wei­se zur Markt­ein­füh­rung des AMD Phe­nom, bei dem AMD als gro­ßen Vor­teil pries, dass er eben nicht aus zwei Dual-Core-Dies bestand, son­dern aus einem “nati­ven” Quad-Core-Die? Klei­ne­re Dies waren damals wie heu­te ein­fa­cher und güns­ti­ger zu fer­ti­gen. Das Pro­blem war damals jedoch, wie man meh­re­re Dies zusam­men­schal­tet ohne dass die Leis­tung dar­un­ter litt. Bei Intel wur­de dies sei­ner­zeit über den lang­sa­men Fronts­ide-Bus bewerk­stel­ligt, was nicht wirk­lich ide­al war. In die rich­ti­ge Rich­tung ging es bei spä­te­ren AMD Opte­rons (“Magny Cours”), die im Mul­ti-Chip-Lay­out über Hyper­Trans­port ver­bun­den wur­den. Ähn­lich wird es auch bei Thre­ad­rip­per gemacht und auch hier bei Ryzen 3000 “Matis­se”, nur dass nicht mehr Hyper­Trans­port zum Ein­satz kommt, son­dern das dar­aus ent­wi­ckel­te Infi­ni­ty Fabric. Erst damit ist die Band­brei­te hoch und die Latenz nied­rig genug, dass man den Vor­teil der klei­ne­ren Dies mit­neh­men kann ohne in Sachen Leis­tung Ein­bu­ßen inkauf neh­men zu müssen.

Die Lese­ge­schwin­dig­keit zwi­schen CCD und cIOD liegt bei 32 B/cycle. Was die Gra­fik nicht zeigt ist, dass die Schreib­ge­schwin­dig­keit nur 16 B/cycle beträgt. AMD begrün­det dies damit, dass rei­ne Schreib­zu­grif­fe bei Desk­top-Workloads eher sel­ten sind und man so Die-Flä­che und Strom­ver­brauch spa­ren woll­te. Wir wer­den spä­ter noch sehen, ob und wie sich das auswirkt.

Präsentation zu Ryzen 3000

Trotz der auf­wän­di­ge­ren Rechen­wer­ke (z.B. dop­pelt so brei­te FPU) ist es AMD dank der neu­en 7‑nm-Fer­ti­gung von TSMC gelun­gen, die Takt­fre­quen­zen zu erhö­hen, was im Zusam­men­spiel mit der höhe­ren IPC und der optio­nal je nach Modell erhöh­ten Anzahl an Ker­nen zu einer deut­li­chen Leis­tungs­stei­ge­rung füh­ren soll.

Präsentation zu Ryzen 3000

AMD ver­spricht eine deut­lich ver­kürz­te “effek­ti­ve” Spei­cher­la­tenz. Das lässt Spiel­raum für Inter­pre­ta­tio­nen, denn die Aus­la­ge­rung des IO-Bereichs und damit auch des Memo­ry-Con­trol­lers in ein eige­nes Die kann eigent­lich nur zu län­ge­ren und nicht zu kür­ze­ren Laten­zen füh­ren gegen­über einem inte­grier­ten Memo­ry-Con­trol­ler; zumin­dest nicht ohne Gegen­maß­nah­men. Was AMD hier wohl meint ist, dass der ver­grö­ßer­te L3-Cache (“Game­cache”) sel­te­ner RAM-Zugrif­fe erfor­dert und falls doch, Ryzen 3000 “Matis­se” dank der nun auch offi­zi­ell unter­stütz­ten DDR4-3200 – per Over­clo­cking natür­lich noch viel mehr, aber dazu spä­ter – die Daten schnel­ler lie­fern kann. Daher wohl die For­mu­lie­rung “effek­ti­ve” Spei­cher­la­tenz. Die tat­säch­li­che Spei­cher­la­tenz, also vom Kom­man­do “hey, die Daten sind nicht im Cache, ich brau­che sie aus dem RAM” bis zur Lie­fe­rung muss ob der Zustel­lung über Infi­ni­ty Fabric aus einem exter­nen Die län­ger dau­ern. Auch das wer­den wir prüfen.

Präsentation zu Ryzen 3000

Präsentation zu Ryzen 3000

Win­dows-Sche­du­ler
AMD-Pro­zes­so­ren und die jewei­li­gen Win­dows-Sche­du­ler ihrer Zeit waren nicht immer die bes­ten Freun­de. Man den­ke nur an Win­dows 7, das mit der eigen­wil­li­gen Modul-Bau­wei­se der Bull­do­zer-Pro­zes­so­ren nicht warm wur­de und daher gepatcht wer­den muss­te oder die dama­li­gen K8 Dual-Cores, die sich als Hyper­Th­re­a­ding-Pro­zes­so­ren aus­ge­ben muss­ten, weil Win­dows XP Home kei­nen SMP-Sup­port bot. Und auch mit der jüngs­ten Zen-Archi­tek­tur arbei­tet der Sche­du­ler von Win­dows 10 nicht opti­mal zusam­men, denn die­ser kann nicht unter­schei­den zwi­schen nahen Ker­nen inner­halb eines CCX und fer­nen Ker­nen in einem ande­ren CCX oder gar einem ande­ren CCD. Für den Win­dows-Sche­du­ler ist oder war Zen bis­her ein mono­li­thi­scher 8‑Kern-Pro­zes­sor.

Seit Win­dows 10 “May 2019 Update” ali­as Ver­si­on 1903 soll die­ses Pro­blem nun beho­ben sein. Dank “Topo­lo­gy Awa­re­ness” erkennt der Win­dows-Sche­du­ler nun, dass es bes­ser ist, meh­re­re Threads eines Tasks inner­halb eines CCX ablau­fen zu las­sen, da hier die Laten­zen am kür­zes­ten sind, statt die Last wahl­los über die CCX hin­weg zu ver­tei­len. Das soll je nach Workload zu höhe­rer Leis­tung füh­ren. Von die­ser Ver­bes­se­rung pro­fi­tiert im übri­gen nicht nur Zen 2, son­dern auch die bis­he­ri­gen Zen-Pro­zes­so­ren, sodass Win­dows-10-User ein bal­di­ges Upgrade auf v1903 in Erwä­gung zie­hen sollten.

CPPC2
Eine wei­te­re Ände­rung dies­be­züg­lich – aller­dings ist dafür zwin­gend eine Zen-2-CPU erfor­der­lich – betrifft die Art und Wei­se, wie die Takt­fre­quenz in Abhän­gig­keit von der Last gesteu­ert wird. Bei bis­he­ri­gen AMD-CPUs erfolg­te dies über die P‑States. Die­se sind jedoch rela­tiv trä­ge. Gera­de bei Workloads, die aus dem Idle her­aus nur kurz­zei­tig Leis­tung for­dern, z. B. Sur­fen, ver­weilt eine her­kömm­li­che CPU unnö­tig lan­ge auf nied­ri­ger Fre­quenz und bis die vol­le Leis­tung anliegt, ist die Auf­ga­be schon erledigt.

Bei Intel ist daher seit Sky­la­ke eine Tech­nik namens Speed Shift im Ein­satz, die es der CPU ermög­licht, das Rauf- und Run­ter­tak­ten selbst zu steu­ern und damit wesent­lich flin­ker auf Last­än­de­run­gen zu reagie­ren als auf her­kömm­li­chem Weg. Dafür war die Unter­stüt­zung per Betriebs­sys­tem erfor­der­lich, was seit Win­dows 10 Ver­si­on 1511 der Fall ist.

Eine ähn­li­che Steue­rung ist nun auch in Zen 2 imple­men­tiert. Sie nutzt das UEFI-Fea­ture “Col­la­bo­ra­ti­ve Power and Per­for­mance Con­trol ” (CPPC2) wie in den ACPI‑5.1‑Spezifikationen unter Absatz 8.4.5 beschrie­ben. Zur Frei­schal­tung ist neben Win­dows 10 Ver­si­on 1903 der AMD-Chip­satz-Trei­ber ab Ver­si­on 1.07.07.0725 erfor­der­lich. So soll eine Däum­chen dre­hen­de Zen-2-CPU in 1 bis 2 ms aus dem Quark kom­men statt in ca. 30 ms wie unter bis­he­ri­gen Umstän­den via P‑States.