Présentation

Article interactif

1 - JEUX D’INSTRUCTIONS

2 - INSTRUCTIONS SIMD ET INSTRUCTIONS VECTORIELLES

3 - ÉVOLUTION DES EXTENSIONS SIMD

4 - EXTENSIONS VECTORIELLES

5 - TAILLE DES REGISTRES SIMD/VECTORIELS ET SYSTÈME MÉMOIRE

6 - REMARQUES POUR CONCLURE

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

Taille des registres SIMD/vectoriels et système mémoire
Jeux d’instructions : extensions SIMD et extensions vectorielles

Auteur(s) : Daniel ETIEMBLE, Lionel LACASSAGNE

Relu et validé le 05 janv. 2021

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

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

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

Les extensions SIMD sont présentes dans de nombreux jeux d’instructions. Alors qu’Intel a continué à étendre la taille des registres à 512 bits avec les instructions SIMD correspondantes, ARM a arrêté l’évolution de l’extension SIMD Neon et opté pour l’extension vectorielle SVE. Enfin RISC-V privilégie l’extension vectorielle. Les différences entre extensions SIMD et vectorielles sont présentées, ainsi que les dernières évolutions du SIMD Intel et les extensions vectorielles SVE et RISC-V.

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

Lire l’article

ABSTRACT

Instruction sets: SIMD and vector extensions

SIMD extensions are present in many instruction sets. While Intel has continued to expand to 512-bit the size of the SIMD registers with the corresponding SIMD instructions, ARM has stopped the evolution of its SIMD Neon and opted for the SVE vector extension. RISC-V favors the vector extension. The differences between SIMD and vector extensions are presented, as well as the latest developments in Intel SIMD and the vector extensions SVE and RISC-V.

Auteur(s)

  • Daniel ETIEMBLE : Ingénieur de l’INSA de Lyon - Professeur émérite à l’université Paris Saclay

  • Lionel LACASSAGNE : Ingénieur EPITA - Professeur à Sorbonne Université

INTRODUCTION

Depuis la seconde moitié des années 1990, les principaux jeux d’instructions (Intel IA32 et Intel 64, ARM, IBM, etc.) ont introduit des extensions SIMD. Les caractéristiques essentielles ont été présentées dans l’article [H 1 200]. Si Intel a continué à augmenter la taille des registres SIMD de 64 bits à 128, 256 et 512 bits, les autres extensions ont toujours des registres SIMD de 128 bits. Au lieu d’étendre l’extension Neon à 256 bits, ARM a choisi de définir une nouvelle extension appelée SVE (Scalable Vector Extension) qui est de fait une extension vectorielle.

Nous présentons la différence entre les extensions SIMD et les extensions vectorielles. Dans une extension SIMD, pour une opération donnée, il y a une instruction différente pour chaque taille de registre SIMD, pour chaque taille (8, 16, 32, 64 bits) et chaque type de données (entiers signés ou non signés, flottants). Dans une extension vectorielle, il y a une seule instruction par opération : des registres de longueur vectorielle et de configuration définissent la longueur des registres vectoriels, la nature des éléments et le nombre d’éléments sur lesquels porte l’opération définie par l’instruction. Sur le benchmark DAXPY, le nombre d’instructions du benchmark (code statique) et le nombre d’instructions exécutées sont comparés.

L’évolution des extensions SIMD est examinée. En plus de l’augmentation de la taille des registres (256 bits pour AVX en 2008, 512 bits pour AVX-512 en 2013), les extensions Intel ont vu l’introduction de caractéristiques vectorielles que l’on trouvait dans les machines vectorielles comme le Cray-1 (1976). AVX-2 introduit les instructions gather et scatter, qui permettent des accès mémoire avec des pas non unitaires alors que le SIMD pur ne permet que d’accéder à des mots mémoire successifs. AVX-512 introduit les instructions avec masque, c’est-à-dire que l’instruction opère en fonction d’un registre de masque, permettant de sélectionner les éléments sur lesquels porte l’opération. L’évolution des extensions SIMD Intel se traduit par une très grande augmentation du nombre d’instructions. La taille variable des instructions Intel le permet, au prix d’une augmentation du nombre d’octets des instructions (2 à 3 pour AVX, 4 pour AVX-512). Par contre, c’est un problème pour les jeux d’instructions de taille fixe, comme ARM, pour lesquels le nombre de codes opération est limité.

Les deux principales extensions vectorielles sont présentées : l’extension SVE d’ARM et l’extension vectorielle du jeu d’instructions open source RISC-V. L’organisation des registres vectoriels et des registres de configuration, ainsi que les grandes classes d’instructions sont détaillées.

L’approche vectorielle utilise beaucoup moins d’instructions. Un autre avantage est qu’elle est définie « from stratch », sans tenir compte du passé (compatibilité binaire ascendante). C’est la possibilité d’opérer sur des registres vectoriels plus longs qui lui donne un avantage significatif. Pour le programmeur, il n’y a pas de différence notable car la tâche du compilateur est très semblable, qu’elle vise des instructions SIMD ou des instructions vectorielles. En effet, la difficulté réside dans la transformation d’un code scalaire en code SIMD ou vectoriel (« vectorisation »), plus que dans le choix des instructions SIMD ou vectorielles adéquates.

Cet article est réservé aux abonnés.
Il vous reste 94% à 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

instruction sets   |   RISC-V   |   SIMD extension   |   vector extension

DOI (Digital Object Identifier)

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


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 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
Version en anglais En anglais

5. Taille des registres SIMD/vectoriels et système mémoire

Nous avons vu que la différence essentielle entre SIMD et vectoriel est le nombre d’instructions (codes opération). Nous avons vu également que les extensions vectorielles tireraient profit de registres vectoriels plus grands. À travers trois exemples, on peut montrer que des registres plus grands conduisent à reconsidérer le système mémoire.

5.1 AVX-512

Les instructions AVX-512 VMOVDQA, VMOVAPS, VMOVAPD pour les loads et stores alignés, et les instructions équivalentes pour les accès non alignés, transfèrent 512 bits entre les registres SIMD et le cache L1 de données. Or, les CPU Intel avec l'extension AVX-512 ont des lignes de cache de 64 octets (512 bits). Un transfert CPU-cache L1 transfère donc une ligne entière. Cela veut dire que l'utilisation du prefetch (matériel, ou matériel plus logiciel) est indispensable pour éviter un défaut de cache à chaque accès. Le cache L1D de la microarchitecture Cascade Lake introduite en 2019 a déjà des latences de 4 ou 5 cycles d'horloge. Deux loads ou un store sont possibles par cycle d'horloge. Passer à des registres de 1 024 bits ou plus implique donc de modifier le cache de données L1. Un cache plus gros, avec des lignes plus grandes, serait plus lent et implique une modification de toute la hiérarchie mémoire.

HAUT DE PAGE

5.2 ARM-SVE

Le multicœur Fujitsu A64FX, présenté à Hot Chips 2018 , utilise le jeu d'instructions AArch64 avec l'extension SVE. Les registres vectoriels font 512 bits. Les cœurs ont des caches L1D avec des lignes de 64 octets (512 bits). Deux loads ou un store peuvent s'exécuter au même cycle d'horloge. Les accès peuvent être non alignés. On constate les mêmes caractéristiques pour le cache L1D que pour les cœurs Intel implémentant AVX-512.

HAUT DE PAGE

5.3 NEC SX-Aurora...

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.

TEST DE VALIDATION ET CERTIFICATION CerT.I. :

Cet article vous permet de préparer une certification CerT.I.

Le test de validation des connaissances pour obtenir cette certification de Techniques de l’Ingénieur est disponible dans le module CerT.I.

Obtenez CerT.I., la certification
de Techniques de l’Ingénieur !
Acheter le module

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 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
Taille des registres SIMD/vectoriels et système mémoire
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - PATERSON (D.), WATERMAN (A.) -   SIMD instructions considered harmful,  -  ACM Sigarch, Computer Architecture To-day, Sep 18, (2017). https://www.sigarch.org/csimd-instructions-considered-harmful/

  • (2) - KANTER (D.) -   ARM chooses Variable-Length Vectors,  -  Microprocessor Report, January 30, (2017). https://www.linleygroup.com/mpr/article.php?id=11753

  • (3) - RUSSEL (R. M.) -   The Cray-1 computer system,  -  in Communications of the ACM, January 1978, Volume 21, Number 1, pp 63-72, https://people.eecs.berkeley.edu/~kubitron/cs252/handouts/papers/cray1.pdf

  • (4) -   CRAY-1 Computer System,  -  Hardware Reference Manual 2240004, http://ed-thelen.org/comp-hist/CRAY-1-HardRefMan/CRAY-1-HRM.html

  • (5) - INTEL -   Intel® 64 and IA-32 Architectures Software Developer Manuals,  -  Volume 2, https://software.intel.com/en-us/articles/intel-sdm

  • ...

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

(239 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

Sommaire

QUIZ ET TEST DE VALIDATION PRÉSENTS DANS CET ARTICLE

1/ Quiz d'entraînement

Entraînez vous autant que vous le voulez avec les quiz d'entraînement.

2/ Test de validation

Lorsque vous êtes prêt, vous passez le test de validation. Vous avez deux passages possibles dans un laps de temps de 30 jours.

Entre les deux essais, vous pouvez consulter l’article et réutiliser les quiz d'entraînement pour progresser. L’attestation vous est délivrée pour un score minimum de 70 %.


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

(239 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