AMDs Comeback - Ryzen 7 1800X im Test

Prozessoren | HT4U.net | Seite 9

Das Cache-System


Wie seit vielen Jahren üblich, besitzen auch die Zen-Prozessoren drei Cache-Ebenen. Der L1-Cache (jener Cache, auf den die Instruktions-Pipeline direkten Zugriff hat) ist dabei wie gewohnt zweigeteilt. Es gibt einen L1-Befehls-Cache und einen L1-Daten-Cache. Ersterer fasst bei Zen 64 KByte, ebenso wie bei der ersten Bulldozer-Generation (letztere hatte sogar noch größere Caches). Jedoch hat AMD die Assoziativität von 2-fach auf 4-fach erhöht, was eine höhere Trefferquote mit sich bringen sollte. Zum Vergleich: Intels Befehls-Cache ist nur 32 KByte groß und ist 8-fache assoziativ.

Bild: AMDs Comeback – Ryzen 7 1800X im Test


Der L1-Daten-Cache kann bei Zen 32 KByte an Daten aufnehmen, genauso viel wie die beiden L1-Caches in einem Bulldozer-Kern zusammen. Allerdings setzt AMD wieder auf einen Write-back-Cache und nicht mehr wie bei Bulldozer auf einen Write-through-Cache. Der Vorteil von Letzterem ist zwar, dass Daten automatisch auch im L2-Cache landen, doch damit einhergehend ist die Latenz bei Schreibzugriffen auch sehr hoch. Gerade dies war bei der ersten Bulldozer-Generation eine große Performance-Hürde. Die Assoziativität liegt bei 8-fach, ähnlich zu Intels ebenfalls 32 KByte großen L1-Daten-Caches. Während der große blaue Konzern bei seinen Core-Architekturen jedoch immer nur 256 KByte L2-Cache (4-fach assoziativ seit Skylake) zum Einsatz bringt, stattet AMD seine Zen-Modelle gleich mit 512 KByte (8-fach assoziativ) aus.

Wie gehabt, besitzt jeder Kern einen L1- und L2-Cache, der ebenfalls wie bisher inklusive ist. Sprich: Alle Daten des L1-Caches sind auch im L2-Cache vorhanden. Der L3-Cache wird hingegen von allen Kernen gemeinsam genutzt und beherbergt bei den Desktop-Ablegern maximal 8 MByte (16-fach assoziativ), ähnlich wie bei Intel oder den Vorgängern der Bulldozer-Inkarnationen.

Für die Prozessorleistung ist jedoch nicht nur die reine Größe der Caches von Bedeutung, sondern auch deren Durchsatz und Latenzen. Gerade in letzterer Disziplin hatte AMD in der Vergangenheit öfter einmal Probleme. Die Durchsätze gibt AMD mit 32 Byte/Takt je Richtung für den L2- und L3-Cache an, die L1-Caches schaffen naturgemäß etwas mehr.

Bild: AMDs Comeback – Ryzen 7 1800X im Test


Bei den Latenzen ergeben unsere Messungen zunächst ein erfreuliches Bild. So hat der L1-Cache eine gute Latenz von etwa vier Taktzyklen, und der L2-Cache ist mit 15 Zyklen zwar etwas langsamer als jener der Core-Prozessoren von Intel, dafür aber auch deutlich größer (bei 512 KB Daten liegen die Intel-Ableger üblicherweise schon bei 20 Zyklen und mehr). Zunächst scheint auch der L3-Cache mit etwa 35 Zyklen recht flott zu sein, bevor er jedoch schon bei über 4 MByte großen Datenblöcken massiv einbricht.

Um dieses Problem zu verstehen, zieht man am besten obiges Bild heran. Jeder Kern hat seinen eigenen L3-Cache-Block, welcher 2 MByte groß ist. Um an Daten aus anderen Blöcken heranzukommen, gibt es nun zwei Möglichkeiten. Liegen die Daten im selben CPU-Komplex (CCX), so ist ein schneller Datenaustausch möglich, denn hier liegen die Latenzen bei den erwähnten 30 bis 35 Taktzyklen. Liegen die Daten jedoch im anderen CCX (jeder Achtkern-Prozessor besteht aus zwei CCX), müssen sie über ein separates Interface ausgetauscht werden, was zu zusätzlichen Latenzen führt. Dazu kommt, dass alle L3-Cache-Blöcke in einem CCX mit dem Takt des schnellsten Kerns innerhalb des CCX betrieben werden. Kommt es also zu der Situation, dass nur ein Kern hochgetaktet ist, alle anderen jedoch im Idle-Takt verharren, kann dies bei ungünstigen Zugriffsmustern die Latenzen weiter steigern.

Bild: AMDs Comeback – Ryzen 7 1800X im Test
Vergleich der durchschnittlichen Latenzen von einem Ryzen 7 1800X und Core i7-6700K


Ein weiterer Punkt der zu dem beschriebenen Verhalten beiträgt, ist die Auslegung des L3-Caches als Victim-Cache bei Zen. Das bedeutet, dass der L3-Cache nur Daten beinhaltet, die aus einem der L2-Caches rausgeflogen sind – was immer dann passiert, wenn ein L2-Cache voll ist und Platz für neue Daten geschaffen werden muss. Dies hat wiederum zur Folge, dass bei unpassenden Zugriffsmustern der große L3-Cache nur wenig Vorteile bringt. Im Gegensatz hierzu ist der L3-Cache bei Intel ein "echter" Cache, wovon gerade Spiele durchaus zu profitieren wissen.

Weiterhin zeigen unsere Messungen, dass die Zugriffszeiten auf den Hauptspeicher ebenfalls extrem schlecht sind. Mit mehr als 300 Taktzyklen für Datenblöcke, die nicht mehr in den Cache passen, ist man rund 50 Prozent langsamer als äquivalente Intel-Prozessoren. Der Grund hierfür, und vermutlich auch zum Teil für die schlechten L3-Cache-Latenzen, ist, dass der Speicher-Controller nur mit Speichertakt betrieben wird. Bei Verwendung von DDR4-2133 Speicher läuft der Controller also nur mit 1,066 GHz und damit mehr als dreimal langsamer als die Kerne. Würde AMD hier etwas Takt drauflegen und 2 GHz anvisieren, so würde man zumindest bei den Speicherlatenzen mit den Core-Prozessoren auf Augenhöhe agieren. Man darf also gespannt sein, was bei Zen+ da noch so kommt.

Eine Erklärung, weshalb AMD diese Design-Entscheidung getroffen hat, ist sicherlich der Energiebedarf gepaart mit der Designkomplexität. Intels Ringbus-Ansatz erlaubt zwar konstant niedrige Latenzen, benötigt dafür aber vermutlich auch einiges mehr an Energie. Bereits bei der Einführung von Skylake hat Intel ja, nicht ohne Grund, den L3-Cache deutlich verlangsamt.