Vorhang auf für Bulldozer - AMD enthüllt neue Architektur

Prozessoren | HT4U.net | Seite 4

Aufbau des Integer-Kern und der FPU



Integer-Kern


Jeder Integer-Kern beinhaltet einen eigenen Scheduler, eine eigene Retire-Stufe – jene Einheit die bei der Out-of-Order-Ausführung dafür sorgt, dass die Befehle schlussendlich doch in der richtigen Reihenfolge beendet werden – eine eigene Logik zur Registerumbenennung sowie eine eigene Lade- und Speichereinheit. Letztere kann auf einen Puffer mit 40 Einträgen für Lade- und 24 Einträge für Speicher-Operationen zurückgreifen. Laut den Spezifikationen erlaubt diese Einheit die Durchführung von zwei Lade- oder einer Speicheroperation pro Zyklus. Ein aktueller Phenom II beinhaltet zum Vergleich pro Kern lediglich einen Puffer mit insgesamt 44 Einträgen und kann pro Kern zwei Lade- oder einer Speicheroperation pro Zyklus. Ein einzelner Integer-Kern dürfte hier somit geringfügig performanter als ein aktueller Phenom II sein.

Für Lade- oder Speicheroperationen werden auch die zwei Adressgenerierungseinheiten (AGen) in zwei der vier Pipelines benötigt. In den beiden verbleibenden befindet sich jeweils eine Arithmetisch-Logische-Einheit (ALU), so dass pro Kern insgesamt zwei ALUs und zwei AGens vorhanden sind. Allerdings sind die beiden ALUs nicht komplett identisch, denn nur eine der beiden Einheiten unterstützt Multiplikationen und nur eine Divisionen. Ein Modul kommt somit insgesamt auf vier Integer-ALUs und vier AGens, womit man jeweils um eine Einheit stärker aufgestellt ist als ein Kern auf Basis der aktuellen Architektur.

Bild: Vorhang auf für Bulldozer – AMD enthüllt neue Architektur

Darüber hinaus verfügt jeder Kern über einen 16 KByte großen Datencache und einen 32 Einträge großen Translation Lookaside Buffer (TLB) – ein Puffer, der den Zusammenhang zwischen einer logischen und einer physikalischen Adresse speichert. Beides erscheint auf den ersten Blick zwar etwas klein, jedoch handelt es sich ja um Elemente eines Integer-Kerns, weshalb Daten somit kleiner sein sollten. Außerdem lassen sich in einem Out-of-Order-Kern die Latenzen zum L2-Cache normalerweise sehr gut verbergen, so dass dies zumindest auf dem Papier keine nennenswerten Leistungseinbußen nach sich ziehen sollte.


Gleitkomma-Einheit (FPU)


Wie bereits erwähnt teilen sich die beiden Kerne, oder besser gesagt die zwei Threads, die innerhalb eines Moduls abgearbeitet werden, die Gleitkomma-Einheit (FPU). Wie die beiden Kerne verfügt auch diese über einen eigenen Scheduler und einen eigenen Lade-Puffer. Die FPU beinhaltet darüber hinaus zwei Pipelines (MMX genannt), die SIMD-Befehle mit Integer-Operanden oder Gleitkomma-x86-Befehle durchführen können sowie zwei Pipelines, die jeweils einen Fused-Multiply-Add-Befehl (FMAC) oder äquivalente Instruktionen mit 128 Bit breiten (Gleitkomma-)Operanden ausführen können. Das Besondere an FMA-Befehlen ist, dass bei einer Operation der Art a*x + y nicht erst a*x berechnet wird, danach gerundet wird und dann y addiert wird sowie final gerundet wird, sondern nur einmal am Ende eine Rundung erfolgt. Dadurch ist das Ergebnis korrekter als bei einer einfachen Multiply-Add-Instruktion.

Bild: Vorhang auf für Bulldozer – AMD enthüllt neue Architektur

Da Bulldozer die neue AVX-Erweiterung (AVX steht für Advanced Vector Extensions und ist eine von Intel hervorgebrachte Erweiterung der SSE-Instruktionen) unterstützt, bei der Gleitkommabefehle mit 256 Bit breiten Operanden zugelassen sind, ist es auch möglich beide FMAC-Pipelines "aneinander" zu koppeln und sie für die gleiche Instruktion zu verwenden.

Die gesonderte Stellung innerhalb eines Moduls macht die Gleitkomma-Einheit im Übrigen zu einer Art Co-Prozessor, so wie es auch Grafikkarten sein können. AMD geht hier somit bereits den ersten Schritt, Gleitkomma-Berechnungen auf einen Co-Prozessor auszulagern. Wird später einmal eine GPU in eine Bulldozer-CPU oder spätere Prozessoren integriert lässt es dieses Design wesentlich einfacher zu die FPU durch die GPU ersetzen.