IA-32

plateforme informatique From Wikipedia, the free encyclopedia

IA-32 (abréviation de « Intel Architecture, 32 bits », communément appelé i386[1],[2],[3]) est la version 32 bits de l’architecture de jeu d'instructions x86, conçue par Intel et implémentée pour la première fois sur le microprocesseur 80386 en 1985. IA-32 est la première incarnation de x86 à prendre en charge le calcul 32 bits[4] ; par conséquent, le terme « IA-32 » peut être utilisé comme métonyme pour désigner toutes les versions x86 supportant le calcul 32 bits[5],[6].

Dans diverses directives de langages de programmation, IA-32 est encore parfois appelé l’architecture « i386 ». Dans d’autres contextes, certaines versions de l'ISA IA-32 sont parfois étiquetées i486, i586 et i686, en référence aux sur-ensembles d’instructions proposés respectivement par les microarchitectures 80486, P5 et P6. Ces mises à jour ont apporté de nombreuses additions en plus de l’ensemble de base IA-32, incluant des capacités de calcul en virgule flottante et les extensions MMX.

Intel a historiquement été le plus grand fabricant de processeurs IA-32, le deuxième plus grand fournisseur étant AMD. Dans les années 1990, VIA, Transmeta et d’autres fabricants de puces ont également produit des processeurs compatibles IA-32 (par exemple WinChip). À l’ère moderne, Intel produisait encore des processeurs IA-32 sous la plateforme microcontrôleur Intel Quark (en) jusqu’en 2019 ; cependant, depuis les années 2000, la majorité des fabricants (y compris Intel) se sont presque exclusivement tournés vers l’implémentation de processeurs basés sur la variante 64 bits du x86, x86-64. x86-64, selon les spécifications, propose des modes d’exploitation hérités qui fonctionnent sur l’ISA IA-32 pour assurer la rétrocompatibilité. Même compte tenu de la prévalence contemporaine du x86-64, à ce jour, les versions en mode protégé IA-32 de nombreux systèmes d’exploitation modernes sont encore maintenues, par exemple Microsoft Windows (jusqu’à Windows 10)[7], Windows Server (jusqu’à Windows Server 2008)[8] et la distribution Linux Debian[9]. Malgré le nom IA-32 (ce qui a causé une certaine confusion potentielle), l’évolution 64 bits du x86 issue d’AMD ne sera pas connue sous le nom de « IA-64 », ce nom appartenant à l’architecture Itanium d’Intel, abandonnée.

Caractéristiques architecturales

Registres du i386
31 ... 15 ... 07 ... 00 (bit position)
Registres principaux (8/16/32 bits)
EAX AX AL Accumulator
ECX CX CL Count register
EDX DX DL Data register
EBX BX BL Base register
Registres d'index (16/32 bits)
ESP SP Stack Pointer
EBP BP Base Pointer
ESI SI Source Index
EDI DI Destination Index
Program counter (16/32 bits)
EIP IP Instruction Pointer
Sélecteurs de segment (16 bits)
  CS Code Segment
  DS Data Segment
  ES Extra Segment
  FS F Segment
  GS G Segment
  SS Stack Segment
Registre d'état
  17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (bit position)
  V R 0 N IOPL O D I T S Z 0 A 0 P 1 C EFlags

La caractéristique principale définissant IA-32 est la disponibilité de registres de processeur généralistes 32 bits (par exemple, EAX et EBX), des opérations arithmétiques entières et logiques sur 32 bits, des décalages 32 bits au sein d’un segment en mode protégé, et la traduction d’adresses segmentées en adresses linéaires 32 bits. Les concepteurs en ont profité pour apporter d’autres améliorations également. Quelques-uns des changements les plus significatifs (par rapport au jeu d’instructions 16 bits 286) sont :

Capacité sur entiers 32 bits

Tous les registres à usage général (GPR) sont étendus de 16 bits à 32 bits, et toutes les opérations arithmétiques et logiques, les opérations mémoire-registre-registre-registre, registre-mémoire, etc., peuvent fonctionner directement sur des entiers 32 bits. Les pushs et pops sur la pile sont par défaut des blocs de 4 octets, et les pointeurs non segmentés font 4 octets de large.

Modes d’adressage plus généraux

Tout GPR peut être utilisé comme registre de base, et tout GPR autre que l’ESP peut être utilisé comme registre index, dans une référence mémoire. La valeur du registre index peut être multipliée par 1, 2, 4 ou 8 avant d’être ajoutée à la valeur de base du registre et au déplacement.

Registres de segment supplémentaires

Deux registres de segment supplémentaires, FS et GS, sont fournis.

Espace d’adressage virtuel plus grand

L’architecture IA-32 définit un format d’adresses segmentées de 48 bits, avec un numéro de segment de 16 bits et un décalage de 32 bits à l’intérieur du segment. Les adresses segmentées sont mappées vers des adresses linéaires de 32 bits.

Pagination à la demande

Les adresses linéaires 32 bits sont des adresses virtuelles plutôt que physiques ; elles sont traduites en adresses physiques via une table des pages. Dans les processeurs 80386, 80486 et Pentium original, l'adresse physique était de 32 bits ; dans les processeurs Pentium Pro et ultérieurs, l’extension d'adresse physique (EAP) autorise les adresses physiques de 36 bits, bien que la taille de l'adresse linéaire reste de 32 bits.

Modes de fonctionnement

Davantage d’informations Mode de fonctionnement, Système d'exploitation requis ...
Mode de fonctionnement Système d'exploitation requis Type de code pouvant fonctionner Taille des adresses par défaut Taille des opérandes par défaut Taille typique des registres GPR
Mode protégé Chargeur d'amorçage ou système d'exploitation 32 bits Code en mode protégé 32 bits 32 bits 32 bits 32 bits
Chargeur d'amorçage ou système d'exploitation 16 bits en mode protégé, ou chargeur d'amorçage 32 bits Code en mode protégé 16 bits 16 bits 16 bits 16 ou 32 bits
Mode virtuel 8086 Système d'exploitation 16 bits ou 32 bits en mode protégé Code en mode réel 16 bits 16 bits 16 bits 16 ou 32 bits
Mode réel Système d'exploitation 16 bits en mode réel ou chargeur d'amorçage, ou chargeur d'amorçage 32 bits Code en mode réel 16 bits 16 bits 16 bits 16 ou 32 bits
Mode irréel (en) Système d'exploitation 16 bits en mode réel ou chargeur d'amorçage, ou chargeur d'amorçage 32 bits Code en mode réel 16 bits 32 bits 16 bits 16 ou 32 bits
Fermer

Références

Related Articles

Wikiwand AI