SSE3 , Streaming SIMD Extensions 3 , également connu sous son nom de code Intel Prescott New Instructions ( PNI ), est la troisième itération du jeu d'instructions SSE pour l' architecture IA-32 (x86). Intel a introduit SSE3 début 2004 avec la révision Prescott de son processeur Pentium 4. En avril 2005, AMD a introduit un sous-ensemble de SSE3 dans la révision E (Venise et San Diego) de ses processeurs Athlon 64. Les premiers jeux d'instructions SIMD sur la plate-forme x86 , du plus ancien au plus récent, sont MMX , 3DNow! (développé par AMD, plus pris en charge sur les processeurs plus récents), SSE et SSE2 .
SSE3 contient 13 nouvelles instructions par rapport à SSE2 .
Changements
Le changement le plus notable est la possibilité de travailler horizontalement dans un registre, par opposition au fonctionnement plus ou moins strictement vertical de toutes les instructions SSE précédentes. Plus précisément, des instructions pour ajouter et soustraire les multiples valeurs stockées dans un seul registre ont été ajoutées. Ces instructions peuvent être utilisées pour accélérer la mise en œuvre d'un certain nombre d' opérations DSP et 3D . Il existe également une nouvelle instruction pour convertir les valeurs à virgule flottante en entiers sans avoir à modifier le mode d'arrondi global, évitant ainsi les blocages coûteux du pipeline . Enfin, l'extension ajoute LDDQU, un chargement vectoriel d'entiers mal alignés alternatif qui offre de meilleures performances sur les plates-formes basées sur NetBurst pour les chargements qui dépassent les limites de la ligne de cache.
Processeurs avec SSE3
- DMLA :
- Opteron (depuis Stepping E4 )
- Sempron (depuis Palerme. Etape E3)
- Athlon 64 (depuis Venice Stepping E3 et San Diego Stepping E4)
- Athlon 64 FX (depuis San Diego Stepping E4)
- Athlon 64 X2
- Phenom 64 X2
- Famille Turion
- Famille K10
- Famille APU (y compris sans GPU)
- Série FX
- La famille Zen
- Intelligence :
- Celeron D
- Celeron (à partir de la microarchitecture Core)
- Pentium 4 (depuis Prescott)
- Pentium D
- Pentium Extreme Edition (mais PAS Pentium 4 Extreme Edition)
- Pentium double cœur
- Pentium (à partir de la microarchitecture Core)
- Cœur
- Xeon (depuis Nocona )
- Atome
- VIA / Centaure :
- Transmeta Efficeon TM88xx (PAS les numéros de modèle TM86xx)
Nouvelles instructions
Instructions courantes
Arithmétique
ADDSUBPD- Additionner-Soustraire-Emballer-Double
- Entrée : { A0, A1 }, { B0, B1 }
- Sortie : { A0 − B0, A1 + B1 }
ADDSUBPS- Additionner-Soustraire-Emballer-Unique
- Entrée : { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Sortie : { A0 − B0, A1 + B1, A2 − B2, A3 + B3 }
AOS (Tableau de structures)
HADDPD- Horizontal-Add-Packed-Double
- Entrée : { A0, A1 }, { B0, B1 }
- Sortie : { A0 + A1, B0 + B1 }
HADDPS- Horizontal-Add-Packed-Single
- Entrée : { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Sortie : { A0 + A1, A2 + A3, B0 + B1, B2 + B3 }
HSUBPD- Soustraction horizontale - Double compacté
- Entrée : { A0, A1 }, { B0, B1 }
- Sortie : { A0 − A1, B0 − B1 }
HSUBPS- Soustraction horizontale-Emballé-Simple
- Entrée : { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Sortie : { A0 − A1, A2 − A3, B0 − B1, B2 − B3 }
LDDQU- Comme indiqué ci-dessus, il s'agit d'une autre méthode de chargement de vecteur entier mal aligné. Cela peut être utile pour les tâches de compression vidéo.
MOVDDUP,MOVSHDUP,MOVSLDUP- Ils sont utiles pour les nombres complexes et le calcul des ondes comme le son.
FISTTP- Comme l'ancienne instruction x87
FISTP, mais ignore les paramètres du mode d'arrondi du registre de contrôle à virgule flottante et utilise à la place le mode « chop » (tronquer). Permet d'omettre le chargement et le rechargement coûteux du registre de contrôle dans des langages tels que C où la conversion de float en int nécessite un comportement tronqué par défaut.
Autres instructions
MONITOR,MWAIT- L'
MONITORinstruction est utilisée pour spécifier une adresse mémoire à surveiller, tandis que l'MWAITinstruction met le processeur dans un état de faible consommation et attend un événement d'écriture à l'adresse surveillée.