IA-32
# IA-32

IA-32 (Intel Architecture, 32-bit), conocido de manera genérica como x86, x86-32 o i386, es la arquitectura del conjunto de instrucciones del procesador de Intel comercialmente más exitoso. Es una extensión de 32-bit, primero implementada en el Intel 80386, proveniente de los antiguos procesadores Intel 8086,80186 y 80286 de 16-bit y el denominador común de todos los diseños x86 subsecuentes. Esta arquitectura define el conjunto de instrucciones para la familia de microprocesadores instalados en la gran mayoría de computadoras personales en el mundo.

La longevidad se debe en parte a la completa compatibilidad hacia atrás y que la arquitectura también se ha extendido a 64-bits, sin romper la compatibilidad. Esta extensión es conocida como Intel 64 por Intel o AMD64 por AMD (y referida genéricamente como x86-64 o x64) y no está relacionada de manera alguna a la arquitectura IA-64 de 64-bits implementada por la serie Itanium de Intel.

El conjunto de instrucciones IA-32 se describe normalmente como una arquitectura CISC (Complex Instruction Set Computer, en inglés), aunque tales clasificaciones han perdido sentido con los avances en el diseño de microprocesadores. Las microarquitecturas x86 modernas, como K7, NetBurst, y otras, son referidas como procesadores post-RISC.

## Historia

El conjunto de instrucciones IA-32 fue introducido en el microprocesador Intel 80386 en 1986 y sentó las bases de la mayoría de los microprocesadores por más de 20 años. Aunque el conjunto de instrucciones se ha mantenido intacto, las generaciones sucesivas de microprocesadores que las tienen se han vuelto mucho más rápidas. Dentro de varias directivas de lenguajes de programación, IA-32 es todavía referida como la arquitectura "i386".

Intel fue el inventor y es el proveedor más grande procesadores IA-32, pero no es el único. El segundo proveedor más grande es AMD. Hay otros proveedores, pero sus cantidades son pequeñas. En 2007, Intel se mudó a x86-64, pero aún produce procesadores IA-32 como el Celeron M para laptops. VIA Technologies continua produciendo la familia VIA C3/C7 de dispositivos puramente IA-32, y AMD aún produce la línea Geode y procesadores móviles IA-32.

En 2000, AMD anunció un derivado de IA-32 llamado x86-64 (posteriormente renombrado a AMD64), que agregó capacidades de computación de 64-bits. Esta arquitectura extendida fue después adoptada por Intel con cambios menores.

## Arquitecturas sucesoras

### IA-64

La arquitectura IA-64 ("Intel Arquitecture, 64-bit") de Intel, lanzada en 1999, no es directamente compatible con el conjunto de instrucciones IA-32, a pesar de tener un nombre similar. Tiene un conjunto de instrucciones completamente diferente y use un diseño VLIW en lugar de out-of-order execution (ejecución fuera de orden). IA-64 es la arquitectura utilizada por la línea de procesadores Itanium. Itanium inicialmente incluía soporte en hardware para emulación IA-32, pero era muy lenta. Intel optó por el uso de un emulador por software.

Las mejoras incluyen:

* 16 veces el número de registros de propósito general (128 en total)
* 16 veces el número de registros de punto flotante (128 en total)
* Mecanismo de rotación de registros para mantener los valores en los registros ante llamadas a funciones

### x86-64

**AMD64**

El conjunto de instrucciones AMD64 de AMD, inicialmente llamado x86-64 cuando se anunció en 2000, es una extensión de 64-bits a IA-32 y por lo tanto mantiene la herencia de la familia x86. Mientras que extiende el conjunto de instrucciones, AMD tomó la oportunidad de solucionar algunos problemas de comportamiento de este conjunto de instrucciones que existió desde sus primeros días de 16-bits, cuando el procesador está en modo 64-bit.

Las mejoras incluyen:

* 2 veces el número de registros de propósito general (16 en total)
* 2 veces el número de registros SSE (16 en total)
* Los registros de propósito general son ahora realmente de propósito general, pues se eliminaron sus restricciones.
* La mayoría de la funcionalidad de los registros de segmento han sido eliminadas, dado que su uso ha declinado constantemente incluso en los días de IA-32.

**Intel 64**

En 2004, Intel anunció el conjunto de instrucciones EM64T ("Extended Memory 64 Technology"), cuyo nombre código fue Yamhill o IA-32e, y posteriormente renombrado Intel 64. Se derivó de AMD64 y es compatible generalmente con código escrito para AMD64, aunque le faltan algunas características de AMD64. Intel comenzó usándolo con el núcleo Xeon Nocona a finales de 2004, introduciéndolo al mercado de PC's con el Pentium 4 revisión E0 a principios de 2005.

