AMD kündigt SSE5 für „Bulldozer“ an
AMD hat heute bekannt gegeben, dass die für 2009 angekündigten Prozessoren mit dem Codenamen „Bulldozer“, die auf einer neuen Mikroarchitektur basieren sollen, Unterstützung für SSE5 mitbringen werden. Der in Dresden produzierende Halbleiterspezialist kommt damit dem Marktführer Intel zuvor.
Vor einigen Jahren war die Welt für Intel noch in Ordnung: man stellte die Befehlserweiterungen vor und die Konkurrenz musste nachziehen. Die Folge war ein Vorsprung von im Schnitt einem Jahr. Während SSE3 z. B. Anfang 2004 im Pentium 4 auf Basis des in 90 nm gefertigten Prescott-Kerns begrüßt werden konnte, liefen erste Athlon 64-Chips im überarbeiten E-Stepping und Support für diese Befehlserweiterung erst im April 2005 vom Band. AMDs Versuche, mit eigenen Erweiterungen wie 3DNow! am Markt Fuß zu fassen, waren dagegen kaum von Erfolg gekrönt. Letztendlich setzten sich MMX, SSE, SSE2 und SSE3 durch.
Doch zwischenzeitlich war AMD mit der 64-Bit-Erweiterung ein Coup gelungen, der Intel dazu zwang, die ursprünglich geplante 64-Bit-Erweiterung Yamhill im Prescott (laut Gerüchten) zu verwerfen und im Sinne der Kompatibilität auf die Implementierung der Konkurrenz zu setzen. AMD kam Intel zuvor und Microsoft wollte keine zwei 64-Bit-Erweiterungen unterstützen – es hat sich gelohnt der frühe Vogel zu sein. Bereits im August 2000 hatte AMD seine Pläne über AMD64 (damals noch x86-64) bekannt gegeben, bevor das Produkt letztendlich Mitte 2003 (Athlon 64 erst im September) an den Start ging.
Wie seinerzeit bei AMD64, hat AMD nun zwei Jahre vor der geplanten Produktvorstellung seine geplante Befehlserweiterung SSE5 angekündigt und entsprechende Dokumentationen freigegeben, und damit den Scherbenhaufen namens SSE4 geschickt umgangen. Doch warum Scherbenhaufen? Nun, da wäre SSSE3 (Supplemental Streaming SIMD Extensions 3), die 16 (128 Bit XMM Register, mit 64 Bit MMX Registern insgesamt 32) neuen Befehle der Core Mikroarchitektur (Conroe, Merom, Woodcrest), die ursprünglich als SSE4 gehandelt wurden und bei denen sich Intel viel zu viel Zeit lies, den endgültigen Namen zu enthüllen, der eben nicht SSE4 lautete – genutzt werden sie kaum. Die Penryn-Prozessoren (Yorkfield, Wolfdale, Harpertown, Dunnington) erfreuen uns mit SSE4 – genau genommen SSE4.1. SSE4.1 enthält 47 neue Befehle. Mit Nehalem (Bloomfield, Gainestown) hält in der zweiten Hälfte von 2008 SSE4.2 mit 7 weiteren Instruktionen Einzug. AMD komplettiert das Chaos und implementiert in Barcelona/Agena (K10) weder SSSE3, SSE4.1 noch SSE4.2 sondern versucht sein Glück mit SSE4a – vier neue Op-Codes. Wie nicht anders zu erwarten, sind sämtliche Befehle zueinander inkompatibel – eine Schnittmenge zwischen SSSE3-SSE4.2 und SSE4a existiert nicht.
Mit SSE5 werden nun lange im Voraus harte Fakten geschaffen. Insgesamt 46 neue Befehle (je nachdem wie man zählt auch über 100) hat AMD in petto, die die Performance steigern und die Anzahl der Register-Zugriffe reduzieren sollen. Wie das klassische SSE arbeitet auch SSE5 auf 128 Bit breiten Registern, mit denen, je nach Datentyp, ein und dieselbe Rechenoperation auf 16 (Byte, 8 Bit), 8 (Word 16 Bit), 4 (Double word od. Single Precision Floating Point, 32 Bit) oder 2 (Quad word d. Double Precision Floating Point, 64 Bit) Datenpakete angewendet wird – daher auch der Oberbegriff SIMD (Single Instruction Multiple Data).
Im Gegensatz zu allen bisherigen SSE-Befehlen erlaubt AMD mit Hilfe einer geschickten Codierung nun bis zu 3 Operanden in einem Befehl zu kodieren, was bislang nur bei RISC-Architekturen üblich war. (Randnotiz: Alle modernen x86-Mikroprozessoren dekodieren die CISC-Befehle nach den Instruction Decodern in triadische RISC-Befehle, da RISC allgemein als die stromsparendere Architektur angesehen wird). Mit Hilfe der 3 Operanden sind in SSE5-Befehle wie FMADD möglich, bei denen zwei Floating-Point-Zahlen miteinander multipliziert werden und eine dritte im gleichen Atemzug auf das Zwischenergebnis aufaddiert wird. Bisher waren hierfür bei x86 zwei Befehle notwendig. Grafikkarten können FMADD schon länger, da dies eine häufig benutze Operation ist. Die lange Liste aus neuen Befehlen besteht zu großen Teilen aus neuen Shift-, Rotate- und Vergleichsoperationen. Auch Horizontal Add (addiert alle in einem 128 Bit Register gestapelten Zahlen) und Packed Multiply Accumulate sind vorhanden.
Der Großteil der Befehle ist mit den bislang unbenutzten Prefix-Codes 0F24h, 0F25h und 0F7Ah codiert und ist mindestens fünf Byte lang. In der Maximalkonfiguration kann ein SSE5-Befehl bis zu 15 Byte (das x86-Maximum) in Anspruch nehmen. Die einzige Ausnahme bilden die fünf Befehle PTEST, ROUNDP, ROUNDPS, ROUNDSD, ROUNDSS, die in ihrer Codierung exakt den unter SSE4.1 definierten Instruktionen entsprechenden (Gruppe: 660Fh) – der Rest ist wirklich neu.
Abschließend bleibt nur zu hoffen, dass die frühzeitige Ankündigung der SSE5-Befehlserweiterung zur Abwechslung wieder dazu führt, dass Intel und AMD nach SSSE3, SSE4.1, SSE4.2 und SSE4a wieder am selben Strang ziehen. Die aktuelle Situation ist der Softwareentwicklung sicherlich nicht zuträglich und führt wie seinerzeit bei 3DNow! eher dazu, dass entsprechende Instruktionen gemieden werden. Doch vielleicht halten SSE4.1 und SSE4.2 bei AMD mit den Produkten des kommenden Jahres doch überraschend Einzug. Entsprechende Abkommen hierfür existieren zwischen beiden Unternehmen schon seit vielen Jahren.