Présentation

Article

1 - JEUX D'INSTRUCTIONS ET TYPES DE DONNÉES

2 - CARACTÉRISTIQUES DES EXTENSIONS SIMD CLASSIQUES

  • 2.1 - Registres SIMD
  • 2.2 - Instructions arithmétiques et logiques
  • 2.3 - Instructions de décalage
  • 2.4 - Instructions de comparaison et rupture de séquence
  • 2.5 - Instructions de manipulation de données
  • 2.6 - Instructions de conversion
  • 2.7 - Instructions mémoire
  • 2.8 - Instructions ad hoc

3 - UTILISATION DES INSTRUCTIONS SIMD

  • 3.1 - Compilateurs
  • 3.2 - Appels de fonction (intrinsèques)

4 - ÉVOLUTION DES EXTENSIONS SIMD

  • 4.1 - Nouvelles instructions et exécution plus rapide
  • 4.2 - SIMD avec masquage et instructions « gather »
  • 4.3 - Extensions 512 bits d'Intel

5 - REMARQUES POUR CONCLURE

6 - GLOSSAIRE – DÉFINITIONS

Article de référence | Réf : H1200 v1

Caractéristiques des extensions SIMD classiques
Extensions SIMD des jeux d'instructions

Auteur(s) : Daniel ETIEMBLE, Lionel LACASSAGNE

Date de publication : 10 févr. 2015

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

RÉSUMÉ

Cet article décrit les extensions SIMD des jeux d'instructions des microprocesseurs. Les différentes extensions SSE et AVX de IA-32 et Intel64 (Intel), les extensions Neon d'ARM et les différentes variantes d'IBM (Altivec) sont prises comme exemple. L'article montre les spécificités de l'arithmétique entière, du traitement des structures conditionnelles, des accès mémoire. Il montre comment les extensions comprennent des extensions naturelles des instructions scalaires, et des instructions ad hoc destinées à des applications particulières. Ces instructions s'utilisent soit en aidant le compilateur à «vectoriser», soit en utilisant des intrinsèques, qui sont des appels de fonctions correspondant aux instructions à insérer dans un programme C ou C++.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

ABSTRACT

SIMD instruction sets

This article describes the main characteristics of the SIMD/multimedia extensions that feature in the instruction sets of modern microprocessors. SSE-SSE4, AVX and AVX2 extensions to IA-32/Intel 64 ISAs, Neon extensions to ARM ISA and different IBM extensions (Altivec) are used as examples. The article shows the specifics of integer arithmetic, “if_then_else” implementations and memory accesses. It shows how these extensions include natural extensions of scalar instructions together with ad hoc instructions for particular applications. It describes how to use these instructions, either by helping the compiler to "vectorize" or by using intrinsics, which are function calls corresponding to the SIMD instructions to insert into a C or C++ program.

Auteur(s)

  • Daniel ETIEMBLE : Ingénieur INSA Lyon - Professeur émérite à l'université Paris Sud

  • Lionel LACASSAGNE : Ingénieur EPITA - Maître de conférences à l'université Paris Sud

INTRODUCTION

Cet article décrit les caractéristiques principales des extensions SIMD des jeux d'instructions des microprocesseurs modernes qui ont été introduites et développées depuis les années 1990. Les opérations arithmétiques et logiques effectuées par les instructions scalaires des jeux d'instructions s'effectuent sur la taille maximale des registres des processeurs, 32 ou 64 bits. Or, les programmes peuvent travailler sur des données de taille inférieure, comme les octets (8 bits), les mots de 16 bits, ces données étant signées ou non signées. C'est le cas notamment pour le traitement d'images, le traitement du signal et de nombreuses autres applications. Le principe des instructions SIMD est donc d'utiliser des registres de plus grande taille (128, 256 ou 512 bits) et d'effectuer la même opération sur des vecteurs contenant plusieurs éléments 8 bits, 16 ou 32 bits pour les nombres entiers, 32 ou 64 bits sur les nombres en représentation flottante.

Les caractéristiques de ces extensions sont illustrées à partir des plus utilisées : SSE à SSE4.2, AVX et AVX2 pour les jeux d'instructions IA-32 et Intel 64 d'Intel, Neon et Neon2 d'ARM, Altivec et ses différentes variantes IBM.

Les instructions arithmétiques flottantes ne posent aucun problème. Le problème des retenues pour les instructions arithmétiques entières est détaillé. Les instructions SIMD effectuant la même opération sur tous les éléments d'un vecteur, les structures conditionnelles if-then-else impliquent un traitement particulier. Les instructions mémoire doivent accéder à des éléments situés à des adresses mémoire successives, ce qui implique des traitements particuliers lorsque ce n'est pas le cas. L'exemple classique est le cas de données rangées en mémoire sous forme de tableaux de structures (AoS) qu'il faut transformer en structures de tableaux (SoA) pour permettre des calculs SIMD.

La plupart des instructions SIMD sont des extensions naturelles des instructions scalaires des jeux d'instructions accompagnées des instructions de manipulation de données pour faciliter le traitement SIMD. Ces instructions s'accompagnent d'instructions ad hoc destinées à des applications particulières. Les extensions SIMD ont aussi été appelées extensions multimédias, car elles avaient initialement pour objectif de rendre compétitifs les processeurs généralistes sur les applications multimédias, les applications du traitement de signal et de sécurité. Des exemples typiques d'instructions ad hoc visent la détection de mouvement, le calcul sur les nombres complexes, la cryptographie, etc.

Cet article détaille également comment utiliser ces instructions. Une possibilité est d'aider le compilateur à « vectoriser », c"est-à-dire à les utiliser. L'autre approche consiste à utiliser des intrinsèques à insérer dans un code C ou C++ : ce sont des appels de fonctions aux instructions SIMD à utiliser notamment pour l'arithmétique entière ou lorsque des transformations de haut niveau qui ne sont pas à la portée du compilateur sont nécessaires.

Les extensions 512 bits récentes lèvent certaines limites des extensions SIMD en permettant un traitement partiel des éléments des vecteurs selon un masque et en permettant des accès mémoire à des adresses non consécutives. Ces évolutions rapprochent les extensions SIMD des caractéristiques des processeurs vectoriels des années 1980.

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

KEYWORDS

SIMD instructions   |   SSE   |   AVX   |   Neon   |   Alvitec   |   vectorisation   |   intrinsèque

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h1200


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation

2. Caractéristiques des extensions SIMD classiques

2.1 Registres SIMD

Définir des instructions SIMD sur les registres 32 bits des processeurs 32 bits ou 64 bits des processeurs 64 bits était d'un intérêt limité puisqu'il aurait été sans véritable intérêt pour le calcul flottant et se serait limité au calcul sur les octets et les mots de 16 bits pour les entiers. Exceptée la tentative déjà mentionnée d'extension MMX d'IA-32 avec des registres de 64 bits, les extensions SIMD ont pris leur essor avec des registres spéciaux de 128 bits (séries SSE et Altivec), puis plus tard de 256 bits.

Le tableau 1 donne le nombre de registres SIMD et leur taille pour les différentes versions des extensions SIMD des jeux d'instructions x86, Altivec (IBM-Motorola) et ARM. Le passage des jeux d'instructions 32 à 64 bits a conduit à un doublement du nombre de registres pour les jeux d'instructions CISC. La figure 2 présente les différents types de données utilisables avec les registres SIMD XMM des extensions du jeu d'instructions IA-32. Les formats 16×8 et 8× 16 disposent des versions signées et non signées. La version Intel 64 double le nombre de registres. La version AVX a 8 ou 16 registres de 256 bits appelés YMM selon le système d'exploitation utilisé (32 ou 64 bits), mais seuls les nombres flottants peuvent utiliser les 256 bits (8 float ou 4 double  ) alors que les nombres entiers ne peuvent utiliser que le sous-ensemble XMM (128 bits) de ces registres. La version AVX2 introduit des instructions SIMD sur 256 bits pour la plupart des instructions entières des versions SSE.

Les extensions Neon et Neon2 ont les mêmes formats pour les entiers, mais uniquement la simple précision pour les flottants. Les extensions SIMD d'IBM ou Motorola possèdent (QPX) ou ne possèdent pas (VMX, VSX ou SPU) le format flottant double précision.

HAUT DE PAGE

2.2 Instructions arithmétiques et logiques

Le principe des instructions SIMD (figure ...

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Caractéristiques des extensions SIMD classiques
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - INTEL -   Intel® 64 and IA-32 architectures software developer manuals.  -  http://www.intel.com/content/www/us/en/ processors/architectures-software- developer-manuals.html (page consultée le 4 décembre 2014).

  • (2) - ALTIVEC -   AltiVec technology programming interface manual.  -  (1999). http://www.freescale.com/files/32bit/doc/ ref_manual/ALTIVECPIM.pdf (page consultée le 4 décembre 2014).

  • (3) - ARM Infocenter -   The architecture of digital world.  -  http://www.infocenter.arm.com/help/ index.jsp (page consultée le 4 décembre 2014).

  • (4) - KUAH (K.) -   Motion estimation with Intel® streaming SIMD extensions 4 (Intel® SSE4).  -  Intel software solutions group (2008). https://www.software.intel.com/en-us/ articles/motion-estimation-with-intel- streaming-simd-extensions-4-intel-sse4 (page consultée le 4 décembre 2014).

  • (5) - SIEWERT (S.) -   Using Intel® streaming SIMD extensions and intel® integrated performance primitives to accelerate algorithms.  -  Inter developer zone (2009). https://www.software.intel.com/en-us/...

Cet article est réservé aux abonnés.
Il vous reste 93% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(238 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS