Intel a annoncé deux nouveaux jeux d’instructions x86-64 conçus pour renforcer et offrir plus de performances dans les charges de travail basées sur AVX avec leur architecture hybride de cœurs de performance (P) et d’efficacité (E). La première des annonces d’Intel est leur dernière extension de performance avancée Intel, ou Intel APX comme on l’appelle. Il est conçu pour apporter des améliorations générationnelles axées sur le jeu d’instructions pour charger, stocker et comparer les instructions sans affecter la consommation d’énergie ou la zone globale de la puce en silicium des cœurs du processeur.
Intel a également publié un article technique détaillant son nouvel AVX10, permettant aux cœurs de performance (P) et d’efficacité (E) d’Intel de prendre en charge le jeu d’instructions convergé AVX10/256 bits à l’avenir. Cela signifie que la future génération de puces hybrides pour ordinateurs de bureau, serveurs et stations de travail d’Intel pourra prendre en charge plusieurs vecteurs AVX, y compris des tailles de vecteurs de 128, 256 et 512 bits sur l’ensemble des cœurs de manière holistique.
Intel Advanced Performance Extensions (APX) : aller au-delà d’AVX et d’AMX
Intel a publié des détails sur ses nouvelles extensions de performances avancées, ou APX en abrégé. L’idée derrière APX est de permettre l’accès à plus de registres et d’améliorer les performances globales à usage général. Ils sont conçus pour offrir une meilleure efficacité lors de l’utilisation de jeux d’instructions basés sur x86, permettant l’accès à davantage de registres. De nouvelles fonctionnalités telles que le doublement des registres à usage général de 16 à 32 permettent aux compilateurs de conserver plus de valeurs dans les registres, Intel réclamant 10 % de charges en moins et 20 % de magasins en moins lorsque le code est compilé pour APX par rapport au même code pour x86-64 utilisant Intel 64 ; il s’agit du mode de compatibilité 64 bits d’Intel pour les jeux d’instructions x86.
L’idée derrière le doublement du nombre de GPR de 16 avec x86-64 aux 32 GPR disponibles avec l’Intel APX est que plus de données peuvent être conservées à proximité, évitant ainsi d’avoir à lire et à écrire plus loin dans les différents niveaux de cache et de mémoire. Avoir plus de GPR signifie également qu’il devrait théoriquement nécessiter moins d’accès aux zones plus lentes, telles que la DRAM, qui prend plus de temps et utilise plus d’énergie.
Malgré l’abandon effectif de son MPX (Memory Protection Extensions), l’Intel APX peut effectivement utiliser la zone existante réservée au MPX pour ce qu’il appelle XSAVE. Pour en savoir plus sur XSAVE, les registres à usage général (GPR) APX d’Intel sont compatibles XSAVE, ce qui signifie qu’ils peuvent être automatiquement sauvegardés et restaurés par les séquences XSAVE et XRSTOR lors des changements de contexte. Intel déclare également par défaut que ceux-ci ne changent pas la taille ou la disposition, ce qui signifie qu’ils peuvent occuper le même espace laissé pour les registres Intel MPX désormais disparus.
Une autre caractéristique essentielle de l’APX d’Intel est sa prise en charge des formats d’instructions à trois opérandes, un sous-ensemble du jeu d’instructions x86 spécifiant les données sur lesquelles opérer. APX introduit de nouvelles instructions optimisées pour les charges prévues, y compris une nouvelle instruction de saut absolu 64 bits. Par rapport aux exemples plus anciens qui utilisaient EVEX, une extension de 4 octets à VEX, APX transforme les opérandes de registre unique en trois, réduisant efficacement le besoin d’instructions de déplacement de registre supplémentaires. En conséquence, le code compilé APX atteint une augmentation d’efficacité de 10 %, nécessitant 10 % d’instructions en moins que les ISA précédents.
Intel AVX10 : pousser AVX-512 à travers des vecteurs 256 bits et 512 bits
L’Advanced Vector Extension 10 (AVX10) d’Intel est l’une des mises à jour les plus importantes des jeux d’instructions d’Intel axés sur le consommateur depuis l’introduction de l’AVX-512. En surface, il semble apporter la prise en charge AVX-512 sur tous les cœurs présentés dans leurs conceptions de processeur hétérogènes.
Le changement le plus important et le plus fondamental introduit par AVX10 par rapport au jeu d’instructions AVX-512 précédent est l’incorporation de jeux d’instructions AVX-512 précédemment désactivés dans de futurs exemples de conceptions de cœur hétérogènes, illustrés par des processeurs comme le Core i9-12900K et le Core i9-13900K actuel. Cela permet la prise en charge de l’AVX-512 dans ces processeurs. Actuellement, AVX-512 est exclusivement pris en charge sur les cœurs de performance (P) Intel Xeon.
Source de l’image : Intel
En examinant le concept de base d’AVX10, cela signifie que les puces de bureau grand public auront désormais une prise en charge complète d’AVX-512. Bien que les cœurs de performance (P) aient la capacité théorique de prendre en charge des vecteurs larges de 512 bits si Intel le souhaite (Intel a actuellement confirmé que la prise en charge est jusqu’à 256 bits), les cœurs d’efficacité (E) sont limités aux vecteurs de 256 bits. Néanmoins, dans son ensemble, l’ensemble de la puce sera capable de prendre en charge des ensembles d’instructions AVX-512 complets sur tous les cœurs, qu’il s’agisse de performances à part entière ou de cœurs à faible puissance.
Concernant les performances, dans le document technique AVX10, Intel déclare ce qui suit :
- Les applications compilées Intel AVX2, recompilées en Intel AVX10, devraient réaliser des gains de performances sans le besoin d’un réglage logiciel supplémentaire.
- Les applications Intel AVX2 sensibles à la pression du registre vectoriel gagneront le plus de performances grâce au 16 registres vectoriels supplémentaires et nouvelles instructions.
- Les applications vectorisables hautement threadées sont susceptibles d’atteindre un débit global plus élevé lorsqu’elles s’exécutent sur Processeurs Intel Xeon basés sur E-core ou sur des produits Intel® avec une architecture hybride performante.
Intel affirme en outre que leurs puces, utilisant déjà des vecteurs 256 bits à titre d’exemple, maintiendront des niveaux de performances similaires lorsqu’elles seront compilées sur AVX10 à la longueur de vecteur ISO 256 bits. Cependant, le véritable potentiel d’AVX10 se révèle lorsque l’on tire parti de la longueur de vecteur plus importante de 512 bits, promettant les meilleures performances du jeu d’instructions AVX10 atteignables. Cela s’aligne sur l’introduction de nouvelles bibliothèques AVX10 et la prise en charge améliorée des outils, permettant aux développeurs d’applications de compiler de nouveaux codes axés sur l’IA et la science pour des avantages optimaux. De plus, cela signifie que les bibliothèques préexistantes peuvent être recompilées avec la compatibilité AVX10/256 et, si possible, optimisées pour exploiter les unités vectorielles plus grandes pour un meilleur débit de performance.
Dans la première phase d’AVX10 (AVX10.1) d’Intel, il sera introduit pour une activation logicielle précoce et prendra en charge le sous-ensemble de jeux d’instructions AVX-512 d’Intel, les cœurs de performance (P) Granite Rapids (6e génération Xeon) étant les premiers cœurs à être compatibles avec AVX10. Il convient de noter qu’AVX10.1 n’activera pas le routage intégré 256 bits. En tant que tel, AVX10.1 servira d’introduction à AVX10 pour permettre la compatibilité ascendante et la mise en œuvre du nouveau schéma d’énumération de version.
Source de l’image : Intel
Les Xeons de 6e génération d’Intel, nommés Granite Rapids, activeront AVX10.1, et les futures puces apporteront ensuite une prise en charge complète d’AVX10.2, AVX-512 étant également pris en charge pour permettre la compatibilité avec les jeux d’instructions hérités et les applications compilées avec eux. Il convient de noter que malgré Intel AVX10/512 incluant toutes les instructions AVX-512 d’Intel, les applications compilées sur Intel AVX-512 avec des longueurs vectorielles limitées à 256 bits ne sont pas garanties de fonctionner avec un processeur AVX10/256 en raison des différences dans la largeur de registre de masque prise en charge.
Bien que la prise en charge initiale du jeu d’instructions AVX10 soit davantage une phase de transition dans AVX10.1, c’est lorsque AVX10.2 sera finalement déployé que AVX10 commencera à montrer des causes et des effets en termes de performances et d’efficacité, du moins avec des jeux d’instructions compatibles associés à AVX10. AVX10, par défaut, permettra aux développeurs qui recompilent leur code préexistant de travailler avec AVX10, car les nouveaux processeurs avec AVX10 ne pourront pas exécuter les binaires AVX-512 comme ils le faisaient auparavant. Intel regarde enfin vers l’avenir.
L’introduction d’AVX10 remplace complètement le sur-ensemble AVX-512. Une fois que l’AVX10 sera largement disponible via les futures versions de produits d’Intel, il n’est techniquement plus nécessaire d’utiliser l’AVX-512 à l’avenir. Un défi que cela présente est que les développeurs de logiciels qui ont spécifiquement compilé des bibliothèques spécifiquement pour les vecteurs larges de 512 bits devront recompiler le code comme mentionné précédemment pour fonctionner correctement avec les vecteurs larges de 256 bits qu’AVX10 prend en charge de manière holistique sur les cœurs.
Alors que l’AVX-512 ne va nulle part en tant que jeu d’instructions, il convient de souligner qu’AVX10 est rétrocompatible, ce qui est un aspect essentiel de la prise en charge des jeux d’instructions avec différentes largeurs de vecteurs telles que 128, 256 et 512 bits, le cas échéant. Les développeurs peuvent recompiler le code et les bibliothèques pour une transition et une convergence plus larges vers le jeu d’instructions unifié AVX10 à l’avenir.
Intel s’engage à prendre en charge une taille vectorielle maximale d’au moins 256 bits sur tous les processeurs Intel à l’avenir. Néanmoins, il reste à voir quels SKU (le cas échéant) et l’architecture sous-jacente prendront en charge les tailles vectorielles complètes de 512 bits à l’avenir, car c’est quelque chose qu’Intel n’a officiellement confirmé à aucun moment.
La viande et les légumes du nouveau jeu d’instructions AVX10 d’Intel entreront en jeu lorsque AVX10.2 sera mis en place, apportant officiellement la prise en charge des vecteurs d’instructions 256 bits sur tous les cœurs, qu’il s’agisse de cœurs de performance et/ou d’efficacité. Cela marque également l’inclusion de divisions entières 128 bits, 256 bits et 512 bits sur les cœurs de performance et d’efficacité, et en tant que tel, prendra en charge les extensions vectorielles complètes basées sur la spécification de chaque cœur.