Les niveaux de l’architecture x86 ont été introduits il y a un peu plus de quatre ans par Red Hat, en partenariat avec Intel, AMD et SUSE. L’intention était bonne : apposer un niveau, ou version, à un processeur en fonction des jeux d’instructions optionnels qu’il supporte.
Ce classement est chronologique :
- x86-64-v1 : CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2
- x86-64-v2 : CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3
- x86-64-v3 : AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE
- x86-64-v4 : AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL
En d’autres termes, plus un processeur est récent, plus il supporte d’instructions, plus son niveau est élevé. C’est ce classement que Linus Torvalds critique, sans prendre de gants, devant l’idée de l’introduire dans une future version de KConfig, un utilitaire présent dans le noyau et servant à le configurer.
Clik here to view.

Ces appellations (v2, v3, v4…) semblent être, selon lui, « un artfefact de la glibc », la bibliothèque standard GNU C. Il juge cette classification « stupide » : elle « doit disparaitre ». « Je n’ai aucune idée de qui est à l’origine des « niveaux de microarchitecture », mais pour autant que je sache, ce n’est pas du tout officiel, et c’est un modèle complètement erroné », ajoute-t-il.
Où réside le problème ? « Il existe un modèle très réel pour les caractéristiques microarchitecturales, et ce sont les bits CPUID. Essayer de linéariser ces bits est techniquement erroné, car il ne s’agit tout simplement pas d’une sorte de progression linéaire », indique Linus Torvalds.
En clair, même si ces différentes technologies apparaissent dans le temps, un classement chronologique ne peut pas toujours s’appliquer. Les instructions AVX-512, par exemple, ont été ajoutées par Intel dans la 11ᵉ génération de processeurs Core… avant de les supprimer sur la 12ᵉ, puis de les faire revenir dans une évolution d’AVX10.
Que recommande Linus Torvalds ? De rester avec les bits CPUID, qui permettent d’interroger le support d’un jeu d’instructions par un processeur, alors qu’un niveau ne peut renvoyer un résultat garanti.