SSE3

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

SSE3, connu aussi par son nom de code interne Prescott New Instructions (PNI), est la troisième génération du jeu d'instructions SSE pour l'architecture IA-32. Intel a introduit SSE3 au début de l'année 2004 avec la version Prescott de son processeur Pentium 4. En , AMD a introduit un sous-ensemble de SSE3 dans la révision E de leur processeur Athlon 64 (Venice et San Diego). Leur jeu d'instructions SIMD pour la plate-forme x86, du plus ancien au plus récent, sont MMX, 3DNow! (développé par AMD), SSE et SSE2.

Changements[modifier | modifier le code]

Le changement le plus notable est la capacité à fonctionner horizontalement dans un registre, à l'opposé des plus ou moins strictes opérations verticales de toutes les instructions SSE précédentes. Plus spécifiquement, les instructions pour additionner et multiplier plusieurs valeurs stockées dans un seul registre ont été ajoutées. Ces instructions simplifient l'implantation de bon nombre d'opérations DSP et 3D. Il y a aussi une nouvelle instruction pour convertir des valeurs à virgules flottantes à des entiers sans avoir à changer le mode d'arrondissement global, permettant ainsi d'éviter la réinitialisation du Pipeline d'instruction. Finalement, il y a l'ajout de LDDQU, une instruction alternative, qui donne de meilleures performances sur des architectures NetBurst, pour charger les vecteurs d'entiers mal alignés qui traversent les limites du cacheline.

Processeurs avec le SSE3[modifier | modifier le code]

Nouvelles instructions[modifier | modifier le code]

Instructions communes[modifier | modifier le code]

Arithmétique

  • ADDSUBPD - ( Add-Subtract-Packed-Double )
    • Entrée - { A0, A1 }, { B0, B1 }
    • Sortie - { A0 - B0, A1 + B1 }
  • ADDSUBPS - ( Add-Subtract-Packed-Single )
    • 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 : { B0 + B1, A0 + A1 }
  • HADDPS ( Horizontal-Add-Packed-Single )
    • Entrée : { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
    • Sortie : { B0 + B1, B2 + B3, A0 + A1, A2 + A3 }
  • HSUBPD - ( Horizontal-Subtract-Packed-Double )
    • Entrée : { A0, A1 }, { B0, B1 }
    • Sortie : { A0 - A1, B0 - B1 }
  • HSUBPS - ( Horizontal-Subtract-Packed-Single )
    • Entrée : { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
    • Sortie : { A0 - A1, A2 - A3, B0 - B1, B2 - B3 }
  • LDDQU - un chargement alternatif de vecteur codé sur des entiers, utile pour la compression vidéo
  • MOVDDUP, MOVSHDUP, MOVSLDUP - pour les nombres complexes et le filtrage audio
  • FISTTP - conversion de la pile du coprocesseur vers des entiers

Instructions Intel[modifier | modifier le code]

  • MONITOR, MWAIT - Permet d'optimiser les applications multi-threading, Les processeurs disposant de l’Hyper-Threading devraient bénéficier de meilleures performances.

Voir aussi[modifier | modifier le code]