Sandy-Bridge-Prozessoren: Warum sie so schnell sind

Die bedeutendste Neuerung in der Core-CPU ist die Einführung der Advanced Vector Extrensions (AVX). Dabei handelt es sich um eine Erweiterung der SIMD-Befehle von 128 auf 256 Bit.

Die maximale Größe einer Integer- oder Floating-Point-Zahl bleibt allerdings bei 64 Bit. Es lässt sich also keine 256-Bit-Floating-Point-Arithmethik durchführen, sondern Berechnungen von vier 64-Bit- oder acht 32-Bit-Zahlen gleichzeitig.

Der SIMD-Befehlssatz SSE2 mit seinen bisherigen Erweiterungen bis einschließlich SSE4.2 schafft zwei 64-Bit-Zahlen in einem Schritt. AVX kann die Geschwindigkeit von SIMD-Befehlen theoretisch verdoppeln. Die Grafiken zeigen, dass dieser Wert in synthetischen Benchmarks auch nahezu erreicht wird.

Der FPU-Julia-Benchmark zeigt aber auch, dass bisherige SSE- und SSE2-Anwendungen in der Regel etwas langsamer laufen. Obwohl der Core i7-870 470 MHz weniger Taktfrequenz hat, schneidet er nur geringfügig schlechter ab als das Sandy-Bridge-Modell Core i7-2600K ohne AVX. SSE und SSE2 sind ab sofort Legacy-Befehlssätze, die aus Kompatibilitätsgründen unterstützt werden müssen.

Der Julia-Benchmark verwendet Single-Precision-Arithmetik (32 Bit). Etwas besser sieht es beim FPU-Mandelbrot-Test aus, der Double-Precision-Werte (64 Bit) nutzt. Auch ohne AVX kann der Core i7-2600K seinen Nehalem-Vorgänger klar schlagen.

Im FPU-Julia-Test mit 32-Bit-Floating-Point-Werten überzeugt Sandy-Bridge nur bei aktiviertem AVX-Befehlssatz. Muss er SSE verwenden, ist er kaum schneller als sein Nehalem-Vorgänger, obwohl er um 470 MHz höher getaktet ist.
Im FPU-Julia-Test mit 32-Bit-Floating-Point-Werten überzeugt Sandy-Bridge nur bei aktiviertem AVX-Befehlssatz. Muss er SSE verwenden, ist er kaum schneller als sein Nehalem-Vorgänger, obwohl er um 470 MHz höher getaktet ist.

Endanwender können von dieser beachtlichen Geschwindigkeitssteigerung zunächst nicht profitieren: Für den neuen Befehlssatz war es erforderlich, die 128-Bit-Register XMM0 bis XMM15 auf 256-Bit zu erweitern. Diese heißen zur Unterscheidung YMM0 bis YMM15. Mit XMM bezeichnet man auf einem Sandy-Bridge-Prozessor immer nur die unteren 128 Bit eines YMM-Registers.

Wenn neue Register hinzukommen oder bestehende Register erweitert werden, muss ein Multitasking-Betriebssystem das explizit unterstützen. Bei jedem Task-Switch muss der Scheduler alle Register sichern und wiederherstellen, wenn ein unterbrochener Thread wieder an der Reihe ist.

Bei der Berechnung von Double-Precision-Werten kann die Sandy-Bridge-CPU auch ohne AVX zeigen, dass sie schneller als Nehalem-Prozessoren ist.
Bei der Berechnung von Double-Precision-Werten kann die Sandy-Bridge-CPU auch ohne AVX zeigen, dass sie schneller als Nehalem-Prozessoren ist.

Windows 7 und Windows Server 2008 R2 werden die YMM-Register ab Service Pack 1 unterstützen, das derzeit als RC1 vorliegt. Linux unterstützt sie bereits ab Kernel 2.6.30. Aktuelle Linux-Distributionen besitzen meist neuere Kernel. Ubuntu 10.10 wird beispielsweise mit Version 2.6.35 ausgeliefert. Bei Mac OS X ist von einer Unterstützung auszugehen, sobald die ersten Macintosh-Rechner mit Sandy-Bridge-CPUs ausgeliefert werden.

Abgesehen von der derzeit noch nicht finalen Unterstützung in Windows, muss es auch Programme geben, die AVX unterstützen. Bestehende Software kann von AVX nicht profitieren. Es ist davon auszugehen, dass es eine ganze Weile dauern wird, bis Programme mit AVX-Unterstützung verfügbar sind.

Viele 32-Bit-Programme nutzen heute nicht einmal SSE2, obwohl es bereits mit dem Pentium 4 vor über 10 Jahren eingeführt wurde. Bei 64-Bit-Software sieht es etwas anders aus: Da alle 64-Bit-CPUs SSE2 unterstützen, müssen Entwickler keine Rücksicht auf alte Prozessoren nehmen.

Neben der Erweiterung von 128 auf 256 Bit bietet AVX die Möglichkeit von "Non-destructive-Instuctions". Wenn sich die Operanden beispielsweise in YMM0 und YMM1 befinden, lässt sich das Ergebnis der Berechnung in ein beliebiges YMM-Register schreiben, etwa YMM2. Mit SSE2 musste das Ergebnis in YMM0 oder YMM1 geschrieben werden. Damit wurde ein Operand "zerstört".

Das neue Addressierungsschema mit drei Registern (Ergebnis und zwei Operanden) wurde mit einem Prefix Instruction Set, dem sogenannten VEX-Prefix realisiert. Es ist flexibel und erweiterbar. Vor allem ist bereits vorgesehen, in Zukunft noch breitere SIMD-Befehle mit 512 und 1024 Bit zu implementieren.

So lassen sich bereits heute Programme entwickeln, die automatisch die maximale SIMD-Breite erkennen und nutzen. Software, die das konsequent umsetzt, wird automatisch schneller laufen, wenn sie auf einer künftigen CPU-Architektur läuft. Allerdings ist das Theorie. Ob alle VEX256-Befehle auch in einer VEX512- oder VEX1024-Version laufen werden, kann man zwar vermuten, aber das ist nicht garantiert.

Grundsätzlich sind VEX-Prefix-Befehle auch geeignet, Non-destructive-Instructions für die General Purpose Register (GPR) einzuführen. Das ist insbesondere sinnvoll, da für 64-Bit-Programme 16 GPRs zur Verfügung stehen statt nur acht im 32-Bit-Modus. In RISC-Architekturen, etwa ARM oder Power-PC, sind drei Operanden pro Befehl Standard. In Sandy Bridge ist Intel diesen Schritt noch nicht gegangen.

Themenseiten: Chipsätze, Client & Desktop, Desktop, Grafikchips, Intel, Notebook, Prozessoren

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

1 Kommentar zu Sandy-Bridge-Prozessoren: Warum sie so schnell sind

Kommentar hinzufügen
  • Am 8. Januar 2011 um 1:26 von Tester

    Sandy Bridge RAM
    Im Artikel wird mit verweis auf die Benchmarks gesagt, daß die Dual-Channel Speicher Anbindung der Sandy Bridge mehr Durchsatz als die Tripple Channel der i7-9xx bieten soll. In den Benchmarks wird die Top-Sandy Bridge CPU aber nur mit älteren Dual-Channel CPUs verglichen die alle samt nur Dual Channel fähig sind. Dazu kommt noch, daß wohl kaum noch einer einen 1066MHZ langsamen Speicher mit einer Tripple Channel fähigen CPU verbaut. Der Artikel lässt einen in dem Glauben bei 1066MHz bzw. 1333MHz wäre das endgültige der Speichergeschwindigkeit nur weil bis dahin eine offizielle unterstützung gegeben ist. Ein sinnvoller Vergleich wäre also mal eine 2600K CPU gegen einen 950 oder höher mit Tripple Channel antreten zu lassen. Aber beide mit nem zeitgemäßen 2000MHz Speicher.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *