Intel 8086

Ajustar Compartir Imprimir Citar
Microprocesador de 16 bits

El 8086 (también llamado iAPX 86) es un chip de microprocesador de 16 bits diseñado por Intel entre principios de 1976 y el 8 de junio de 1978, cuando fue lanzado. El Intel 8088, lanzado el 1 de julio de 1979, es un chip ligeramente modificado con un bus de datos externo de 8 bits (que permite el uso de circuitos integrados más baratos y menos compatibles), y se destaca como el procesador utilizado en el diseño original de PC de IBM.

El 8086 dio lugar a la arquitectura x86, que finalmente 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 de Intel 8086, denominada Intel Core i7-8086K.

Historia

Antecedentes

En 1972, Intel lanzó el 8008, el primer microprocesador de 8 bits. Implementó un conjunto de instrucciones diseñado por Datapoint Corporation con terminales CRT programables en mente, que también resultó ser bastante general. El dispositivo necesitaba varios circuitos integrados adicionales para producir una computadora funcional, en parte debido a que estaba empaquetado en un pequeño "paquete de memoria" de 18 pines, lo que descartaba el uso de un bus de direcciones separado (Intel era principalmente un fabricante de DRAM en ese momento).

Dos años más tarde, 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. Tiene un conjunto de instrucciones extendido que es compatible con la fuente (no compatible con binario) con el 8008 y también incluye algunas instrucciones de 16 bits para facilitar la programación. El dispositivo 8080 finalmente fue reemplazado por el 8085 (1977) basado en carga de agotamiento, que bastaba con una sola fuente de alimentación de +5 V en lugar de los tres voltajes operativos diferentes de los chips anteriores. Otros microprocesadores de 8 bits muy 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

Intel 8086 CPU muere imagen

El proyecto 8086 comenzó en mayo de 1976 y originalmente se pensó como un sustituto temporal del ambicioso y retrasado proyecto iAPX 432. Fue un intento de llamar la atención de los procesadores de 16 bits y 32 bits menos retrasados de otros fabricantes: Motorola, Zilog y National Semiconductor.

Mientras que el 8086 era un microprocesador de 16 bits, utilizaba la misma microarquitectura que 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. Se agregaron nuevas instrucciones y funciones, como números enteros con signo, direccionamiento de base + desplazamiento y operaciones autorrepetitivas. Se agregaron instrucciones para asistir en 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 el resultado de un enfoque más centrado en el software. Otras mejoras incluyeron instrucciones de microcódigo para las instrucciones de lenguaje ensamblador de multiplicación y división. Los diseñadores también anticiparon los coprocesadores, como 8087 y 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 y, dado que casi no se utilizaron herramientas CAD, cuatro ingenieros y 12 diseñadores trabajaron simultáneamente en el chip. El 8086 tardó un poco más de dos años desde la idea hasta el producto funcional, lo que se consideró bastante rápido para un diseño complejo en 1976-1978.

El 8086 se secuenció con una combinación de lógica aleatoria y microcódigo, y se implementó con 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 de nMOS refinado llamado HMOS (por MOS de alto rendimiento) que Intel desarrolló originalmente para la fabricación de productos de RAM estática rápida. A esto le siguieron las versiones HMOS-II, HMOS-III y, finalmente, una versión CMOS completamente estática para dispositivos alimentados por batería, fabricados con los procesos CHMOS de Intel. El chip original medía 33 mm² y el tamaño mínimo de las características era de 3,2 μm.

La arquitectura fue definida por Stephen P. Morse con la ayuda de Bruce Ravenel (el arquitecto del 8087) en el perfeccionamiento de 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 y Bill Pohlman el gerente del proyecto. El legado del 8086 perdura en el conjunto de instrucciones básicas de los servidores y las computadoras personales actuales; el 8086 también prestó sus últimos dos dígitos a versiones posteriores extendidas del diseño, como el Intel 286 y el Intel 386, todos los cuales finalmente se conocieron como la familia x86. (Otra referencia es que la ID de proveedor de PCI para dispositivos Intel es 8086h).

Detalles

Las asignaciones del pasador 8086 en modo min y máx

Autobuses y funcionamiento

Todos los registros internos, así como los buses de datos internos y externos, tienen 16 bits de ancho, lo que estableció firmemente el "microprocesador de 16 bits" identidad del 8086. Un bus de direcciones externo de 20 bits proporciona un espacio de direcciones físicas de 1 MB (220 = 1 048 576 x 1 byte). Este espacio de direcciones se direcciona por medio de la 'segmentación' de la memoria interna. El bus de datos está multiplexado con el bus de direcciones para encajar todas las líneas de control en un paquete estándar doble en línea de 40 pines. Proporciona un bus de direcciones de E/S de 16 bits que admite 64 KB de espacio de E/S independiente. El espacio máximo de direcciones lineales está limitado a 64 KB, simplemente porque los registros internos de dirección/índice tienen solo 16 bits de ancho. La programación por encima de los 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 anchos (32 bits) (el hardware de administración de memoria en el 80286 no ayudó en este sentido, ya que sus registros todavía tienen solo 16 bits de ancho).

Modos de hardware de 8086

Algunos de los pines de control, que transportan señales esenciales para todas las operaciones externas, tienen más de una función dependiendo de si el dispositivo se opera en modo min o max. 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). Se requiere el modo máximo cuando se utiliza un coprocesador 8087 u 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). 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 tiempo en las hojas de datos y manuales de Intel. En modo mínimo, todas las señales de control son generadas por el propio 8086.

Registros e instrucción

El 8086 tiene ocho registros más o menos generales de 16 bits (incluido el puntero de pila pero excluyendo el puntero de instrucción, el registro de bandera y los registros de segmento). También se puede acceder a cuatro de ellos, AX, BX, CX, DX, como el doble de registros de 8 bits (ver figura), mientras que los otros cuatro, SI, DI, BP, SP, son solo de 16 bits.

Debido 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 la memoria, pero este operando de memoria también puede ser el destino, mientras que el otro operando, el origen, puede ser registrar o inmediato. Una sola ubicación de memoria también se puede usar a menudo como origen y destino lo que, entre otros factores, contribuye aún más a una densidad de código comparable (y a menudo mejor que) a la mayoría de los ocho -máquinas de bits en el momento.

El grado de generalidad de la mayoría de los registros es mucho mayor que en el 8080 o el 8085. Sin embargo, los registros del 8086 eran más especializados que en la mayoría de las minicomputadoras contemporáneas y también se usan implícitamente en algunas instrucciones. Si bien es perfectamente sensato para el programador ensamblador, esto hace que la asignación de registros para los compiladores sea más complicada en comparación con los procesadores más ortogonales de 16 y 32 bits de la época, como el PDP-11, VAX, 68000, 32016, etc. Por otro lado, al ser más regular que los microprocesadores de 8 bits bastante minimalistas pero ubicuos 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 de esto es que el 8086 también introdujo algunas instrucciones nuevas (que no están presentes en el 8080 y el 8085) para soportar mejor los lenguajes de programación de alto nivel basados en pilas como Pascal y PL/M; algunas de las instrucciones más útiles son push mem-op y ret size, apoyando la "Convención de llamadas de Pascal" directamente. (Varios otros, como push immed y enter, se agregaron en el procesadores 80186, 80286 y 80386 posteriores).

El hardware admite una pila de 64 KB (un segmento) que crece hacia direcciones más bajas; Las palabras de 16 bits se insertan en la pila y SS:SP apunta a la parte superior de la pila. Hay 256 interrupciones, que pueden ser invocadas tanto por hardware como por software. Las interrupciones pueden conectarse en cascada, utilizando la pila para almacenar las direcciones de retorno.

El 8086 tiene 64 K de espacio de puerto de E/S de 8 bits (o, alternativamente, 32 K de palabra de 16 bits).

Banderas

El 8086 tiene un registro de banderas de 16 bits. Nueve de estas banderas de código de condición están activas e indican el estado actual del procesador: Bandera de acarreo (CF), Bandera de paridad (PF), Bandera de acarreo auxiliar (AF), Bandera de cero (ZF), Bandera de signo (SF), Trampa indicador (TF), indicador de interrupción (IF), indicador de dirección (DF) y indicador de desbordamiento (OF). También conocida como la palabra de estado, el diseño del registro de banderas es el siguiente:

Bit 15 a 12 11 10 9 8 7 6 5 4 3 2 1 0
Bandera OF DF IF TF SF ZF AF PF CF

Segmentación

También hay cuatro registros de segmento de 16 bits (consulte la figura) que permiten que la CPU 8086 acceda a un megabyte de memoria de una manera inusual. En lugar de concatenar el registro de segmento con el registro de direcciones, como en la mayoría de los procesadores cuyo espacio de direcciones excede el tamaño de su registro, el 8086 desplaza el segmento de 16 bits solo quedan cuatro bits antes de agregarlo al desplazamiento de 16 bits (16 × segmento + desplazamiento), produciendo así una dirección externa (o efectiva o física) de 20 bits a partir del par segmento:desplazamiento de 32 bits. Como resultado, se puede hacer referencia a cada dirección externa mediante 212 = 4096 pares de segmento:desplazamiento diferentes.

0110 1000 1000 0111 0000Segmento, 16 bits, desplazado 4 bits a la izquierda (o multiplicado por 0x10)
+ 0011 0100 1010 1001Offset, 16 bits
0110 1011 1101 0001 1001Dirección, 20 bits

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 máximo de 15 bytes de desperdicio de alineación.

Los compiladores de la familia 8086 suelen admitir dos tipos de puntero, cercano y lejano. Los punteros cercanos son desplazamientos de 16 bits asociados implícitamente con el código del programa o el segmento de datos y, por lo tanto, solo se pueden usar dentro de partes de un programa lo suficientemente pequeñas como para caber en un segmento. Los punteros lejanos son pares de segmento:desplazamiento de 32 bits que se resuelven en direcciones externas de 20 bits. Algunos compiladores también admiten punteros enormes, que son como 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 envuelve dentro de sus 16 bits. compensación de bits sin tocar la parte del segmento de la dirección.

Para evitar la necesidad de especificar cerca y lejos en numerosos punteros, estructuras de datos y funciones, los compiladores también admiten "modelos de memoria" que especifican tamaños de puntero predeterminados. El diminuto (máx. 64 K), pequeño (máx. 128 K), compacto (datos > 64 K), mediano (código > 64K), grande (código, datos > 64K) y enorme (matrices individuales > 64K) cubren combinaciones prácticas de cerca, lejos y enormes punteros para código y datos. El modelo tiny significa que el código y los datos se comparten en un solo segmento, al igual que en la mayoría de los procesadores basados en 8 bits, y se pueden usar para crear archivos .com, por ejemplo.. Las bibliotecas precompiladas a menudo vienen en varias versiones compiladas para diferentes modelos de memoria.

Según Morse et al.,. los diseñadores realmente contemplaron usar un cambio de 8 bits (en lugar de 4 bits) para crear un espacio de direcciones físicas de 16 MB. Sin embargo, como esto habría obligado a los segmentos a comenzar en límites de 256 bytes, y 1 MB se consideraba muy grande para un microprocesador alrededor de 1976, la idea se descartó. 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 cambio, siempre que las aplicaciones obtuvieran sus segmentos del sistema operativo y no hicieran suposiciones sobre la equivalencia de diferentes pares segmento:compensación. En la práctica, el uso de "enorme" Los punteros y mecanismos similares se generalizaron y el direccionamiento plano de 32 bits hecho posible con los registros de compensación de 32 bits en el 80386 finalmente extendió el rango de direccionamiento limitado de una manera más general.

El flujo de instrucciones se extrae de la memoria como palabras y el procesador lo direcciona internamente al nivel de byte según sea necesario. Un mecanismo de cola de flujo de instrucciones permite poner en cola hasta 6 bytes del flujo de instrucciones mientras se espera la decodificación y ejecución. La cola actúa como un búfer primero en entrar, primero en salir (FIFO), del cual la unidad de ejecución (EU) extrae los bytes de instrucción según sea necesario. Siempre que haya espacio para al menos dos bytes en la cola, la BIU intentará un ciclo de memoria de búsqueda de palabras. Si la cola está vacía (siguiendo una instrucción de bifurcación, por ejemplo), el primer byte en la cola queda inmediatamente disponible para la UE.

Portar software antiguo

Los programas pequeños podrían ignorar la segmentación y simplemente usar direccionamiento simple de 16 bits. Esto permite que el software de 8 bits se transfiera fácilmente al 8086. Los autores de la mayoría de las implementaciones de DOS aprovecharon esto al proporcionar una interfaz de programación de aplicaciones muy similar a CP/M, además de incluir el simple .com formato de archivo ejecutable, idéntico a CP/M. Esto fue importante cuando el 8086 y MS-DOS eran nuevos, porque permitió que muchas aplicaciones CP/M (y otras) existentes estuvieran disponibles rápidamente, lo que facilitó en gran medida la aceptación de la nueva plataforma.

Código de ejemplo

El siguiente código fuente del ensamblador 8086/8088 es para una subrutina llamada _memcpy que copia un bloque de bytes de datos de un tamaño determinado de una ubicación a otra. El bloque de datos se copia byte a byte, y el movimiento de datos y la lógica de bucle utilizan operaciones de 16 bits.

 0000:1000

0000:1000
0000:1000 55
0000:1001 89 E5
0000:1003 06
0000:1004 8B 4E 06
0000:1007 E3 11
0000:1009 8B 76 04
0000:100C 8B 7E 02
0000:100F 1E
0000:1010 07

0000:1011 8A 04
0000:1013 88 05
0000:1015 46
0000:1016 47
0000:1017 49
0000:1018 75 F7

0000:101A 07
0000:101B 5D
0000:101C 29 C0
0000:101E C3
0000:101 F
; _memcpy(dst, src, len); Copiar un bloque de memoria de un lugar a otro.;; Parámetros de la pila de entrada; [BP+6] = len, Número de bytes para copiar; [BP+4] = src, Address of source data block; [BP+2] = dst, Address of target data block;; Registros de retorno; AX = Zero org 1000h ; Comienzo a las 0000:1000h_memcpy proc empujar bp ; Configurar el marco de llamada mov bp,sp empujar es ; Save ES mov cx,[bp+6] ; Set CX = len jcxz hecho ; Si len = 0, retorno mov Si,[bp+4] ; Set SI = src mov di,[bp+2] ; Set DI = dst empujar ds ; Set ES = DS pop esbucle mov al,[Si] ; Carga AL de [src] mov [di]al ; Almacenar AL a [dst] inc Si ; Increment src inc di ; Incremento dst dec cx ; Decrement len jnz bucle ; Repita el buclehecho pop es ; Restaurar ES pop bp ; Restaurar el marco de llamada anterior sub ax,ax ; Conjunto AX = 0 Ret ; Regreso final proc

El código anterior usa 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 recursivo y reentrante, y ha sido utilizado por la mayoría de los lenguajes similares a ALGOL desde finales de la década de 1950.

La rutina anterior es una forma bastante engorrosa de copiar bloques de datos. El 8086 proporciona instrucciones dedicadas para copiar cadenas de bytes. Estas instrucciones asumen que los datos de origen se almacenan en DS:SI, los datos de destino se almacenan en ES:DI y que la cantidad de elementos a copiar se almacena en CX. La rutina anterior requiere que el bloque de origen y el de destino estén en el mismo segmento, por lo tanto, DS se copia a ES. La sección de bucle de lo anterior se puede reemplazar por:

0000:1011 FC
0000:1012 F3
0000:1013 A4
 sujetado ; Copia hacia direcciones superioresbucle rep ; Repita hasta CX = 0 movsb ; Mover el bloque de datos

Esto copia el bloque de datos un byte a la vez. La instrucción REP hace que el siguiente MOVSB se repita hasta que CX sea cero, incrementando automáticamente SI y DI y disminuyendo CX a medida que se repite. Alternativamente, la instrucción MOVSW se puede usar para copiar palabras de 16 bits (bytes dobles) a la vez (en cuyo caso, CX cuenta la cantidad de palabras copiadas en lugar de la cantidad de bytes). La mayoría de los ensambladores reconocerán correctamente la instrucción REP si se usa como prefijo en línea de la instrucción MOVSB, como en REP MOVSB.

Esta rutina funcionará correctamente si se interrumpe, porque el contador del programa continuará apuntando a la instrucción REP hasta que se complete la copia del bloque. Por lo tanto, la copia continuará desde donde se quedó cuando la rutina de servicio de interrupción devuelva el control.

Rendimiento

Diagrama simplificado de bloques sobre Intel 8088 (una variante de 8086); 1=main " index registers; 2=segment registers and IP; 3=address adder; 4=internal address bus; 5=instruction queue; 6=control unit (very simplified!); 7=bus; 8=internal databus; 9=ALU; 10/11/12=external address/data/control.

Aunque ensombrecido parcialmente por otras opciones de diseño en este chip en particular, la dirección multiplexada y los buses de datos limitan ligeramente el rendimiento; las transferencias de cantidades de 16 u 8 bits se realizan en un ciclo de acceso a la memoria de cuatro relojes, que es más rápido en 16 bits, aunque más lento en cantidades de 8 bits, en comparación con muchas CPU contemporáneas basadas en 8 bits. Como 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 siendo 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 captación previa de 6 bytes (una forma de canalización débilmente acoplada), acelerando las operaciones en registros e inmediatos, mientras que las operaciones de memoria se ralentizaron (cuatro años más tarde, este problema de rendimiento se solucionó con el 80186 y el 80286). Sin embargo, la arquitectura completa (en lugar de parcial) de 16 bits con una ALU de ancho completo significaba que las instrucciones aritméticas de 16 bits ahora se podían realizar con un solo ciclo de ALU (en lugar de dos, a través de acarreo interno, como en el 8080 y 8085), acelerando considerablemente dichas instrucciones. Combinado con ortogonalizaciones de operaciones versus tipos de operandos y modos de direccionamiento, así como otras mejoras, esto hizo que la ganancia de rendimiento sobre el 8080 o el 8085 fuera bastante significativa, a pesar de los casos en los que los chips más antiguos pueden ser más rápidos (ver más abajo).

Tiempos de ejecución para instrucciones típicas (en ciclos de reloj)
instrucción registro registro inmediato registro de memoria registro de memoria memoria-inmediata
mov248+EA9+EA10+EA
ALU349+EA,16+EA,17+EA
saltoregistro ≥ 11; etiqueta ≥ 15; condición, etiqueta ≥ 16
integer multiplica70~160 (dependiendo del funcionamiento datos y tamaño) incluido EA
división del entero80~190 (dependiendo del funcionamiento datos y tamaño) incluido EA

Como puede verse en estas tablas, las operaciones sobre registros e inmediatos fueron rápidas (entre 2 y 4 ciclos), mientras que las instrucciones de operandos de memoria y los saltos fueron bastante lentos; los saltos tomaron más ciclos que en los simples 8080 y 8085, y el 8088 (usado en la PC de IBM) también se vio obstaculizado 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:

Sin embargo, el rendimiento del acceso a la memoria mejoró drásticamente con la próxima generación de CPU de la familia 8086 de Intel. El 80186 y el 80286 tenían hardware de cálculo de direcciones dedicado, lo que ahorraba muchos ciclos, y el 80286 también tenía buses de datos y direcciones separados (no multiplexados).

Coma flotante

El 8086/8088 podría conectarse a un coprocesador matemático para agregar rendimiento de punto flotante basado en hardware/microcódigo. El Intel 8087 era el coprocesador matemático estándar para el 8086 y el 8088, que operaba con números de 80 bits. Fabricantes como Cyrix (compatible con 8087) y Weitek (no compatible con 8087) finalmente crearon coprocesadores de coma flotante de alto rendimiento que competían con el 8087.

Versiones de chips

La frecuencia de reloj se limitó originalmente a 5 MHz, 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 la década de 1990) para sistemas integrados, aunque su sucesor, el 80186/80188 (que incluye algunos periféricos en chip), ha sido más popular para uso integrado..

El 80C86, la versión CMOS del 8086, se usó en GRiDPad, Toshiba T1200, HP 110 y, finalmente, en el Lunar Prospector de 1998–1999.

Para el empaque, el Intel 8086 estaba disponible en paquetes DIP de cerámica y plástico.

Una variante de cerámica D8086
Una variante P8086 de plástico

Lista de Intel 8086

Número de modelo Frecuencia Tecnología Gama de temperatura Paquete Fecha de publicación Precio (USD)
8086 5 MHz HMOS 0 °C a 70 °C 8 de junio de 1978 86.65 dólares
8086-1 10 MHz HMOS II Comercial
8086-2 8 MHz HMOS II Comercial Enero/febrero de 1980 $200
8086-4 4 MHz HMOS Comercial 72,50 dólares
I8086 5 MHz HMOS Industrial −40 °C a +85 °C Mayo/junio de 1980 $173.25
M8086 5 MHz HMOS grado militar −55 °C a +125 °C
80C86 CMOS 44 Pin PLCC
  1. ^ En cantidad de 100.
  2. ^ Precio reducido en 21% de USD $99.00, no hay información en valor de cantidad lista.
  3. ^ Muestra Q4 1985

Derivados y clones

Fujitsu, 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 con el hardware del 8088 y el 8086, aunque NEC fabricó los clones originales de Intel μPD8088D y μPD8086D respectivamente, pero incorporó el conjunto de instrucciones del 80186 junto con algunos (pero no todos) del 80186. mejoras de velocidad, proporcionando una capacidad inmediata para actualizar tanto el conjunto de instrucciones como la velocidad de procesamiento sin que los fabricantes tengan que modificar sus diseños. Estos procesadores compatibles con 8086 relativamente simples y de bajo consumo en CMOS todavía se utilizan en sistemas integrados.

La industria electrónica de la Unión Soviética pudo replicar el 8086 a través de tanto espionaje industrial como ingeniería inversa. El chip resultante, K1810VM86, era binario y compatible con pines con el 8086.

i8086 e i8088 fueron, respectivamente, los núcleos de las computadoras de escritorio EC1831 y EC1832 compatibles con PC de fabricación soviética. (EC1831 es la identificación EC de IZOT 1036C y EC1832 es la identificación EC de IZOT 1037C, desarrollado y fabricado en Bulgaria. EC significa Единая Система.) Sin embargo, la computadora EC1831 (IZOT 1036C) tenía diferencias de hardware significativas con el prototipo de PC de IBM. El EC1831 fue la primera computadora compatible con PC con tamaño de bus dinámico (patente de EE. UU. No. 4,831,514). Posteriormente, se adoptaron algunos de los principios EC1831 en PS/2 (patente de EE. UU. n.° 5.548.786) y algunas otras máquinas (solicitud de patente del Reino Unido, publicación n.° GB-A-2211325, publicada el 28 de junio de 1989).

clon soviético K1810VM86
OKI M80C86A QFP-56
NEC μPD8086D-2 (8 MHz) del año 1984, semana 19 JAPÓN (cerca de Intel D8086-2)

Fichas de soporte

Microordenadores que utilizan el 8086