El Intel 8086 y el Intel 8088 (i8086, llamados oficialmente iAPX 86, e i8088) son los primeros microprocesadores de 16 bits diseñados por Intel. Fueron el inicio y los primeros miembros de la arquitectura x86. El trabajo de desarrollo para el 8086 comenzó en la primavera de 1976 y fue lanzando al mercado el 8 de junio de 1978. El 8088 fue lanzado el 1 de junio de 1979.
El 8086 y el 8088 ejecutan el mismo conjunto de instrucciones. Internamente son idénticos, excepto que el 8086 tiene una cola de 6 bytes para instrucciones y el 8088 de solo 4. Exteriormente se diferencian en que el 8086 tiene un bus de datos de 16 bits y el del 8088 es de solo 8 bits, por ello, el 8086 era más rápido. Por otro lado, el 8088 podía usar menos circuitos lógicos de soporte, lo que permitía la fabricación de sistemas más económicos.
El 8088 fue el microprocesador usado para el primer computador personal de IBM, el IBM PC, que salió al mercado en agosto de 1981. Hay que tener en cuenta que la mayoría del hardware, de principios de los 80, era de 8 bits, y más barato. El hardware de 16 bits era casi inexistente en 1981 y carísimo.
Historia Antecedentes El 8088 fue diseñado en Israel, en el laboratorio Intel de Haifa, al igual que un gran número de otros procesadores Intel. En 1972, Intel lanzó el 8008, el primer microprocesador de 8 bits.using enhancement load pMOS logic (demanding 14V, achieving TTL-compatibility by having VCC at +5V and VDD at -9V) El 8008 implementó un conjunto de instrucciones diseñado por la corporación Datapoint la cual tenía en mente hacer terminales de CRT programables. El 8008 también demostró ser bastante de propósito general. El dispositivo necesitó de varios circuitos integrados adicionales para producir un computador funcional, en parte, debido a su pequeño «paquete de memoria» de 18 pines, el cual 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,using non-saturated enhancement load nMOS logic (demanding a higher gate voltage for the load transistor-gates) empleando los nuevos paquetes DIL de 40 pines desarrollados originalmente para circuitos integrados 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 como el 8080. También se incluyeron algunas instrucciones de 16 bits en el 8080 para hacer de su programación más entendible. El dispositivo 8080, con frecuencia descrito como el primer microprocesador verdaderamente útil, fue finalmente sustituido por el 8085, basándose en la 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 2 chips anteriores.made possible with depletion load nMOS logic (the 8085 was later made using HMOS processing, just like the 8086) Otros microprocesadores de 8 bits bien conocidos que emergieron durante estos años fueron el Motorola 6800 (1974), MOS Technology 6502 (1975), Zilog Z80 (1976), y Motorola 6809 (1978), así como otros.
El primer diseño 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.
Fue un intento de robar la atención de los menos retrasados procesadores de 16 y 32 bits de los otros fabricantes (tales como Motorola, Inc., 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 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 las cuales fueron empleadas para el ligeramente más viejo 8085 (y para el cual el 8086 también funcionaría como una continuación).
thumbnail|400px|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.
Comercializado 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 ligeramente 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 básicas capacidades de 16 bits del 8080/8085.
También fueron agregadas nuevas clases de instrucciones, compatibilidad para enteros con signo, direccionamiento de base + offset, y las operaciones auto-repetidas fueron semejantes a las del diseño del Z80,Birth of a Standard: The Intel 8086 Microprocessor. Thirty years ago, Intel released the 8086 processor, introducing the x86 architecture that underlies every PC-Windows, Mac, or Linux-produced today , PC World, June 17, 2008 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, esto 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,Rev.0 of the instruction set and architecture was ready in about 3 months, according to Morse. y como no fue usada casi ninguna herramienta CAD, cuatro ingenieros y 12 personas de diagramación estaban simultáneamente trabajando en el chip.Using rubylith, light boards, rulers, electric erasers, and a digitizer (according to Jenny Hernandez, member of the 8086 design team, in a statement made on Intel's web-page for its 25th birthday). 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 secuenciado8086 used less microcode than many competitors designs, such as the MC68000 and others 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.Fast static RAMs in MOS technology (as fast as bipolar RAMs) was an important product for Intel during this period. Esto fue seguido por versiones de HMOS-II, HMOS-III, y, finalmente, una versión completamente estática de CMOS para dispositivos energizados con baterías, manufacturados usando los procesos de CHMOS de Intel.CHMOS is intels name for CMOS circuits manufactured using processing steps very similar to HMOS. 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,Other members of the design team were Peter A.Stoll and Jenny Hernandez. 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 finalmente 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!)
Estructura interna
thumb|350px|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
Unidad de interfaz del bus y unidad de ejecución
El 8086 y el 8088 tienen internamente dos componentes, la Unidad de Interfaz del Bus y la Unidad de ejecución (Bus Interfaz 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.
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 puesto que el acceso a los registros es mucho más 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.
Registros de Propósito General
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