Microprocesadores Intel
diegog20x15 de Junio de 2013
7.297 Palabras (30 Páginas)321 Visitas
Historia Procesadores INTEL
[editar] Antecedentes
En 1972, Intel lanzó el 8008, el primer microprocesador de 8 bits.[1] El 8008 implementó un conjunto de instrucciones diseñado por la corporación Datapoint la cuál tenía en mente hacer terminales de CRT programables. El 8008 también demostró ser bastante de propósito general. El dispositivo necesitó varios ICs adicionales para producir un computador funcional, en parte debido a su pequeño "paquete de memoria" de 18 pines, que eliminó el uso de un bus de direcciones separado (En ese tiempo, Intel era primariamente un fabricante de DRAM).
Dos años más tarde, en 1974, Intel lanzó el 8080,[2] empleando los nuevos paquetes DIL de 40 pines desarrollados originalmente para ICs de calculadora para permitir un bus de direcciones separado. Tenía un conjunto de instrucciones extendido que era compatible a nivel de código fuente, no de código de máquina binario, con el 8008 y también incluyó algunas instrucciones de 16 bits para hacer la programación más fácil. El dispositivo 8080, con frecuencia descrito como el primer microprocesador verdaderamente útil, fue eventualmente substituido por el 8085, basado en tecnología depletion-load NMOS (1977) que podía trabajar con una sola fuente de alimentación de 5V en vez de los tres diferentes voltajes de funcionamiento de los chips anteriores.[3] Otros microprocesadores de 8 bits bien conocidos que emergieron durante estos años fueron el Motorola 6800 (1974), Microchip PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976), y Motorola 6809 (1978), así como otros.
[editar] El primer diseño x86
Artículo principal: x86
El proyecto 8086 comenzó en mayo de 1976 y fue pensado originalmente como un sustituto temporal para el ambicioso y retrasado proyecto del iAPX 432. Era un intento de robar la atención de los menos retrasados procesadores de 16 y 32 bits de los otros fabricantes (tales como Motorola, Zilog, y National Semiconductor) y al mismo tiempo contrarrestar la amenaza del Zilog Z80, que llegó a ser muy exitoso (diseñado por anteriores empleados de Intel). Por lo tanto, tanto la arquitectura y el chip físico fueron desarrollados algo rápidamente por un pequeño grupo de personas, y usando los mismos elementos básicos de la microarquitectura y técnicas físicas de implementación que fueron empleadas para el ligeramente más viejo 8085 (y para el cuál el 8086 también funcionaría como una continuación).
Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente en lenguaje ensamblador en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Abajo se ve un texto en hexadecimal y ASCII.
Mercadeado como compatible a nivel de código fuente, el 8086 fue diseñado de modo que el lenguaje ensamblador para el 8008, 8080, o el 8085 pudiera ser convertido automáticamente en (subóptimo) código fuente equivalente del 8086, con poca o ninguna edición a mano. Para hacer esto posible, el modelo de programación y el conjunto de instrucciones fueron (flojamente) basados en el 8080. Sin embargo, el diseño del 8086 fue ampliado para soportar el completo procesamiento de 16 bits, en vez de las bastante básicas capacidades de 16 bits del 8080/8085.
También fueron agregadas nuevas clases de instrucciones; soporte total para enteros con signo, direccionamiento de base + offset, y las operaciones auto-repetidas fueron semejantes a las del diseño del Z80[4] pero todas fueron hechas levemente más generales en el 8086. También fueron agregadas instrucciones que soportaban las funciones anidadas de la familia de lenguajes ALGOL tales como Pascal y PL/M. De acuerdo al principal arquitecto Stephen P. Morse, ésto fue un resultado de un acercamiento más centrado en el software que en el que hubo en el diseño de procesadores anteriores de Intel (los diseñadores tenían experiencia trabajando con implementaciones de compiladores). Otras mejoras incluyeron instrucciones de multiplicación y división por microcódigo y una estructura de bus mejor adaptada para futuros coprocesadores (tales como el 8087 y el 8089) y a los sistemas de multiprocesadores.
La primera revisión del conjunto de instrucciones y la arquitectura de alto nivel estaba lista después de cerca de tres meses,[5] y como no fue usada casi ninguna herramienta CAD, cuatro ingenieros y 12 personas de diagramación estaban simultáneamente trabajando en el chip.[6] El 8086 tomó un poco más de dos años desde la idea hasta el producto trabajando, lo que fue considerado algo rápido para un complejo diseño en 1976-1978.
El 8086 fue secuenciado[7] usando una mezcla al azar de lógica y microcódigo y fue implementado usando circuitería de depletion load nMOS con aproximadamente 20.000 transistores activos (29.000 contando todos los sitios del ROM y el PLA). Pronto fue movido a un nuevo proceso de fabricación refinado de nMOS llamado HMOS (por High performance MOS) que Intel desarrolló originalmente para la fabricación de productos de RAM estática rápida.[8] Esto fue seguido por versiones de HMOS-II, HMOS-III, y, eventualmente, una versión completamente estática de CMOS para dispositivos energizados con baterías, manufacturados usando los procesos de CHMOS de Intel.[9] El chip original midió 33 mm² y el mínimo tamaño fue de 3.2 µm.
La arquitectura fue definida por Stephen P. Morse con cierta ayuda y asistencia de Bruce Ravenel (el arquitecto del 8087) en refinar las revisiones finales. Los diseñadores de la lógica Jim McKevitt y John Bayliss fueron los ingenieros que encabezaban el equipo de desarrollo de nivel de hardware,[10] y William Pohlma el gerente para el proyecto. La herencia del 8086 perdura en el conjunto de instrucción básico de los computadores personales y servidores de hoy; el 8086 también prestó sus últimos dos dígitos a posteriores versiones extendidas de diseño, tales como el Intel 286 y el Intel 386, todas las cuales eventualmente serían conocidas como la familia x86. (Otra referencia es que la identificación de vendedor del PCI para los dispositivos de Intel es 8086h!)
[editar] Estructura interna
[editar] La Unidad de Interfaz del Bus y la Unidad de ejecución
Diagrama de bloque de los microprocesadores Intel 8086 y 8088.
1 Bloque de registros de propósito general
2 Bloque de registros de segmento y registro IP
3 Sumador de direcciones
4 Bus de direcciones interno
5 Cola de instrucciones (4 bytes para el 8088 y 6 bytes para el 8086)
6 Unidad de control (muy simplificada)
7 Interfaz del bus
8 Bus de datos interno
9 Unidad aritmético lógica (ALU)
10, 11, 12 Bus de direcciones, datos y control externos
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus y la Unidad de ejecución (Bus Interface Unit (BIU) y Execution Unit (EU)).
• La Unidad de Ejecución procesa las instrucciones del CPU. Está conformada por los registros generales, los registros índice y apuntadores, los flags, la unidad aritmético lógica, y la lógica de control que maneja todo el proceso para ejecutar las instrucciones.
• La Unidad de Interfaz del Bus maneja la lectura y escritura desde y hacia la memoria y los puertos de entrada/salida. Está conformada por los registros de segmento, una cola de 4 bytes para instrucciones en el 8088 y de 6 en el 8086, y lógica para controlar los buses externos del microprocesador.
En la figura de la derecha, la Unidad de Ejecución se encuentra en la parte de abajo y la Unidad de Interfaz del Bus está en la parte superior. Las dos están interconectadas mediante un bus interno.
[editar] Registros
Registros de propósito general
AH AL AX (Acumulador)
BH BL BX (Base)
CH CL CX (Contador)
DH DL DX (Datos)
Registros índices
SI Source Index (Índice origen)
DI Destination Index (Índice Destino)
BP Base Pointer (Puntero Base)
SP Stack Pointer (Puntero de Pila)
Registro de Bandera
- - - - O D I T S Z - A - P - C Flags (Banderas)
Registros de Segmentos
CS Code Segment (Segmento de Código)
DS Data Segment (Segmento de Datos)
ES ExtraSegment (Segmento Extra)
SS Stack Segment (Segmento de Pila)
Registro apuntador de instrucciones
IP Instruction Pointer
Modelo de los registros
Los registros del i8086 e i8088 se basaron en el diseño del Intel 8080 y el Intel 8085, y de hecho son compatibles a nivel de lenguaje ensamblador con el i8080. El conjunto de registros también es similar al del i8080, pero ampliados a 16 bits. Tanto el i8086 como el i8088 tienen cuatro registros de propósito general de 16 bits, que también pueden ser accedidos como ocho registros de 8 bits, y tienen cuatro registros índice de 16 bits (incluyendo el puntero de pila). Los registros de datos se usan a veces de forma implícita por las instrucciones, haciendo más difícil la organización de los registros para emplearlos con valores temporales.
Los registros del procesador, se usan para contener los datos con que se está trabajando ya que el acceso a los registros es mucho mas rápido que los accesos a memoria. Se pueden realizar operaciones aritméticas y lógicas, comparaciones, entre otras. Se pueden hacer estas operaciones con todos los registros excepto los de segmento, el IP, y los flags.
[editar] Registros de Propósito General
Los registros de propósito general son el AX, BX, CX, y DX, de 16 bits. Cada uno de ellos se divide en dos registros de 8 bits, llamados AH
...