AMD Zen 3 Architektur im Detail
Änderungen – Front-End und Load/Store
Nicht nur bei der Kommunikation zwischen einzelnen Kernen, auch bei der Verarbeitung innerhalb eines Kerns hat AMD versucht, Latenzen abzufeilen und Totzeit zu reduzieren. So proklamiert AMD einen schnelleren Branch Predictor, ein schnelleres Umschalten zwischen Op-cache und Instruction Cache, eine höhere Trefferquote des Branch Predictors und eine kürzere Recovery Zeit falls der Predictor falsch gelegen hat. Insgesamt war das Designziel laut AMD, die Fetchphase zu verkürzen, insbesondere bei Code, der viele Sprünge enthält und aufgrund der Größe auf Prefetch angewiesen ist.
Wie schon bei Zen 2 setzt AMD auf einen TAGE Branch Predictor. Allerdings arbeitet dieser laut AMD nun bei den meisten Vorhersagen mit “Zero Bubble”, also ohne Verzögerung beim Auslesen des Branch Target Buffers (BTB), an welcher Adresse denn nun der nächste Befehl zu finden ist. Überhaupt hat AMD am BTB ordentlich Hand angelegt. der L1BTB ist mit 1024 Einträgen glatt doppelt so groß wie bei Zen 2 und vier Mal so groß wie bei Zen 1. Dafür musste der L2TLB mit 6500 vs. 7000 Einträgen etwas Federn lassen.
Beim Lesen und Schreiben von Daten (Load/Store) hat AMD ebenfalls optimiert. Die Store Queue hat nun 64 Einträge gegenüber 48 zuvor. Insgesamt sollen größere Strukturen vorgeladen werden können, um Abhängigkeiten besser auflösen zu können und mehr Instruction Level Parallelism (ILP) zu erreichen, um die Ausführungseinheiten besser auslasten zu können. Dazu wurde die Transferrate der Load/Store-Einheiten vergrößert und flexibler gestaltet.