IA-32

Ajustar Compartir Imprimir Citar
Tercera generación de arquitectura x86

IA-32 (abreviatura de "Arquitectura Intel, 32 bits", comúnmente llamado i386) es la versión de 32 bits de la arquitectura del conjunto de instrucciones x86, diseñada por Intel e implementada por primera vez en el microprocesador 80386 en 1985. IA-32 es la primera encarnación de x86 que admite computación de 32 bits; como resultado, el "IA-32" El término puede usarse como una metonimia para referirse a todas las versiones x86 que admiten computación de 32 bits.

Dentro de varias directivas de lenguajes de programación, IA-32 todavía se conoce a veces como el "i386" arquitectura. En algunos otros contextos, ciertas iteraciones del ISA IA-32 a veces se denominan i486, i586 y i686, en referencia a los superconjuntos de instrucciones ofrecidos por el 80486, el P5 y el Microarquitecturas P6 respectivamente. Estas actualizaciones ofrecieron numerosas adiciones junto con el conjunto base IA-32, incluidas las capacidades de punto flotante y las extensiones MMX.

Intel fue históricamente el mayor fabricante de procesadores IA-32, y el segundo mayor proveedor fue AMD. Durante la década de 1990, VIA, Transmeta y otros fabricantes de chips también produjeron procesadores compatibles con IA-32 (por ejemplo, WinChip). En la era moderna, Intel todavía producía procesadores IA-32 bajo la plataforma de microcontrolador Intel Quark hasta 2019; sin embargo, desde la década de 2000, la mayoría de los fabricantes (incluido Intel) pasaron casi exclusivamente a implementar CPU basadas en la variante de 64 bits de x86, x86-64. x86-64, por especificación, ofrece modos operativos heredados que funcionan en el ISA IA-32 para compatibilidad con versiones anteriores. Incluso dada la prevalencia contemporánea de x86-64, a partir de 2018, las versiones en modo protegido IA-32 de muchos sistemas operativos modernos aún se mantienen, p. Microsoft Windows (hasta Windows 10; Windows 11 requiere un procesador compatible con x86-64 para las versiones x86) y la distribución Debian Linux. A pesar del nombre de IA-32 (y que podría causar cierta confusión), la evolución de 64 bits de x86 que se originó en AMD no se conocería como "IA-64", sino ese nombre. perteneciente a la arquitectura Itanium de Intel.

Características arquitectónicas

La principal característica definitoria de IA-32 es la disponibilidad de registros de procesador de uso general de 32 bits (por ejemplo, EAX y EBX), operaciones aritméticas y lógicas de enteros de 32 bits, compensaciones de 32 bits dentro de un segmento en formato protegido. y la traducción de direcciones segmentadas a direcciones lineales de 32 bits. Los diseñadores aprovecharon la oportunidad para realizar otras mejoras también. Algunos de los cambios más significativos (en relación con el conjunto de instrucciones 286 de 16 bits) se describen a continuación.

Capacidad de entrada de 32 bits
Todos los registros generales (GPRs) se expanden de 16 bits a 32 bits, y todas las operaciones aritméticas y lógicas, memoria a registro y operaciones de registro a memoria, etc., pueden operar directamente en enteros de 32 bits. Empuja y aparece en la pila predeterminada a los pasos de 4 bytes, y los punteros no segregados son de 4 bytes de ancho.
Modos de abordaje más generales
Cualquier GPR puede ser utilizado como registro de base, y cualquier GPR que no sea ESP puede ser utilizado como un registro de índice, en una referencia de memoria. El valor de registro índice se puede multiplicar por 1, 2, 4 o 8 antes de ser añadido al valor y desplazamiento del registro base.
Registros adicionales de segmentos
Se proporcionan dos registros adicionales de segmentos, FS y GS.
Espacio de dirección virtual más grande
La arquitectura IA-32 define un formato de dirección segmentada de 48 bits, con un número de segmento de 16 bits y un desplazamiento de 32 bits dentro del segmento. Las direcciones segmentadas se asignan a direcciones lineales de 32 bits.
Demanda de pavimento
Las direcciones lineales de 32 bits son direcciones virtuales en lugar de direcciones físicas; se traducen a direcciones físicas a través de una tabla de página. En el 80386, 80486, y los procesadores originales del Pentium, la dirección física fue de 32 bits; en el Pentium Pro y los procesadores posteriores, la Extensión de Dirección Física permitió direcciones físicas de 36 bits, aunque el tamaño de la dirección lineal era de 32 bits.

Modos de funcionamiento

Modo operativo Sistema operativo necesario Tipo de código que se está ejecutando Tamaño de la dirección predeterminada Tamaño predeterminado del funcionamiento Ancho GPR típico
Modo protegido Sistema operativo de 32 bits o cargador de arranque Código de movimiento protegido de 32 bits 32 bits 32 bits 32 bits
sistema operativo de 16 bits o cargador de arranque, o cargador de arranque de 32 bits Código de movimiento protegido de 16 bits 16 bits 16 bits 16 o 32 bits
Modo virtual 8086 Sistema operativo de 16 o 32 bits Código de movimiento real de 16 bits 16 bits 16 bits 16 o 32 bits
Modo real sistema operativo de 16 bits o cargador de arranque, o cargador de arranque de 32 bits Código de movimiento real de 16 bits 16 bits 16 bits 16 o 32 bits
Modo irreal sistema operativo de 16 bits o cargador de arranque, o cargador de arranque de 32 bits Código de movimiento real de 16 bits 32 bits 16 bits 16 o 32 bits