x86
La famille x86 regroupe les microprocesseurs compatibles avec le jeu d'instructions de l'Intel 8086. Cette série est nommée IA-32 (pour Intel architecture 32 bits) par Intel pour ses processeurs à partir du Pentium.

Un constructeur de microprocesseur pour PC doit maintenir une compatibilité descendante avec ce jeu d'instructions s'il veut que les logiciels déjà écrits fonctionnent sur les nouveaux microprocesseurs.
Origine du nom
Le nom « x86 » est un terme générique pour la famille de processeurs Intel, le "x" correspondant à plusieurs valeurs, depuis le 8086, en passant par 80286, 80386 ou 80486[1].
Historique
À l'origine de conception CISC, les nouvelles générations ont été de plus en plus conçues comme des processeurs RISC, les instructions complexes étant transformées dans le microprocesseur en instructions plus élémentaires depuis le Pentium Pro.
Cette famille de processeurs, dont le Pentium est emblématique, est passée au 64 bits. La gamme AMD64 d'AMD introduit des extensions 64 bits, intégrées partiellement un an plus tard par Intel avec les instructions Intel 64 ou EM64T. Intel propose également une architecture 64 bits IA-64, différente et incompatible, pour ses processeurs Itanium et Itanium 2.
Chronologie
Le tableau ci-dessous dresse une liste non exhaustive des processeurs grand public[2] implémentant le jeu d'instructions x86, regroupés par générations qui décrivent les évolutions importantes dans l'histoire du x86.
Génération | Date de parution | Principaux modèles grand public | Espace d'adressage linéaire/physique | Principales évolutions |
---|---|---|---|---|
1 | 1978 | Intel 8086, Intel 8088 | 16-bit / 20-bit (segmenté) | premiers processeurs x86 |
2 | 1982 | Intel 80186, Intel 80188, NEC V20/V30 | calcul rapide des adresses en hardware, opérations rapides (division, multiplication, etc.) | |
Intel 80286 | 16-bit (30-bit virtuel) / 24-bit (segmenté) | MMU (Memory Management Unit), pour permettre le mode protégé et un plus grand espace d'adressage | ||
3 (IA-32) | 1985 | Intel 80386, AMD Am386 | 32-bit (46-bit virtuel) / 32-bit | jeu d'instructions 32-bit, MMU avec pagination |
4 | 1989 | Intel 80486, AMD Am486 | pipeline de type RISC, FPU et Mémoire Cache intégrés | |
5 | 1993 | Pentium, Pentium MMX | processeur superscalaire, 64-bit bus de données, FPU plus rapide, MMX | |
5/6 | 1996 | Cyrix 6x86, Cyrix MII, Cyrix III (2000) / VIA C3 (2001) | renommage de registres, exécution spéculative | |
6 | 1995 | Pentium Pro, AMD K5, Nx586 (1994), Rise mP6 | idem / 36-bit physique (PAE) |
traduction des micro-instructions, PAE (Pentium Pro), cache L2 intégré (Pentium Pro) |
1997 | AMD K6/-2/3, Pentium II/Pentium III, IDT (en)/Centaur-C6 | support du cache L3, 3DNow!, SSE | ||
7 | 1999 | Athlon, Athlon XP | FPU superscalaire, meilleure conception (jusqu'à 3 instructions x86 par top d'horloge) | |
2000 | Pentium 4 | pipeline profond, haute fréquence, SSE2, hyper-threading | ||
6-M/7-M | 2003 | Pentium M, VIA C7 (2005), Core Solo et Core Duo (2006) | optimisé pour une faible consommation d'énergie | |
8 (x86-64) | Athlon 64, Opteron | 64-bit / 40-bit physique dans la première implémentation AMD. | jeu d'instructions x86-64, contrôleur mémoire intégré, HyperTransport | |
2004 | Pentium 4 Prescott | pipeline très profond, très haute fréquence, SSE3 | ||
9 | 2006 | Intel Core 2 | faible consommation d'énergie, multi-cœur, fréquence d'horloge plus faible, SSE4 (Penryn) | |
Intel Geminilake | 64-bits / 64 bits physiques | |||
10 | 2007 | AMD Phenom | idem / 48-bit physique pour le Phenom d'AMD | quad-core monolithique, FPU 128-bit, SSE4a, HyperTransport 3, conception modulaire |
11 | 2008 | Intel Atom | in-order, très faible consommation d'énergie | |
Intel Core i7 | out-of-order, superscalaire, bus QPI, conception modulaire, contrôleur mémoire intégré, 3 niveau de cache | |||
VIA Nano | out-of-order, superscalaire, chiffrement matériel, très faible consommation d'énergie, gestion de l'énergie adaptative | |||
12 | 2010 | Intel Sandy Bridge, AMD Bulldozer | SSE5/AVX, conception hautement modulaire | |
13 | 2013 | Intel Haswell | ||
14 | 2015 | Intel Skylake | ||
14 | ||||
15 | 2016-2017 | Intel Kabylake, AMD Zen |
Architecture
La conception de la gamme x86 a mis l'accent sur la compatibilité ascendante. Ainsi, les générations successives de processeurs admettent plusieurs modes de fonctionnement, qui diffèrent en particulier du point de vue de l'accès à la mémoire.
Les logiciels pensés en 32 bits (i386) fonctionnent donc sur une architecture 64 bits (AMD64).
Accès mémoire
Les possibilités d'adressage mémoire de la gamme x86 remontent au 8080, qui avait 16 bits de bus d'adresse et pouvait donc accéder à 64 Ko de mémoire.
Le 8086, pour faciliter le passage du 8080 au 8086, introduit l'adressage segmenté, où l'adresse référencée par segment:offset est segment · 0x10 + offset, avec segment et offset tous deux sur 16 bits. Cela fournit 1 Mo de mémoire adressable, divisée en segments de 64 Ko, un segment commençant tous les 16 octets. Le processeur a 4 registres de segment : un pour le code, un pour les données, un pour la pile et un supplémentaire (qui sert entre autres de destination dans les instructions de copie de chaînes de caractères). Intel introduit des « modèles mémoire ». Dans le modèle tiny, qui imite le modèle mémoire du 8080, tous les registres de segments ont la même valeur et on accède donc effectivement à 64 Ko de mémoire. C'est le modèle utilisé sous DOS, par les exécutables .com. Dans le modèle small, les registres ont des valeurs différentes mais ne changent pas : on a donc 64 Ko pour le code, 64 Ko pour les données, 64 Ko pour la pile. Pour manipuler plus de mémoire, il faut faire des accès « far », c'est-à-dire aller chercher le mot en mémoire en changeant d'abord la valeur du registre de segment, puis en lisant le segment à l'offset voulu. Le modèle « large » fait des accès far dans le code et les données et donc utilise effectivement le mébioctet d'espace adressable. Les modèles medium (64 Ko de données, plusieurs segments de code) et compact (plusieurs segments de données, 64 Ko de code) sont des compromis.
Le 80286 brise la barrière des 1 024 Ko en introduisant le mode protégé : les segments ne se réfèrent plus à l'adresse segment·0x10 mais à une table (la GDT ou la LDT) qui maintient en plus les informations de protection. L'espace adressable est de 16 Mo, l'espace virtuel est potentiellement de 1 Go, un segment ne peut pas dépasser 64 Ko. Avec le 80386, Intel introduit un processeur 32 bits. Les segments peuvent être aussi gros que tout l'espace adressable, soit 4 Go. La pagination vient s'ajouter à la segmentation.
Notes et références
- (en) https://techterms.com/definition/x86
- (en) « Microprocessor Hall of Fame », Intel (consulté le 11 août 2007).