Aktuelle Prozessoren der IA32-Familie sind schnell genug für wissenschaftliche Berechnungen und andere rechenintensive Aufgaben, etwa Multimedia-Anwendungen. Bis vor kurzem galt das nur für Ganzzahloperationen, bei der Gleitkommarechnung waren andere Prozessorfamilien deutlich schneller[1].
Seit dem Pentium MMX hat Intel einen neuen Weg eingeschlagen: SIMD-Erweiterungen (Single Instruction, Multiple Data) sollen Integer- und Gleitkomma-Operationen wesentlich schneller ausführen als bisherige Architekturen, da ein einzelner Befehl mehrere Berechnungen ausführt.
Befehl mit breiter Wirkung
Die besondere Stärke von SIMD-Architekturen sind Multimedia-Anwendungen. Statt vieler unterschiedlicher Informationen in den verschiedensten Datentypen muss der Prozessor hier ganze Ströme von Daten gleichen Typs mit den gleichen Befehlen verarbeitet. Ein SIMD-Befehl arbeitet daher mit mehreren Daten des gleichen Typs zur selben Zeit. Das steht im Gegensatz zur SISD-Technik (Single Instruction, Single Data) der bisherigen Prozessoren. Die Arbeitsweisen von SISD und SIMD sind in Abbildung 1 dargestellt.
Reine SIMD-Prozessoren wären jedoch zu unflexibel, um auch SISD-Aufgaben schnell und Ressourcen sparend zu bearbeiten. Kombiniert sind SISD und SIMD ideal, um sowohl einfache Aufgaben als auch größere Datensätze schnell und effektiv zu bearbeiten.
Die SIMD-Arbeitsweise ist nicht neu. Viele andere Prozessorarchitekturen, zum Beispiel MIPS und SPARC, nutzen ebenfalls diese Technik. Auch Spielekonsolen wie Sonys Playstation 2 mit ihrer Emotion Engine nutzen SIMD.
Alter Hut: SIMD in der GPU
Selbst auf normalen PCs arbeiten seit Jahren SIMD-Einheiten, und zwar in den Grafikkarten (GPU, Graphics Processing Unit). SIMD ist ideal für die Bearbeitung von Grafikdaten: Die GPU muss oft Operationen, etwa eine geometrische Transformation, auf eine größere Menge von Daten (hier: Vertices) gleichen Typs anwenden.
Es gibt verschiedenen Techniken, die die SIMD-Operationen in Hardware verwirklichen. Im Folgenden meint SIMD die Variante der neueren x86-Prozessoren, der Textkasten "SIMD-Erweiterungen der IA32-Prozessoren" gibt Erläuterungen zu den verbreiteten Techniken MMX, SSE, SSE2 und 3DNow.
Abbildung 1: Ein SISD-Prozessor (links) arbeitet pro Befehl mit einem einzelnen Datenfeld, während ein SIMD-Prozessor (rechts) in jedem Schritt mehrere Daten gleichzeitig verarbeitet.
Abbildung 2: Die Datenvektoren von MMX, SSE und SSE2 arbeiten mit verschiedenen Datentypen. Links sind Anzahl, Größe und Typ der Elemente angegeben, rechts der Klassenname des Vektors innerhalb Intels Klassenbibliothek.
« Zurück
1
2
3
4
5
6
Weiter »