


Le x86 (également connu sous le nom de 80x86 ou la famille 8086 ) est une famille d' architectures de jeu d' instructions CISC initialement développées par Intel , basées sur le microprocesseur 8086 et sa variante à bus externe 8 bits, le 8088. Le 8086 a été introduit en 1978 en tant qu'extension entièrement 16 bits du microprocesseur 8 bits 8080 d'Intel , avec la segmentation de la mémoire comme solution pour adresser plus de mémoire que ce qui peut être couvert par une simple adresse 16 bits. Le terme « x86 » est né du fait que les noms de plusieurs successeurs du processeur 8086 d'Intel se terminent par « 86 », notamment les 80186 , 80286 , 80386 et 80486 . Familièrement, leurs noms étaient « 186 », « 286 », « 386 » et « 486 ».
Le terme n'est pas synonyme de compatibilité IBM PC , car cela implique une multitude d'autres matériels informatiques . Les systèmes embarqués et les ordinateurs à usage général utilisaient des puces x86 avant le début du marché compatible PC , certains d'entre eux avant les débuts de l' IBM PC (1981).
En juin 2022 , la plupart des ordinateurs de bureau et portables vendus sont basés sur la famille d'architecture x86, tandis que les catégories mobiles telles que les smartphones ou les tablettes sont dominées par ARM . Dans le haut de gamme, x86 continue de dominer les segments des stations de travail et du cloud computing à forte intensité de calcul .
Aperçu
Dans les années 1980 et au début des années 1990, lorsque les processeurs 8088 et 80286 étaient encore couramment utilisés, le terme x86 désignait généralement tout processeur compatible 8086. Aujourd'hui, cependant, x86 implique généralement une compatibilité binaire avec le jeu d'instructions 32 bits du 80386. Cela est dû au fait que ce jeu d'instructions est devenu en quelque sorte le plus petit dénominateur commun pour de nombreux systèmes d'exploitation modernes et probablement aussi au fait que le terme est devenu courant après l'introduction du 80386 en 1985.
Quelques années après l'introduction des 8086 et 8088, Intel a ajouté une certaine complexité à son système de dénomination et à sa terminologie, le « iAPX » du processeur Intel iAPX 432 ambitieux mais malchanceux ayant été essayé sur la famille de puces 8086, plus réussie, appliqué comme une sorte de préfixe au niveau du système. Un système 8086, comprenant des coprocesseurs tels que 8087 et 8089 , et des puces système Intel plus simples, a ainsi été décrit comme un système iAPX 86. Il y avait aussi les termes iRMX (pour les systèmes d'exploitation), iSBC (pour les ordinateurs monocarte) et iSBX (pour les cartes multimodules basées sur l'architecture 8086), tous regroupés sous le nom de Microsystem 80. [ Cependant, ce système de dénomination était assez temporaire, ne durant que quelques années au début des années 1980.
Bien que le 8086 ait été principalement développé pour les systèmes embarqués et les petits ordinateurs multi-utilisateurs ou mono-utilisateur, en grande partie en réponse au succès du Zilog Z80 compatible 8080 , la gamme x86 a rapidement gagné en fonctionnalités et en puissance de traitement. Aujourd'hui, le x86 est omniprésent dans les ordinateurs personnels fixes et portables, et est également utilisé dans les ordinateurs de milieu de gamme , les stations de travail , les serveurs et la plupart des nouveaux clusters de supercalculateurs de la liste TOP500 . Un grand nombre de logiciels , y compris une longue liste de systèmes d'exploitation x86, utilisent du matériel basé sur x86.
Le x86 moderne est relativement peu courant dans les systèmes embarqués , cependant, et les petites applications à faible consommation (utilisant de minuscules batteries) et les marchés des microprocesseurs à bas prix, tels que les appareils électroménagers et les jouets, manquent de présence significative du x86. Les architectures simples basées sur 8 et 16 bits sont courantes ici, ainsi que les architectures RISC plus simples comme RISC-V , bien que les VIA C7 compatibles x86 , VIA Nano , Geode d' AMD , Athlon Neo et Intel Atom soient des exemples de conceptions 32 et 64 bits utilisées dans certains segments relativement à faible consommation et à faible coût.
Plusieurs tentatives ont été faites, notamment par Intel, pour mettre fin à la domination du marché de l'architecture x86 « inélégante » conçue directement à partir des premiers microprocesseurs 8 bits simples. Citons par exemple l' iAPX 432 (un projet initialement nommé Intel 8800 ), l' Intel 960 , l'Intel 860 et l'architecture Intel/Hewlett-Packard Itanium . Cependant, le perfectionnement continu des microarchitectures x86 , des circuits et de la fabrication des semi-conducteurs rendrait difficile le remplacement du x86 dans de nombreux segments. L'extension 64 bits du x86 par AMD (à laquelle Intel a finalement répondu avec une conception compatible) et l'évolutivité des puces x86 sous la forme de processeurs multicœurs modernes, soulignent le fait que le x86 est un exemple de la façon dont le perfectionnement continu des normes industrielles établies peut résister à la concurrence d'architectures entièrement nouvelles
Chronologie
Le tableau ci-dessous répertorie les modèles et séries de processeurs implémentant différentes architectures de la famille x86, par ordre chronologique. Chaque élément de ligne est caractérisé par des conceptions de microarchitecture de processeur considérablement améliorées ou commercialement réussies.
| Ère | Introduction | Modèles de processeurs les plus connus | Espace d'adressage | Caractéristiques notables | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Linéaire | Virtuel | Physique | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| x86-16 | 1er | 1978 | Intel 8086 , Intel 8088 (1979) | 16 bits | N / A | 20 bits | ISA 16 bits , IBM PC (8088), IBM PC/XT (8088) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1982 | Intel 80186 , Intel 80188 NEC V20 / V30 (1983) |
8086-2 ISA, intégré (80186/80188) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2ème | Intel 80286 et clones | 30 bits | 24 bits | mode protégé , IBM PC/XT 286 , IBM PC/AT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IA-32 | 3ème | 1985 | Intel 80386 , AMD Am386 (1991) | 32 bits | 46 bits | 32 bits | ISA 32 bits , pagination, IBM PS/2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 4ème (pipeline, cache) | 1989 | Processeur Intel 80486 Cyrix Cx486S , DLC (1992) AMD Am486 (1993), Am5x86 (1995) |
Pipelining , FPU x87 intégré (486DX), cache intégré | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5ème ( Superscalaire ) |
1993 | Intel Pentium , Pentium MMX (1996) | Superscalaire , bus de données 64 bits , FPU plus rapide, MMX (Pentium MMX), APIC , SMP | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1994 | NexGen Nx586 AMD 5k86 / K5 (1996) |
Microarchitecture discrète ( traduction μ-op ) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1995 | Cyrix Cx5x86 Cyrix 6x86 /MX (1997)/ MII (1998) |
exécution dynamique | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6ème ( PAE , traduction μ-op) |
1995 | Processeur Intel Pentium Pro | 36 bits ( PAE ) | Traduction μ-op, instructions de déplacement conditionnel, exécution dynamique , exécution spéculative , superscalaire x86 à 3 voies, FPU superscalaire, PAE , cache L2 sur puce | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1997 | Intel Pentium II , Pentium III (1999) Celeron (1998), Xeon (1998) |
Cache L2 intégré (Pentium II) ou intégré (Celeron), SSE (Pentium III), emplacement 1 , socket 370 ou emplacement 2 (Xeon) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 1997 | AMD K6 / K6-2 (1998)/ K6-III (1999) | 32 bits | 3DNow!, système de cache à 3 niveaux (K6-III) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Plateforme améliorée | 1999 | AMD Athlon Athlon XP / MP (2001) Duron (2000) Sempron (2004) |
36 bits | MMX+, 3DNow!+, bus à double pompage, emplacement A ou socket A | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2000 | Transméta Crusoé | 32 bits | Processeur de plate-forme x86 alimenté par CMS , cœur VLIW -128, contrôleur de mémoire intégré, logique de pont PCI intégrée | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Pentium 4 | 36 bits | SSE2 , HTT (Northwood), NetBurst, bus à quatre pompages, Trace Cache, Socket 478 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2003 | Processeur Intel Pentium M Processeur Intel Core (2006) Processeur Pentium double cœur (2007) |
Fusion μ-op , bit XD (Dothan) (Intel Core "Yonah") | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Transmeta Efficeon | CMS 6.0.4, VLIW -256, bit NX , HT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IA-64 | Transition vers le 64 bits 1999-2005 |
2001 | Processeur Intel Itanium (2001–2017) | 52 bits | Architecture EPIC 64 bits , ensemble d'instructions VLIW 128 bits, matériel intégré IA-32 H/W permettant les systèmes d'exploitation x86 et les applications x86 (premières générations), logiciel IA-32 EL permettant les applications x86 (Itanium 2), les fichiers de registres Itanium sont remappés sur les registres x86 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| x86-64 | 64 bits étendu depuis 2001 |
x86-64 est l'architecture étendue 64 bits de x86, son mode Legacy préserve l'intégralité de l'architecture x86 inchangée. L'architecture native des processeurs x86-64 : résidant dans le mode 64 bits, manque de mode d'accès dans la segmentation, présente un espace d'adressage linéaire architectural 64 bits ; une architecture IA-32 adaptée résidant dans le mode de compatibilité aux côtés du mode 64 bits est fournie pour prendre en charge la plupart des applications x86 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2003 | Athlon 64 / FX / X2 (2005), Opteron Sempron (2004) / X2 (2008) Turion 64 (2005) / X2 (2006) |
40 bits | AMD64 (sauf certains processeurs Sempron présentés comme des processeurs purement x86), contrôleur mémoire intégré, HyperTransport , double cœur intégré (X2), AMD-V (Athlon 64 Orleans), Socket 754 / 939 / 940 ou AM2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2004 | Pentium 4 (Prescott) Celeron D , Pentium D (2005) |
36 bits | EM64T (activé sur certains modèles de Pentium 4 et Celeron D), SSE3 , 2e génération de pipeline NetBurst, double cœur (sur puce : Pentium D 8xx, sur puce : Pentium D 9xx), Intel VT (Pentium 4 6x2), socket LGA 775 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2006 | Processeur Intel Core 2 Pentium double cœur (2007) Processeur Celeron double cœur (2008) |
Intel 64 (<<== EM64T), SSSE3 (65 nm), exécution dynamique étendue, fusion μ-op, fusion macro-op en mode 16 bits et 32 bits, quad-core sur puce (Core 2 Quad), cache L2 partagé intelligent (Intel Core 2 « Merom ») | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2007 | AMD Phenom / II (2008) Athlon II (2009) Turion II (2009) |
48 bits | Processeur monolithique quad-core (X4)/triple-core (X3), SSE4a , indexation de virtualisation rapide (RVI), HyperTransport 3, AM2+ ou AM3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2008 | Processeur Intel Core 2 (45 nm) | 40 bits | SSE4.1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Atom | processeur de netbook ou d'appareil intelligent à faible consommation, cœur P54C réutilisé | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Processeur Intel Core i7 , Core i5 (2009), Core i3 (2010) |
QuickPath, GMCH sur puce ( Clarkdale ), SSE4.2 , tables de pages étendues (EPT) pour la virtualisation, fusion de macro-opérations en mode 64 bits, (Intel Xeon « Bloomfield » avec microarchitecture Nehalem) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VIA Nano | cryptage matériel ; gestion adaptative de l'alimentation | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2010 | AMD FX | 48 bits | huit cœurs, CMT (multithread en cluster), FMA, OpenCL, AM3+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2011 | AMD APU Séries A et E ( Llano ) | 40 bits | GPGPU intégré, PCI Express 2.0, Socket FM1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AMD APU Séries C, E et Z ( Bobcat ) | 36 bits | APU pour appareil intelligent à faible consommation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Core i3 , Core i5 et Core i7 ( Sandy Bridge / Ivy Bridge ) |
Connexion en anneau interne, cache μ-op décodé, socket LGA 1155 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2012 | AMD APU série A ( Bulldozer, Trinity et versions ultérieures) | 48 bits | AVX , APU basé sur Bulldozer, Socket FM2 ou Socket FM2+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Xeon Phi ( Le coin des chevaliers ) | Coprocesseur de carte complémentaire PCI-E pour système basé sur XEON, puce Manycore, P54C ordonné , VPU très large (SSE 512 bits), instructions LRBni (8 × 64 bits) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2013 | AMD Jaguar (Athlon, Sempron) |
SoC , console de jeu et processeur pour appareils intelligents à faible consommation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Silvermont (Atom, Celeron, Pentium) |
36 bits | SoC , processeur pour appareil intelligent à faible/ultra-faible consommation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Intel Core i3 , Core i5 et Core i7 ( Haswell / Broadwell ) | 39 bits | Instructions AVX2 , FMA3 , TSX , BMI1 et BMI2 , socket LGA 1150 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2015 | Processeur Intel Broadwell-U ( Intel Core i3 , Core i5 , Core i7 , Core M , Pentium , Celeron ) |
SoC, Broadwell-U PCH-LP sur puce (module multipuce) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2015–2020 | Intel Skylake / Kaby Lake / Cannon Lake / Coffee Lake / Rocket Lake (Intel Pentium/Celeron Gold, Core i3 , Core i5 , Core i7 , Core i9 ) |
46 bits | AVX-512 (limité à Cannon Lake-U et aux variantes de poste de travail/serveur de Skylake) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2016 | Intel Xeon Phi ( Chevaliers débarqués ) | 48 bits | Processeur et coprocesseur multicœur pour systèmes Xeon, cœur basé sur Airmont (Atom) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2016 | AMD Bristol Ridge (AMD (Pro) A6/A8/A10/A12) |
FCH intégré sur matrice, SoC, socket AM4 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2017 | Série AMD Ryzen / Série AMD Epyc | Mise en œuvre par AMD de la technologie SMT, de plusieurs matrices sur puce | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2017 | Zhaoxin WuDaoKou (KX-5000, KH-20000) | La première toute nouvelle architecture x86-64 de Zhaoxin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2018–2021 | Intel Sunny Cove ( lac Ice Lake -U et Y), Cypress Cove ( lac Rocket ) | 57 bits | Première implémentation d'AVX-512 par Intel pour le segment grand public. Ajout d'instructions de réseau neuronal vectoriel (VNNI) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2019 | AMD Matisse | 48 bits | Conception de module à puces multiples avec matrice d'E/S séparée de la ou des matrices du processeur, prise en charge de PCIe Gen4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2020 | Intel Willow Cove ( Lac Tiger -Y/U/H) | 57 bits | Architecture d'interconnexion à double anneau, accélérateur neuronal gaussien mis à jour (GNA2), nouvelles instructions d'intersection de vecteurs AVX-512, ajout de la technologie d'application du contrôle de flux (CET) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2021 | Intel Alder Lake | Conception hybride avec cœurs de performance (Golden Cove) et d'efficacité (Gracemont), prise en charge de PCIe Gen5 et DDR5, accélérateur neuronal gaussien mis à jour (GNA3). AVX-512 n'est pas officiellement pris en charge | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2022 | AMD Vermeer (5800X3D) | 48 bits | Les puces X3D disposent d'un cache L3 3D empilé verticalement supplémentaire de 64 Mo (3D V-Cache) pour un cache L3 allant jusqu'à 96 Mo | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2022 | AMD Raphaël | Première implémentation d'AMD de l'AVX-512 pour le segment grand public, l'iGPU est désormais standard sur les processeurs Ryzen avec 2 cœurs de calcul RDNA 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ère | Introduction | Modèles de processeurs les plus connus | Espace d'adressage | Caractéristiques notables HistoireConcepteurs et fabricantsÀ différentes époques, des entreprises telles que IBM , VIA , NEC , AMD , TI , STM , Fujitsu , OKI , Siemens , Cyrix , Intersil , C&T , NexGen , UMC et DM&P ont commencé à concevoir ou à fabriquer des processeurs x86 (CPU) destinés aux ordinateurs personnels et aux systèmes embarqués. Parmi les autres entreprises ayant conçu ou fabriqué des processeurs x86 ou x87 , on trouve ITT Corporation , National Semiconductor , ULSI System Technology et Weitek . Ces implémentations x86 étaient rarement de simples copies mais utilisaient souvent des microarchitectures internes différentes et des solutions différentes aux niveaux électronique et physique. Tout naturellement, les premiers microprocesseurs compatibles étaient 16 bits, tandis que les conceptions 32 bits ont été développées beaucoup plus tard. Pour le marché des ordinateurs personnels , de véritables quantités ont commencé à apparaître vers 1990 avec les processeurs compatibles i386 et i486 , souvent nommés de manière similaire aux puces originales d'Intel. Après le processeur i486 entièrement développé , Intel a introduit en 1993 la marque Pentium (qui, contrairement aux numéros, pouvait être déposée ) pour sa nouvelle série de conceptions x86 superscalaires . Le schéma de nommage x86 étant désormais légalement autorisé, d'autres fournisseurs x86 ont dû choisir des noms différents pour leurs produits compatibles x86, et au départ certains ont choisi de continuer avec des variantes du schéma de numérotation : IBM s'est associé à Cyrix pour produire les 5x86 puis les très efficaces gammes 6x86 (M1) et 6x86 MX ( MII ) de conceptions Cyrix, qui ont été les premiers microprocesseurs x86 à implémenter le renommage des registres pour permettre l'exécution spéculative . AMD a entre-temps conçu et fabriqué le 5k86 ( K5 ), avancé mais retardé, qui, en interne, était étroitement basé sur la conception RISC 29K antérieure d'AMD ; similaire au Nx586 de NexGen , il utilisait une stratégie telle que les étapes de pipeline dédiées décodent les instructions x86 en micro-opérations uniformes et faciles à gérer , une méthode qui est restée la base de la plupart des conceptions x86 à ce jour. Certaines des premières versions de ces microprocesseurs présentaient des problèmes de dissipation thermique. Le 6x86 était également affecté par quelques problèmes mineurs de compatibilité, le Nx586 manquait d' unité à virgule flottante (FPU) et de compatibilité des broches (alors cruciale), tandis que le K5 avait des performances quelque peu décevantes lors de son introduction (finale). L'ignorance des clients concernant les alternatives à la série Pentium a contribué à ce que ces conceptions soient relativement infructueuses, malgré le fait que le K5 avait une très bonne compatibilité avec le Pentium et que le 6x86 était nettement plus rapide que le Pentium sur le code entier. AMD a ensuite réussi à devenir un concurrent sérieux avec la série de processeurs K6 , qui a cédé la place aux très réussis Athlon et Opteron . Il y avait aussi d'autres concurrents, comme Centaur Technology (anciennement IDT ), Rise Technology et Transmeta . Les processeurs C3 et C7 à faible consommation d'énergie de VIA Technologies , conçus par la société Centaur , ont été vendus pendant de nombreuses années après leur sortie en 2005. Le design de Centaur de 2008, le VIA Nano , était leur premier processeur à exécution superscalaire et spéculative . Il a été introduit à peu près au même moment (en 2008) qu'Intel a présenté l' Intel Atom , son premier processeur « dans l'ordre » après le Pentium P5 . De nombreux ajouts et extensions ont été ajoutés au jeu d'instructions x86 d'origine au fil des ans, presque systématiquement avec une compatibilité ascendante totale . La famille d'architectures a été implémentée dans les processeurs d'Intel, Cyrix , AMD , VIA Technologies et de nombreuses autres sociétés ; il existe également des implémentations ouvertes, telles que la plate-forme Zet SoC (actuellement inactive). Néanmoins, parmi celles-ci, seules Intel, AMD, VIA Technologies et DM&P Electronics détiennent des licences d'architecture x86, et parmi celles-ci, seules les deux premières produisent activement des conceptions 64 bits modernes, conduisant à ce que l'on a appelé un « duopole » d'Intel et d'AMD dans les processeurs x86. Cependant, en 2014, la société chinoise Zhaoxin , basée à Shanghai et issue d'une joint-venture entre une société chinoise et VIA Technologies, a commencé à concevoir des processeurs x86 basés sur VIA pour les ordinateurs de bureau et les ordinateurs portables. La sortie de sa toute nouvelle famille « 7 » de processeurs x86 (par exemple KX-7000), qui ne sont pas aussi rapides que les puces AMD ou Intel mais qui sont toujours à la pointe de la technologie, était prévue pour 2021 ; en mars 2022, la sortie n'avait cependant pas eu lieu. De l'architecture 16 bits et 32 bits à l'architecture 64 bitsL' architecture du jeu d'instructions a été étendue à deux reprises à une taille de mot plus grande . En 1985, Intel a sorti le 80386 32 bits (plus tard connu sous le nom d'i386) qui a progressivement remplacé les puces 16 bits antérieures dans les ordinateurs (mais généralement pas dans les systèmes embarqués ) au cours des années suivantes ; ce modèle de programmation étendu était à l'origine appelé architecture i386 (comme sa première implémentation) mais Intel l'a plus tard surnommé IA-32 lors de l'introduction de son architecture IA-64 (sans rapport) . En 1999-2003, AMD a étendu cette architecture 32 bits à 64 bits et l'a désignée sous le nom de x86-64 dans les premiers documents, puis sous le nom d' AMD64 . Intel a rapidement adopté les extensions architecturales d'AMD sous le nom d'IA-32e, puis sous le nom d'EM64T et enfin sous le nom d'Intel 64. Microsoft et Sun Microsystems / Oracle utilisent également le terme « x64 », tandis que de nombreuses distributions Linux et les BSD utilisent également le terme « amd64 ». Microsoft Windows, par exemple, désigne ses versions 32 bits par « x86 » et ses versions 64 bits par « x64 », tandis que les fichiers d'installation des versions Windows 64 bits doivent être placés dans un répertoire appelé « AMD64 ». En 2023, Intel a proposé un changement majeur à l'architecture appelée X86S (anciennement connue sous le nom de X86-S). Le S dans X86S signifiait « simplification », ce qui visait à supprimer la prise en charge des modes d'exécution et des instructions hérités. Un processeur implémentant cette proposition démarrerait l'exécution directement en mode long et ne prendrait en charge que les systèmes d'exploitation 64 bits. Le code 32 bits ne serait pris en charge que pour les applications utilisateur exécutées en anneau 3 et utiliserait la même segmentation simplifiée que le mode long. En décembre 2024, Intel a annulé ce projet. Propriétés de base de l'architectureL'architecture x86 est une architecture à longueur d'instruction variable, principalement de conception « CISC » avec un accent sur la compatibilité ascendante . Le jeu d'instructions n'est cependant pas typiquement CISC, mais fondamentalement une version étendue des architectures simples à huit bits 8008 et 8080. L'adressage d'octets est activé et les mots sont stockés en mémoire avec un ordre d'octets little-endian . L'accès mémoire aux adresses non alignées est autorisé pour presque toutes les instructions. La plus grande taille native pour l'arithmétique des entiers et les adresses mémoire (ou décalages ) est de 16, 32 ou 64 bits selon la génération d'architecture (les processeurs plus récents incluent également un support direct pour les entiers plus petits). Plusieurs valeurs scalaires peuvent être traitées simultanément via l'unité SIMD présente dans les générations ultérieures, comme décrit ci-dessous. Les décalages d'adressage immédiats et les données immédiates peuvent être exprimés sous forme de quantités de 8 bits pour les cas ou contextes fréquents où une plage de −128 à 127 est suffisante. Les instructions typiques ont donc une longueur de 2 ou 3 octets (bien que certaines soient beaucoup plus longues et que d'autres soient sur un seul octet). Pour conserver davantage l'espace de codage, la plupart des registres sont exprimés en opcodes utilisant trois ou quatre bits, ce dernier via un préfixe d'opcode en mode 64 bits, tandis qu'au plus un opérande d'une instruction peut être un emplacement mémoire. Cependant, cet opérande de mémoire peut également être la destination (ou une source et une destination combinées), tandis que l'autre opérande, la source, peut être soit un registre, soit un immédiat. Entre autres facteurs, cela contribue à une taille de code qui rivalise avec les machines à huit bits et permet une utilisation efficace de la mémoire cache des instructions. Le nombre relativement faible de registres généraux (également hérité de ses ancêtres à 8 bits) a fait de l'adressage relatif aux registres (utilisant de petits décalages immédiats) une méthode importante d'accès aux opérandes, en particulier sur la pile. Beaucoup de travail a donc été investi pour rendre ces accès aussi rapides que les accès aux registres, c'est-à-dire un débit d'instruction d'un cycle, dans la plupart des cas où les données consultées sont disponibles dans le cache de niveau supérieur. Virgule flottante et SIMDUn processeur dédié à virgule flottante avec des registres internes de 80 bits, le 8087 , a été développé pour le 8086 d'origine . Ce microprocesseur a ensuite évolué vers le 80387 étendu , et les processeurs ultérieurs ont incorporé une version rétrocompatible de cette fonctionnalité sur le même microprocesseur que le processeur principal. En plus de cela, les conceptions x86 modernes contiennent également une unité SIMD (voir SSE ci-dessous) où les instructions peuvent fonctionner en parallèle sur (un ou deux) mots de 128 bits, chacun contenant deux ou quatre nombres à virgule flottante (chacun de 64 ou 32 bits de large respectivement), ou alternativement, 2, 4, 8 ou 16 entiers (chacun de 64, 32, 16 ou 8 bits de large respectivement). La présence de registres SIMD larges signifie que les processeurs x86 existants peuvent charger ou stocker jusqu'à 128 bits de données mémoire dans une seule instruction et également effectuer des opérations au niveau du bit (mais pas de l'arithmétique entière ) sur des quantités complètes de 128 bits en parallèle. Les processeurs Sandy Bridge d'Intel ont ajouté les instructions AVX ( Advanced Vector Extensions ), élargissant les registres SIMD à 256 bits. Les instructions Intel Initial Many Core implémentées par les processeurs Knights Corner Xeon Phi et les instructions AVX-512 implémentées par les processeurs Knights Landing Xeon Phi et par les processeurs Skylake-X utilisent des registres SIMD larges de 512 bits. Implémentations actuellesLors de l'exécution , les processeurs x86 actuels utilisent quelques étapes de décodage supplémentaires pour diviser la plupart des instructions en morceaux plus petits appelés micro-opérations. Ceux-ci sont ensuite transmis à une unité de contrôle qui les met en mémoire tampon et les planifie conformément à la sémantique x86 afin qu'ils puissent être exécutés, en partie en parallèle, par l'une des plusieurs unités d'exécution (plus ou moins spécialisées) . Ces conceptions x86 modernes sont donc pipelinées , superscalaires et également capables d' exécutions désordonnées et spéculatives (via la prédiction de branchement , le renommage de registre et la prédiction de dépendance de mémoire ), ce qui signifie qu'elles peuvent exécuter plusieurs instructions x86 (partielles ou complètes) simultanément, et pas nécessairement dans le même ordre que celui donné dans le flux d'instructions. Certains processeurs Intel ( Xeon Foster MP , certains Pentium 4 et certains processeurs Nehalem et Intel Core ultérieurs ) et processeurs AMD (à partir de Zen ) sont également capables de multithreading simultané avec deux threads par cœur ( Xeon Phi a quatre threads par cœur). Certains processeurs Intel prennent en charge la mémoire transactionnelle ( TSX ). Lors de son introduction, au milieu des années 1990, cette méthode était parfois appelée « noyau RISC » ou « traduction RISC », en partie pour des raisons de marketing, mais aussi parce que ces micro-opérations partagent certaines propriétés avec certains types d'instructions RISC. Cependant, le microcode traditionnel (utilisé depuis les années 1950) partage également de manière inhérente de nombreuses propriétés similaires ; la nouvelle méthode diffère principalement en ce que la traduction en micro-opérations se produit désormais de manière asynchrone. Le fait de ne pas avoir à synchroniser les unités d'exécution avec les étapes de décodage ouvre des possibilités d'analyse plus poussée du flux de code (mis en mémoire tampon) et permet donc de détecter les opérations qui peuvent être effectuées en parallèle, alimentant simultanément plusieurs unités d'exécution. Les processeurs les plus récents font également l'inverse lorsque cela est approprié : ils combinent certaines séquences x86 (comme une comparaison suivie d'un saut conditionnel) dans une micro-opération plus complexe qui correspond mieux au modèle d'exécution et peut donc être exécutée plus rapidement ou avec moins de ressources machine impliquées. Une autre façon d'essayer d'améliorer les performances consiste à mettre en cache les micro-opérations décodées, afin que le processeur puisse accéder directement aux micro-opérations décodées à partir d'un cache spécial, au lieu de les décoder à nouveau. Intel a suivi cette approche avec la fonction Execution Trace Cache dans sa microarchitecture NetBurst (pour les processeurs Pentium 4) et plus tard dans le Decoded Stream Buffer (pour les processeurs de marque Core depuis Sandy Bridge). Transmeta a utilisé une méthode complètement différente dans ses processeurs Crusoe compatibles x86. Ils ont utilisé la traduction juste à temps pour convertir les instructions x86 en jeu d' instructions VLIW natif du processeur . Transmeta a fait valoir que leur approche permettait des conceptions plus économes en énergie puisque le processeur peut renoncer à l'étape de décodage compliquée des implémentations x86 plus traditionnelles. Modes d'adressageLes modes d'adressage pour les modes de processeur 16 bits peuvent être résumés par la formule : Les modes d'adressage pour les modes processeur x86 32 bits peuvent être résumés par la formule : Les modes d'adressage pour le mode processeur 64 bits peuvent être résumés par la formule : L'adressage relatif des instructions dans le code 64 bits (RIP + déplacement, où RIP est le registre du pointeur d'instruction ) simplifie l'implémentation du code indépendant de la position (comme utilisé dans les bibliothèques partagées de certains systèmes d'exploitation). Le 8086 avait64 Ko de huit bits (ou alternativement32 K-mots de 16 bits ) d'espace d'E/S et unPile de 64 Ko (un segment) en mémoire prise en charge par le matériel informatique . Seuls les mots (deux octets) peuvent être poussés vers la pile. La pile croît vers des adresses numériquement inférieures, avec SS:SP pointant vers l'élément poussé le plus récemment. Il existe 256 interruptions , qui peuvent être invoquées à la fois par le matériel et par le logiciel. Les interruptions peuvent se mettre en cascade, en utilisant la pile pour stocker l' adresse de retour . Registres x8616 bitsLes processeurs Intel 8086 et 8088 d'origine possèdent quatorze registres 16 bits . Quatre d'entre eux (AX, BX, CX, DX) sont des registres à usage général (GPR), bien que chacun puisse avoir un objectif supplémentaire ; par exemple, seul CX peut être utilisé comme compteur avec l'instruction de boucle. Chacun est accessible sous forme de deux octets séparés (ainsi, l'octet haut de BX peut être accessible sous forme de BH et l'octet bas sous forme de BL). Deux registres de pointeurs ont des rôles spéciaux : SP (pointeur de pile) pointe vers le « sommet » de la pile , et BP (pointeur de base) est souvent utilisé pour pointer vers un autre endroit de la pile, généralement au-dessus des variables locales (voir pointeur de trame ). Les registres SI, DI, BX et BP sont des registres d'adresses et peuvent également être utilisés pour l'indexation de tableaux. L'un des quatre « registres de segment » possibles (CS, DS, SS et ES) est utilisé pour former une adresse mémoire. Dans les processeurs 8086/8088/80186/80188 d'origine, chaque adresse était construite à partir d'un registre de segment et d'un des registres à usage général. Par exemple, ds:si est la notation pour une adresse formée comme [16 * ds + si] pour permettre un adressage sur 20 bits au lieu de 16 bits, bien que cela ait changé dans les processeurs ultérieurs. À cette époque, seules certaines combinaisons étaient prises en charge. Le registre FLAGS contient des indicateurs tels que l'indicateur de report , l'indicateur de dépassement et l'indicateur zéro . Enfin, le pointeur d'instruction (IP) pointe vers l'instruction suivante qui sera extraite de la mémoire puis exécutée ; ce registre ne peut pas être directement accessible (lu ou écrit) par un programme. Les Intel 80186 et 80188 sont essentiellement des processeurs 8086 ou 8088 mis à niveau, respectivement, avec des périphériques intégrés ajoutés, et ils ont les mêmes registres de processeur que les 8086 et 8088 (en plus des registres d'interface pour les périphériques). Les 8086, 8088, 80186 et 80188 peuvent utiliser un coprocesseur à virgule flottante optionnel, le 8087. Le 8087 apparaît au programmeur comme faisant partie du processeur et ajoute huit registres de 80 bits de large, st(0) à st(7), chacun pouvant contenir des données numériques dans l'un des sept formats suivants : virgule flottante 32, 64 ou 80 bits, entier 16, 32 ou 64 bits (binaire) et entier décimal compressé 80 bits. Il possède également son propre registre d'état 16 bits accessible via l' instruction fstsw , et il est courant d'utiliser simplement certains de ses bits pour la ramification en les copiant dans les FLAGS normaux. Dans le processeur Intel 80286 , pour prendre en charge le mode protégé , trois registres spéciaux contiennent les adresses de la table de descripteurs (GDTR, LDTR, IDTR ) et un quatrième registre de tâches (TR) est utilisé pour la commutation des tâches. Le 80287 est le coprocesseur à virgule flottante du 80286 et possède les mêmes registres que le 8087 avec les mêmes formats de données. 32 bitsAvec l'avènement du processeur 80386 32 bits , les registres à usage général 16 bits, les registres de base, les registres d'index, le pointeur d'instruction et le registre FLAGS , mais pas les registres de segment, ont été étendus à 32 bits. La nomenclature représentait cela en préfixant un « E » (pour « étendu ») aux noms de registre dans le langage assembleur x86 . Ainsi, le registre AX correspond aux 16 bits inférieurs du nouveau registre EAX 32 bits, SI correspond aux 16 bits inférieurs de ESI, et ainsi de suite. Les registres à usage général, les registres de base et les registres d'index peuvent tous être utilisés comme base dans les modes d'adressage, et tous ces registres, à l'exception du pointeur de pile, peuvent être utilisés comme index dans les modes d'adressage. Deux nouveaux registres de segments (FS et GS) ont été ajoutés. Avec un plus grand nombre de registres, d'instructions et d'opérandes, le format du code machine a été étendu. Pour assurer la rétrocompatibilité, les segments avec du code exécutable peuvent être marqués comme contenant des instructions de 16 bits ou de 32 bits. Des préfixes spéciaux permettent d'inclure des instructions de 32 bits dans un segment de 16 bits ou vice versa. Le 80386 avait un coprocesseur à virgule flottante optionnel, le 80387 ; il avait huit registres de 80 bits de large : st(0) à st(7), comme le 8087 et le 80287. Le 80386 pouvait également utiliser un coprocesseur 80287. Avec le 80486 et tous les modèles x86 ultérieurs, l'unité de traitement à virgule flottante (FPU) est intégrée sur la puce. Le Pentium MMX a ajouté huit registres vectoriels entiers MMX 64 bits (MM0 à MM7, qui partagent les bits inférieurs avec la pile FPU de 80 bits de large). Avec le Pentium III , Intel a ajouté un registre de contrôle/état Streaming SIMD Extensions (SSE) 32 bits (MXCSR) et huit registres à virgule flottante SSE 128 bits (XMM0 à XMM7). 64 bitsÀ partir du processeur AMD Opteron , l'architecture x86 a étendu les registres 32 bits aux registres 64 bits d'une manière similaire à la manière dont l'extension de 16 à 32 bits a eu lieu. Un préfixe R (pour « registre ») identifie les registres 64 bits (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP), et huit registres généraux 64 bits supplémentaires (R8–R15) ont également été introduits lors de la création de x86-64 . De plus, huit registres vectoriels SSE supplémentaires (XMM8–XMM15) ont été ajoutés. Cependant, ces extensions ne sont utilisables qu'en mode 64 bits, qui est l'un des deux modes uniquement disponibles en mode long . Les modes d'adressage n'ont pas été considérablement modifiés par rapport au mode 32 bits, à l'exception de l'extension de l'adressage à 64 bits, des adresses virtuelles dont le signe est désormais étendu à 64 bits (afin d'interdire les bits de mode dans les adresses virtuelles) et d'autres détails du sélecteur ont été considérablement réduits. De plus, un mode d'adressage a été ajouté pour autoriser les références mémoire relatives à RIP (le pointeur d'instruction ), afin de faciliter l'implémentation de code indépendant de la position , utilisé dans les bibliothèques partagées de certains systèmes d'exploitation. 128 bitsRegistres SIMD XMM0–XMM15 (XMM0–XMM31 lorsque AVX-512 est pris en charge). 256 bitsRegistres SIMD YMM0–YMM15 (YMM0–YMM31 lorsque AVX-512 est pris en charge). La moitié inférieure de chacun des registres YMM est mappée sur le registre XMM correspondant. 512 bitsRegistres SIMD ZMM0–ZMM31. La moitié inférieure de chacun des registres ZMM correspond au registre YMM correspondant. Divers/à usage spécialLes processeurs x86 dotés d'un mode protégé , c'est-à-dire les processeurs 80286 et ultérieurs, disposent également de trois registres descripteurs (GDTR, LDTR, IDTR ) et d'un registre de tâches (TR). Les processeurs x86 32 bits (à partir du 80386) incluent également divers registres spéciaux/divers tels que les registres de contrôle (CR0 à 4, CR8 pour 64 bits uniquement), les registres de débogage (DR0 à 3, plus 6 et 7), les registres de test (TR3 à 7 ; 80486 uniquement) et les registres spécifiques au modèle (MSR, apparaissant avec le Pentium ). L'AVX-512 dispose de huit registres de masque 64 bits supplémentaires K0–K7 pour sélectionner des éléments dans un registre vectoriel. Selon le registre vectoriel et la largeur des éléments, seul un sous-ensemble de bits du registre de masque peut être utilisé par une instruction donnée. ButBien que les registres principaux (à l'exception du pointeur d'instruction) soient « à usage général » dans les versions 32 bits et 64 bits du jeu d'instructions et puissent être utilisés pour n'importe quoi, il était initialement prévu qu'ils soient utilisés aux fins suivantes :
Registres de segments :
Aucun usage particulier n'a été prévu pour les 8 autres registres disponibles uniquement en mode 64 bits. Certaines instructions se compilent et s'exécutent plus efficacement lorsque ces registres sont utilisés pour leur fonction prévue. Par exemple, l'utilisation d'AL comme accumulateur et l'ajout d'une valeur d'octet immédiate produisent l' opcode d'ajout au registre AL efficace de 04h, tandis que l'utilisation du registre BL produit l' opcode d'ajout au registre générique et plus long de 80C3h. Un autre exemple est la division et la multiplication en double précision qui fonctionnent spécifiquement avec les registres AX et DX. Les compilateurs modernes ont bénéficié de l'introduction de l' octet sib ( scale-index-base byte ) qui permet de traiter les registres de manière uniforme ( comme un mini-ordinateur ). Cependant, l'utilisation universelle de l'octet sib n'est pas optimale, car elle produit des codages plus longs que son utilisation sélective lorsque cela est nécessaire. (Le principal avantage de l'octet sib est l'orthogonalité et les modes d'adressage plus puissants qu'il fournit, qui permettent d'économiser des instructions et l'utilisation de registres pour les calculs d'adresse tels que la mise à l'échelle d'un index.) Certaines instructions spéciales ont perdu la priorité dans la conception matérielle et sont devenues plus lentes que les petites séquences de code équivalentes. Un exemple notable est l'instruction LODSW. Structure
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


