Intel 8086
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
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
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 0000 | Segmento, | 16 bits, desplazado 4 bits a la izquierda (o multiplicado por 0x10) |
+ 0011 0100 1010 1001 | Offset, | 16 bits |
| ||
0110 1011 1101 0001 1001 | Direcció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
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).
instrucción | registro | registro inmediato | registro de memoria | registro de memoria | memoria-inmediata |
---|---|---|---|---|---|
mov | 2 | 4 | 8+EA | 9+EA | 10+EA |
ALU | 3 | 4 | 9+EA, | 16+EA, | 17+EA |
salto | registro ≥ 11; etiqueta ≥ 15; condición, etiqueta ≥ 16 | ||||
integer multiplica | 70~160 (dependiendo del funcionamiento datos y tamaño) incluido EA | ||||
división del entero | 80~190 (dependiendo del funcionamiento datos y tamaño) incluido EA |
- EA = tiempo para calcular la dirección efectiva, que va de 5 a 12 ciclos.
- Las fechas son el mejor caso, dependiendo del estado prefetch, alineación de instrucciones y otros factores.
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:
- Las unidades de embrague y ejecución acopladas son eficientes para prefetch de instrucciones, pero no para saltos y acceso a datos aleatorios (sin medidas especiales).
- No se proporcionó una escalerilla dedicada al cálculo de la dirección; las rutinas del microcódigo tenían que usar el ALU principal para esto (aunque había una Serie de sesiones + offset escalera).
- La dirección y los autobuses de datos fueron multiplexados, forzando un ciclo de bus ligeramente más largo (33~50%) que en los procesadores contemporáneos típicos de 8 bits.
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.
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 |
- ^ En cantidad de 100.
- ^ Precio reducido en 21% de USD $99.00, no hay información en valor de cantidad lista.
- ^ 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).
Fichas de soporte
- Intel 8237: controlador de acceso directo a la memoria (DMA)
- Intel 8251: receptor/transmisor universal sincronizado/asincrónico a 19.2 kbit/s
- Intel 8253: temporizador de intervalo programable, 3x 16-bit max 10 MHz
- Intel 8255: interfaz periférica programable, 3x 8 bits I/O pins utilizados para la conexión de impresora, etc.
- Intel 8259: controlador de interrupción programable
- Intel 8279: teclado/display controlador, escanea una matriz de teclado y matriz de visualización como 7-seg
- Intel 8282/8283: cierre de 8 bits
- Intel 8284: generador de reloj
- Intel 8286/8287: conductor bidireccional de 8 bits. En 1980, la versión Intel I8286/I8287 (grado industrial) estaba disponible por US$16,25 en cantidades de 100.
- Intel 8288: controlador de autobús
- Intel 8289: arbiter de autobús
- NEC μPD765 o Intel 8272A: controlador de disquete
Microordenadores que utilizan el 8086
- El Intel Multibus-compatible ordenador de una sola tabla ISBC 86/12 fue anunciado en 1978.
- El Xerox NoteTaker fue uno de los primeros diseños de ordenador portátiles en 1978 y utilizó tres 8086 chips (como CPU, procesador de gráficos y procesador I/O), pero nunca entró en producción comercial.
- Seattle Computer Products envió sistemas S-100 basados en autobuses 8086 (SCP200B) a principios de noviembre de 1979.
- The Norwegian Mycron 2000, introduced in 1980.
- Uno de los microcomputadores más influyentes de todos, el IBM PC, utilizó el Intel 8088, una versión del 8086 con un bus de datos de 8 bits (como se mencionó anteriormente).
- El primer Compaq Deskpro utilizó un 8086 funcionando a 7.16 MHz, pero fue compatible con tarjetas adicionales diseñadas para el PC XT de 4.77 MHz IBM PC y podría cambiar la CPU a la velocidad inferior (que también cambió en un amortiguador de memoria para simular el acceso más lento del 8088) para evitar problemas de sincronización de software.
- Un 8 MHz 8086-2 fue utilizado en el AT plagaT 6300 PC (construido por Olivetti, y conocido globalmente bajo varias marcas y números de modelo), un microcomputador de escritorio compatible con IBM PC. El M24 / PC 6300 tiene ranuras de expansión de 8 bits compatibles con IBM PC/XT, pero algunos de ellos tienen una extensión patentada que proporciona el bus completo de datos de 16 bits de la CPU 8086 (similar en concepto a las ranuras de 16 bits del IBM PC AT, pero diferente en los detalles de diseño, y físicamente incompatible), y todos los periféricos del sistema, incluyendo el sistema de vídeo a bordo también disfrutan de transferencias de 16 bits. El más tarde Olivetti M24SP contó con un 8086-2 corriendo al máximo 10 MHz.
- Los modelos IBM PS/2 25 y 30 fueron construidos con 8 MHz 8086.
- Los Amstrad PC1512, PC1640, PC2086, PC3086 y PC5086 utilizaron 8086 CPUs a 8 MHz.
- El PC-9801 NEC.
- Las series Tandy 1000 SL y las máquinas RL utilizaron 9,47 MHz 8086 CPUs.
- La máquina de procesamiento de palabras IBM Displaywriter y el Wang Professional Computer, fabricado por Wang Laboratories, también utilizaron el 8086.
- La NASA utilizó originales 8086 CPUs en equipo para el mantenimiento basado en tierra del Discovery de transbordador espacial hasta el final del programa de transbordador espacial en 2011. Esta decisión se tomó para prevenir la regresión del software que podría resultar de actualizar o cambiar a clones imperfectos.
- KAMAN Process and Area Radiation Monitors
Contenido relacionado
Edgar F Codd
IBM 1401
Ada (lenguaje de programación)