Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test

Prozessoren | HT4U.net | Seite 11

Der Kern: Ausführungsblöcke und AVX



Wie bereits auf der Vorseite erwähnt, hat Intel auch an den Ausführungseinheiten einige Veränderungen gegenüber den Vorgänger-Architekturen vorgenommen. Neben den Einheiten für Lade/Speicher-Operationen, die wir bereits auf der vorherigen Seite betrachtet haben, gab es dabei auch zahlreiche Änderungen an den Einheiten für arithmetische und logische Befehle. Ein Hauptgrund für die Neuerungen ist dabei die AVX-Erweiterung (AVX steht für Advanced Vector Extension), die mit "Sandy Bridge" eingeführt wird.

Mit Hilfe der AVX-Erweiterungen ist es möglich, bis zu vier Gleitkomma-Operanden doppelter Genauigkeit (64 bit Genauigkeit) in einem Vektor zusammenzufassen und anschließend mit dem Vektor gewöhnliche arithmetische oder logische Operationen durchzuführen. Der Vorteil der Verwendung von Vektoren (SIMD) ist dabei der erhöhte Durchsatz. So kann beispielsweise die Operation (a,a,a,a)+(b,b,b,b) in einem Zyklus abgearbeitet werden, wohingegen für skalare Berechnungen vier Taktzyklen notwendig wären. Gegenüber der bisherigen SSE4-Umsetzung verspricht AVX somit auf Grund der doppelten Vektorgröße (von 128 Bit auf 256 bit) eine theoretische Verdopplung der Rechenleistung. Der Nachteil ist allerdings, dass die Datenpfade größer sein müssen.

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test

Der Grundsatz den Intel bei der Integration von AVX verfolgt, ist konträr zu jenem von AMD. Während AMD bei Bulldozer eine AVX-Instruktion mit bis zu 256 bit großen Operanden in Instruktionen für 128-bit-Operanden aufspaltet, die dann parallel ausgeführt werden, ist eine AVX-Instruktion bei "Sandy Bridge" eine Mikrooperation (uOP) und wird somit als eine Instruktion in einer Ausführungseinheit ausgeführt. Da Intel jedoch nicht alle Datenpfade für die neue Operandengröße anpassen und trotzdem eine Verdopplung der Rechenleistung erreichen wollte, musste man etwas in die Trickkiste greifen. Um diesen jedoch zu verstehen müssen wir etwas ausholen.

Ist eine arithmetische oder logische uOP bereit für die Ausführung, kann der Scheduler die Ausführung prinzipiell über drei Ports, den Port 0, Port 1 und Port 5 anstoßen. Jeder Port führt dabei zu drei unterschiedlichen Ausführungsblöcken für Integer-, SIMD-Integer- bzw. Gleitkomma-Operationen (skalar oder SIMD). Das nachfolgende linke Bild zeigt dabei den Aufbau, wie man ihn in der Nehalem-Architektur wiederfindet.

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test
Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test
Ausführungsblöcke bei NehalemAusführungsblöcke bei Sandy Bridge


Die Idee der Designer war es nun bei "Sandy Bridge" für AVX-Befehle, den Gleitkomma- zusammen mit dem SIMD-Integer-Ausführungsblock zuverwenden (siehe rechtes Bild). Dadurch stehen bereits Datenpfade mit ausreichender Breite zur Verfügung. Darüber hinaus hat man die unterstützten Befehle zwischen den Blöcken sowie den drei Ports in einigen Fällen getauscht, so dass "Sandy Bridge" die Möglichkeit bietet in einem Zyklus einen AVX-Multiplikation, eine AVX-Addition, einen AVX-Shuffle sowie eine AVX-Lade-Operation durchzuführen. Das Ziel, ohne Erweiterung der Datenpfade eine theoretische Verdopplung der Rechenleistung zu erreichen ist somit gelungen. Allerdings darf man natürlich nicht verschweigen, dass durchaus einiges an extra Logik notwendig ist, um die Ausführungsblöcke von SIMD-Integer- und Gleitkomma-Operationen zu verknüpfen.


AVX: Was ist dabei, was nicht?


Leider hat Intel keine Fused-Multiply-Add-Funktionalität (FMA, a*x + y) in das Design von "Sandy Bridge" integriert. Der Vorteil einer FMA-Instruktion gegenüber einer herkömmlichen Multiply-Add-Instruktion (a*x + y) ist, dass bei einer FMA erst am Ende der kompletten Berechnung das Ergebnis gerundet wird, bei einer Mulitply-Add-Instruktion wird hingegen nach der Multiplikation sowie nach der Addition gerundet. Gerade im wissenschaftlichen Umfeld wird daher die FMA stark bevorzugt, so dass sich Intel – gerade in Anbetracht der Tatsache, dass AMDs Bulldozer-Architektur diesen Befehl unterstützt – nicht unbedingt einen Gefallen getan hat. Angeblich soll mit dem nächsten Die-Shrink, also der Umstellung auf die 22-nm-Technologie, der FMA-Befehl unterstützt werden. Aktuelle Gerüchte sprechen jedoch davon, dass nicht "Ivy Bridge" (Shrink) sondern erst spätere Generationen diesen Befehl unterstützen werden. Wir haben natürlich nachgefragt, was denn nun stimmt – als Antwort erhielten wir jedoch nur ein simples "No comment". Immerhin räumte man aber ein, dass die FMA-Instruktion durchaus interessant ist und man diese so schnell wie möglich einbauen möchte.

Mit von der Partie bei der AVX-Umsetzung in "Sandy Bridge" ist allerdings die Möglichkeit 3- und 4-Operanden-Befehle zu verwenden. So ist es nun beispielsweise möglich x + y = z mit nur einem Befehl zu berechnen, wohingegen mit SSE für die gleiche Anweisung auf Grund der verwendeten 2-Operanden-Struktur wesentlich mehr Befehle in den Code integriert werden mussten.

Wer im übrigen in seinem Code weiterhin Operanden mit 128 bit Länge verwenden möchte, der muss in Zukunft nicht mehr auf SSE zurückgreifen, sondern kann ebenfalls AVX einsetzen. So gibt es die Möglichkeit der Operanden-Maskierung bei AVX-Befehlen, was laut Intel effizienter ist als SSE-Instruktionen zu verwenden.


Pipeline-Überblick


Damit haben wir alle Bestandteile der "Sandy Bridge"-Pipeline betrachtet. Zum Abschluss daher noch ein Bild der gesamten Pipeline. Laut Intel soll diese dabei kürzer sein als die der Nehalem-Architektur, welche 16 Teil-Stufen beinhaltete.

Bild: Intel "Sandy Bridge": Vierkern-CPUs Core iX 2000 im Test


 

Inhalt dieses Testberichtes