Les instructions SSE d'Intel : Une introduction complète
📖 Table of Contents
- Introduction
- Les instructions SSE
- 2.1. Présentation des instructions SSE
- 2.2. Détection du support des instructions SSE
- Les quatre sous-groupes d'instructions SSE
- 3.1. Instructions SIMD à virgule flottante en simple précision
- 3.1.1. Les instructions de transfert de données SIMD à virgule flottante en simple précision
- 3.1.2. Les instructions arithmétiques SIMD à virgule flottante en simple précision
- 3.1.3. Les instructions de comparaison SIMD à virgule flottante en simple précision
- 3.1.4. Les instructions logiques SIMD à virgule flottante en simple précision
- 3.2. Les instructions de gestion de l'état MX CSR
- 3.3. Les instructions SIMD d'entiers sur 64 bits
- 3.4. Les instructions de contrôle de la mémoire cache et d'ordonnancement d'instructions
- Les instructions de transfert de données SIMD à virgule flottante en simple précision
- 4.1. L'instruction "movaps" : déplacement de données Alignées enregistrements xmm et enregistrements xmm en mémoire
- 4.2. L'instruction "movups" : déplacement de données non alignées enregistrements xmm et enregistrements xmm en mémoire
- 4.3. L'instruction "movhlps" : déplacement des valeurs en virgule flottante en simple précision du quadword élevé d'un registre xmm vers le quadword bas d'un autre registre xmm
- 4.4. L'instruction "movlhps" : déplacement des valeurs en virgule flottante en simple précision du quadword bas d'un registre xmm vers le quadword élevé d'un autre registre xmm
- 4.5. L'instruction "movss" : déplacement d'une valeur en virgule flottante en simple précision scalaire entre registres xmm ou entre un registre xmm et la mémoire
- Conclusion
📝 Les instructions SSE : Un aperçu complet
Introduction
L'objet de cet article est d'expliquer ce que le manuel Intel dit à propos des instructions SSE. Il y a beaucoup de choses à comprendre et nous allons plonger dans les détails de ces instructions qui représentent une extension du modèle d'exécution SIMD introduit avec la technologie MMX. Pour plus de détails, il est conseillé de se référer au chapitre 10 du manuel Intel.
Les instructions SSE
Les instructions SSE sont des instructions spécifiques aux processeurs Intel 64 et ia-32 qui prennent en charge ces instructions. Pour détecter le support de ces instructions, vous pouvez utiliser l'instruction CPUID.
Les quatre sous-groupes d'instructions SSE
Les instructions SSE sont divisées en quatre sous-groupes. Le premier sous-groupe est celui des instructions SIMD à virgule flottante en simple précision qui fonctionnent sur les registres xmm. Ce sous-groupe est divisé à son tour en plusieurs sous-groupes.
Les instructions de transfert de données SIMD à virgule flottante en simple précision
Ces instructions permettent de déplacer des opérandes scalaires en virgule flottante en simple précision entre les registres xmm et la mémoire.
Les instructions arithmétiques SIMD à virgule flottante en simple précision
Ces instructions permettent d'effectuer des opérations arithmétiques sur des valeurs scalaires en virgule flottante en simple précision situées dans les registres xmm et la mémoire.
Les instructions de comparaison SIMD à virgule flottante en simple précision
Ces instructions permettent de comparer des valeurs scalaires en virgule flottante en simple précision situées dans les registres xmm et la mémoire.
Les instructions logiques SIMD à virgule flottante en simple précision
Ces instructions permettent d'effectuer des opérations logiques sur des valeurs scalaires en virgule flottante en simple précision situées dans les registres xmm et la mémoire.
Les instructions de transfert de données SIMD à virgule flottante en simple précision
Les instructions de transfert de données SIMD à virgule flottante en simple précision sont utilisées pour déplacer des opérandes scalaires en virgule flottante en simple précision entre les registres xmm et la mémoire. Les instructions suivantes Font partie de ce sous-groupe :
L'instruction "movaps" : déplacement de données alignées entre les registres xmm et la mémoire
L'instruction "movaps" permet de déplacer des valeurs scalaires en virgule flottante en simple précision alignées entre les registres xmm et la mémoire.
L'instruction "movups" : déplacement de données non alignées entre les registres xmm et la mémoire
L'instruction "movups" permet de déplacer des valeurs scalaires en virgule flottante en simple précision non alignées entre les registres xmm et la mémoire.
L'instruction "movhlps" : déplacement des valeurs en virgule flottante en simple précision du quadword élevé vers le quadword bas
L'instruction "movhlps" permet de déplacer les valeurs en virgule flottante en simple précision du quadword élevé d'un registre xmm vers le quadword bas d'un autre registre xmm.
L'instruction "movlhps" : déplacement des valeurs en virgule flottante en simple précision du quadword bas vers le quadword élevé
L'instruction "movlhps" permet de déplacer les valeurs en virgule flottante en simple précision du quadword bas d'un registre xmm vers le quadword élevé d'un autre registre xmm.
L'instruction "movss" : déplacement d'une valeur en virgule flottante en simple précision scalaire entre les registres xmm et la mémoire
L'instruction "movss" permet de déplacer une valeur en virgule flottante en simple précision scalaire entre les registres xmm ou entre un registre xmm et la mémoire.
Conclusion
Dans cet article, nous avons abordé un aperçu complet des instructions SSE. Nous avons découvert les différents sous-groupes d'instructions et nous nous sommes concentrés sur les instructions de transfert de données SIMD à virgule flottante en simple précision. Dans le prochain article, nous aborderons les autres instructions SSE, notamment celles liées à la gestion de l'état MX CSR. Restez à l'écoute !
🌟 Highlights
- Les instructions SSE sont une extension du modèle d'exécution SIMD introduit avec la technologie MMX.
- Les instructions SSE ne peuvent être exécutées que sur les processeurs Intel 64 et ia-32 dotés de la fonctionnalité SSE.
- Les instructions SSE sont divisées en quatre sous-groupes : les instructions SIMD à virgule flottante en simple précision, les instructions de gestion de l'état MX CSR, les instructions SIMD d'entiers sur 64 bits et les instructions de contrôle de la mémoire cache et d'ordonnancement d'instructions.
❓ FAQ
Q: Quelles sont les différences entre les instructions "movaps" et "movups" ?
A: L'instruction "movaps" est utilisée pour déplacer des valeurs scalaires en virgule flottante en simple précision alignées entre les registres xmm et la mémoire, tandis que l'instruction "movups" est utilisée pour déplacer des valeurs scalaires en virgule flottante en simple précision non alignées entre les registres xmm et la mémoire.
Q: Comment détecter le support des instructions SSE sur un processeur ?
A: Vous pouvez utiliser l'instruction CPUID pour détecter le support des instructions SSE sur un processeur Intel 64 ou ia-32.