AMDs Comeback - Ryzen 7 1800X im Test

Prozessoren | HT4U.net | Seite 7

Instruction Decode und Dispatch


Nachdem die Befehle geholt wurden, müssen sie dekodiert werden, damit die CPU weiß, was jeder Befehl intern bedeutet. Dies übernehmen bei Zen vier parallele Decoder für x86-Instruktionen, wie bereits bei Bulldozer. Neu ist allerdings der "Op Cache". Dabei handelt es sich um einen kleinen Cache, der bereits geholte und dekodierte Befehle beinhaltet (bei Intel kennen wir dies seit Sandy Bridge als uop-Cache). Bei einem Treffer können aus diesem Cache bis zu acht Befehle zur Weiterverarbeitung herangezogen werden. Außerdem kann auch die Fetch-Unit auf diesen Cache zugreifen und bei einem Treffer den längeren Weg zum L1-Cache vermeiden. Im besten Fall können somit große Teile des Pipeline-Frontends (also Instruction Fetch & Instruction Decode) ähnlich wie bei Intel abgeschaltet werden, um Energie zu sparen. Also auch hier ist das Versprechen wieder eine höhere Leistung bei gleichzeitig gesenktem Verbrauch.

Ein einfaches Beispiel, um sich die Wirkungsweise des Op-Caches zu verdeutlichen ist eine Schleife im Programmcode. Ohne den Op-Cache müssen in jedem Schleifendurchgang die immer gleichen Befehle aus dem L1-Befehls-Cache geholt und anschließend dekodiert werden. Im Gegensatz dazu können Prozessoren mit einem Op-Cache direkt die bereits dekodierten Befehle laden. Im Ergebnis also eine deutliche Zeit- und Energieersparnis.

Den Op-Cache hat AMD mit satten 2.048 Einträgen im Übrigen sehr groß angelegt. Zum Vergleich: Bei Intel fasst dieser Speicher nur 1.536 Einträge bei den letzten Core-Ablegern. Hier war also eindeutig das Motto: nicht kleckern, sondern klotzen.

Weiterhin gibt es bei Zen eine "Stack Engine" die es ermöglicht, Stack-Befehle direkt abzuarbeiten, ohne Ausführungseinheiten mit diesen zu belasten. An diese können die Dispatcher bis zu sechs Mikrooperationen uOps (also dekodierte Befehle) für Integer-Befehle und bis zu vier uOps für Gleitkomma-Operationen senden. Insgesamt können pro Taktzyklus also zehn uOps zur Ausführung angestoßen werden. Wichtig ist hierbei jedoch die Unterscheidung zwischen uOps und Befehlen aus dem Programmcode. Eine AVX2-Instruktion wird zum Beispiel in zwei oder mehr uOps aufgeteilt.

Bild: AMDs Comeback – Ryzen 7 1800X im Test


Ein interessanter Punkt bei Zen ist, dass sich AMD bei seiner grundsätzlichen Aufteilung von zwei Ausführungs-Clustern, jenen für die Ganzzahl- (Integer) sowie Lade-/Speicher-Operationen und jenen für Gleitkomma-Berechnungen, treu geblieben ist. Damit einhergehend konnte man auch bei dem bekannten Dispatcher-Schema bleiben. Der Dispatcher sendet die dekodierten Befehle an die Ausführungs-Cluster, welche sich dann selbst um die Allokierung der benötigten Einheiten kümmern. Im Gegensatz dazu verwendet Intel einen ungleich komplexeren Befehls-Scheduler, der alle einkommenden Befehle auf die acht zur Verfügung stehenden Ports verteilen muss. AMD verspricht sich dadurch vor allem Vorteile bei der Leistungsaufnahme und der Chipgröße.