SIMD

Single Instruction Multiple Data (auch SIMDFP) deutsch: Datenverarbeitung mit singulärem Befehls- und parallelem Datenstrang. SIMD ist eine Strategie von Parallelrechnern: Befehle werden von einem Befehlsprozessor  gelesen und an weitere Prozessoren zur Abarbeitung weitergeleitet. Diese Architektur stammt von Grossrechnern und Supercomputern. SIMD-Rechner, auch Array-Prozessoren oder Vektorrechner genannt,  werden vor allem in der digitalen Bildverarbeitung eingesetzt. Auch heutige Mikroprozessoren wie der Pentium 3 und Pentium 4 sowie der PowerPC Prozessor verfügen durch SSE und SSE2 über SIMD-Techniken bzw. den  entsprechenden Befehlssatz, der in der Lage ist, mit einem Befehlsaufruf gleichzeitig mehrere gleichartige Datensätze zu verarbeiten. SIMDFP bedeutet SIMD Floating Point  bzw. SIMD Single Precision Floating Point. Innerhalb der SSE Erweiterung (hier: Pentium III) gibt es acht weitere 128-Bit Datenregister (XMM-Register: XMM0 bis XMM7) sowie einen weiteren gepackten Datentyp (zu 128-Bit):  es handelt sich um 4 gepackte Gleitkommazahlen (je 32-Bit gross): SIMDFP (SIMD Single Precision Floating Point). Der SIMD Befehlssatz arbeitet mit 32-Bit Gleitkommazahlen (Floating-Point Number) in den XMM Registern.  Durch den SSE2 Befehlssatz können in den XMM-Registern auch SIMD-Operationen mit Double-Precision (64-Bit Gleitkommazahlen) durchgeführt werden (oder 16 BYTE Integers, 8 WORD Integers, 4 DWORD Integers oder 2 QWORD Integers).                                             
Siehe auch:    Single-Instruction-Single-Data   SSE   SSE2   Parallele-Datenverarbeitung   Pentium-4   Intel-Core   Intel   Supercomputer   Grossrechner   PowerPC

  Intel-Core

Intel Core ist eine Mikroarchitektur von Intel für Mikroprozessoren, die als Nachfolger der NetBurst Architektur gilt. Intel Core wurde für Intels Dual-Core- bzw. Multi-Core-CPUs  entwickelt und zeichnet sich durch eine vergleichsweise kurze Pipeline (14-stufig) und moderate Taktfrequenzen aus. Im Gegenzug verfügt die Intel Core Architektur über eine hohe Anzahl  von Befehlen per Taktzyklus, woraus sich eine entsprechende Leistungssteigerung ergibt. Weitere Merkmale sind: niedrige Verlustleistung, Umsetzung von Vanderpool (Intels Virtualisierungstechnologie),  Hyper-Threading, Extended Memory 64 Technology, 4-fach Superskalarität, 128-Bit Busbreite für die SSE-Befehlssatzerweiterungen (Streaming SIMD (Single Instruction Multiple Data) Extensions),  dynamisches Zuweisen des L2-Cache an die jeweiligen CPU-Kerne, effizienteres Stromsparkonzept, spekulatives Laden von Daten in den Cache (Prefetching) und Verarbeiten (Memory Disambiguation).                                                 
Siehe auch:    Core-2-Duo   Dual-Core   NetBurst   Vanderpool   Virtualisierung   EM64T   Superskalar   SSE   SIMD   Hyper-Threading

  SSE

Streaming SIMD Extensions (SIMD: Single Instruction Multiple Data). SSE ist eine Befehlssatzerweiterung der x86-Architektur von Intel, die die Ausführung von Tasks auf einem Prozessor durch Parallelisierung beschleunigen soll.  SSE zielt vor allem auf die Gleitkommaoperationen ab. Mit der Entwicklung des Pentium 3 Prozessors wurden gleichzeitig 128-Bit-Register eingeführt. Damit können mit SSE mehr Daten auf einmal parallel verarbeitet werden. SSE arbeitet beispielsweise  beim Pentium 3 auch mit SIMDFP (SIMD Floating Point bzw. SIMD Single Precision Floating Point).

Datenregister
Innerhalb der SSE-Erweiterung gibt es 8 weitere 128-Bit Datenregister (XMM-Register: XMM0 bis XMM7),  sowie einen weiteren gepackten Datentyp (zu 128-Bit): es handelt sich um 4 gepackte Gleitkommazahlen (je 32-Bit gross): SIMDFP (SIMD Single Precision Floating Point).  Der SIMD Befehlssatz arbeitet mit 32-Bit Gleitkommazahlen (Floating-Point Number) in den XMM Registern. Durch den SSE2  Befehlssatz können in den XMM-Registern auch SIMD-Operationen mit Double-Precision (64-Bit Gleitkommazahlen) durchgeführt werden (oder 16 BYTE Integers (Quad-Precision) oder 8 WORD Integers oder 4 DWORD Integers oder 2 QWORD Integers). 

WORD, DWORD, QWORD
Ein WORD ist in der EDV die kleinste adressierbare Einheit. Der doppelte Wert eines WORD ist ein DWORD (Double-WORD), der vierfache Wert eines WORD ist ein QWORD (Quadruple-WORD).  Bei der Intel i386 Prozessorfamilie (IA-32 x86-Architektur) ist ein WORD = 16-Bit oder 2 Byte (z. B. AX Register), ein DWORD 32-Bit oder 4 Byte und ein Quadruple WORD (QWORD) 64-Bit oder 8 Byte, z. B. das Register MM0. 

Transportbefehl für Daten: MOVAPS
Der SSE Befehlssatz bei Intel enthält auch zusätzliche Befehle zum Transport der Daten zwischen  den XMM Registern oder zwischen einem XMM Register und dem Hauptspeicher: Move Aligned Packed Single-Precision Floating-Point Values (MOVAPS): MOVAPS überträgt einen Double QWORD Operanden mit 4 Gleitkommawerten zu je 32-Bit aus dem  Arbeitsspeicher in ein 128-Bit XMM Register und vice versa. Denselben Vorgang kann MOVAPS auch zwischen 2 XMM Registern durchführen. Die Speicheradresse muss durch 16 teilbar sein (Speicheradresse modulo 16 = 0 bzw. 16 Byte aligned). 

Transportbefehl für Daten: MOVUPS
Move Unaligned Packed Single-Precision Floating-Point Values (MOVUPS): führt dieselben Operationen aus wie MOVAPS, akzeptiert jedoch auch Adressen, die nicht durch 16 teilbar sind (unaligned).   

Weitere Befehle
Weiterhin gibt es noch: MOVLP (Move Low Packed Single-Precision Floating-Point Value) und MOVHPS (Move High Packed Single-Precision Floating-Point Values).  Bei MOVLP werden 2 gepackte Gleitkommazahlen zu je 32-Bit in die zwei unteren Bereiche eines XMM Registers  übertragen, wobei die 2 oberen Bereiche nicht verändert werden. Der MOVHPS Befehl arbeitet ähnlich, nur dass die beiden 32-Bit Floating Point Numbers in die beiden oberen Bereiche des XMM Registers kopiert werden und die beiden unteren Bereiche  des XMM Registers nicht verändert werden. MOVLHPS (Move Packed Single-Precision Floating-Point Values Low to High), MOVHLPS (Move Packed Single-Precision Floating-Point Values High to Low), MOVMSKPS (Move Packed Single-Precision  Floating-Point Sign Mask) und MOVSS (Move Scalar Single-Precision Floating-Point Values) sind weitere SSE Datentransportbefehle. 

Gruppen von Befehlssatzerweiterungen
Weitere Befehlssatzerweiterungen (gepackte und skalare Gleitkommabefehle) von SSE sind folgende Gruppen:  Logische Befehle, Vergleichsbefehle, Arithmetische Befehle, Konvertierungsbefehle und Tauschbefehle. Ein Beispiel für einen arithmetischen SSE Befehl ist Add Scalar Single-Precision Floating-Point Value bzw. Substract Scalar Single-Precision  Floating-Point Value (ADDSS bzw. SUBSS): Subtraktion bzw. Addition der beiden untersten Gleitkommazahlen des Operanden und Abspeichern des Ergebniswertes im entsprechenden Zielregister. Die oberen 3 Bereiche des Zielregisters werden nicht verändert.                 
Siehe auch:    SSE2   SSE3   EM64T   Gleitkommazahl   SIMD   Single-Instruction-Single-Data   Task   Thread   Core-2-Duo   Register

  SSE4

SSE4 (Streaming SIMD Extensions 4 (SIMD: Single Instruction Multiple Data)) ist die neue SSE Befehlssatzerweiterung für Intels ISA (Intel Instruction Set Architecture: IA-64,  Intel 64 und IA-32) die ab 2007 mit der 45-Nanometer-Technologie  eingeführt wird (Intel Penryn). SSE4 verfügt über "Compiler Vectorization Primitives" für eine bessere Multimediale Leistung sowie eine innovative Zeichenkettenverarbeitung. SSE4 umfasst also 2 Hauptbereiche: SSE4  Vectorizing Compiler and Media Accelerators und SSE4 Efficient Accelerated String and Text Processing. Die SSE4 Compiler Vectorization Primitives (Basisoperationen aus denen komplexere Operationen gebildet werden können)  erweitern die Fähigkeiten der Intel Architektur, indem sie eine Leistungsoptimierung ermöglichen und für eine effizientere Code-Generierung sorgen. Dies zielt vor allem auf Anwendungen wie Medien- und Grafikverarbeitung  oder High-Performance Computing Server-Anwendungen (HPC-Server-Anwendungen).  Konkret verbessert werden Integer- und Gleitkommaoperationen, Unterstützung für gepackte DWORD und QWORD Operationen, neue Single-Precision (32-Bit) Gleitkommaoperationen, schnelle Registeroperationen sowie verbesserte Speicheroperationen.  Davon profitieren vor allem Anwendungen mit Bildverarbeitung, Video- und Grafikverarbeitung der 2D/3D Generation, Computerspiele, speicherintensive Anwendungen sowie HPC und Multimediale Anwendungen.  Beispiele für neue SSE4 Befehle sind: Packed DWORD Multiplies (PMULLD, PMULDQ): Unterstützung für die 32 x 32 Bit Multiplikation pro Befehl (für signed und unsigned Werte) sowie die 32 x 32 --> 64 Multiplikation für signed Werte.                                         
Siehe auch:    SSE   SSE2   SSE3   SIMD   Register   IA-64   Intel-Core   Wafer