AVX2 im Detail: Der erweiterte Befehlssatz für Ivy-Bridge-Nachfolger Haswell

CPU

Hersteller:
k.A.

AVX2 im Detail: Der erweiterte Befehlssatz für Ivy-Bridge-Nachfolger Haswell

Torsten Vogel
|
28.05.2012 16:32 Uhr
|
|
Mit dem Nachfolger von Ivy Bridge möchte Intel nicht nur eine neue CPU-Architektur einführen, Haswell wird auch über einen deutlich erweiterten Befehlssatz verfügen: AVX2. PC Games Hardware stellt den Befehlsatz vor.

Moderne "x86"-CPUs sind irreführend benannt. Denn gerade im Multimedia- und Spielebereich stellen die klassischen x86-Befehle nur einen Teilaspekt dar. Komplexe Berechnungen werden dagegen über zusätzliche Befehle schneller und effizienter durchgeführt - entsprechend wichtig sind diese Teile der CPU-Architekturen und ihre künftige Entwicklung.

Falls sich Ihnen Nutzen und Funktionalität der neuen AVX2-Kommandos nicht sofort erschließen: Keine Sorge. Mit Ausnahme von Compiler-Entwicklern dürften selbst viele Programmierer nie so hardwarenah arbeiten. Falls sich Ihnen Nutzen und Funktionalität der neuen AVX2-Kommandos nicht sofort erschließen: Keine Sorge. Mit Ausnahme von Compiler-Entwicklern dürften selbst viele Programmierer nie so hardwarenah arbeiten. [Quelle: Intel] Befehlssatzerweiterungen - ein Rückblick
Alles begann mit dem Intel 8087, einem separaten Co-Prozessor, der ab 1980 PCs mit 8086-CPU um die Fähigkeit erweiterte, Gleitkommaberechnungen in Hardware durchzuführen. Der x87-Befehlssatz wird gelegentlich bis heute genutzt und die wechselnde x87-Optimierung moderner CPUs ist ein Grund für die großen Leistungsunterschiede in beispielsweise Super-Pi. Für heutige Anwendungen wichtiger sind seine Nachfolger. Die erste SIMD-Erweiterung, die den gleichen Befehl parallel auf mehrere Datensätze anwendet, wurde Mitte der 90er werbewirksam in Form von MMX eingeführt und ist stellenweise noch immer im Einsatz, AMDs Konter 3DNow! hielt sich dagegen nur als Webseiten-Titel.

Das letzte Jahrzehnt prägte allerdings SSE, 2001 als Ablösung eingeführt, welches im Gegensatz zu MMX nicht auf die x87-Register zurückgreift. Stattdessen kommen, zusätzlich zum 32/64 Bit x86-Teil der CPU, eigene Register mit 128 Bit zum Einsatz - ein deutlicher Leistungsfortschritt gegenüber den 64 Bit von MMX, auch wenn die Beschränkung auf 64 Bit Datenformate (die parallel bearbeitet werden) weiterhin nicht die volle x87-Genauigkeit (mit 80 Bit Zwischenergebnissen) bietet. Über die Ausbaustufen SSE2, SSE3, SSSE3, SSE4.1 und 4.2 wurden im Laufe der Jahre weitere Befehle eingeführt, die eine zielgerichtete Nutzung der Register erlauben - mal speziell für einzelne Anwendungszwecke wie Verschlüsselung oder Transkodierung, mal universell für verschiedenste Software.

Die mit AVX eingeführten Register YMM0 bis YMM15 lassen sich nur für Gleitkommaberechnungen nutzen. Für Integer-Berechnungen stehen bis zur AVX2-Einführung nur die alten SSE-Befehle zur Verfügung, welche die untere Hälfte wie die mit SSE1 definierten Register XMM0 bis XMM15 ansprechen. Die mit AVX eingeführten Register YMM0 bis YMM15 lassen sich nur für Gleitkommaberechnungen nutzen. Für Integer-Berechnungen stehen bis zur AVX2-Einführung nur die alten SSE-Befehle zur Verfügung, welche die untere Hälfte wie die mit SSE1 definierten Register XMM0 bis XMM15 ansprechen. [Quelle: Intel] Aktuell: AVX und FMA
Grundlegende Neuerungen folgten im letzten Jahr. Sandy Bridge und Bulldozer erweiterten die Registerbreite ein weiteres Mal auf nun mehr 256 Bit, was die parallele Verarbeitung von beispielsweise vier Werten mit 64 Bit (Fließkomma mit doppelter Genauigkeit) oder 8 mit 32 Bit (einfache Genauigkeit) erlaubt. Zudem beinhaltet AVX auch nicht-destruktive Befehle: Werden beispielsweise Werte aus den Registern A und B addiert, kann das Ergebnis in Register C abgelegt werden. Bei SSE überschreibt es dagegen Register A und für weitere Berechnungen muss der ursprüngliche Wert gegebenenfalls erneut aus dem L1-Cache in die, für die eigentlichen Rechenoperationen genutzten, Register geladen werden.

Bulldozer unterstützt zusätzlich exklusiv die aus AMDs SSE5-Vorschlag hervorgegangenen Befehlssätze XOP, CVT16 und zusätzlich FMA4. Einen Teil von deren Funktionalität wird Intel mit den Ivy-Bridge-Nachfolgern der Haswell-Architektur einführen, in Form der "Advanced Vector Extensions 2".

Haswell: AVX2
Wie der Name bereits andeutet, möchte auch AVX2 Vektorberechnungen beschleunigen und wird zu diesem Zweck eine Reihe neuer Befehle einführen. Diese ermöglichen es beispielsweise, Registerinhalte direkt als Maske zu nutzen, die auf zu ladende Speicherbereiche weist, oder sie ermöglichen schnellere, gezielte Manipulationen und Abfragen von einzelnen Bits in einem längeren String. Als wie nützlich sich die Funktionen erweisen, ist nur schwer abzuschätzen und hängt stark davon ab, wie intensiv verschieden Compiler von den neuen Möglichkeiten Gebrauch machen - oder davon, wie oft Entwickler den hochoptimierten Intel-Compiler verwenden. Intel selbst verspricht jedenfalls die Beschleunigung von diversen Multimediaanwendungen, insbesondere Spielen, Audio- und Video-Bearbeitung. Greifbarer sind dagegen die prinzipiellen Erweiterungen, die ähnliche Wirkung entfalten sollen: 256 Bit Integer und FMA3.

Im Zuge des Tick-Tock-Schemas treibt Intel nicht nur die Entwicklung neuer Fertigungsverfahren aggressiv voran, auch die Befehlssätze werden von Generation zu Generation erweitert. Im Zuge des Tick-Tock-Schemas treibt Intel nicht nur die Entwicklung neuer Fertigungsverfahren aggressiv voran, auch die Befehlssätze werden von Generation zu Generation erweitert. [Quelle: Intel] Dass AVX-CPUs mit 256 Bit Registern arbeiten können, stimmt nur teilweise. Denn bislang nutzen lediglich eine Reihe von Gleitkomma-Befehlen die erweiterten Register. Integer-Werte verwenden nur die untere Hälfte der Register, der Rest wird mit Nullen gefüllt. AVX2 behebt diese Beschränkung auf alte SSE-Befehle und erweitert den Befehlssatz um entsprechende 256-Bit-Integer-Kommandos. Weitreichend wird auch die Einführung von FMA3-Funktionalität. "Fused Multiply-Add"-Einheiten können in einem Arbeitsschritt eine Multiplikation und eine Addition/Subtraktion durchführen. Dies führt einerseits zu einem Genauigkeitsgewinn, da nur einmal am Ende der Operation gerundet wird. Andererseits beschleunigt die Kombination auch den Rechenablauf und damit die Gesamtleistung, wie einige synthetische Tests für AMDs Bulldozer zeigen, der bereits FMA4 als eigenständigen Befehlssatz nutzt.

Die "4" hat hierbei große Bedeutung, denn sie gibt die Zahl der verwendeten Register an: (A * B) + C = D; nach der Verrechnung der Werte aus drei Registern wird das Ergebnis also in einem vierten gespeichert. Intel dagegen wird FMA3 implementieren und fällt so in das destruktive Konzept von SSE zurück. Die Speicherung des Endergebnisses erfolgt wahlweise in Register A, B oder C - der dortige Ausgangswert geht verloren und muss gegebenenfalls neu geladen werden.
Bevor Intel sich auf FMA3 festlegte, hatte AMD bereits angekündigt, in zukünftigen CPU-Architekturen eventuell beide Varianten zu implementieren. Dies ist bei Piledriver bereits der Fall (Trinity und später im Jahr in Form von Vishera) und gewährleistet in einem wichtigen Punkt AVX2-Kompatibilität. Für Bulldozer-Besitzer könnte die Entscheidung Intels dagegen bedeuten, dass die FMA4-Fähigkeit ihrer SIMD-Einheiten nie genutzt werden wird, da Softwareentwickler eine flächendeckende FMA3-Unterstützung erwarten können, während eine FMA4-Fixierung nur das obere Ende von AMDs letztjährigen Neuvorstellungen betrifft.

Fazit
Mit AVX2 beendet Intel was mit AVX begonnen wurde. Wie bei der Einführung neuer Befehlssätze üblich ist nicht damit zu rechnen, dass sie innerhalb der Nutzungsdauer der ersten Generation große Bedeutung im Spieleeinsatz erlangen. Multimediatools dagegen werden zum Teil sehr schnell optimiert (wenngleich dies bei AVX derzeit noch schleppend läuft) und allgemein ist es positiv zu bewerten, dass Spiele wieder im Fokus stehen, wo sich vergangene Befehlssatzerweiterungen auf XML oder Chiffrierung konzentrierten. Negativ fällt dagegen auf, dass die Einführung der neuen Funktionalitäten ohne Koordination zwischen den beiden großen CPU-Herstellern erfolgte. So könnte, nach 3DNow! und SSE4a, ein weiterer Alleingang AMDs nutzlos scheitern, da man allein nicht die nötige Marktdurchdringung erreicht, die zum setzen neuer Standards nötig wäre.

 
Schraubenverwechsler(in)
29.05.2012 23:31 Uhr
Aber Kompatibilität bleibt ja weiterhin vorhanden. Wer wirklich mmx nötig hätte, kann seine Software für x86 programmieren. Wer mmx braucht wird kaum zwingend 64bit Umgebungen nötig haben. Diese x86 Software läuft ja weiter auf jeder x64 CPU und dem x64 Windows.
Trockeneisprofi (m/w)
29.05.2012 18:15 Uhr
Zitat: (Original von ruyven_macaran;4258693)
Und Abwärtskompatibilität ist nunmal DER wichtigste Aspekt von x86.


Und gleichzeitig DER Bremsklotz.
Moderator
29.05.2012 18:11 Uhr
Zitat: (Original von BlackBirdSR;4258366)
* Windowx x64 bringt ja nicht nur Schlechtes. Das Abschaffen der x87 FPU im Long Modus von x64 und damit auch das Absägen von 3DNow! und MMX ist eigentlich erfreulich.
Theoretisch könnte man 64Bit Anwendungen / Spiele konsequent auf SIMD auslegen (lassen) und richtig profitieren. Praktisch gesehen bleibt aber trotzdem nicht viel übrig.


Eine Auslagerung wäre erfreulich, ja. Aber ein Verbot der alten Formate (die an leistungsrelevanter Stelle afaik eh nicht mehr genutzt werden) durch das Betriebssystem ist, genauso wie die Abschaffung des 16-Bit Moduses und von DirectSound, einfach eine heftige und technisch unnötige Beschneidung der Abwärtskompatibilität. Und Abwärtskompatibilität ist nunmal DER wichtigste Aspekt von x86.
Schraubenverwechsler(in)
29.05.2012 16:53 Uhr
* Sorry, das mit MMX war so gemeint, dass dessen Datentypen nur für Integerberechnungen (wenn auch auf den x87 Registern gemapped) ausgelegt waren. Die Genauigkeit von Integer und Gleitkomma sollte man nicht direkt so gleich behandeln. Im Artikel schien es fast so, als wäre MMX ein Nachfolger von x87.

PS: Ich weiss noch, welchen Aufschrei es damals gab, als der Community so langsam klar wurde, dass MMX kein Gleitkomma kann und die x87 Register/FUs blockiert.

* Selbst Quadwords (64Bit) sind relativ selten. Ich bin nicht sicher, ob es genug Anwendungsmöglichkeiten für (2x)4x64Bit Pakete gibt.
Liegt vielleicht auch an den Anforderungen für die Datenpfade und die Decoder. Wer das wirklich so groß braucht kann auch die paar Takte warten, während die Einzelteile davon berechnet werden.

* Windowx x64 bringt ja nicht nur Schlechtes. Das Abschaffen der x87 FPU im Long Modus von x64 und damit auch das Absägen von 3DNow! und MMX ist eigentlich erfreulich.
Theoretisch könnte man 64Bit Anwendungen / Spiele konsequent auf SIMD auslegen (lassen) und richtig profitieren. Praktisch gesehen bleibt aber trotzdem nicht viel übrig.

Zitat: (Original von ruyven_macaran;4257925)
- stimmt wohl
- ergibt sich
- x87 erlaubt Rechensequenzen mit intern 80 Bit Genauigkeit, MMX erzwingt dagegen nach jedem Rechenschritt eine Rundung aufs 64 Bit Formt. Entweder verstehe ich etwas falsch, oder die Möglichkeiten von MMX waren ein Rückschritt gegenüber der Möglichkeiten einer x87-FPU
- nunja: Bei FMA Nutzung steigt die Präzision schon, wenn auch nicht in der Ausgabe. (wieso führt eigentlich niemand 128/256 Bit Datenformate ein? Braucht man vielleicht nicht wirklich, zugegeben. Aber der Implementierungsaufwand sollte, ausgehend von einem System, dass 4 64 Bit Werte am Stück verarbeitet, minimal sein)
- Was Microsoft so alles aus den 64 Bit Systemen gekickt hat, würde eigene (Hass-)artikel füllen


P.S.:
Das nenn ich mal ein hochwertiges erstes Post
Lötkolbengott/-göttin
29.05.2012 15:18 Uhr
Für Bulldozer-Besitzer könnte die Entscheidung Intels dagegen bedeuten, dass die FMA4-Fähigkeit ihrer SIMD-Einheiten nie genutzt werden wird, da Softwareentwickler eine flächendeckende FMA3-Unterstützung erwarten können, während eine FMA4-Fixierung nur das obere Ende von AMDs letztjährigen Neuvorstellungen betrifft.


Das dachte ich mir schon seit Bulldozer mit FMA4 beworben wurde und Intel sich auf FMA3 festlegte.
Aber an sich muss man sich da nicht wundern. Schließlich geht die Entwicklung mit dem Markt und der Verbreitung und da war FMA4 von Beginn an die schlechtere Wahl.

Verwandte Artikel

330°
 - 
Der Pentium-Bug wird entdeckt und AMD entdeckt DDR und Dice entdeckt, dass man von Battlefield wohl auch gut noch einen vierten Aufguß verkaufen könnte - das geschah am 30. Oktober. Jeden Tag wirft PC Games Hardware einen Blick zurück in die noch junge, aber bewegte Geschichte des Computers. mehr... [36 Kommentare]
198°
 - 
Wer USB 3.0 in seinem Computer hat und noch auf Windows 7 oder Windows XP setzt, der braucht die passenden USB-3.0-Host-Controller-Treiber für den Chip. In diesem Artikel finden Sie eine Download-Übersicht mit allen wichtigen Herstellern wie Intel, Texas Instruments, Etron, VIA, Fresco Logic, AS Media und NEC/Renesas. mehr... [34 Kommentare]
166°
 - 
2008 hat Intel die Core-i-Prozessorserie eingeführt, die in die Modellreihen Core i7, Core i5 und Core i3 unterteilt ist. Welche Kriterien entscheiden darüber, in welche Core-i-Reihe ein Prozessor einsortiert wird? Ist ein Core i7 immer schneller als ein Core i5? Diese und andere Fragen beantwortet PC Games Hardware in einem Video. mehr... [32 Kommentare]
 
article
883721
CPU
Befehlssatz
Mit dem Nachfolger von Ivy Bridge möchte Intel nicht nur eine neue CPU-Architektur einführen, Haswell wird auch über einen deutlich erweiterten Befehlssatz verfügen: AVX2. PC Games Hardware stellt den Befehlsatz vor.
http://www.pcgameshardware.de/CPU-Hardware-154106/News/Intel-AVX2-fuer-haswell-883721/
28.05.2012
http://www.pcgameshardware.de/screenshots/medium/2012/05/befehle.png
haswell,bulldozer,cpu
news