Aller au contenu

SSE3

Un article de Wikipédia, l'encyclopédie libre.

SSE3,pourStreamingSIMDExtensionsversion 3, connu aussi par son nom de code internePrescott New Instructions(PNI), est la troisième génération dujeu d'instructionsSSEpour l'architectureIA-32.Elle ajoute 13 nouvellesinstructions-machineau jeu précédent,SSE2.

Intela introduit SSE3 au début de l'année2004avec la versionPrescottde son processeurPentium 4.En,AMDa introduit un sous-ensemble de SSE3 dans la révision E de leur processeurAthlon 64(Venice et San Diego).Leur jeu d'instructionsSIMDpour la plate-formex86,du plus ancien au plus récent, sontMMX,3DNow!(développé parAMD),SSEetSSE2.

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 instructionsSSEpré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érationsDSPet3D.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 architecturesNetBurst,pour charger les vecteurs d'entiers mal alignés qui traversent les limites ducacheline.

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 ducoprocesseurvers des entiers

Instructions Intel

[modifier|modifier le code]
  • MONITOR, MWAIT - Permet d'optimiser les applicationsmulti-threading,Les processeurs disposant de l’Hyper-Threadingdevraient bénéficier de meilleures performances.
  • LeSSE4est une autre avancée majeure, ajoutant une instruction de produit scalaire, de nombreuses instructions d'additions entières, une instructionpopcntet d'autres instructions. SSE4 arrête le support des registres MMX. Le SSE4 est supporté par la version 'Penryn' de la microarchitectureCore 2[1],[2].
  • LeSSE5prévu initialement pour mi-par AMD et implémenté dans lamicroarchitecture Bulldozeren,permet, comme dans les processeursRISC,de préciser dans l'instruction un troisième registre destination, ce qui permet d'économiser un bon nombre d'instructions et devrait intrinsèquement accélérer les calculs. Auparavant, il fallait d'abord copier le contenu du registre destination dans un nouveau registre afin de ne pas détruire les informations précédentes[3],[4].

Notes et références

[modifier|modifier le code]