AMD: Neue SSE-Befehle ab 2009

Ab 2009 sollen neue SSE-Befehle bestimmte Algortithmen beschleunigen.

In Pocket speichern vorlesen Druckansicht 129 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Benjamin Benz

Mit der zweiten Generation des noch in den Startlöchern stehenden Barcelona-Prozessors will AMD neue SSE-Befehle einführen. Ab 2009 soll Bulldozer unter dem Label SSE5 47 neue Befehle bringen. Durch die Befehle möchte AMD bestimmte Algorithmen beschleunigen. Wie schon im Barcelona soll auch die neue SSE-Einheit 128-Bit-Breite Befehle verarbeiten. AMD erhofft sich bei bestimmten Algorithmen aus den Bereichen High Performance Computing (HPC), Multimedia und Verschlüsselung 30 bis 50 Prozent mehr Performance.

Als besonderes Schmankerl gibt es bei SSE5-Befehlen Instruktionen, die nicht nur wie bei x86 üblich zwei, sondern gleich drei oder gar vier Parameter übernehmen. Drei-Adress-Operationen waren ursprünglich mal unter dem Namen "Technical Floating Point" (TFP) für den Opteron vorgesehen, dann aber zugunsten der Kompatibilität zu Intels SSE verworfen worden. Nun aber ist Kompatibilität offenbar nicht mehr gefordert, außer dass sich die Opcodes der verschiedenen Hersteller nicht in die Quere kommen sollten.

Für die neuen Instruktionen ändert AMD das Format und führt ein drittes Opcode-Byte (Opcode3) ein. Die Befehle belegen die bisher freien Opcodes 0x0F24 und 0x0F25. Opcode3 darf jeweils von 0x00 bis 0xFF gehen, wobei Bit 2 Einfluss auf die Reihenfolge der Operanden hat und die beiden niedrigsten Bits die Länge der Operanden angeben. Befehle, die mit 0x0F24 beginnen, benötigen Register als Operanden. Die der Befehlsgruppe 0x0F25 zusätzlich noch einen Ein-Byte Immediate-Operanden, also eine einfache Zahl, kein Register und keine Adresse.

Zu den neuen Befehlen gehören Multiply-Accumulate-Befehle für Gleitkomma- und Integer-Zahlen. So führt beispielsweise der Befehl FMADDPS eine Multiplikation sowie eine Addition auf einmal aus und speichert das Ergebnis gleich an der gewünschten Stelle:

FMADDPS dest, src1, src2, src3; 

Als Formel geschrieben sieht das so aus: dest = src1 × src2 + src3. Auch der Cell-Prozessor kennt so einen mächtigen MAC-Befehl mit vier Operanden – allerdings nur für einfache Genauigkeit. SSE5 hingegen unterstützt ihn auch in doppelter Ganauigkeit (FMADDPD). MAC-Befehle bilden die Grundlage wichtiger Algorithmen aus der Signalverarbeitung, allen voran der FFT (Fast Fourier Transformation). Ebenfalls beschleunigen will AMD Algorithmen, die die DCT (Diskrete Cosinus Transformation) nutzen. Dazu gehören unter anderem Audio-Codecs wie MP3, Ogg Vorbis, WMA oder AAC. Ebenfalls neu sind Befehle für so genannte "conditional moves", die ein Ziel, zwei Quellen sowie einen Selektor-Wert übernehmen. Bei dem Befehl PCMOV dest, src1, src2, selector entscheidet der Selektorwert bitweise, ob das entsprechende Datenbit aus src1 oder aus sr2 nach dest kopiert wird. Damit wird die Schleife:

for (i=0; i<128; i++)
if (selector)
dest[i]= source1[i];
else
dest[i]= source2[i];

auf einen einzigen Befehl reduziert.

Für die neuen Befehle standen verschiedene andere Architekturen Modell: allen voran die Altivec-Einheit der PowerPC-Prozessoren. Aber man habe sich auch diverse DSP-Befehlssätze angesehen, meinte Leendert van Doorn, seines Zeichens Senior Fellow bei AMD und Chef der Abteilung für "software technology". Dennoch habe man keine Intellectual Property (IP) zugekauft, sondern selbst viele rechenintensiven Algorithmen analysiert.

In den nächsten Tagen will AMD eine Erweiterung für den Open-Source-Compiler gcc herausbringen, die bereits SSE5-Code erzeugen kann. In einigen Monaten soll dann ein SSE5-Simulator folgen, damit Programmierer schon jetzt mit den neuen Befehlen spielen können. Erfahrungsgemäß dauert es sehr lange, bis Befehlsatzerweiterungen Einzug in Mainstream-Software halten – insbesondere, wenn AMD und Intel mal wieder (zumindest anfangs) verschiedene Wege gehen. So ist AMDs SSE128-Erweiterung im Barcelona nicht kompatibel zu SSE4 von Intel. Etwas schneller geht es bei HPC-Software, die auf bestimmte Architekturen maßgeschneidert wird. Nun sollen bis zur Einführung von Bulldozer die Entwickler Zeit haben, ihren Code auf SSE5 zu optimieren.

[i]Mehr zu diesen Themen: