El 8086 [ 3 ] (también llamado iAPX 86 ) [ 4 ] es un chip microprocesador de 16 bits lanzado por Intel el 8 de junio de 1978 [ 5 ] después de que su desarrollo comenzara a principios de 1976. [ 6 ] Le siguió el Intel 8088 en 1979, [ 7 ] que era un chip ligeramente modificado con un bus de datos externo de 8 bits (lo que permitía el uso de circuitos integrados de soporte más baratos y en menor cantidad ). [ nota 1 ]
El 8086 dio origen a la arquitectura x86 , que con el tiempo se convirtió en la línea de procesadores más exitosa de Intel. El 5 de junio de 2018, Intel lanzó una CPU de edición limitada para celebrar el 40.º aniversario del Intel 8086, llamada Intel Core i7-8086K . [ 5 ]
Historia
Fondo
En 1972, Intel lanzó el 8008 , el primer microprocesador de 8 bits de Intel. [ nota 2 ] Implementaba un conjunto de instrucciones diseñado por Datapoint Corporation pensando en terminales CRT programables , que también demostró ser bastante versátil. El dispositivo necesitaba varios circuitos integrados adicionales para producir una computadora funcional, en parte debido a que estaba empaquetado en un pequeño encapsulado de memoria de 18 pines, lo que descartaba el uso de un bus de direcciones independiente (Intel era principalmente un fabricante de DRAM en ese momento).
Dos años después, Intel lanzó el 8080 , empleando los nuevos paquetes DIL de 40 pines desarrollados originalmente para circuitos integrados de calculadoras para habilitar un bus de direcciones separado. Tenía un conjunto de instrucciones extendido que era compatible a nivel de código fuente (no binario ) con el 8008 [ 8 ] y también incluía algunas instrucciones de 16 bits para facilitar la programación. El dispositivo 8080 fue finalmente reemplazado por el 8085 (1977) basado en carga de agotamiento , que usaba una única fuente de alimentación de +5 V en lugar de los tres voltajes de operación diferentes de los chips anteriores. [ nota 3 ] Otros microprocesadores de 8 bits bien conocidos que surgieron durante estos años son Motorola 6800 (1974), General Instrument PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976) y Motorola 6809 (1978).
El primer diseño x86
El proyecto 8086 comenzó en mayo de 1976 [ 9 ] y originalmente fue concebido como un sustituto temporal del ambicioso y retrasado proyecto iAPX 432. Fue un intento de desviar la atención de los procesadores de 16 y 32 bits de otros fabricantes, que sufrieron menos retrasos: Motorola , Zilog y National Semiconductor .
Aunque el 8086 era un microprocesador de 16 bits, utilizaba una arquitectura similar a la de los microprocesadores de 8 bits de Intel (8008, 8080 y 8085). Esto permitió que los programas en lenguaje ensamblador escritos en 8 bits migraran sin problemas . [ 10 ] Se añadieron nuevas instrucciones y características, como enteros con signo, direccionamiento base+desplazamiento y operaciones autorrepetitivas. Se añadieron instrucciones para facilitar la compilación del código fuente de funciones anidadas en la familia de lenguajes ALGOL , incluidos Pascal y PL/M . Según el arquitecto principal Stephen P. Morse , esto fue resultado de un enfoque más centrado en el software. Otras mejoras incluyeron instrucciones de microcódigo para las instrucciones de multiplicación y división en lenguaje ensamblador. Los diseñadores también previeron coprocesadores , como el 8087 y el 8089 , por lo que la estructura del bus se diseñó para ser flexible.
La primera revisión del conjunto de instrucciones y la arquitectura de alto nivel estuvo lista después de unos tres meses [ nota 4 ] , y como casi no se utilizaron herramientas CAD, cuatro ingenieros y doce diseñadores de circuitos integrados trabajaron simultáneamente en el chip [ nota 5 ] . El 8086 tardó poco más de dos años desde la idea hasta el producto funcional, lo que se consideró rápido para un diseño complejo en la década de 1970.
El 8086 fue secuenciado [ nota 6 ] utilizando una mezcla de lógica aleatoria [ 11 ] y microcódigo , y se implementó utilizando circuitos nMOS de carga de agotamiento con aproximadamente 20 000 transistores activos (29 000 contando todos los sitios ROM y PLA ). Pronto se pasó a un nuevo proceso de fabricación nMOS refinado llamado HMOS (por High performance MOS) que Intel desarrolló originalmente para la fabricación de productos RAM estática rápidos . [ nota 7 ] A esto le siguieron las versiones HMOS-II, HMOS-III y, finalmente, una versión CMOS totalmente estática para dispositivos alimentados por batería, fabricada utilizando los procesos CHMOS de Intel . [ nota 8 ] El chip original medía 33 mm² y el tamaño mínimo de característica era de 3,2 μm. Las instrucciones MUL y DIV eran muy lentas debido a que estaban microcodificadas, por lo que los programadores x86 generalmente solo usaban las instrucciones de desplazamiento de bits para multiplicar y dividir en su lugar.
El microcontrolador 8086 se miniaturizó a 2 μm en 1981; esta versión también corrigió un error en el registro de pila de los chips originales de 3,5 μm. Las variantes posteriores de 1,5 μm y CMOS se subcontrataron a otros fabricantes y no se desarrollaron internamente.
La arquitectura fue definida por Stephen P. Morse con la ayuda de Bruce Ravenel (el arquitecto del 8087) para refinar las revisiones finales. El diseñador lógico Jim McKevitt y John Bayliss fueron los ingenieros principales del equipo de desarrollo a nivel de hardware [ nota 9 ] y Bill Pohlman el gerente del proyecto. El legado del 8086 perdura en el conjunto de instrucciones básicas de las computadoras personales y servidores actuales; el 8086 también prestó sus dos últimos dígitos a versiones extendidas posteriores del diseño, como el Intel 286 y el Intel 386 , que finalmente se conocieron como la familia x86 . Además, el ID de proveedor PCI para los dispositivos de sistema producidos por Intel es 8086. [ 12 ]
Detalles

Autobuses y operación
Todos los registros internos, así como los buses de datos internos y externos, son de 16 bits de ancho, lo que estableció firmemente la identidad de "microprocesador de 16 bits" del 8086. Un bus de direcciones externo de 20 bits proporciona un espacio de direcciones físicas de 1 MiB (2 20 = 1.048.576 x 1 byte ). Este espacio de direcciones se direcciona mediante la "segmentación" de memoria interna. El bus de datos se multiplexa con el bus de direcciones para que todas las líneas de control quepan en un paquete estándar de 40 pines en línea dual . Proporciona un bus de direcciones de E/S de 16 bits, que admite 64 KB de espacio de E/S separado. El espacio de direcciones lineal máximo está limitado a 64 KB, simplemente porque los registros de direcciones/índices internos son solo de 16 bits de ancho. La programación sobre límites de memoria de 64 KB implica ajustar los registros de segmento (ver más abajo); Esta dificultad existió hasta que la arquitectura 80386 introdujo registros más amplios (de 32 bits) (el hardware de gestión de memoria del 80286 no ayudó en este sentido, ya que sus registros siguen siendo de solo 16 bits de ancho).
Modos de hardware del 8086
Algunos de los pines de control, que transmiten señales esenciales para todas las operaciones externas, tienen más de una función dependiendo de si el dispositivo opera en modo mínimo o máximo . El primer modo está diseñado para sistemas pequeños de un solo procesador, mientras que el segundo es para sistemas medianos o grandes que utilizan más de un procesador (una especie de modo multiprocesador). El modo máximo es necesario cuando se utiliza un coprocesador 8087 o 8089. El voltaje en el pin 33 (MN/ MX ) determina el modo. Cambiar el estado del pin 33 cambia la función de otros pines, la mayoría de los cuales tienen que ver con cómo la CPU maneja el bus (local). [ nota 10 ] El modo generalmente está cableado en el circuito y, por lo tanto, no se puede cambiar por software. El funcionamiento de estos modos se describe en términos de diagramas de temporización en las hojas de datos y manuales de Intel. En el modo mínimo, todas las señales de control son generadas por el propio 8086.
Registros e instrucciones
El 8086 tiene ocho registros de 16 bits más o menos generales (incluido el puntero de pila , pero excluyendo el puntero de instrucciones, el registro de banderas y los registros de segmento). Cuatro de ellos, AX, BX, CX, DX, también pueden ser accedidos como pares de registros de 8 bits (véase la figura), mientras que los otros cuatro, SI, DI, BP, SP, son solo de 16 bits. [ 13 ]
Gracias a una codificación compacta inspirada en los procesadores de 8 bits, la mayoría de las instrucciones son operaciones de una o dos direcciones, lo que significa que el resultado se almacena en uno de los operandos. Como máximo, uno de los operandos puede estar en memoria, pero este operando en memoria también puede ser el destino , mientras que el otro operando, el origen , puede ser un registro o un valor inmediato . Una única ubicación de memoria también puede usarse a menudo como origen y destino , lo que, entre otros factores, contribuye a una densidad de código comparable (y a menudo superior) a la de la mayoría de las máquinas de ocho bits de la época.
El grado de generalidad de la mayoría de los registros es mucho mayor que en los 8080 o 8085. Sin embargo, los registros del 8086 eran más especializados que en la mayoría de los miniordenadores contemporáneos y también se utilizan implícitamente en algunas instrucciones. Si bien esto es perfectamente comprensible para el programador de ensamblador, complica la asignación de registros para los compiladores en comparación con los procesadores de 16 y 32 bits más ortogonales de la época, como el PDP-11 , VAX , 68000 , 32016 , etc. Por otro lado, al ser más regulares que los microprocesadores de 8 bits, bastante minimalistas pero omnipresentes, como el 6502 , 6800 , 6809 , 8085 , MCS-48 , 8051 y otras máquinas contemporáneas basadas en acumuladores, es significativamente más fácil construir un generador de código eficiente para la arquitectura 8086.
Otro factor que influye en esto es que el 8086 también introdujo algunas instrucciones nuevas (no presentes en los 8080 y 8085) para brindar un mejor soporte a lenguajes de programación de alto nivel basados en pila, como Pascal y PL/M ; algunas de las instrucciones más útiles son y ret size , que admiten directamente la " convención de llamada de Pascal ". (Varias otras, como y , se agregaron en los procesadores posteriores 80186, 80286 y 80386).pushmem-oppush immedenter
Se admite una pila de 64 KB (un segmento) que crece hacia direcciones más bajas en el hardware ; las palabras de 16 bits se insertan en la pila, y la parte superior de la pila está apuntada por SS:SP. Hay 256 interrupciones , que pueden ser invocadas tanto por hardware como por software. Las interrupciones pueden propagarse en cascada, utilizando la pila para almacenar las direcciones de retorno .
El microcontrolador 8086 dispone de 64 KB de espacio para puertos de E/S de 8 bits (o, alternativamente, 32 KB de palabras de 16 bits) .
Banderas
El 8086 tiene un registro de indicadores de 16 bits . Nueve de estos indicadores de código de condición están activos e indican el estado actual del procesador: indicador de acarreo (CF), indicador de paridad (PF), indicador de acarreo auxiliar (AF), indicador de cero (ZF), indicador de signo (SF), indicador de trampa (TF), indicador de interrupción (IF), indicador de dirección (DF) e indicador de desbordamiento (OF). También conocido como palabra de estado, la disposición del registro de indicadores es la siguiente: [ 14 ]
Segmentación
También existen cuatro registros de segmento de 16 bits (véase la figura) que permiten a la CPU 8086 acceder a un megabyte de memoria de una forma inusual. En lugar de concatenar el registro de segmento con el registro de dirección, como en la mayoría de los procesadores cuyo espacio de direcciones supera el tamaño de sus registros, el 8086 desplaza el segmento de 16 bits cuatro bits a la izquierda antes de sumarlo al desplazamiento de 16 bits (16 × segmento + desplazamiento), generando así una dirección externa (o efectiva o física) de 20 bits a partir del par segmento:desplazamiento de 32 bits. Como resultado, cualquier dirección externa podría ser referenciada por hasta 2¹² = 4096 pares segmento:desplazamiento diferentes. [ 15 ]
Aunque muchos programadores lo consideran complicado y engorroso, este esquema también tiene ventajas: un programa pequeño (menos de 64 KB) se puede cargar a partir de un desplazamiento fijo (como 0000) en su propio segmento, evitando la necesidad de reubicación , con un desperdicio de alineación de como máximo 15 bytes.
Los compiladores para la familia 8086 suelen admitir dos tipos de punteros : cercanos y lejanos . Los punteros cercanos son desplazamientos de 16 bits asociados implícitamente al segmento de código o datos del programa, por lo que solo pueden usarse dentro de partes del programa lo suficientemente pequeñas como para caber en un segmento. Los punteros lejanos son pares segmento:desplazamiento de 32 bits que se resuelven en direcciones externas de 20 bits. Algunos compiladores también admiten punteros enormes , que son similares a los punteros lejanos, excepto que la aritmética de punteros en un puntero enorme lo trata como un puntero lineal de 20 bits, mientras que la aritmética de punteros en un puntero lejano se despliega dentro de su desplazamiento de 16 bits sin tocar la parte del segmento de la dirección.
Para evitar tener que especificar punteros cercanos y lejanos en numerosos punteros, estructuras de datos y funciones, los compiladores también admiten "modelos de memoria" que especifican tamaños de puntero predeterminados. Los modelos tiny (máx. 64K), small (máx. 128K), compact (datos > 64K), medium (código > 64K), large (código, datos > 64K) y huge (matrices individuales > 64K) cubren combinaciones prácticas de punteros cercanos, lejanos y huge para código y datos. El modelo tiny implica que el código y los datos se comparten en un único segmento, como en la mayoría de los procesadores de 8 bits, y se puede usar para crear archivos .com, por ejemplo. Las bibliotecas precompiladas suelen venir en varias versiones compiladas para diferentes modelos de memoria.
Según Morse et al., [ 16 ] los diseñadores contemplaron usar un desplazamiento de 8 bits (en lugar de 4 bits) para crear un espacio de direcciones físicas de 16 MB. Sin embargo, dado que esto habría obligado a que los segmentos comenzaran en límites de 256 bytes, y 1 MB se consideraba muy grande para un microprocesador alrededor de 1976, la idea fue descartada. Además, no había suficientes pines disponibles en un paquete de 40 pines de bajo costo para los cuatro pines adicionales del bus de direcciones.
En principio, el espacio de direcciones de la serie x86 podría haberse ampliado en procesadores posteriores aumentando el valor de desplazamiento, siempre que las aplicaciones obtuvieran sus segmentos del sistema operativo y no hicieran suposiciones sobre la equivalencia de diferentes pares segmento:desplazamiento. [ nota 11 ] En la práctica, el uso de punteros "enormes" y mecanismos similares estaba muy extendido, y el direccionamiento plano de 32 bits, posible gracias a los registros de desplazamiento de 32 bits del 80386, acabó ampliando el rango de direccionamiento limitado de forma más general.
El flujo de instrucciones se obtiene de la memoria como palabras y el procesador lo direcciona internamente a nivel de byte según sea necesario. Un mecanismo de cola de flujo de instrucciones permite que se encolan hasta 6 bytes del flujo de instrucciones mientras se espera su decodificación y ejecución. La cola actúa como un búfer FIFO ( primero en entrar, primero en salir ), del cual la Unidad de Ejecución (UE) extrae los bytes de instrucción según se requiera. Siempre que haya espacio para al menos dos bytes en la cola, la BIU intentará un ciclo de memoria de obtención de palabras. Si la cola está vacía (después de una instrucción de salto, por ejemplo), el primer byte que se introduce en la cola queda inmediatamente disponible para la UE. [ 17 ]
Adaptación de software antiguo
Los programas pequeños podían ignorar la segmentación y usar simplemente el direccionamiento de 16 bits. Esto permitía portar fácilmente software de 8 bits al 8086. MS-DOS aprovechó esta característica al proporcionar una interfaz de programación de aplicaciones muy similar a CP/M , además de incluir el formato de archivo ejecutable .com , idéntico al de CP/M. Esto fue importante cuando el 8086 y MS-DOS eran nuevos, ya que permitió que muchas aplicaciones existentes de CP/M (y otras) estuvieran disponibles rápidamente, facilitando enormemente la adopción de la nueva plataforma.
Interrumpe

Las interrupciones en el microprocesador 8086 pueden iniciarse por software o por hardware. Son llamadas largas que también guardan el estado del procesador. Las rutinas de interrupción suelen finalizar con una IRETinstrucción. Todas las interrupciones tienen un número de interrupción de 8 bits asociado. Este número se utiliza para buscar un segmento:desplazamiento en una tabla de vectores de interrupción de 256 elementos , almacenada en las direcciones 0-3FFH. Cuando se produce cualquier tipo de interrupción, se actualiza el estado del procesador, se envían los registros CS e IP, y el número de interrupción se multiplica por cuatro para indexar una nueva dirección de ejecución, que se carga desde la tabla de vectores.
Hay tres tipos de instrucciones de interrupción de software : INT n, INTO, y un byte único INT 3utilizado para la depuración.
Existen dos tipos de interrupciones de hardware: enmascarables y no enmascarables.
Las interrupciones no enmascarables tienen mayor prioridad que las interrupciones enmascarables. No se pueden deshabilitar mediante la habilitación de interrupciones. Una transición de bajo a alto en el pin NMI esencialmente provoca la INT 2ejecución de una interrupción.
Las interrupciones enmascarables se habilitan y deshabilitan mediante las instrucciones STIy CLIrespectivamente. Cuando un dispositivo de hardware activa la señal INTR, el 8086 activa INTA dos veces, leyendo un número de interrupción de 8 bits del bus. Este número se multiplica por cuatro para apuntar a la dirección de la rutina de servicio de interrupción asociada en la tabla de vectores. Las interrupciones enmascarables se deshabilitan cuando se activa INTA, pero se vuelven a habilitar al ejecutar la IRETinstrucción al final de la rutina de servicio de interrupción. [ 17 ]
Código de ejemplo
El siguiente código fuente en lenguaje ensamblador 8086 corresponde a una subrutina que copia una cadena de caracteres ASCIIZ_strtolower terminada en nulo de una ubicación a otra, convirtiendo todos los caracteres alfabéticos a minúsculas. La cadena se copia byte a byte (caracter de 8 bits).
El código de ejemplo utiliza el registro BP (puntero base) para establecer un marco de llamada , un área en la pila que contiene todos los parámetros y variables locales para la ejecución de la subrutina. Este tipo de convención de llamada admite código reentrante y recursivo , y ha sido utilizado por lenguajes tipo Algol desde finales de la década de 1950. Se asume un modelo de memoria plana; específicamente, que los segmentos DS y ES direccionan la misma región de memoria.
Actuación

Aunque parcialmente eclipsado por otras decisiones de diseño en este chip en particular, los buses de direcciones y datos multiplexados limitan ligeramente el rendimiento; las transferencias de cantidades de 16 o 8 bits se realizan en un ciclo de acceso a memoria de cuatro relojes, que es más rápido en cantidades de 16 bits, aunque más lento en cantidades de 8 bits, en comparación con muchas CPU contemporáneas basadas en 8 bits. A medida que las instrucciones varían de uno a seis bytes, la búsqueda y la ejecución se hacen concurrentes y se desacoplan en unidades separadas (como sigue ocurriendo en los procesadores x86 actuales): la unidad de interfaz de bus alimenta el flujo de instrucciones a la unidad de ejecución a través de una cola de prebúsqueda de 6 bytes (una forma de segmentación débilmente acoplada ), lo que acelera las operaciones en registros e inmediatos , mientras que las operaciones de memoria se vuelven más lentas (cuatro años después, este problema de rendimiento se solucionó con los 80186 y 80286 ). Sin embargo, la arquitectura completa (en lugar de parcial) de 16 bits con una ALU de ancho completo permitió que las instrucciones aritméticas de 16 bits se ejecutaran con un solo ciclo de ALU (en lugar de dos, mediante acarreo interno, como en los 8080 y 8085), acelerando considerablemente dichas instrucciones. Junto con la ortogonalización de las operaciones frente a los tipos de operandos y los modos de direccionamiento , así como otras mejoras, esto hizo que la ganancia de rendimiento con respecto a los 8080 o 8085 fuera bastante significativa, a pesar de que en algunos casos los chips más antiguos pueden ser más rápidos (véase más abajo).
- EA = tiempo para calcular la dirección efectiva, que oscila entre 5 y 12 ciclos.
- Los tiempos indicados son los mejores posibles y dependen del estado de la precarga, la alineación de las instrucciones y otros factores.
Como se puede observar en estas tablas, las operaciones en registros e inmediatos eran rápidas (entre 2 y 4 ciclos), mientras que las instrucciones de operandos de memoria y los saltos eran bastante lentos; los saltos requerían más ciclos que en los sencillos 8080 y 8085 , y el 8088 (utilizado en el IBM PC) se veía además perjudicado por su bus más estrecho. Las razones por las que la mayoría de las instrucciones relacionadas con la memoria eran lentas eran tres:
- Las unidades de búsqueda y ejecución débilmente acopladas son eficientes para la prebúsqueda de instrucciones, pero no para saltos y acceso aleatorio a datos (sin medidas especiales).
- No se disponía de un sumador dedicado para el cálculo de direcciones; las rutinas de microcódigo tenían que utilizar la ALU principal para ello (aunque existía un sumador dedicado de segmento + desplazamiento ).
- Los buses de direcciones y datos estaban multiplexados , lo que obligaba a un ciclo de bus ligeramente más largo (entre un 33 % y un 50 %) que en los procesadores de 8 bits contemporáneos típicos.
Sin embargo, el rendimiento de acceso a la memoria mejoró drásticamente con la siguiente generación de procesadores Intel de la familia 8086. Tanto el 80186 como el 80286 contaban con hardware dedicado para el cálculo de direcciones, lo que ahorraba muchos ciclos, y el 80286 también disponía de buses de direcciones y datos separados (no multiplexados).
Punto flotante
Los microprocesadores 8086 y 8088 podían conectarse a un coprocesador matemático para mejorar el rendimiento de punto flotante mediante hardware o microcódigo . El Intel 8087 era el coprocesador matemático estándar para los 8086 y 8088, y operaba con números de 80 bits. Fabricantes como Cyrix (compatible con el 8087) y Weitek ( no compatible con el 8087) desarrollaron posteriormente coprocesadores de punto flotante de alto rendimiento que competían con el 8087.
Versiones con chip
La frecuencia de reloj estaba originalmente limitada a 5 MHz, [ nota 12 ] pero las últimas versiones en HMOS se especificaron para 10 MHz. Las versiones HMOS-III y CMOS se fabricaron durante mucho tiempo (al menos hasta bien entrada la década de 1990) para sistemas embebidos , aunque su sucesor, el 80186/80188 (que incluye algunos periféricos en el chip), ha sido más popular para su uso en sistemas embebidos .
El 80C86, la versión CMOS del 8086, se utilizó en muchos ordenadores portátiles y sistemas integrados, incluidos el GridPad , el Toshiba T1200 , el HP 110 y, finalmente, el Lunar Prospector de 1998-1999 .
En cuanto al encapsulado, el Intel 8086 estaba disponible tanto en encapsulados DIP de cerámica como de plástico.
Una variante de cerámica D8086
Una variante de plástico P8086
Lista de Intel 8086
Derivados y clones
Fujitsu , [ 29 ] Harris / Intersil , OKI , Siemens , Texas Instruments , NEC , Mitsubishi y AMD fabricaron versiones compatibles y, en muchos casos, mejoradas . Por ejemplo, el par NEC V20 y NEC V30 eran compatibles a nivel de hardware con los 8088 y 8086, aunque NEC fabricó clones originales de Intel, μPD8088D y μPD8086D respectivamente, pero incorporaron el conjunto de instrucciones del 80186 junto con algunas (pero no todas) las mejoras de velocidad del 80186, lo que proporcionó una capacidad de actualización directa tanto del conjunto de instrucciones como de la velocidad de procesamiento sin que los fabricantes tuvieran que modificar sus diseños. Estos procesadores compatibles con el 8086, relativamente simples y de bajo consumo en CMOS, todavía se utilizan en sistemas embebidos.
La industria electrónica de la Unión Soviética logró replicar el 8086 mediante espionaje industrial e ingeniería inversa . El chip resultante, el K1810VM86 , era compatible en binario y en pines con el 8086.
Los procesadores i8086 e i8088 eran, respectivamente, los núcleos de las computadoras de escritorio EC1831 y EC1832 , compatibles con PC y fabricadas en la Unión Soviética. (EC1831 es la identificación EC del IZOT 1036C y EC1832 es la identificación EC del IZOT 1037C, desarrollados y fabricados en Bulgaria. EC significa Единая Система). Sin embargo, la computadora EC1831 (IZOT 1036C) presentaba diferencias de hardware significativas con respecto al prototipo de la IBM PC. La EC1831 fue la primera computadora compatible con PC con dimensionamiento dinámico del bus (Patente de EE. UU. n.° 4,831,514). Posteriormente, algunos de los principios de la norma EC1831 fueron adoptados en la PS/2 (Patente estadounidense n.º 5.548.786) y en otras máquinas (Solicitud de patente británica, publicación n.º GB-A-2211325, publicada el 28 de junio de 1989).
Chips de soporte
- Intel 8237 : controlador de acceso directo a memoria (DMA)
- Intel 8251 : receptor/transmisor síncrono/asíncrono universal a 19,2 kbit/s
- Intel 8253 : temporizador de intervalo programable, 3 x 16 bits, máximo 10 MHz
- Intel 8255 : interfaz periférica programable, 3 pines de E/S de 8 bits utilizados para la conexión de impresoras, etc.
- Intel 8259 : controlador de interrupciones programable
- Intel 8279 : controlador de teclado/pantalla, escanea una matriz de teclado y una matriz de pantalla como la de 7 segmentos.
- Intel 8282 / 8283 : Latch de 8 bits
- Intel 8284 : generador de reloj
- Intel 8286 / 8287 : controlador bidireccional de 8 bits. En 1980, ambas versiones Intel I8286/I8287 (de grado industrial) estaban disponibles por US$16,25 en cantidades de 100. [ 20 ]
- Intel 8288 : controlador de bus
- Intel 8289 : árbitro de bus
- NEC μPD765 o Intel 8272A : controlador de disquete [ 30 ]
Microcomputadoras que utilizan el 8086
- El ordenador de placa única compatible con Intel Multibus ISBC 86/12 se anunció en 1978. [ 31 ]
- El Xerox NoteTaker fue uno de los primeros diseños de ordenadores portátiles en 1978 y utilizaba tres chips 8086 (como CPU, procesador gráfico y procesador de E/S), pero nunca llegó a producirse comercialmente.
- Seattle Computer Products comenzó a comercializar sistemas 8086 (SCP200B) basados en el bus S-100 ya en noviembre de 1979.
- El Mycron 2000 noruego, introducido en la década de 1980.
- El primer Compaq Deskpro utilizaba un procesador 8086 que funcionaba a 7,16 MHz, pero era compatible con tarjetas de expansión diseñadas para el IBM PC XT de 4,77 MHz y podía reducir la velocidad de la CPU a una velocidad menor (lo que también activaba un búfer de bus de memoria para simular el acceso más lento del 8088) para evitar problemas de sincronización del software.
- El AT&T 6300 PC (fabricado por Olivetti y conocido mundialmente bajo diversas marcas y números de modelo), un microordenador de sobremesa compatible con IBM PC, utilizaba un procesador 8086-2 de 8 MHz . El M24/PC 6300 dispone de ranuras de expansión de 8 bits compatibles con IBM PC/XT, pero algunas de ellas incorporan una extensión propietaria que proporciona el bus de datos completo de 16 bits de la CPU 8086 (similar en concepto a las ranuras de 16 bits del IBM PC AT , pero con diferencias en los detalles de diseño y físicamente incompatible). Todos los periféricos del sistema, incluido el sistema de vídeo integrado, también admiten transferencias de datos de 16 bits. El posterior Olivetti M24SP incorporaba un 8086-2 que funcionaba a la velocidad máxima de 10 MHz.
- Los modelos IBM PS/2 25 y 30 se fabricaron con un procesador 8086 de 8 MHz.
- Los ordenadores Amstrad PC1512 , PC1640 , PC2086, PC3086 y PC5086 utilizaban procesadores 8086 a 8 MHz.
- El NEC PC-9801 .
- Las máquinas Tandy de las series SL y RL de la serie 1000 utilizaban procesadores 8086 de 9,47 MHz.
- La máquina de procesamiento de textos IBM Displaywriter [ 32 ] y la computadora profesional Wang, fabricada por Wang Laboratories , también utilizaban el 8086.
- La NASA utilizó procesadores 8086 originales en equipos para el mantenimiento en tierra del transbordador espacial Discovery hasta el final del programa del transbordador espacial en 2011. Esta decisión se tomó para evitar la regresión del software que podría resultar de una actualización o del cambio a clones imperfectos. [ 33 ]
- Monitores de radiación de área y de proceso KAMAN [ 34 ]
- El Tektronix 4170 funcionaba con CP/M-86 y utilizaba una unidad de procesamiento gráfico local 8086 4170. Manual de instrucciones (PDF)
Uno de los microordenadores más influyentes de todos, el IBM PC , utilizaba el Intel 8088 , una versión del 8086 con un bus de datos de 8 bits .
Véase también
- Recuento de transistores
- iAPX , para el nombre iAPX
Notas
- ↑ Menos búferes TTL, biestables y multiplexores (aunque la cantidad de lógica TTL no se redujo drásticamente). También permite el uso de circuitos integrados económicos de la familia 8080, donde se utilizaron el 8254 CTC, el 8255 PIO y el 8259 PIC en el diseño del IBM PC. Además, simplifica el diseño de la placa de circuito impreso y abarata las placas, así como requiere menos chips DRAM (de 1 o 4 bits).
- ↑ utilizando lógica PMOS de carga mejorada (que requiere 14 V , logrando compatibilidad TTL al tener V CC en +5V y V DD en −9V).
- ↑ Esto fue posible gracias a la lógica nMOS de carga por agotamiento (el 8085 se fabricó posteriormente utilizando procesamiento HMOS, al igual que el 8086).
- Según Morse, la revisión 0 del conjunto de instrucciones y la arquitectura estuvo lista en unos tres meses .
- ↑ Utilizando rubylith , tableros de luz, reglas, borradores eléctricos y un digitalizador (según Jenny Hernandez, miembro del equipo de diseño del 8086, en una declaración realizada en la página web de Intel con motivo de su 25 aniversario).
- ↑ El 8086 utilizaba menos microcódigo que muchos diseños de la competencia, como el MC68000 y otros.
- ↑ Las memorias RAM estáticas rápidas con tecnología MOS (tan rápidas como las memorias RAM bipolares) fueron un producto importante para Intel durante este período.
- ↑ CHMOS es el nombre que Intel le da a los circuitos CMOS fabricados mediante pasos de procesamiento muy similares a los de HMOS .
- ↑ Otros miembros del equipo de diseño fueron Peter A. Stoll y Jenny Hernandez.
- ↑ Los ordenadores IBM PC y PC/XT utilizan un procesador Intel 8088 que funciona en modo máximo, lo que permite que la CPU trabaje con un coprocesador 8087 opcional instalado en el zócalo del coprocesador matemático de la placa base del PC o PC/XT. (Es posible que el PC y el PC/XT requieran el modo máximo por otros motivos, como por ejemplo para admitir el controlador DMA).
- ↑ Algunos clones del 80186 sí modificaron el valor de desplazamiento, pero nunca se utilizaron comúnmente en ordenadores de sobremesa.
- ↑ (El PC IBM utilizaba 4,77 MHz, 4/3 de la frecuencia estándar de ráfaga de color NTSC )
Referencias
- ↑ "El ciclo de vida de una CPU" . www.cpushack.com . Archivado del original el 20 de julio de 2021. Consultado el 26 de enero de 2025 .
- ↑ "Contar los transistores del procesador 8086: es más difícil de lo que parece" . Ken Sherriff. Archivado del original el 28 de diciembre de 2025. Consultado el 27 de enero de 2026 .
- ↑ "Salón de la Fama de los Microprocesadores" . Intel. Archivado del original el 6 de julio de 2007. Consultado el 11 de agosto de 2007 .
- ↑ Referencia del programador de iAPX 286 (PDF) . Intel. 1983. pág. 1-1. Archivado (PDF) del original el 28 de agosto de 2017. Recuperado el 28 de agosto de 2017 .
- 1 2 "Feliz cumpleaños, 8086: el procesador Intel Core i7-8086K de 8.ª generación de edición limitada ofrece una experiencia de juego superior" . Sala de prensa de Intel . Intel. 5 de junio de 2018. Archivado del original el 12 de febrero de 2023.
- ↑ Šojat, Z.; Skala, K.; Rogina, BM; Škoda, P.; Sović, I. (2016). "Implementación de arquitecturas informáticas históricas avanzadas §2.5 Microprocesadores" . En Szewczyk, R.; Kaštelan, I.; Temerinac, M.; Barak, M.; Sruk, V. (eds.). Embedded Engineering Education . Springer. ISBN 978-3-319-27540-6Archivado del original el 13/11/2025 . Consultado el 04/08/2025 .
- ↑ "El procesador 8088" . timeline.intel.com . Intel. Archivado del original el 27 de enero de 2025. Consultado el 26 de enero de 2025 .
- ↑ "Familia 8080" . CPU World . Archivado del original el 27/10/2022 . Consultado el 27/10/2022 .
- ↑ "Nacimiento de un estándar: El microprocesador Intel 8086 cumple 40 años hoy" . PCWorld . Archivado del original el 10 de febrero de 2025. Consultado el 8 de marzo de 2025 .
- ↑ Scanlon, Leo J. (1988). Lenguaje ensamblador 8086/8088/80286 . Brady Books. pág . 12. ISBN 978-0-13-246919-7[
…] El 8086 es compatible con el software del 8080 a nivel de lenguaje ensamblador. […]
- ↑ Geiger, Randall L.; Allen, Phillip E.; Strader, Noel R. (1990). «Formas de lógica aleatoria frente a lógica estructurada». Técnicas de diseño VLSI para circuitos analógicos y digitales . McGraw-Hill. pág. 779. ISBN 0-07-023253-9.— Ilustración del uso de "aleatorio" para describir la lógica de control de la CPU.
- ↑ "PCI\VEN_8086 - Intel Corporation" . Device Hunt . 4 de agosto de 2025. Archivado del original el 23 de agosto de 2025. Consultado el 14 de agosto de 2025 .
- ↑ Morse, Stephen P. (1982). The 8086/8088 Primer: An Introduction to Their Architecture, System Design, and Programming (PDF) (2.ª ed.). Rochelle Park, N. J: Hayden Book Co. ISBN 0-8104-6255-9. Archivado (PDF) del original el 10 de febrero de 2025. Recuperado el 23 de noviembre de 2025 .
- ↑ Intel Corporation (1983). Manual del usuario de IAPX 86, 88, 186 y 188 : referencia del programador . Intel. págs. 3–5 . ISBN 978-0835930352OCLC 11091251
- ↑ Sedory, Daniel B. "El esquema de direccionamiento Segment:Offset" . thestarman.pcministry.com . Archivado del original el 10 de marzo de 2025. Consultado el 6 de marzo de 2025 .
- ↑ Morse, Stephen P.; Ravenel, Bruce W; Mazor, Stanley; Pohlman, William B. (octubre de 1980). " Microprocesadores Intel: del 8008 al 8086" . IEEE Computer . 13 (10): 42–60 . doi : 10.1109/MC.1980.1653375 . S2CID 206445851. Archivado del original el 27 de octubre de 2022. Recuperado el 27 de octubre de 2022 .
- 1 2 "Hoja de datos del procesador HMOS de 16 bits 8086" (PDF) . Intel. Archivado del original (PDF) el 26 de noviembre de 2021. Recuperado el 26 de noviembre de 2021 .
- ↑ Manual de referencia de Microsoft Macro Assembler 5.0 . Microsoft Corporation. 1987.
Los tiempos y codificaciones de este manual se utilizan con permiso de Intel y provienen de las siguientes publicaciones: Intel Corporation. Manual del usuario de iAPX 86, 88, 186 y 188, Referencia del programador, Santa Clara, California. 1986.
(Lo mismo se aplica a los modelos iAPX 286, 80386 y 80387). - 1 2 3 Manual del usuario de la familia 8086. Intel Corporation. Octubre de 1979. pág. B-1. OCLC 65699372 .
- 1 2 3 4 5 Intel Corporation (mayo-junio de 1980). "8086 disponible para entorno industrial". Intel Preview (número especial: soluciones de 16 bits): 29. OCLC 803251993 .
- ↑ "Guía de referencia rápida de microprocesadores Intel® - Año" . www.intel.com . Archivado del original el 6 de octubre de 2021. Consultado el 28 de febrero de 2021 .
- ↑ Intel Corporation (mayo-junio de 1980). "La familia 8086: conceptos y realidades". Intel Preview (número especial: soluciones de 16 bits): 19. ISSN 1041-8547 . OCLC 10331599 .
- 1 2 Intel Corporation (enero-febrero de 1980). "Nuevos productos: el 8086 más rápido ofrece un 60% más de rendimiento". Intel Preview : 22.
- ↑ Intel Corporation (mayo-junio de 1980). "Los nuevos productos de la familia 8086 aumentan el rendimiento del procesador en un 50 por ciento". Intel Preview (Edición especial: Soluciones de 16 bits): 17.
- ↑ Intel Corporation (mayo-junio de 1979). "Componentes de microcomputadoras: Las nuevas reducciones de precio y las mejoras en la producción hacen que el popular microprocesador 8086 sea aún más atractivo". Intel Preview : 11.
- ↑ Intel Corporation (agosto de 1981). Manual del usuario de Intel iAPX86, 88. Intel Corporation. pág. B-25. ISBN 0835930165OCLC 8459750
- ↑ Intel Corporation, "Noticia breve: Intel licencia a Oki para la versión CMOS de varios productos", Solutions, julio/agosto de 1984, página 1.
- ↑ Ashborn, Jim; "Empaquetado avanzado: Un poco rinde mucho", Intel Corporation, Solutions, enero/febrero de 1986, página 2
- ^ Intel Corporation, "NewsBits: Second Source News", Soluciones, enero/febrero de 1985, página 1
- ↑ "La evolución del controlador de disquetes | Museo OS/2" . 26 de mayo de 2011. Archivado del original el 5 de mayo de 2016. Consultado el 12 de mayo de 2016. En
el IBM PC original (1981) y el PC/XT (1983), el controlador de disquetes (FDC) se ubicaba físicamente en una tarjeta adaptadora de disquete independiente. El FDC en sí era un NEC μPD765A o una pieza compatible, como el Intel 8272A.
- ↑ "Intel añade una placa única de 16 bits" . Computerworld . Vol. XII, n.º 50. 11 de diciembre de 1978. pág. 86. ISSN 0010-4841 .
- ↑ Zachmann, Mark (23 de agosto de 1982). "Los fallos en la IBM Personal Computer frustran a los críticos" . InfoWorld . Vol. 4, n.º 33, págs. 57-58 . ISSN 0199-6649 .
La IBM Displaywriter es notablemente más cara que otros microordenadores industriales que utilizan el 8086.
- ↑ "Para piezas usadas, la NASA recurre audazmente a eBay" . New York Times . 12 de mayo de 2002. Archivado del original el 29 de junio de 2016. Consultado el 19 de febrero de 2017 .
- ↑ Manual técnico de Kaman
Enlaces externos
- Hojas de datos de Intel
- Lista de procesadores 8086 y sus clones en CPUworld.com
- Asignación de pines del 8086
- Interfaz de modo máximo. Archivado del original el 21 de julio de 2011. Recuperado el 10 de julio de 2022.
- Manual de usuario del 8086, octubre de 1979, INTEL Corporation ( documento PDF )
- Códigos de programación para el microprocesador 8086 utilizando el emulador emu8086 (versión 4.08).
- Jenner, Andrew (septiembre de 2020). "Microcódigo 8086 desensamblado" . Blog de Reenigne .
- Shirriff, Ken (junio de 2020). "Una mirada al chip del procesador 8086" .— (Junio de 2020). "Reducción del chip: Cómo Intel redujo el tamaño del procesador 8086" .— (julio de 2020). "Los registros del procesador Intel 8086: del chip a los transistores" .— (Agosto de 2020). "Ingeniería inversa del sumador dentro del Intel 8086" .— (Agosto de 2020). "Ingeniería inversa de la unidad aritmético-lógica del 8086 a partir de fotos del chip" .— (Noviembre de 2022). "Los inusuales controladores de arranque dentro del chip microprocesador 8086" .— (Noviembre de 2022). "Una corrección de errores en el microprocesador 8086, revelada en el silicio del chip" .— (diciembre de 2022). "Cómo funciona el motor de microcódigo del procesador 8086" .— (Enero de 2023). "Dentro del circuito de precarga de instrucciones del procesador 8086" .— (Enero de 2023). "La arquitectura de microcódigo del procesador 8086 a partir del análisis del chip" .— (Enero de 2023). "Contar los transistores del procesador 8086: es más difícil de lo que parece" .— (Enero de 2023). "Ingeniería inversa del circuito de salto condicional en el procesador 8086" .— (Enero de 2023). "Ingeniería inversa de los circuitos HALT del procesador Intel 8086" .— (Enero de 2023). "Comprensión de la instrucción de ajuste decimal después de la suma (DAA) de x86" .— (febrero de 2023). "Ingeniería inversa de silicio: el circuito de indicadores del procesador Intel 8086" .— (febrero de 2023). "Ingeniería inversa del circuito de interrupción en el procesador Intel 8086" .— (febrero de 2023). "Ingeniería inversa del microcódigo de direccionamiento ModR/M en el procesador Intel 8086" .— (Marzo de 2023). "Cómo el procesador 8086 determina la longitud de una instrucción" .— (Marzo de 2023). "Ingeniería inversa del algoritmo de multiplicación en el procesador Intel 8086" .— (Marzo de 2023). "Ingeniería inversa de los códigos de registro para el microcódigo del procesador 8086" .— (Abril de 2023). "El microcódigo y el hardware del procesador 8086 que realizan operaciones con cadenas" .— (Abril de 2023). "Ingeniería inversa del microcódigo de división en el procesador Intel 8086" .— (Mayo de 2023). "La ROM de decodificación de grupo: El primer paso del procesador 8086 en la decodificación de instrucciones" .— (julio de 2023). "Ingeniería inversa de los circuitos de pines de dirección y datos del procesador 8086" .— (julio de 2023). "Instrucciones no documentadas del 8086, explicadas por el microcódigo" .— (Agosto de 2023). "Rastreando los orígenes del conjunto de instrucciones 8086 hasta el miniordenador Datapoint 2200" .— (Agosto de 2023). "Un análisis detallado del circuito de retención de bus del procesador 8086" .— (Octubre de 2023). "Cómo se implementan los biestables en el procesador Intel 8086" .— (Marzo de 2024). "El circuito de precarga de instrucciones del procesador Intel 8088: una mirada al interior" .— (Abril de 2024). "Hablando con la memoria: Dentro de la máquina de estados de la interfaz del bus del procesador Intel 8088" .— (enero de 2026). "Notas sobre la unidad aritmético-lógica del procesador Intel 8086" .
- Microprocesadores Intel x86
- microprocesadores de 16 bits
- Introducciones relacionadas con la informática en 1978
- microarquitecturas X86
- Productos y servicios descontinuados en 1998.