martes, 7 de abril de 2009

Historia de los Microprocesadores (3ra Parte)


x86 de 32 bits Intel 80386

El Intel 80386 (i386, 386) es un microprocesador CISC con arquitectura x86. Durante su diseño se le llamó 'P3', debido a que era el prototipo de la tercera generación x86. El i386 fue empleado como la unidad central de proceso de muchos ordenadores personales desde mediados de los años 80 hasta principios de los 90.

Diseñado y fabricado por Intel, el procesador i386 fue lanzado al mercado el 16 de octubre de 1985. Intel estuvo en contra de fabricarlo antes de esa fecha debido a que los costes de producción lo hubieran hecho poco rentable. Los primeros procesadores fueron enviados a los clientes en 1986. Del mismo modo, las placas base para ordenadores basados en el i386 eran al principio muy elaboradas y caras, pero con el tiempo su diseño se racionalizó.

El procesador i386 fue una evolución importante en la línea de procesadores que se remonta al Intel 8008. El predecesor del i386 fue el Intel 80286, un procesador de 16 bits con un sistema de memoria segmentada. El i386 añadió una arquitectura de 32 bits y una unidad de translación de páginas, lo que hizo mucho más sencillo implementar sistemas operativos que emplearan memoria virtual.
Intel introdujo posteriormente el i486, pero ni éste ni sus sucesores han introducido tantos cambios en la arquitectura x86 como el i386 con sus sistema de direccionamiento plano de 32 bits. Otros microprocesadores, como el Motorola 68000 tenían direccionamiento plano desde mucho antes.

La mayoría de las aplicaciones diseñadas para ordenadores personales con un procesador x86 posterior al i386 funcionarán en un i386, debido a que los cambios del conjunto de instrucciones desde el i386 ha sido mínimo. Además el uso de las nuevas instrucciones puede ser evitado fácilmente. Adaptar un programa para el i286 es mucho más difícil.
Debido al alto grado de compatibilidad, la arquitectura del conjunto de procesadores compatibles con el i386 suele ser llamada arquitectura i386. El conjunto de instrucciones para dicha arquitectura se conoce actualmente como IA-32.

Después de que comenzara la producción del 80386, Intel introdujo el Intel 80386SX. El i386SX fue diseñado como un versión económica del i386. Los i386SX, como todos los i386, tienen una arquitectura de 32 bits, pero se comunican con el exterior mediante un bus externo de 16 bits. Esto hace que sean el doble de lentos al acceder al exterior, pero por el contrario el diseño los circuitos auxiliares del microprocesador es mucho más sencillo. El i386 original fue renombrado a Intel 80386DX para evitar la confusión. Además, aprovechando el diseño del i386SX, Intel sacó al mercado una versión del i386SX llamada SX Now! que era compatible pin a pin con el i286, haciendo que los poseedores de ordenadores con el i286 pudieran actualizarse el i386SX sin cambiar de placa base.
Desde un punto de vista comercial, el i386 fue importante debido a que fue el primer microprocesador disponible desde una única fuente. Anteriormente, la dificultad de producir los circuitos integrados y la poca fiabilidad para producir una cantidad suficiente hacían que necesariamente hubiera más de un fabricante de los circuitos de más éxito comercial, que licenciaban la tecnología al diseñador original. El hecho de que Intel no licenciara el diseño del i386 hizo que tuviera más control sobre su desarrollo y que tuviera mayores beneficios. De todos modos, AMD introdujo su procesador Am386 compatible con el i386 en Marzo de 1991, después de solventar varios obstáculos legales. Esto rompió el monopolio de Intel sobre la arquitectura i386.

IA-64

IA-64 (Intel Arquitecture-64) es una arquitectura de 64 bits desarrollada por Intel en cooperación con Hewlett-Packard para su línea de procesadores Itanium e Itanium 2. Usa direcciones de memoria de 64 bits y está basada en el modelo EPIC (Explicitly Parallel Instruction Computing, procesamiento de instrucciones explícitamente en paralelo).

El proyecto tenia por fin rediseñar totalmente la manera de programar y procesar las aplicaciones. Para ello realizo varios cambios de fondo:
-Extendió los registros de 32 a 64 bits.
-Extendió la cantidad de registros enteros de 8 a 128. (Register Stack o pila de registros). Además era compatible con instrucciones MMX.
-Extendió la cantidad de registros de coma flotante de 8 a 128. (Register Stack o pila de registros). Compatible con SSE.
-Agregó 64 registros de predicado, de 1 bit que pueden ser usados para condiciones de salto.
-Agregó 8 registros usados en saltos.
-Extendio el contador de programa de 32 a 64 bits.
-Retorno a la ejecución en orden de la instrucciones.
-Sobre código ensamblador puede decirse explícitamente cuando, hasta 3 instrucciones, se ejecutan el paralelo y en que sector del procesador hacerlo (esto es, unidad de enteros, punto flotante, memoria, etc).
-Extendió la capacidad de direccionamiento del procesador de 32 a 64 bits, logrando un direccionamiento teórico de hasta 2 Exabytes (16 Exabits). Esto es 2.305.843.009.213.693.952 bytes.

Aplicaciones actuales como bases de datos están hace algún tiempo rozando el límite superior de los 4Gb (que en la realidad se suelen reducir a 3,5Gb después de que el sistema operativo ha reservado páginas para el kernel, usadas para mapeos que necesitan estar en determinada posición de memoria) direccionables actualmente. Además con el advenimiento de los DVD a valores accesibles, no es raro que aparezcan archivos de varios Gb, lo que se transforma en un dolor de cabeza en el esquema de archivos memory-mapped. Si bien existen implementaciones de los proveedores de hardware que permiten acceder más de 3Gb de memoria, estas normalmente caen en el terreno de la emulaciones, que forzosamente implican un golpe al rendimiento.

Tanto los registros enteros como los flotantes, tenian la propiedad de poderse usar como registros rotativos. A partir del registro 32 tanto como para enteros como para flotantes, si en un código, los registros estaban referenciados por un identificador y no por su nombre (los registros eran r0, r1... r128, pero podia referenciarlos con letras, ra, rb y el itanum se encargaba de asosiarlos a un registro real) en una ejecución de un ciclo era posible trabajar con los registros siguientes, como si la pila de registros fuese una rueda numerada y cuando se llega al último registro, volvia a referirse al primero.

En las intrucciones de salto, sobre el código del itanium se le podía especificar cual era la decisión que le "recomendabamos" tomar (estas son saltar o no hacerlo).

El procesador Itanium y su predecesor Itanium II fueron un fracaso, producto de la tremenda dificultad para cualquier programador el aprender una nueva forma de hacerlo y a su vez, generar programas que aprovechen todo el potencial del procesador.
Recientemente Intel revivió el proyecto, usando su tecnología core duo, proporcionando 2 cpu dentro del mismo encapsulado de itanium.
IA64 El origen de la arquitectura IA64 viene dado por tres necesidades que se vean acercarse: 1. Una nueva plataforma para servidores high-end que reemplazara y evolucionara las arquitecturas de ese segmento como HP-PA y DEC Alpha.


MIPS

MIPS es el acrónimo de "millones de instrucciones por segundo". Es una forma de medir la potencia de los procesadores. Sin embargo, esta medida sólo es útil para comparar procesadores con el mismo juego de instrucciones y usando benchmarks que fueron compilados por el mismo compilador y con el mismo nivel de optimización. Esto es debido a que la misma tarea puede necesitar un número de instrucciones diferentes si los juegos de instrucciones también lo son; y por motivos similares en las otras dos situaciones descritas. En las comparativas, usualmente se representan los valores de pico, por lo que la medida no es del todo realista. La forma en que funciona la memoria que usa el procesador también es un factor clave para la potencia de un procesador, algo que no suele considerarse en los cálculos con MIPS. Debido a estos problemas, los investigadores han creado pruebas estandardizadas tales como SpecInt para medir el funcionamiento real, y las MIPS han caído en desuso.

En el mundo de GNU/Linux se suelen referir a los MIPS como 'bogoMIPS'.
El equivalente en la aritmética de punto flotante de los MIPS son los flops.
Muchos microprocesadores de 8 y 16 bits han sido medidos con KIPS (kiloinstrucciones por segundo), que equivale a 0'001 MIPS. El primer microprocesador de propósito general, el Intel 8080 ejecutaba 640 KIPS. El Intel 8086 (16 bits), el primer microprocesador usado en PC 800 KIPS. El Pentium 4 llega aproximadamente a 1'700 MIPS.
Los PC actuales realizan un máximo de 18.000 millones de operaciones lógicas por segundo. Si se ejecutan 6 instrucciones por ciclo y hay 3 billones de ciclos por segundo, se tienen 18.000 MIPS.

No hay comentarios: