Article de reference

Extensions vectorielles avancées

Les extensions vectorielles avancées ( AVX , également connues sous le nom de nouvelles instructions Gesher , puis de nouvelles instructions Sandy Bridge ) sont des extensions S...

, puis de nouvelles instructions Sandy Bridge ) sont des extensions SIMD de l' architecture du jeu d'instructions x86 pour les microprocesseurs Intel et AMD . Proposées par Intel en mars 2008, elles ont d'abord été prises en charge par Intel avec la microarchitecture Sandy Bridge commercialisée au premier trimestre 2011, puis par AMD avec la microarchitecture Bulldozer commercialisée au quatrième trimestre 2011. Les AVX offrent de nouvelles fonctionnalités, de nouvelles instructions et un nouveau schéma de codage.

AVX2 (également connu sous le nom de Haswell New Instructions ) étend la plupart des commandes entières à 256 bits et introduit de nouvelles instructions. Ces instructions ont été prises en charge pour la première fois par Intel avec la microarchitecture Haswell , commercialisée en 2013.

AVX-512 étend la prise en charge d'AVX à 512 bits en utilisant un nouvel encodage de préfixe EVEX proposé par Intel en juillet 2013 et pris en charge pour la première fois par Intel avec le coprocesseur Knights Landing , livré en 2016. Dans les processeurs conventionnels, AVX-512 a été introduit avec les processeurs serveur Skylake et HEDT en 2017.

SIMD ). Chaque registre YMM peut contenir et effectuer des opérations simultanées (calculs) sur :

  • huit nombres à virgule flottante simple précision de 32 bits ou
  • quatre nombres à virgule flottante double précision de 64 bits.

La largeur des registres SIMD passe de 128 bits à 256 bits et leur nom est modifié : XMM0–XMM7 devient YMM0–YMM7 (en mode x86-64 , XMM0–XMM15 devient YMM0–YMM15). Les instructions SSE héritées restent utilisables via le préfixe VEX pour opérer sur les 128 bits de poids faible des registres YMM.

Schéma de registres AVX-512 comme extension des registres AVX (YMM0-YMM15) et SSE (XMM0-XMM15)
5112562551281270
ZMM0YMM0XMM0
ZMM1YMM1XMM1
ZMM2YMM2XMM2
ZMM3YMM3XMM3
ZMM4YMM4XMM4
ZMM5YMM5XMM5
ZMM6YMM6XMM6
ZMM7YMM7XMM7
ZMM8YMM8XMM8
ZMM9YMM9XMM9
ZMM10YMM10XMM10
ZMM11YMM11XMM11
ZMM12YMM12XMM12
ZMM13YMM13XMM13
ZMM14YMM14XMM14
ZMM15YMM15XMM15
ZMM16YMM16XMM16
ZMM17YMM17XMM17
ZMM18YMM18XMM18
ZMM19YMM19XMM19
ZMM20YMM20XMM20
ZMM21YMM21XMM21
ZMM22YMM22XMM22
ZMM23YMM23XMM23
ZMM24YMM24XMM24
ZMM25YMM25XMM25
ZMM26YMM26XMM26
ZMM27YMM27XMM27
ZMM28YMM28XMM28
ZMM29YMM29XMM29
ZMM30YMM30XMM30
ZMM31YMM31XMM31

AVX introduit un format d'instruction SIMD à trois opérandes appelé codage VEX , où le registre de destination est distinct des deux opérandes sources. Par exemple, une instruction SSE utilisant la forme classique à deux opérandes BMI . Le codage VEX est également utilisé pour les instructions opérant sur les registres de masque k0 à k7 introduits avec AVX-512 .

L' exigence d'alignement des opérandes mémoire SIMD est assouplie. Contrairement à leurs homologues non codées en VEX, la plupart des instructions vectorielles codées en VEX n'exigent plus que leurs opérandes mémoire soient alignés sur la taille du vecteur. Il convient de noter que l' VMOVDQAinstruction requiert toujours l'alignement de son opérande mémoire.

Le nouveau schéma de codage VEX introduit un nouvel ensemble de préfixes de code qui étend l' espace des codes d'opération , permet aux instructions d'avoir plus de deux opérandes et autorise les registres vectoriels SIMD à avoir une longueur supérieure à 128 bits. Le préfixe VEX peut également être utilisé sur les instructions SSE héritées, leur donnant une forme à trois opérandes et leur permettant d'interagir plus efficacement avec les instructions AVX sans avoir besoin de ` VZEROUPPERand` VZEROALL.

Les instructions AVX prennent en charge les modes SIMD 128 bits et 256 bits. Les versions 128 bits peuvent s'avérer utiles pour améliorer du code ancien sans avoir à étendre la vectorisation et éviter la pénalité liée au passage de SSE à AVX ; elles sont également plus rapides sur certaines anciennes implémentations AVX d'AMD. Ce mode est parfois appelé AVX-128.

Comparé à la série SSE, AVX améliore encore les performances pour la lecture de médias numériques , la navigation Web , le chiffrement asymétrique et autres.

Nouvelles instructions

Ces instructions AVX s'ajoutent à celles qui sont des extensions 256 bits des anciennes instructions SSE 128 bits ; la plupart sont utilisables sur des opérandes 128 bits et 256 bits.

InstructionDescription
VBROADCASTSS, VBROADCASTSD,VBROADCASTF128Copiez un opérande mémoire de 32 bits, 64 bits ou 128 bits vers tous les éléments d'un registre vectoriel XMM ou YMM.
VINSERTF128Remplace la moitié inférieure ou la moitié supérieure d'un registre YMM 256 bits par la valeur d'un opérande source 128 bits. L'autre moitié du registre de destination reste inchangée.
VEXTRACTF128Extrait soit la moitié inférieure, soit la moitié supérieure d'un registre YMM 256 bits et copie la valeur dans un opérande de destination 128 bits.
VMASKMOVPS,VMASKMOVPDCette instruction lit conditionnellement un nombre quelconque d'éléments d'un opérande mémoire vectorielle SIMD et les stocke dans un registre de destination, en laissant les éléments restants non lus et en initialisant à zéro les éléments correspondants dans le registre de destination. Elle peut également écrire conditionnellement un nombre quelconque d'éléments d'un opérande registre vectoriel SIMD dans un opérande mémoire vectorielle, en laissant inchangés les éléments restants de l'opérande mémoire. Sur l'architecture du processeur AMD Jaguar, cette instruction avec un opérande source mémoire prend plus de 300 cycles d'horloge lorsque le masque est nul ; dans ce cas, l'instruction ne devrait rien faire. Il s'agit vraisemblablement d'un défaut de conception.
VPERMILPS,VPERMILPDPermutation intra-voie. Mélange les éléments vectoriels 32 bits ou 64 bits d'un opérande d'entrée. Il s'agit d'instructions intra-voie 256 bits, ce qui signifie qu'elles opèrent sur les 256 bits avec deux mélanges 128 bits distincts ; elles ne peuvent donc pas effectuer de mélange entre les voies 128 bits.
VPERM2F128Mélanger les quatre éléments vectoriels de 128 bits de deux opérandes sources de 256 bits dans un opérande de destination de 256 bits, avec une constante immédiate comme sélecteur.
VTESTPS,VTESTPDTest de bits compactés des bits de signe à virgule flottante simple précision ou double précision compactés, activant ou désactivant l'indicateur ZF basé sur AND et l'indicateur CF basé sur ANDN.
VZEROALLMettez tous les registres YMM à zéro et marquez-les comme inutilisés. Utilisé lors du passage d'une utilisation 128 bits à une utilisation 256 bits.
VZEROUPPERMettre à zéro la moitié supérieure de tous les registres YMM. Utilisé lors du passage d'une utilisation 128 bits à une utilisation 256 bits.

Processeurs avec AVX

Les problèmes de compatibilité entre les futurs processeurs Intel et AMD sont abordés dans la section relative au jeu d'instructions XOP .

  • VIA :
    • Nano QuadCore
    • Eden X4
  • Zhaoxin :
    • Processeurs basés sur WuDaoKou (KX-5000 et KH-20000)

Assistance pour compilateurs et assembleurs

  • Absoft prend en charge l'option Free Pascal prend en charge AVX et AVX2 avec les options -CfAVX et -CfAVX2 à partir de la version 2.7.1.
  • RAD studio (v11.0 Alexandria) prend en charge AVX2 et AVX-512.
  • Les fonctions d'assemblage en ligne de l' assembleur GNU (GAS) prennent en charge ces instructions (accessibles via GCC), de même que les primitives Intel et l'assembleur en ligne Intel (très compatible avec GAS, mais plus général dans sa gestion des références locales au sein du code en ligne). GAS prend en charge AVX à partir de la version 2.19 de binutils.
  • GCC à partir de la version 4.6 (bien qu'il y ait eu une branche 4.3 avec un certain support) et la suite de compilateurs Intel à partir de la version 11.1 prennent en charge AVX.
  • La version 4.5.1 du compilateur Open64 prend en charge AVX avec l'option PathScale prend en charge cette fonctionnalité via l' option Vector Pascal prend en charge AVX via l' option Visual Studio 2010 / 2012 prend en charge AVX via l'option intrinsèque et le commutateur NASM à partir de la version 2.03 et ultérieures. La version 2.04 a apporté de nombreuses corrections de bogues et des mises à jour concernant AVX.
  • D'autres assembleurs tels que MASM version VS2010, FASM et JWASM .

Prise en charge du système d'exploitation

AVX ajoute de nouveaux états de registre via le fichier de registre YMM de 256 bits ; un support explicite du système d'exploitation est donc nécessaire pour sauvegarder et restaurer correctement les registres étendus d'AVX lors des changements de contexte . Les versions de systèmes d'exploitation suivantes prennent en charge AVX :

  • DragonFly BSD : prise en charge ajoutée début 2013.
  • FreeBSD : prise en charge ajoutée dans un correctif soumis le 21 janvier 2012, qui a été inclus dans la version stable 9.1.
  • Linux : pris en charge depuis la version du noyau 2.6.30, publiée le 9 juin 2009.
  • macOS : prise en charge ajoutée dans la mise à jour 10.6.8 ( Snow Leopard ) publiée le 23 juin 2011. En fait, macOS Ventura ne prend pas en charge les processeurs x86 sans le jeu d’instructions AVX2.
  • OpenBSD : prise en charge ajoutée le 21 mars 2015.
  • Solaris : pris en charge par Solaris 10 Update 10 et Solaris 11.
  • Windows : pris en charge depuis Windows 7 SP1 et Windows Server 2008 R2 SP1.
    • Windows Server 2008 R2 SP1 avec Hyper-V nécessite un correctif ( KB2568088 ) pour prendre en charge les processeurs AMD AVX (séries Opteron 6200 et 4200).
    • Windows XP et Windows Server 2003 ne prennent pas en charge AVX, ni dans les pilotes du noyau, ni dans les applications utilisateur.
    • La prise en charge d' AVX-512 a été ajoutée dans Windows 10 et Windows Server 2016.

la microarchitecture Haswell d'Intel . AVX2 apporte les ajouts suivants :

  • Extension de la plupart des instructions SSE et AVX à 256 bits
  • Rassemblez les éléments nécessaires pour permettre leur chargement à partir d'emplacements mémoire non contigus.
  • granularité DWORD et QWORD permutations any-to-any
  • Décalages vectoriels.

L'extension FMA3 ( multiplication-accumulation fusionnée à trois opérandes ) est parfois considérée comme faisant partie d'AVX2, car elle a été introduite par Intel dans la même microarchitecture de processeur. Il s'agit d'une extension distincte utilisant son propre indicateur CPUID , décrite sur sa page dédiée et non ci-dessous.

Nouvelles instructions

InstructionDescription
VBROADCASTSS,VBROADCASTSDCopie un opérande de registre 32 bits ou 64 bits vers tous les éléments d'un registre vectoriel XMM ou YMM. Il s'agit de versions registre des mêmes instructions AVX-1. Il n'existe pas de version 128 bits, mais le même résultat peut être obtenu simplement avec VINSERTF128.
VPBROADCASTB, VPBROADCASTW, VPBROADCASTD,VPBROADCASTQCopiez un registre entier ou un opérande mémoire de 8, 16, 32 ou 64 bits vers tous les éléments d'un registre vectoriel XMM ou YMM.
VBROADCASTI128Copiez un opérande mémoire de 128 bits dans tous les éléments d'un registre vectoriel YMM.
VINSERTI128Remplace la moitié inférieure ou la moitié supérieure d'un registre YMM 256 bits par la valeur d'un opérande source 128 bits. L'autre moitié du registre de destination reste inchangée.
VEXTRACTI128Extrait soit la moitié inférieure, soit la moitié supérieure d'un registre YMM 256 bits et copie la valeur dans un opérande de destination 128 bits.
VGATHERDPD, VGATHERQPD, VGATHERDPS,VGATHERQPSCollecte des valeurs à virgule flottante simple ou double précision en utilisant des indices et une échelle de 32 ou 64 bits.
VPGATHERDD, VPGATHERDQ, VPGATHERQD,VPGATHERQQCollecte des valeurs entières de 32 ou 64 bits en utilisant des indices et une échelle de 32 ou 64 bits.
VPMASKMOVD,VPMASKMOVQCette fonction lit conditionnellement un nombre quelconque d'éléments d'un vecteur mémoire SIMD et les stocke dans un registre de destination, en laissant les éléments restants non lus et en initialisant à zéro les éléments correspondants dans le registre de destination. Elle peut également écrire conditionnellement un nombre quelconque d'éléments d'un registre vectoriel SIMD dans un vecteur mémoire, en laissant inchangés les éléments restants de ce dernier.
VPERMPS,VPERMDMélanger les huit éléments vectoriels de 32 bits d'un opérande source de 256 bits dans un opérande de destination de 256 bits, avec un opérande de registre ou de mémoire comme sélecteur.
VPERMPD,VPERMQMélanger les quatre éléments vectoriels 64 bits d'un opérande source 256 bits dans un opérande de destination 256 bits, avec un opérande de registre ou de mémoire comme sélecteur.
VPERM2I128Mélanger (deux des) quatre éléments vectoriels de 128 bits de deux opérandes sources de 256 bits dans un opérande de destination de 256 bits, avec une constante immédiate comme sélecteur.
VPBLENDDVersion immédiate à double mot des instructions PBLEND de SSE4 .
VPSLLVD,VPSLLVQDécalage logique à gauche. Permet des décalages variables où chaque élément est décalé en fonction de l'entrée compressée.
VPSRLVD,VPSRLVQDécalage logique vers la droite. Permet des décalages variables où chaque élément est décalé en fonction de l'entrée compressée.
VPSRAVDDécalage arithmétique vers la droite. Permet des décalages variables où chaque élément est décalé en fonction de l'entrée compressée.

Processeurs avec AVX2

AVX-512

Intel en juillet 2013.

Les instructions AVX-512 sont encodées avec le nouveau préfixe EVEX . Elles prennent en charge 4 opérandes, 8 nouveaux registres de masque d'opération 64 bits , le mode mémoire scalaire avec diffusion automatique, le contrôle explicite de l'arrondi et le mode d'adressage mémoire par déplacement compressé . La largeur du fichier de registres passe à 512 bits et le nombre total de registres à 32 (registres ZMM0 à ZMM31) en mode x86-64.

AVX-512 comprend plusieurs sous-ensembles d'instructions, dont certains ne sont pas compatibles avec tous les processeurs. L'ensemble d'instructions comprend les éléments suivants :

  • AVX-512 Foundation (F) ajoute plusieurs nouvelles instructions et étend la plupart des instructions SSE-SSE4.1 et AVX/AVX2 à virgule flottante 32 et 64 bits avec le schéma de codage EVEX pour prendre en charge les registres 512 bits, les masques d'opération, la diffusion des paramètres, ainsi que l'arrondi intégré et le contrôle des exceptions.
  • Instructions de détection de conflits AVX-512 (CD) détection de conflits efficace pour permettre la vectorisation de plus de boucles, prise en charge par Knights Landing Fused Multiply Addition ) multiplication-addition fusionnée pour les entiers 512 bits. du corps de Galois .
  • Instructions AVX-512 Vector AES (VAES) instructions vectorielles pour le codage AES .
  • Instructions de manipulation d'octets vectoriels AVX-512 2 (VBMI2) chargement, stockage et concaténation d'octets/mots avec décalage. de manipulation de bits octet/mot étendant VPOPCNTDQ.
  • Instructions à virgule flottante AVX-512 Bfloat16 (BF16) instructions vectorielles pour l'accélération de l'IA.demi-précision AVX-512 (FP16) instructions vectorielles pour opérer sur des nombres à virgule flottante et complexes avec une précision réduite.Cette fonction n'est plus utilisée par Intel , mais elle est toujours prise en charge par AMD.
  • Xeon Phi ER, PF, 4FMAPS, 4VNNIW.

Tableau de compatibilité des processeurs AVX-512

Intel Knights Landing (2016)Moulin des Chevaliers Intel (2017)Skylake-SP , Skylake-X (2017)Cannon Lake (2018)Cascade Lake-SP (2019)Cooper Lake (2020)Ice Lake (2019)Tiger Lake (2020)Rocket Lake (2021)Alder Lake (2021)Note partielle 1Note partielle 1Zen 4 (2022)Sapphire Rapids (2023)Zen 5 (2024)Zen 6 (à déterminer)Note 1 : Intel ne prend pas officiellement en charge la famille d’instructions AVX-512 sur lesAlder Lake. Début 2022, Intel a commencé à désactiver (par fusion) AVX-512 dans la puce des microprocesseurs Alder Lake afin d’empêcher les clients de l’activer. Sur les anciens processeurs Alder Lake, avec certaines combinaisons de BIOS et de microcode, il était possible d’exécuter des instructions AVX-512 en désactivant tous les cœurs d’efficacité qui ne contiennent pas le circuit intégré dédié à AVX-512.

Compilateurs prenant en charge AVX-512

  • Clang 3.9 et versions plus récentes
  • GCC 4.9 et versions ultérieures
  • ICC 15.0.1 et versions ultérieures
  • Compilateur C++ Microsoft Visual Studio 2017

Assembleurs prenant en charge AVX-512

VEX de l' extension de jeu d'instructions AVX512-VNNI . De même, AVX-IFMA est une variante codée VEX d' AVX512-IFMA . Ces extensions offrent les mêmes opérations que leurs homologues AVX-512, mais sont limitées aux vecteurs 256 bits et ne prennent pas en charge les fonctionnalités supplémentaires du codage EVEX , telles que la diffusion, les registres de masque d'opération ou l'accès à plus de 16 registres vectoriels. Ces extensions permettent la prise en charge des opérations VNNI et IFMA même lorsque AVX-512 n'est pas implémenté dans le processeur.

Processeurs avec AVX-VNNI

Processeurs avec AVX-IFMA

AVX-NE-CONVERT

AVX-NE-CONVERT introduit un ensemble d'instructions permettant la conversion entre les nombres à virgule flottante Bfloat16 (BF16), demi-précision (FP16) et simple précision (FP32). Ces nouvelles instructions sont codées en VEX et sont donc limitées aux registres vectoriels AVX2 ; elles ne prennent pas en charge les masques d'opération d'AVX-512. La diffusion n'est prise en charge que par le biais de deux instructions spéciales pour le chargement de nombres depuis la mémoire ; elle n'est pas intégrée au codage des instructions.

Nouvelles instructions

InstructionDescription
VBCSTNEBF162PSCharge un élément BF16 depuis la mémoire, le convertit en FP32 et le diffuse dans un registre vectoriel.
VBCSTNESH2PSCharge un élément FP16 depuis la mémoire, le convertit en FP32 et le diffuse dans un registre vectoriel.
VCVTNEEBF162PS,VCVTNEOBF162PSCharge les éléments BF16 compressés à partir de la mémoire, convertit les éléments pairs (pour VCVTNEEBF162PS) ou impairs (pour VCVTNEOBF162PS) en FP32 et écrit le résultat dans le registre vectoriel de destination.
VCVTNEEPH2PS,VCVTNEOPH2PSCharge les éléments FP16 compressés à partir de la mémoire, convertit les éléments pairs (pour VCVTNEEPH2PS) ou impairs (pour VCVTNEOPH2PS) en FP32 et écrit le résultat dans le registre vectoriel de destination.
VCVTNEPS2BF16Charge des éléments FP32 compactés depuis un registre vectoriel ou la mémoire, les convertit au format BF16 et écrit le résultat dans le registre vectoriel de destination. Les bits de poids fort de ce registre sont mis à zéro.

Processeurs avec AVX-NE-CONVERT

AVX-VNNI en prenant en charge un plus grand nombre de combinaisons de types de données d'entrée VPDP*. Alors que VPDPBUSD(S)les instructions AVX-VNNI prennent un vecteur d'octets non signés comme premier opérande et un vecteur d'octets signés comme second opérande, AVX-VNNI-INT8 ajoute des variantes de ces instructions qui acceptent des octets signés et non signés en entrée, quelle que soit leur position. De même, alors que les instructions VPDPWSSD(S)AVX -VNNI prennent deux vecteurs de mots de 16 bits signés en entrée, AVX-VNNI-INT16 ajoute la prise en charge des mots de 16 bits signés et non signés en entrée, quelle que soit leur position.

Pour les instructions acceptant des entrées signées et non signées, il existe des instructions distinctes pour les deux ordres possibles d'entrées (signé/non signé et non signé/signé), car l'encodage VEX ne permet que le second opérande d'entrée comme étant un opérande mémoire. Cela permet à l'instruction de charger depuis la mémoire n'importe quel type de données pris en charge.

Nouvelles instructions dans AVX-VNNI-INT8

InstructionDescription
VPDPBSSD,VPDPBSSDSMultiplier les groupes de 4 paires d'octets signés de la seconde entrée avec les octets signés correspondants de la première entrée, additionner ces produits et les ajouter au résultat de type double mot en sortie. VPDPBSSDSEffectuer la saturation signée du résultat.
VPDPBSUD,VPDPBSUDSMultiplier les groupes de 4 paires d'octets non signés de la seconde entrée par les octets signés correspondants de la première entrée, additionner ces produits et les ajouter au résultat de type double mot en sortie. VPDPBSUDSEffectuer la saturation signée du résultat.
VPDPBUUD,VPDPBUUDSMultipliez les groupes de 4 paires d'octets non signés de la deuxième entrée par les octets non signés correspondants de la première entrée, additionnez ces produits et ajoutez-les au résultat de type double mot en sortie. VPDPBUUDSEffectuez la saturation signée du résultat.

Nouvelles instructions dans AVX-VNNI-INT16

InstructionDescription
VPDPWSUD,VPDPWSUDSMultiplier les groupes de 2 paires de mots non signés de la deuxième entrée par les mots signés correspondants de la première entrée, additionner ces produits et les ajouter au résultat de double mot dans la sortie. VPDPWSUDSEffectuer la saturation signée du résultat.
VPDPWUSD,VPDPWUSDSMultiplier les groupes de 2 paires de mots signés de la deuxième entrée avec les mots non signés correspondants de la première entrée, additionner ces produits et les ajouter au résultat de double mot dans la sortie. VPDPWUSDSEffectuer la saturation signée du résultat.
VPDPWUUD,VPDPWUUDSMultiplier les groupes de 2 paires de mots non signés de la deuxième entrée avec les mots non signés correspondants de la première entrée, additionner ces produits et les ajouter au résultat de double mot dans la sortie. VPDPWUSDSEffectuer la saturation signée du résultat.

Processeurs avec AVX-VNNI-INT8

Processeurs avec AVX-VNNI-INT16

  • Intel
    • Processeurs mobiles Lunar Lake (T2 2024) et plus récents.
    • Processeurs de bureau Arrow Lake (4e trimestre 2024) et plus récents.
    • Sapphire Rapids : AVX-512F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, BITALG, VNNI, GFNI, VPOPCNTDQ, VPCLMULQDQ, VAES, BF16, FP16). Pour les processeurs prenant en charge AVX10 et les vecteurs 512 bits, tous les indicateurs de fonctionnalités AVX-512 hérités restent activés afin de permettre aux applications compatibles AVX-512 de continuer à utiliser les instructions AVX-512.

      AVX10.1 a été lancé pour la première fois dans Intel Granite Rapids (T3 2024) et AVX10.2 sera disponible dans Nova Lake .

Applications

Logiciel

  • Cryptographie
    • Les kits d'outils BSAFE C utilisent AVX et AVX2 lorsque cela est approprié pour accélérer divers algorithmes cryptographiques.
    • OpenSSL utilise des fonctions cryptographiques optimisées AVX et AVX2 depuis la version 1.0.2. La prise en charge d'AVX-512 a été ajoutée dans la version 3.0.0. Certaines de ces optimisations sont également présentes dans divers clones et forks, comme LibreSSL.
  • Sciences, ingénierie et autres
    • Esri ArcGIS Data Store utilise AVX2 pour le stockage des graphes.
    • Prime95 /MPrime, le logiciel utilisé pour GIMPS , a commencé à utiliser les instructions AVX depuis la version 27.1, AVX2 depuis la version 28.6 et AVX-512 depuis la version 29.1.
    • Einstein@Home utilise AVX dans certaines de ses applications distribuées qui recherchent des ondes gravitationnelles .
    • TensorFlow depuis la version 1.6 et les versions supérieures nécessitent un processeur prenant en charge au moins AVX.
    • EmEditor 19.0 et versions ultérieures utilisent AVX2 pour accélérer le traitement.
    • Microsoft Teams utilise les instructions AVX2 pour créer un arrière-plan flou ou personnalisé derrière les participants à la conversation vidéo, et pour la suppression du bruit de fond.
    • bibliothèque d'analyse JSON , utilise AVX2 et AVX-512 pour obtenir une vitesse de décodage améliorée.
    • x86-simd-sort , une bibliothèque contenant des algorithmes de tri pour les types de données numériques 16, 32 et 64 bits, utilise AVX2 et AVX-512. Cette bibliothèque est utilisée dans NumPy et OpenJDK pour accélérer les algorithmes de tri.
    • Le moteur OCR Tesseract utilise AVX, AVX2 et AVX-512 pour accélérer la reconnaissance des caractères.

sous-cadencement

Les instructions AVX étant plus longues, elles consomment davantage d'énergie et génèrent plus de chaleur. L'exécution d'instructions AVX gourmandes en ressources à des fréquences d'horloge élevées peut affecter la stabilité du processeur en raison de chutes de tension excessives lors des variations de charge. Certains processeurs Intel intègrent une fonction de réduction de la fréquence Turbo Boost lors de l'exécution de telles instructions. Cette réduction intervient même si le processeur n'a pas atteint ses limites de consommation thermique et énergétique.

Sur Skylake et ses dérivés, la limitation de vitesse est divisée en trois niveaux :

  • L0 (100%) : La limite normale de suralimentation du turbo.
  • L1 (~85 %) : Limite du « boost AVX ». Déclenchement logiciel par les instructions 256 bits « lourdes » (unité de calcul en virgule flottante : arithmétique et multiplication d’entiers). Déclenchement matériel par les instructions 512 bits « légères » (toutes les autres).
  • L2 (~60 %) : Limite du « boost AVX-512 ». Déclenchée en douceur par les instructions gourmandes en ressources 512 bits.Ice Lake , seuls deux niveaux persistent :

    • L0 (100%) : La limite normale de suralimentation du turbo.
    • L1 (~97%) : Déclenché par n'importe quelle instruction 512 bits, mais uniquement lorsque le boost monocœur est actif ; non déclenché lorsque plusieurs cœurs sont chargés.

    Les processeurs Rocket Lake ne subissent pas de réduction de fréquence lors de l'exécution d'instructions vectorielles, quelle que soit la taille du vecteur. Toutefois, une réduction de la fréquence peut toujours se produire pour d'autres raisons, comme l'atteinte des limites thermiques et de consommation.

    La réduction de la fréquence d'horloge signifie que l'utilisation d'AVX dans une charge de travail mixte avec un processeur Intel peut entraîner une pénalité de fréquence. Éviter l'utilisation d'instructions larges et lourdes permet de minimiser l'impact dans ces cas. AVX-512VL permet d'utiliser des opérandes de 256 bits ou de 128 bits dans les instructions AVX-512, ce qui en fait un choix judicieux par défaut pour les charges mixtes.

    Sur les variantes de processeurs prises en charge et déverrouillées qui sous-cadencent, les décalages de réduction du rapport d'horloge (généralement appelés décalages AVX et AVX-512) sont réglables et peuvent être entièrement désactivés (réglés sur 0x) via l'utilitaire d'overclocking/réglage d'Intel ou dans le BIOS si celui-ci est pris en charge.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index