AMD Ryzen Threadripper 1950X — Part One
UMA, NUMA und der Legacy Compatibility Mode
Ryzen Threadripper hat Schwächen. Was ziemlich hart klingt, ist die Kehrseite des großen Vorteils der Skalierbarkeit der Zeppelin-Dies. Doch der Reihe nach.
Wie wir wissen, besteht Threadripper aus zwei Zeppelin-Dies (hatten wir das überhaupt schon erwähnt? 😉 ). Diese wiederum bestehen aus jeweils zwei Core-Complex, kurz CCX. Die Kommunikation zwischen zwei CCX führt bereits bei Ryzen zu der einen oder anderen suboptimalen Performance-Situation. Bei Ryzen Threadripper erhöht sich die Komplexität des Themas dadurch, dass nicht nur jeweils zwei CCX per Infinity Fabric kommunizieren müssen, sondern zusätzlich auch beide Dies. Alle Infinity-Fabric-Domänen von Threadripper sind erneut mit dem Speichertakt gekoppelt. Die Ryzen-Faustregel, dass ein höherer Speichertakt zu besserer Performance der Kommunikation zwischen den CCX führt, gilt bei Threadripper also ebenfalls. Doch das ist noch nicht alles.
Jedes Zeppelin-Die bringt zwei Speicherkanäle in die CPU ein. Zwei Mal Dual-Channel ergibt Quad-Channel. Das bedeutet jedoch auch, dass nicht jeder Prozessor-Kern direkt auf den kompletten Speicher zugreifen kann, sondern im Zweifelsfall erst per Infinity Fabric mit dem zweiten Die und von dort aus mit dem Speicher kommunizieren muss. In solchen Situationen erhöht sich die Speicherlatenz. Der Threadripper-Nutzer hat von AMD deshalb verschiedene Einflussmöglichkeiten zur Verfügung gestellt bekommen. Die Software AMD Ryzen Master bietet zwei neue Optionen, welche in insgesamt drei verschiedenen Kombinationen verändert werden können. Die Änderung dieser beiden Optionen bedingt dabei immer einen Reboot, kann also nicht on the fly erfolgen.
Der Schalter für den Memory Access Mode kann zwischen den Einstellungen Distributed (Standard) und Local verändert werden. Damit wird zwischen UMA und NUMA gewechselt. Die Standardeinstellung versetzt Threadripper somit in den Uniform-Memory-Access-Modus. In diesem Zustand wird der Speicherzugriff von allen Kernen de facto homogenisiert. Zwar sind dabei die Latenzen beim Zugriff auf den gesamten Speicher einheitlich, diese Situation wird jedoch durch eine relativ hohe Latenz erkauft. Wird der Schalter auf Local gestellt, so wird das System in den Non-Uniform-Memory-Access-Modus versetzt. Das bringt zwar bessere Latenzen beim Zugriff auf den Speicher, allerdings nicht für alle Bereiche. Greift ein Kern auf den RAM zu, welcher in den Speicherkanälen des anderen Dies steckt, so wird die Latenz prinzipbedingt deutlich höher. Der Nutzer wählt also zwischen zwei “Übeln”: Entweder gleichmäßige, dafür aber relativ langsame Latenzen beim Speicherzugriff oder aber flottere Latenzen, dafür aber ungleichmäßig. Beide Lösungen sind nicht ideal, da Anwendungen unterschiedlich auf die Einstellungen reagieren.
Die zweite Wahlmöglichkeit betrifft die Option Legacy Compatibility Mode. AMD hat nach eigenen Aussagen nämlich einige Anwendungen identifizieren können (allen voran einige Spiele), welche mit der reinen Thread-Anzahl Probleme haben. So sollen angeblich GTA V, F1 2016 und noch einige andere Spiele nicht mehr starten, wenn mehr als 20 Threads zur Verfügung stehen. Hierfür kann der Legacy Compatibility Mode verwendet werden. Er deaktiviert die Hälfte aller Kerne/Threads, sodass unser 1950X zu einem Ryzen 7 wird. Auch der Cache wird deaktiviert, die Speicherkanäle sowie die PCIe-Lanes bleiben jedoch weiterhin aktiviert.
Setzt man den Memory Access Mode auf Local und den Legacy Compatibility Mode auf On, so aktiviert man das von AMD Game Mode genannte Profil. Denn damit sollen allen voran Spiele schneller laufen, was wir auch zum Teil auch bestätigen können. Und so meldet sich unser 1950X dann im Windows (anklicken für eine größere Version):
Legacy Compatibility Mode On bedingt automatisch die Option Memory Access Mode auf Local (=NUMA). Solange Legacy Compatibility Mode auf Off steht, kann auch separat zwischen Distributed und Local beim Memory Access Mode gewechselt werden. Daraus ergeben sich also drei Kombinationsmöglichkeiten. Zwei dieser Varianten haben wir im Benchmark-Teil bereits ausprobiert, die dritte Variante wird in einem weiteren Artikel beleuchtet. Bisher haben wir den Game Mode (Local + On) sowie den von AMD Creator Mode (Distributed + Off) getauften Auslieferungszustand beleuchtet. Soviel vorweg: Es gibt speziell ein Ergebnis, was uns doch stark überrascht hat. Mehr dazu im Benchmarkteil dieses Reviews.