Programme für SSE2-fähige Prozessoren optimieren
Vier auf einen Streich
von Stephan Siemen
Erschienen im Linux-Magazin
2003/08
Intels x86-Prozessoren sind SIMD-fähig seit dem Pentium MMX: SIMD (Single Instruction, Multiple Data) bedeutet, dass die CPU vier Berechnungen in einem Rutsch ausführt. Wer die passenden Optimierungstechniken kennt und nutzt, kann seine Programme erheblich beschleunigen.
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.
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)
Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|