Présentation de ACE

Les conceptions de CPU doivent évoluer pour suivre les changements de charge de travail. Parfois, cette évolution implique l'extension du jeu d'instructions pour représenter efficacement certains types de travail. L'extension AMX d'Intel est un exemple de cela. AMX accélère la multiplication de matrices pour les charges de travail d'apprentissage automatique en fournissant un ensemble de registres de tuile 2D et des registres de configuration.

Fonctionnement de ACE

ACE est un accélérateur AMX qui introduit un second type d'accélérateur. Alors que TMUL, l'autre accélérateur AMX, offre une configuration hautement configurable, ACE simplifie les choses en considérant toujours les registres de tuile comme des matrices 64 bytes par 16 lignes. Les nombres complexes ont disparu, mais FP8 est désormais pris en charge. ACE fournit des instructions de produit externe au lieu des instructions de produit interne fournies par AMX.

Comparaison avec Arm SME

La comparaison la plus évidente est avec l'extension de matrice scalable (SME) d'Arm et son extension SME2. Les deux extensions d'ISA cherchent à accélérer la multiplication de matrices dans le cadre d'une ISA de CPU, offrant une alternative à faible latence à l'utilisation d'accélérateurs moins intégrés comme les GPU. Cependant, les deux extensions d'ISA diffèrent sur plusieurs points. ACE est construit sur AMX et continue d'utiliser les 8 Ko de registres de tuile d'AMX pour stocker les valeurs de matrice.

Implications et limites

ACE et SME accélèrent les produits externes, contrairement à AVX512-VNNI et AMX qui accélèrent les produits internes. Les produits externes sont une primitive naturelle à implémenter dans un processeur, car de nombreuses opérations en algèbre linéaire peuvent être vues comme une combinaison linéaire de produits externes. ACE et SME prennent en charge la conversion de type de données et la déquantification, ce qui permet de traiter des poids de modèle quantifiés à des largeurs de bits très petites.

ACE utilise les instructions VUNPACKB et VPERMB pour effectuer la conversion de type de données, tandis que SME2 utilise les instructions LUTI2 et LUTI4 avec le registre ZT0 pour accélérer les conversions de données.

En résumé, ACE est une extension d'AMX qui simplifie la configuration des registres de tuile et prend en charge les produits externes, offrant une alternative à faible latence aux accélérateurs moins intégrés pour les charges de travail d'apprentissage automatique.