Intel 8086

Microprocesador de 16 bits
Intel 8086
Un procesador Intel C8086 poco común en un encapsulado DIP de cerámica violeta con pines soldados lateralmente
información general
Lanzado1978
Interrumpido1998 [1]
Fabricante común
Actuación
Frecuencia máxima de reloj de la CPU De 5 MHz a 10 MHz
Ancho de datos16 bits
Ancho de dirección20 bits
Arquitectura y clasificación
Nodo tecnológico3 micras
Conjunto de instruccionesx86-16
Especificaciones físicas
Transistores
  • 29.000 [2]
CoprocesadorIntel 8087 , Intel 8089
Paquete
Enchufe
Productos, modelos, variantes
Variante
Historia
PredecesorIntel 8085
Sucesores80186 y 80286 (ambos introducidos a principios de 1982)
Estado de soporte
Sin soporte

El 8086 [3] (también llamado iAPX 86 ) [4] es un chip 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, [5] es un chip ligeramente modificado con un bus de datos externo de 8 bits (que permite el uso de circuitos integrados de soporte más baratos y menos numerosos ), [nota 1] y es notable por ser el procesador utilizado en el diseño original de IBM PC .

El 8086 dio origen 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 del Intel 8086, llamada Intel Core i7-8086K . [5] [ enlace muerto ]

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 con terminales CRT programables en mente, que también resultó ser bastante de propósito 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 después, Intel lanzó el 8080 , [nota 3] 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 binarios ) con el 8008 [6] y también incluye 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 se bastaba con una sola fuente de alimentación de +5 V en lugar de los tres voltajes operativos diferentes de los chips anteriores. [nota 4] 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

Imagen de la matriz de la CPU Intel 8086

El proyecto 8086 comenzó en mayo de 1976 y originalmente fue pensado 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 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 . [7] Se agregaron nuevas instrucciones y características, como números enteros con signo, direccionamiento base+offset y operaciones autorrepetitivas. Se agregaron instrucciones para ayudar a la compilación de 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 multiplicación y división en lenguaje ensamblador. Los diseñadores también anticiparon 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 [nota 5] y, como casi no se utilizaron herramientas CAD, cuatro ingenieros y 12 diseñadores trabajaron simultáneamente en el chip. [nota 6] 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 la década de 1970.

El 8086 fue secuenciado [nota 7] usando una mezcla de lógica aleatoria [8] y microcódigo y fue implementado usando circuitos nMOS de carga de agotamiento con aproximadamente 20.000 transistores activos (29.000 contando todos los sitios ROM y PLA ). Pronto fue trasladado 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 de RAM estática rápida . [nota 8] 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, fabricada usando los procesos CHMOS de Intel . [nota 9] 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 usaban las instrucciones de desplazamiento de bits para multiplicar y dividir en su lugar. [ cita requerida ]

El chip 8086 se redujo 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. Más tarde, las variantes 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 algo de ayuda de Bruce Ravenel (el arquitecto del 8087) en el refinamiento 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 [nota 10] y Bill Pohlman el gerente del proyecto. El legado del 8086 perdura en el conjunto de instrucciones básicas de los servidores y computadoras personales 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 , todos los cuales eventualmente se conocieron como la familia x86 . (Otra referencia es que el PCI Vendor ID para dispositivos Intel es 8086 h ).

Detalles

Asignaciones de pines del 8086 en modo mínimo y máximo

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 la identidad de "microprocesador de 16 bits" del 8086. Un bus de dirección externo de 20 bits proporciona un espacio de dirección física de 1  MiB (2 20 = 1.048.576 x 1 byte ). Este espacio de dirección se direcciona mediante la "segmentación" de la memoria interna. El bus de datos se multiplexa con el bus de dirección para que todas las líneas de control quepan en un paquete estándar de doble línea de 40 pines . Proporciona un bus de dirección de E/S de 16 bits, que admite 64  KB de espacio de E/S separado. El espacio de dirección lineal máximo está limitado a 64 KB, simplemente porque los registros de índice/dirección internos tienen solo 16 bits de ancho. La programación sobre límites de memoria de 64 KB implica ajustar los registros de segmento (ver a continuación); 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 del 8086

Algunos de los pines de control, que llevan señales esenciales para todas las operaciones externas, tienen más de una función dependiendo de si el dispositivo se opera en modo mínimo o máximo . El primer modo está pensado 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 la forma en que la CPU maneja el bus (local). [nota 11] El modo suele estar cableado en el circuito y, por lo tanto, no se puede cambiar mediante 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 el modo mínimo, todas las señales de control son generadas por el propio 8086.

Registros e instrucciones

Registros Intel 8086
1 91 81 71 61 51 41 31 21 11 00 90 80 70 60 50 40 30 20 10 0(posición de bit)
Registros principales
 AhAlabamaAX (acumulador primario)
0 0 0 0Bhutánlicenciado en DerechoBX (base, acumulador)
 esCLCX (contador, acumulador)
 esDESCARGARDX (acumulador, acc extendido)
Registros de índice
0 0 0 0SIÍndice de fuentes​
0 0 0 0YoÍndice de destinos​
0 0 0 0presión arterialPuntero base​​
0 0 0 0ESPuntero de pila​
Contador de programas
0 0 0 0Propiedad intelectualPuntero de instrucciones
Registros de segmentos
CS0 0 0 0Segmento de código
DS0 0 0 0Segmento de datos
ES0 0 0 0Segmento extra
Espartano0 0 0 0Segmento de pila
Registro de estado
 ----OhDIyoSO-A-PAG-doBanderas

El 8086 tiene ocho registros más o menos generales de 16 bits (incluido el puntero de pila , pero excluidos el puntero de instrucción, el registro de indicadores y los registros de segmento). Cuatro de ellos, AX, BX, CX, DX, también se pueden acceder como pares de registros de 8 bits (consulte la 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 registro o inmediato . A menudo, también se puede utilizar una única ubicación de memoria como origen y destino , lo que, entre otros factores, contribuye aún más a una densidad de código comparable a (y a menudo mejor que) 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 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 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 del 8086.

Otro factor para esto es que el 8086 también introdujo algunas instrucciones nuevas (no presentes en el 8080 y 8085) para soportar mejor los 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 soportan la " convención de llamada de Pascal " directamente. (Varias otras, como y , se agregaron en los procesadores 80186, 80286 y 80386 posteriores).push mem-op push immedenter

El hardware admite una pila de 64 KB (un segmento) que crece hacia direcciones inferiores ; 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 funcionar 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 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, el diseño del registro de indicadores es el siguiente: [9]

Poco15-1211109876543210
Bandera DEDFSITesisSFZF A.C. PF CF

Segmentación

También hay cuatro registros de segmento de 16 bits (ver figura) que permiten a la CPU 8086 acceder a un megabyte de memoria de una manera 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 dirección excede el tamaño de su registro, el 8086 desplaza el segmento de 16 bits solo 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, cada dirección externa puede ser referenciada por 2 12 = 4096 pares segmento:desplazamiento diferentes.

  0110 1000 1000 01110000Segmento ,16 bits, desplazados 4 bits hacia la izquierda (o multiplicados por 0x10)
+      1011 0100 1010 1001Compensar ,16 bits
                            
  0111 0011 1101 0001 1001DIRECCIÓN ,20 bits

Aunque muchos programadores lo consideran complicado y engorroso, este esquema también tiene ventajas: se puede cargar un programa pequeño (de menos de 64 KB) comenzando en 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 admiten comúnmente dos tipos de punteros , cercanos y lejanos . Los punteros cercanos son desplazamientos de 16 bits asociados implícitamente con el código del programa o 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 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 su desplazamiento de 16 bits sin tocar la parte del segmento de la dirección.

Para evitar la necesidad de especificar proximidad y lejanía 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 diminuto (máximo 64 K), pequeño (máximo 128 K), compacto (datos > 64 K), mediano (código > 64 K), grande (código, datos > 64 K) y enorme (matrices individuales > 64 K) cubren combinaciones prácticas de punteros cercanos, lejanos y enormes para código y datos. El modelo diminuto 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 puede utilizar 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., [10] los diseñadores en realidad contemplaron utilizar un desplazamiento de 8 bits (en lugar de 4 bits) para crear un espacio de dirección física de 16 MB. Sin embargo, como esto habría obligado a que los segmentos comenzaran en límites de 256 bytes, y 1 MB se consideraba demasiado 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 incrementando el valor de desplazamiento, siempre y cuando las aplicaciones obtuvieran sus segmentos del sistema operativo y no hicieran suposiciones sobre la equivalencia de diferentes pares segmento:desplazamiento. [nota 12] En la práctica, el uso de punteros "enormes" y mecanismos similares estaba muy extendido y el direccionamiento plano de 32 bits que se hizo posible con los registros de desplazamiento de 32 bits en el 80386 eventualmente extendió el rango de direccionamiento limitado de una manera más general.

El flujo de instrucciones se recupera de la memoria en forma de palabras y el procesador lo direcciona internamente al nivel de bytes 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 la ejecución. La cola actúa como un búfer FIFO (First-In-First-Out), del que la unidad de ejecución (UE) extrae bytes de instrucciones 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 (después de una instrucción de bifurcación, por ejemplo), el primer byte en la cola queda inmediatamente disponible para la UE. [11]

Portar software antiguo

Los programas pequeños podían ignorar la segmentación y utilizar simplemente un direccionamiento de 16 bits. Esto permite que el software de 8 bits se pueda trasladar con bastante facilidad al 8086. Los autores de la mayoría de las implementaciones de DOS aprovecharon esta ventaja proporcionando una interfaz de programación de aplicaciones muy similar a CP/M, además de incluir el sencillo formato de archivo ejecutable .com , idéntico al de CP/M. Esto era importante cuando el 8086 y MS-DOS eran nuevos, porque permitía que muchas aplicaciones CP/M (y otras) existentes estuvieran disponibles rápidamente, lo que facilitó enormemente la aceptación de la nueva plataforma.

Código de ejemplo

El siguiente código fuente de ensamblaje 8086 corresponde a una subrutina llamada que copia una cadena de caracteres ASCIIZ_strtolower terminada en cero de una ubicación a otra, convirtiendo todos los caracteres alfabéticos a minúsculas. La cadena se copia un byte (carácter de 8 bits) a la vez.

0000 0000 550001 89 E50003 560004 570005 8B 75 060008 8B 7D 04000B FC000 °C CA000D 3C 41000F 7C 060011 3C 5A0013 7F 020015 04 200017 AA0018 08 C0001A 75 F0001C 5F001D 5E001E 5D001F C3001F
; _strtolower: ; Copiar una cadena ASCII terminada en nulo, convirtiendo ; todos los caracteres alfabéticos a minúsculas. ; ES=DS ; Parámetros de la pila de entrada ; [SP+4] = src, Dirección de la cadena de origen ; [SP+2] = dst, Dirección de la cadena de destino ; [SP+0] = Dirección de retorno ; _strtolower proc push bp ;Configurar el marco de llamada mov bp , sp push si push di mov si ,[ bp + 6 ] ;Establecer SI = src (+2 debido a push bp) mov di ,[ bp + 4 ] ;Establecer DI = dst cld ;dirección de la cadena bucle ascendente : lodsb ;Cargar AL desde [si], inc si cmp al , 'A' ;Si AL < 'A', jl copy ; Saltar conversión cmp al , 'Z' ;Si AL > 'Z', jg copy ; Saltar conversión add al , 'a' - 'A' ;Convertir AL a minúsculas copy: stosb ;Almacenar AL en [di], inc di o al , al ;Si AL <> 0, jne loop ;Repetir el loop done: pop di ;restaurar di y si pop si pop bp ;Restaurar el marco de llamada anterior ret ;Regresar al llamador end proc                                                         

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 utilizada por lenguajes similares a Algol desde fines de la década de 1950. Se supone un modelo de memoria plana, específicamente, que los segmentos DS y ES abordan la misma región de memoria.

Actuación

Diagrama de bloques simplificado sobre Intel 8088 (una variante de 8086); 1=registros principales y de índice; 2=registros de segmento e IP; 3=sumador de direcciones; 4=bus de direcciones interno; 5=cola de instrucciones; 6=unidad de control (¡muy simplificado!); 7=interfaz de bus; 8=bus de datos interno; 9=ALU; 10/11/12=bus de dirección/datos/control externo.

Aunque en parte se ven eclipsados ​​por otras opciones de diseño en este chip en particular, los buses de datos y direcciones multiplexados limitan ligeramente el rendimiento; las transferencias de cantidades de 16 bits u 8 bits se realizan en un ciclo de acceso a 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 realizan simultáneamente 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 prebúsqueda de 6 bytes (una forma de canalización de acoplamiento flexible ), acelerando las operaciones en registros e inmediatos , mientras que las operaciones de memoria se volvieron más lentas (cuatro años después, 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 significó 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 8085 fuera bastante significativa, a pesar de los casos en los que los chips más antiguos pueden ser más rápidos (ver a continuación).

Tiempos de ejecución de instrucciones típicas (en ciclos de reloj) [12]
instrucciónregistrarse-registrarseregístrate inmediatamentememoria de registroregistro de memoriamemoria-inmediata
movimiento248+EA9+EA10+ EA
ALU349+EA,16+ EA,17+EA
saltarregistro ≥ 11; etiqueta ≥ 15; condición, etiqueta ≥ 16
multiplicación de enteros70~160 (según los datos del operando y el tamaño), incluido cualquier EA
división de enteros80~190 (según los datos del operando y el tamaño), incluido cualquier EA
  • EA = tiempo para calcular la dirección efectiva, que varía entre 5 y 12 ciclos.
  • Los tiempos son los mejores, dependiendo del estado de precarga, la alineación de instrucciones y otros factores.

Como se puede ver en estas tablas, las operaciones sobre registros e inmediatos eran rápidas (entre 2 y 4 ciclos), mientras que las instrucciones sobre operandos de memoria y los saltos eran bastante lentos; los saltos llevaban más ciclos que en los sencillos 8080 y 8085 , y el 8088 (utilizado en el IBM PC) se veía además 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 búsqueda y ejecución acopladas de forma flexible son eficientes para la búsqueda previa de instrucciones, pero no para saltos y acceso aleatorio a datos (sin medidas especiales).
  • No se proporcionó ningún sumador de cálculo de dirección dedicado; las rutinas de microcódigo tenían que usar la ALU principal para esto (aunque había un sumador de segmento + desplazamiento dedicado ).
  • Los buses de dirección y 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. [ dudosodiscutir ]

Sin embargo, el rendimiento del acceso a la memoria mejoró drásticamente con la siguiente generación de CPU de la familia 8086 de Intel. Tanto el 80186 como 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).

Punto flotante

El 8086/8088 se podía conectar a un coprocesador matemático para añadir 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, y funcionaba con números de 80 bits. Fabricantes como Cyrix (compatible con el 8087) y Weitek ( no compatible con el 8087) acabaron creando coprocesadores de punto flotante de alto rendimiento que competían con el 8087.

Versiones de chips

La frecuencia de reloj estaba originalmente limitada a 5 MHz, [nota 13] pero las últimas versiones en HMOS fueron especificadas 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 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 utilizó en el GRiDPad , Toshiba T1200 , HP 110 y, finalmente, en el Lunar Prospector de 1998-1999 .

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

Lista de procesadores Intel 8086

Número de modeloFrecuenciaTecnologíaRango de temperaturaPaqueteFecha de lanzamientoPrecio (USD) [list2 1]
80865 MHz [13]HMOSDe 0 °C a 70 °C [14]8 de junio de 1978 [15]$86,65 [16]
8086-110 MHzHMOS IIComercial
8086-28 MHz [13]HMOS IIComercialEnero/Febrero 1980 [17]$200 [17] [18]
8086-44 MHz [13]HMOSComercial$72,50 [lista2 2] [19]
I80865 MHzHMOSIndustrial -40 °C a +85 °C [14]Mayo/junio de 1980 [14]$173,25 [14]
M80865 MHzHMOSGrado militar −55 °C a +125 °C [20]
80C86 [21]CMOSPLCC de 44 pines [lista 2 3] [22]
  1. ^ En cantidad de 100.
  2. ^ Precio reducido en 21% desde USD $99.00, no hay información en el valor de cantidad indicado.
  3. ^ Muestreo del cuarto trimestre de 1985

Derivados y clones

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

La industria electrónica de la Unión Soviética fue capaz de replicar el 8086 mediante espionaje industrial e ingeniería inversa [ cita requerida ] . El chip resultante, K1810VM86 , era compatible a nivel binario y de pines con el 8086.

i8086 e i8088 fueron respectivamente los núcleos de los ordenadores de sobremesa 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, desarrollados y fabricados en Bulgaria. EC significa Единая Система.) Sin embargo, el ordenador EC1831 (IZOT 1036C) tenía diferencias de hardware significativas con respecto al prototipo de IBM PC. El EC1831 fue el primer ordenador compatible con PC con dimensionamiento de bus dinámico (Patente de EE. UU. N.º 4.831.514). Posteriormente, algunos de los principios EC1831 se adoptaron 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).


Chips de soporte

  • Intel 8237 : controlador de acceso directo a memoria (DMA)
  • Intel 8251 : receptor/transmisor universal síncrono/asíncrono a 19,2 kbit/s
  • Intel 8253 : temporizador de intervalo programable, 3 x 16 bits, máx. 10 MHz
  • Intel 8255 : interfaz periférica programable, 3 pines de E/S de 8 bits utilizados para la conexión de impresora, etc.
  • Intel 8259 : controlador de interrupciones programable
  • Intel 8279 : controlador de teclado/pantalla, escanea una matriz de teclado y una matriz de pantalla como 7-seg
  • Intel 8282/8283 : pestillo de 8 bits
  • Intel 8284 : generador de reloj
  • Intel 8286/8287: controlador bidireccional de 8 bits. En 1980, las versiones Intel I8286/I8287 (de grado industrial) estaban disponibles por 16,25 dólares estadounidenses en cantidades de 100. [14]
  • Intel 8288 : controlador de bus
  • Intel 8289 : árbitro de bus
  • NEC μPD765 o Intel 8272A : controlador de disquete [24]

Microcomputadoras que utilizan el 8086

  • La computadora de placa única compatible con Intel Multibus ISBC 86/12 se anunció en 1978. [25]
  • La Xerox NoteTaker fue uno de los primeros diseños de computadoras portátiles en 1978 y utilizó tres chips 8086 (como CPU, procesador de gráficos y procesador de E/S), pero nunca entró en producción comercial.
  • Seattle Computer Products comenzó a distribuir sistemas 8086 basados ​​en bus S-100 (SCP200B) ya en noviembre de 1979.
  • El noruego Mycron 2000, introducido en 1980.
  • 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 (como se mencionó anteriormente).
  • El primer Compaq Deskpro utilizaba un 8086 que funcionaba a 7,16 MHz, pero era compatible con tarjetas complementarias diseñadas para el IBM PC XT de 4,77 MHz y podía cambiar 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.
  • Un 8086-2 de 8 MHz se utilizó en el AT&T 6300 PC (construido por Olivetti , y conocido globalmente bajo varias marcas y números de modelo), un microordenador de escritorio compatible con IBM PC. El M24 / PC 6300 tiene ranuras de expansión de 8 bits compatibles con IBM PC/XT, pero algunas de ellas tienen una extensión propietaria que proporciona el bus de datos de 16 bits completo 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, incluido el sistema de vídeo integrado, también disfrutan de transferencias de datos de 16 bits. El Olivetti M24SP posterior incluía un 8086-2 que funcionaba a la velocidad máxima de 10 MHz.
  • Los modelos IBM PS/2 25 y 30 se construyeron con un 8086 de 8 MHz.
  • Los Amstrad PC1512 , PC1640 , PC2086, PC3086 y PC5086 utilizaban CPU 8086 a 8 MHz.
  • El NEC PC-9801 .
  • Las máquinas Tandy 1000 de la serie SL y RL utilizaban CPU 8086 de 9,47 MHz.
  • La máquina de procesamiento de textos IBM Displaywriter [26] y la computadora Wang Professional, fabricada por Wang Laboratories , también utilizaban el 8086.
  • La NASA utilizó CPU 8086 originales en equipos para el mantenimiento terrestre 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 la actualización o del cambio a clones imperfectos. [27]
  • Monitores de radiación de área y proceso KAMAN [28]
  • El Tektronix 4170 ejecutaba CP/M-86 y utilizaba una unidad de procesamiento gráfico local 8086 4170 Manual de instrucciones (PDF)

Véase también

Notas

  1. ^ Menos buffers TTL, latches y multiplexores (aunque la cantidad de lógica TTL no se redujo drásticamente). También permite el uso de circuitos integrados baratos de la familia 8080, mientras que en el diseño de IBM PC se utilizaron los 8254 CTC, 8255 PIO y 8259 PIC. Además, simplifica el diseño de PCB y abarata las placas, además de exigir menos chips DRAM (de 1 o 4 bits de ancho).
  2. ^ utilizando lógica PMOS de carga de mejora (requiere 14  V , logrando compatibilidad TTL al tener V CC a +5 V y V DD a −9 V).
  3. ^ Utilizando lógica NMOS de carga de mejora no saturada (que exige un voltaje de compuerta más alto para las compuertas del transistor de carga).
  4. ^ Esto fue posible gracias a la lógica nMOS de carga de agotamiento (el 8085 se fabricó posteriormente utilizando procesamiento HMOS, al igual que el 8086).
  5. ^ La versión 0 del conjunto de instrucciones y la arquitectura estuvieron listas en unos tres meses, según Morse.
  6. ^ Utilizando rubylith , tableros de luz, reglas, borradores eléctricos y un digitalizador (según Jenny Hernández, miembro del equipo de diseño del 8086, en una declaración hecha en la página web de Intel por su 25° aniversario).
  7. ^ 8086 utilizó menos microcódigo que muchos diseños de la competencia, como el MC68000 y otros
  8. ^ Las RAM estáticas rápidas en tecnología MOS (tan rápidas como las RAM bipolares) fueron un producto importante para Intel durante este período.
  9. ^ CHMOS es el nombre de Intel para los circuitos CMOS fabricados utilizando pasos de procesamiento muy similares a los HMOS .
  10. ^ Otros miembros del equipo de diseño fueron Peter A. Stoll y Jenny Hernández.
  11. ^ La IBM PC y la PC/XT utilizan un procesador Intel 8088 que funciona en modo máximo, lo que permite que la CPU funcione con un coprocesador 8087 opcional instalado en el zócalo del coprocesador matemático de la placa base de la PC o la PC/XT. (La PC y la PC/XT pueden requerir el modo máximo por otras razones, como por ejemplo para soportar el controlador DMA).
  12. ^ Algunos clones 80186 cambiaron el valor de desplazamiento, pero nunca se usaron comúnmente en computadoras de escritorio.
  13. ^ (IBM PC utilizó 4,77 MHz, 4/3 de la frecuencia de ráfaga de color NTSC estándar )

Referencias

  1. ^ "El ciclo de vida de una CPU". www.cpushack.com .
  2. ^ Lewnes, Ann, "La arquitectura Intel386 llegó para quedarse", Intel Corporation, Microcomputer Solutions, julio/agosto de 1989, página 2
  3. ^ "Salón de la fama de los microprocesadores". Intel. Archivado desde el original el 6 de julio de 2007. Consultado el 11 de agosto de 2007 .
  4. ^ Referencia del programador iAPX 286 (PDF) . Intel. 1983. pág. 1-1.
  5. ^ ab "Feliz cumpleaños, 8086: el procesador Intel Core i7-8086K de octava generación de edición limitada ofrece la mejor experiencia de juego". Intel.
  6. ^ "Familia 8080". CPU World .
  7. ^ 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 8080 a nivel de lenguaje ensamblador. […]
  8. ^ Geiger, Randall L.; Allen, Phillip E.; Strader, Noel R. (1990). "Lógica aleatoria frente a formas lógicas estructuradas". 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
  9. ^ Intel Corporation (1983). Manual del usuario de IAPX 86, 88, 186 y 188: referencia del programador . Intel. pp. 3–5. ISBN 978-0835930352.OCLC 11091251  .
  10. ^ Morse, Stephen P.; Ravenel, Bruce W; Mazor, Stanley; Pohlman, William B. (octubre de 1980). "Microprocesadores Intel: 8008 a 8086". IEEE Computer . 13 (10): 42–60. doi :10.1109/MC.1980.1653375. S2CID  206445851.
  11. ^ "Hoja de datos del procesador HMOS 8086 de 16 bits" (PDF) . Intel. Archivado desde el original (PDF) el 26 de noviembre de 2021 . Consultado el 26 de noviembre de 2021 .
  12. ^ 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 proceden de las siguientes publicaciones: Intel Corporation. Manual del usuario de iAPX 86, 88, 186 y 188, Referencia del programador, Santa Clara, California, 1986.(De manera similar para iAPX 286, 80386, 80387).
  13. ^ abc Manual del usuario de la familia 8086 . Intel Corporation. Octubre de 1979. pág. B-1. OCLC  65699372.
  14. ^ abcde Intel Corporation (mayo-junio de 1980). "8086 disponible para entornos industriales". Intel Preview (edición especial: soluciones de 16 bits): 29. OCLC  803251993.
  15. ^ "Guía de referencia rápida del microprocesador Intel® - Año". www.intel.com .
  16. ^ 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.
  17. ^ de Intel Corporation (enero-febrero de 1980). "Nuevos productos: el 8086 más rápido ofrece un 60 % más de rendimiento". Intel Preview : 22.
  18. ^ 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 (número especial: soluciones de 16 bits): 17.
  19. ^ Intel Corporation (mayo-junio de 1979). «Componentes de microcomputadoras: nuevas reducciones de precios y mejoras de producción hacen que el popular microprocesador 8086 sea aún más atractivo». Intel Preview : 11.
  20. ^ Intel Corporation (agosto de 1981). Manual del usuario de Intel iAPX86, 88. Intel Corporation. pág. B-25. ISBN 0835930165.OCLC 8459750  .
  21. ^ Intel Corporation, "NewsBit: Intel otorga licencia a Oki para la versión CMOS de varios productos", Solutions, julio/agosto de 1984, página 1.
  22. ^ Ashborn, Jim; "Empaquetado avanzado: un poco rinde mucho", Intel Corporation, Solutions, enero/febrero de 1986, página 2
  23. ^ Intel Corporation, "NewsBits: Second Source News", Soluciones, enero/febrero de 1985, página 1
  24. ^ "La evolución del controlador de disquete | Museo OS/2". 26 de mayo de 2011. Consultado el 12 de mayo de 2016. En los IBM PC (1981) y PC/XT (1983) originales, el FDC se encontraba físicamente en una tarjeta adaptadora de disquete independiente. El propio FDC era un NEC μPD765A o una pieza compatible, como el Intel 8272A.
  25. ^ "Intel añade una placa única de 16 bits". Computerworld . Vol. XII, núm. 50. 11 de diciembre de 1978. pág. 86. ISSN  0010-4841.
  26. ^ Zachmann, Mark (23 de agosto de 1982). "Los defectos de IBM Personal Computer frustran a los críticos". InfoWorld . Vol. 4, no. 33. págs. 57-58. ISSN  0199-6649. El IBM Displaywriter es notablemente más caro que otros microprocesadores industriales que utilizan el 8086.
  27. ^ "La NASA apuesta audazmente por las piezas antiguas... en eBay" . New York Times . 12 de mayo de 2002.
  28. ^ Manual técnico de Kaman
  • Fichas técnicas de Intel
  • Lista de CPU 8086 y sus clones en CPUworld.com
  • Distribución de pines del modelo 8086
  • Interfaz de modo máximo Archivado desde el original el 21 de julio de 2011. Consultado el 10 de julio de 2022.
  • Manual del usuario del modelo 8086 Octubre de 1979 INTEL Corporation ( documento PDF )
  • Códigos de programa 8086 que utilizan el emulador emu8086 (versión 4.08)
  • Jenner, Andrew (septiembre de 2020). "Desmontaje del microcódigo 8086". Blog de Reenigne .
  • Shirriff, Ken (junio de 2020). "Una mirada al chip del procesador 8086".
    • — (Junio ​​de 2020). "Die Shrink: Cómo Intel redujo el tamaño del procesador 8086".
    • — (Julio 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ética/lógica del 8086 a partir de fotos de matrices".
    • — (Noviembre de 2022). "Los inusuales controladores de arranque dentro del chip del microprocesador 8086".
    • — (Noviembre de 2022). "Corrección de un error en el microprocesador 8086, revelado en el silicio de la matriz".
    • — (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 tubería de microcódigo del procesador 8086 a partir del análisis de la matriz".
    • — (Enero de 2023). “Contar los transistores en el procesador 8086 es más difícil de lo que uno cree”.
    • — (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 DAA (ajuste decimal después de la suma) de x86".
    • — (febrero de 2023). «Ingeniería inversa de silicio: el circuito insignia 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 grupal: el primer paso en la decodificación de instrucciones del procesador 8086".
    • — (Julio de 2023). "Ingeniería inversa de los circuitos de pines de datos y direcciones del procesador 8086".
    • — (Julio de 2023). "Instrucciones 8086 no documentadas, explicadas mediante el microcódigo".
    • — (Agosto de 2023). "Rastreando las raíces del conjunto de instrucciones 8086 hasta la minicomputadora Datapoint 2200".
    • — (Agosto de 2023). "Una mirada detallada al circuito de retención de bus del procesador 8086".
    • — (Octubre de 2023). "Cómo se implementan los flip-flops 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 de bus del procesador Intel 8088".
Retrieved from "https://en.wikipedia.org/w/index.php?title=Intel_8086&oldid=1241616450"