Intel 8086 – Wikipedia

before-content-x4

Microprocesador de 16 bits

Intel 8086
Intel C8086.jpg

after-content-x4

Un raro procesador Intel C8086 en paquete de inmersión de cerámica púrpura con alfileres laterales

Lanzado 1978
Interrumpido 1998 [primero]
Fabricantes comunes
Max. Tasa de reloj de la CPU 5 MHz a 10 MHz
Ancho de datos 16 bits
Ancho de dirección 20 bits
Nodo tecnológico 3 µm
Conjunto de instrucciones x86-16
Transistores
Coprocesador Intel 8087, Intel 8089
Paquete (s)
Zócalo (s)
Variante (s)
Predecesor Intel 8085
Sucesor 80186 y 80286 (ambos se introdujeron a principios de 1982)
Sin apoyo

El 8086 [2] (también llamado IAPX 86 ) [3] es un chip de microprocesador de 16 bits diseñado por Intel entre principios de 1976 y el 8 de junio de 1978, cuando se lanzó. El Intel 8088, lanzado el 1 de julio de 1979, [4] es un chip ligeramente modificado con un bus de datos externo de 8 bits (que permite el uso de ICS de soporte más baratos y más baratos), [nota 1] y es notable como el procesador utilizado en el diseño original de PC 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 que celebró el 40 aniversario del Intel 8086, llamado Intel Core i7-8086k. [4]

Historia [ editar ]

Fondo [ editar ]

En 1972, Intel lanzó el 8008, el primer microprocesador de 8 bits de Intel. [nota 2] Implementó un conjunto de instrucciones diseñado por DataPoint Corporation con terminales CRT programables en mente, que también demostró ser bastante general. El dispositivo necesitaba varios IC adicionales para producir una computadora funcional, en parte debido a que se empaquetaba en un pequeño “paquete de memoria” de 18 pines, que descartaba el uso de un bus de direcciones separado (Intel era principalmente un fabricante de DRAM en ese momento ).

after-content-x4

Dos años después, Intel lanzó el 8080, [nota 3] Empleando los nuevos paquetes DIL de 40 pines desarrollados originalmente para IC de calculadora para habilitar un bus de direcciones separado. Tiene un conjunto de instrucciones extendidas que es compatible con la fuente (no compatible con binarios) con el 8008 [5] 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 la carga de agotamiento, que fue suficiente con una sola fuente de alimentación de +5 V en lugar de los tres voltajes operativos diferentes de chips anteriores. [Nota 4] Otros microprocesadores bien conocidos de 8 bits 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 [ editar ]

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

Mientras que el 8086 era un microprocesador de 16 bits, utilizó la misma microarquitectura que los microprocesadores de 8 bits de Intel (8008, 8080 y 8085). Esto permitió que los programas de lenguaje de ensamblaje escritos en 8 bits migraran sin problemas. [6] Se agregaron nuevas instrucciones y características, como enteros firmados, direccionamiento base+compensación y operaciones de auto repente. Se agregaron instrucciones para ayudar a la compilación del código fuente de funciones anidadas en la familia Algol de Idiomas, 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 del lenguaje de ensamblaje multiplicar y dividir. Los diseñadores también anticiparon coprocesadores, como 8087 y 8089, por lo que la estructura del bus fue diseñada 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 usaron herramientas CAD, cuatro ingenieros y 12 personas de diseño estaban trabajando simultáneamente en el chip. [Nota 6] El 8086 tomó un poco más de dos años desde la idea hasta el producto de trabajo, que se consideró bastante rápido para un diseño complejo en 1976-1978.

El 8086 fue secuenciado [Nota 7] Usando una mezcla de lógica aleatoria [7] y microcódigo y se implementó utilizando circuitos NMOS de carga de agotamiento con aproximadamente 20,000 transistores activos (29,000 contando todos los sitios de ROM y PLA). Pronto se trasladó a un nuevo proceso de fabricación de NMOS refinado llamado HMOS (para MOS de alto rendimiento) que Intel desarrolló originalmente para la fabricación de productos de RAM estáticos rápidos. [Nota 8] Esto fue seguido por las versiones HMOS-II, HMOS-III y, eventualmente, una versión CMOS totalmente estática para dispositivos alimentados por batería, fabricados utilizando los procesos CHMOS de Intel. [Nota 9] El chip original midió 33 mm² y el tamaño mínimo de la característica fue de 3.2 μm.

La arquitectura fue definida por Stephen P. Morse con algo de ayuda de Bruce Ravenel (el arquitecto del 8087) para refinar las revisiones finales. El diseñador lógico Jim McKevitt y John Bayliss fueron los ingenieros principales del equipo de desarrollo a nivel de hardware [Nota 10] y Bill Pohlman el gerente del proyecto. El legado del 8086 es duradero en el conjunto de instrucciones básicas de las computadoras y servidores personales de hoy; El 8086 también prestó sus últimos dos dígitos a versiones más tarde 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 PCI para dispositivos Intel es 8086 H .)

Detalles [ editar ]

Las asignaciones de pin 8086 en modo min y máximo

Autobuses y operación [ editar ]

Todos los registros internos, así como los buses de datos internos y externos, tienen 16 bits de ancho, que estableció firmemente la identidad del “microprocesador de 16 bits” del 8086. Un bus de direcciones 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 aborda mediante la “segmentación” de memoria interna. El bus de datos se multiplica con el bus de direcciones para adaptarse a todas las líneas de control en un paquete estándar de 40 pines en línea en línea. Proporciona un bus de direcciones de E/S de 16 bits, que admite 64 kb de espacio de E/S separado. El espacio de dirección lineal máximo se limita a 64 kb, simplemente porque los registros de dirección/índice internos tienen solo 16 bits de ancho. La programación de más de 64 límites de memoria de KB implica ajustar los registros de segmento (ver más abajo); Esta dificultad existió hasta que la arquitectura 80386 introdujo registros más amplios (32 bits) (el hardware de gestión de memoria en el 80286 no ayudó a este respecto, ya que sus registros todavía tienen solo 16 bits de ancho).

Modos de hardware de 8086 [ editar ]

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 está operado en mínimo o máximo modo. El primer modo está destinado a pequeños sistemas de procesador único, mientras que el segundo es para sistemas medianos o grandes que usan más de un procesador (una especie de modo multiprocesador). Se requiere el modo máximo cuando se usa un coprocesador 8087 u 8089. El voltaje del pin 33 (MN/ Mx ) determina el modo. Cambiar el estado del PIN 33 cambia la función de ciertos otros pines, la mayoría de los cuales tienen que ver con cómo la CPU maneja el bus (local). [Nota 11] El modo generalmente está conectado al circuito y, por lo tanto, no puede ser cambiado por el software. El funcionamiento de estos modos se describe en términos de diagramas de tiempo en hojas de datos y manuales de Intel. En modo mínimo, todas las señales de control son generadas por el 8086.

Registros e instrucciones [ editar ]

Intel 8086 Registros
primero 9 primero 8 primero 7 primero 6 primero 5 primero 4 primero 3 primero 2 primero primero primero 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 primero 0 0 (posición de bit)
Registros principales
Como Alabama HACHA (acumulador primario)
0 0 0 0 0 Bh Con Bx (base, acumulador)
Pez CL CX (contador, acumulador)
Dh DL Dx (Acumulador, ACC extendido)
Registros de índice
0 0 0 0 0 Y S nuestro I ndex
0 0 0 0 0 DE D estinación I ndex
0 0 0 0 0 BP B Plaza bursátil norteamericana PAG ointer
0 0 0 0 0 Sp S virar PAG ointer
Contador de programa
0 0 0 0 0 IP I nstrucción PAG ointer
Registros de segmento
CS 0 0 0 0 0 C oda S egmento
Ds 0 0 0 0 0 D patada S egmento
ES 0 0 0 0 0 Y XTRA S egmento
Ss 0 0 0 0 0 S virar S egmento
Registro de estado
O D I T S CON A PAG C Banderas

El 8086 tiene ocho registros más o menos generales de 16 bits (incluido el puntero de la pila pero excluyendo el puntero de instrucciones, 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 procesadores de 8 bits, la mayoría de las instrucciones son operaciones de una dirección o dos direcciones, lo que significa que el resultado se almacena en uno de los operandos. A lo sumo, 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 fuente , pueden ser cualquiera de los dos registro o inmediato . Una sola ubicación de memoria también se puede usar a menudo como ambos fuente y destino que, entre otros factores, contribuye aún más a una densidad de código comparable (y a menudo mejor que) la mayoría de las máquinas de ocho bits en ese momento.

El grado de generalidad de la mayoría de los registros es mucho mayor que en el 8080 u 8085. Sin embargo, 8086 registros fueron más especializados que en la mayoría de las minicomputadoras contemporáneas y también se usan implícitamente por algunas instrucciones. Si bien es perfectamente sensible para el programador de ensamblaje, esto hace que la asignación de registro para compiladores sea más complicada en comparación con más ortogonales procesadores de 16 y 32 bits de la época, como el PDP-11, VAX, 68000, 32016, etc. , siendo más regular que los microprocesadores de 8 bits bastante minimalistas pero ubicuos, como las máquinas 6502, 6800, 6809, 8085, MCS-48, 8051 y otras máquinas basadas en acumuladores contemporáneos, es significativamente más fácil construir un generador de código eficiente para La arquitectura 8086.

Otro factor para esto es que el 8086 también introdujo algunas instrucciones nuevas (no presentes en el 8080 y 8085) para apoyar 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 empujar memor , y bien tamaño , apoyando la “Convención de llamadas Pascal” directamente. (Varios otros, como empujar inmediatamente y ingresar , se agregaron en los procesadores posteriores 80186, 80286 y 80386).

Una pila de 64 kb (un segmento) que crece hacia direcciones inferiores es compatible con hardware; Las palabras de 16 bits se empujan a la pila, y la parte superior de la pila apunta por SS: SP. Hay 256 interrupciones, que pueden ser invocadas por hardware y software. Las interrupciones pueden en cascada, utilizando la pila para almacenar las direcciones de devolución.

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

Banderas [ editar ]

El 8086 tiene un registro de banderas de 16 bits. Nueve de estos indicadores de código de condición están activos e indican el estado actual del procesador: bandera de transporte (cf), bandera de paridad (PF), bandera de transporte auxiliar (AF), bandera cero (ZF), indicador de signo (SF), trampa FLAG (TF), Bandera de interrupción (IF), Bandera de dirección (DF) y Bandera de desbordamiento (OF).
También conocido como la palabra de estado, el diseño del registro de banderas es el siguiente: [8]

Poco 15-12 11 diez 9 8 7 6 5 4 3 2 primero 0
Bandera DE Df SI TF SF ZF DE PF CF

Segmentación [ editar ]

También hay cuatro registros de segmento de 16 bits (ver figura) que permiten que la CPU 8086 acceda a un megabyte de memoria de manera inusual. En lugar de concatenar el registro del segmento con el registro de direcciones, como en la mayoría de los procesadores cuyo espacio de dirección excede su tamaño de registro, el 8086 cambia el segmento de 16 bits solo queda cuatro bits antes de agregarlo al desplazamiento de 16 bits (16 × segmento + desplazamiento ), por lo tanto, produce una dirección externa (o efectiva o física) de 20 bits desde el segmento de 32 bits: par de compensación. Como resultado, cada dirección externa puede referirse por 2 duodécimo = 4096 segmento diferente: pares de compensación.

0110 1000 1000 01111 0000 Segmento , 16 bits, desplazados 4 bits restantes (o multiplicados por 0x10)
+ + 0011 0100 1010 1001 Compensar , 16 bits
0110 1011 1101 0001 1001 DIRECCIÓN , 20 bits

Aunque se considera complicado y engorroso por muchos programadores, este esquema también tiene ventajas; Se puede cargar un pequeño programa (menos de 64 kb) a partir de un desplazamiento fijo (como 0000) en su propio segmento, evitando la necesidad de reubicación, con como máximo 15 bytes de desechos de alineación.

Los compiladores para la familia 8086 comúnmente apoyan dos tipos de puntero, cerca y lejos . Los punteros cercanos son compensaciones de 16 bits implícitamente asociadas con el código o el segmento de datos del programa y, por lo tanto, solo pueden usarse dentro de partes de un programa lo suficientemente pequeño como para caber en un segmento. Los punteros lejanos son segmento de 32 bits: pares de compensación que se resuelven a direcciones externas de 20 bits. Algunos compiladores también admiten enorme Los punteros, que son como punteros lejanos, excepto que el puntero aritmético en un puntero enorme lo trata como un puntero lineal de 20 bits, mientras que el puntero aritmético 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 cerca y lejos En numerosos punteros, estructuras de datos y funciones, los compiladores también admiten “modelos de memoria” que especifican los tamaños de puntero predeterminados. El diminuto (Max 64k), pequeño (Max 128k), compacto (Datos> 64k), medio (Código> 64k), grande (código, datos> 64k) y enorme (matrices individuales> 64k) Los modelos cubren combinaciones prácticas de punteros cercanos, lejanos y enormes para código y datos. El diminuto El modelo 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 construir .con archivos por ejemplo. Las bibliotecas precompiladas a menudo vienen en varias versiones compiladas para diferentes modelos de memoria.

Según Morse et al.,. [9] Los diseñadores realmente contemplaron usando 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 con límites de 256 bytes, y 1 MB se consideró muy grande para un microprocesador alrededor de 1976, la idea fue despedida. Además, no había suficientes pines disponibles en un paquete de 40 pines de bajo costo para los pasadores de autobús de cuatro direcciones adicionales.

En principio, el espacio de direcciones de la serie x86 podría se han extendido en procesadores posteriores al aumentar el valor de cambio, siempre que las aplicaciones obtuvieran sus segmentos del sistema operativo y no hicieron suposiciones sobre la equivalencia de diferentes segmentos: pares de compensación. [Nota 12] En la práctica, el uso de punteros “enormes” y mecanismos similares se extendió y el direccionamiento plano de 32 bits hizo posible con los registros de compensación de 32 bits en el 80386 eventualmente extendió el rango de direccionamiento limitado de una manera más general.

El flujo de instrucciones se obtiene de la memoria como palabras y el procesador aborda internamente al nivel de byte según sea necesario. Un mecanismo de cola de flujo de instrucciones permite que hasta 6 bytes del flujo de instrucciones se pongan en cola mientras se espera la decodificación y la ejecución. La cola actúa como un amortiguador de primera en primera salida (FIFO), desde el cual la unidad de ejecución (UE) extrae 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 recuperación de palabras. Si la cola está vacía (siguiendo una instrucción de rama, por ejemplo), el primer byte en la cola está disponible inmediatamente para la UE. [diez]

Portando software más antiguo [ editar ]

Los programas pequeños podrían ignorar la segmentación y simplemente usar el direccionamiento simple de 16 bits. Esto permite que el software de 8 bits se transfiera con bastante facilidad al 8086. Los autores de la mayoría de las implementaciones de DOS aprovechan esto al proporcionar una interfaz de programación de aplicaciones muy similar a CP/M, así como incluir lo simple .con Formato de archivo ejecutable, idéntico a CP/M. Esto era importante cuando el 8086 y MS-DOS eran nuevos, ya que permitía que muchas aplicaciones CP/M (y otras) existentes estuvieran disponibles rápidamente, aliviando en gran medida la aceptación de la nueva plataforma.

Código de ejemplo [ editar ]

El siguiente código fuente del ensamblador 8086/8088 es para una subrutina nombrada _memcpy que copia un bloque de bytes de datos de un tamaño dado de una ubicación a otra. El bloque de datos se copia un byte a la vez, 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: 101F 
; _memcpy (DST, SRC, Len)  ; Copie un bloque de memoria de una ubicación a otra.  ;  ; Entry stack parameters
;      [BP+6] = len, Number of bytes to copy
;      [BP+4] = src, Address of source data block
;      [BP+2] = dst, Address of target data block
;
; Return registers
;      AX = Zero

            org     1000h       ; Start at 0000:1000h

_memcpy     proc
            push    bp          ; Set up the call frame
            mov     bp,sp
            push    es          ; Save ES
            mov     cx,[bp+6]   ; Set CX = len
            jcxz    done        ; If len = 0, return
            mov     si,[bp+4]   ; Set SI = src
            mov     di,[bp+2]   ; Set DI = dst
            push    ds          ; Set ES = DS
            pop     es

loop        mov     al,[si]     ; Load AL from [src]
            mov     [di],al     ; Store AL to [dst]
            inc     si          ; Increment src
            inc     di          ; Increment dst
            dec     cx          ; Decrement len
            jnz     loop        ; Repeat the loop

done        pop     es          ; Restore ES
            pop     bp          ; Restore previous call frame
            sub     ax,ax       ; Set AX = 0
            ret                 ; Return
            end proc

El código anterior utiliza el registro BP (puntero base) para establecer un marco de llamadas, 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 llamadas admite código reentrante y recursivo, y ha sido utilizado por la mayoría de los idiomas similares a Algol desde fines 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 suponen que los datos de origen se almacenan en DS: SI, los datos de destino se almacenan en ES: DI, y que el número de elementos para copiar se almacena en CX. La rutina anterior requiere que la fuente y el bloque de destino estén en el mismo segmento, por lo tanto, DS se copia a ES. La sección de bucle de lo anterior puede ser reemplazada por:

0000: 1011 FC
0000: 1012 F3
0000: 1013 A4 
 CLD  ; Copiar hacia direcciones más altas  bucle  reps  ; Repita hasta que CX = 0   movsb  ; Mover el bloque de datos  

Esto copia el bloque de datos un byte a la vez. El REPS La instrucción causa lo siguiente Movsb Repetir hasta que CX sea cero, incrementando automáticamente SI y DI y disminuyendo CX a medida que se repite. Alternativamente el Movido La instrucción se puede usar para copiar palabras de 16 bits (bytes dobles) a la vez (en cuyo caso CX cuenta el número de palabras copiadas en lugar del número de bytes). La mayoría de los ensambladores reconocerán adecuadamente el REPS instrucción si se usa como un prefijo en línea para el Movsb instrucción, como en Representante Movsb .

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

Actuación [ editar ]

Diagrama de bloques simplificado sobre Intel 8088 (una variante de 8086); 1 = registros principales e índices; 2 = Registros de segmento e IP; 3 = Adder de dirección; 4 = bus de direcciones interna; 5 = cola de instrucciones; 6 = Unidad de control (¡muy simplificado!); 7 = interfaz de bus; 8 = datos internos; 9 = Alu; 10/11/12 = dirección externa/datos/bus de control.

Aunque parcialmente sombreado 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 o 8 bits se realizan en un ciclo de acceso a la memoria de cuatro calil, que es más rápido en 16 bits, aunque más lento en cantidades de 8 bits, en comparación con muchas CPU basadas en 8 bits contemporáneas. A medida que las instrucciones varían de uno a seis bytes, la búsqueda y la ejecución se hacen concurrentes y se desacoplan en unidades separadas (como sigue en los procesadores X86 de hoy): el Unidad de interfaz de bus alimenta el flujo de instrucciones al unidad de ejecución A través de una cola previa de 6 bytes (una forma de canalización flojamente acoplada), 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 un ancho completo Alu significaba que las instrucciones aritméticas de 16 bits ahora podían realizarse con un solo ciclo de ALU (en lugar de dos, a través del transporte interno, como en el 8080 y 8085) , acelerando considerablemente tales instrucciones. Combinado con ortogonalizaciones de operaciones versus tipos de operando y modos de direccionamiento, así como otras mejoras, esto hizo que la ganancia de rendimiento durante el 8080 u 8085 sea bastante significativa, a pesar de los casos en que los chips más antiguos pueden ser más rápido (ver más abajo).

Tiempos de ejecución para instrucciones típicas (en ciclos de reloj) [11]
instrucción registro-registro registrarse inmediato memoria de registro registro de memoria inyección de la memoria
arroz 2 4 8 + de 9 + de 10 + de
Ir 3 4 9 + del, 16 + del, 17 + de
saltar registro ≥ 11; etiqueta ≥ 15; condición, etiqueta ≥ 16
Integer Multiplicar 70 ~ 160 (dependiendo del operando datos así como tamaño) incluido cualquier ea
división entera 80 ~ 190 (dependiendo del operando datos así como tamaño) incluido cualquier ea
  • EA = tiempo para calcular la dirección efectiva, que oscila entre 5 y 12 ciclos.
  • Los tiempos son el mejor de los casos, dependiendo del estado previo, la alineación de instrucciones y otros factores.

Como se puede ver en estas tablas, las operaciones en registros e inmediatos fueron rápidos (entre 2 y 4 ciclos), mientras que las instrucciones y saltos de la memoria de memoria fueron bastante lentos; Los saltos tomaron más ciclos que en los simples 8080 y 8085, y el 8088 (utilizado en la PC IBM) también se vio obstaculizado por su bus más estrecho. Las razones por las cuales la mayoría de las instrucciones relacionadas con la memoria fueron lentas fueron triples:

  • Las unidades de ejecución y de ejecución acopladas libremente son eficientes para la captura previa de la instrucción, pero no para saltos y acceso aleatorio de datos (sin medidas especiales).
  • No se proporcionó un sumador de cálculo de dirección dedicado; Las rutinas de microcódigo tuvieron que usar el Alu principal para esto (aunque había un dedicado segmento + + compensar sumador).
  • La dirección y los autobuses de datos se multiplexaron, 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 se 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 dirección dedicado, ahorrando muchos ciclos, y el 80286 también tenía direcciones separadas (no complementadas) y buses de datos.

Punto flotante [ editar ]

El 8086/8088 podría conectarse a un coprocesador matemático para agregar un rendimiento de punto flotante basado en hardware/microcódigo. El Intel 8087 fue el coprocesador de matemáticas 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 8087 compatible) Finalmente se les ocurrió coprocesadores de punto flotante de alto rendimiento que compitieron con el 8087.

Versiones de chips [ editar ]

La frecuencia del reloj se limitó originalmente a 5 MHz, [Nota 13] Pero las últimas versiones en HMO se especificaron para 10 MHz. Las versiones HMOS-III y CMOS se fabricaron durante mucho tiempo (al menos un tiempo en 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 el uso incrustado .

El 80C86, la versión CMOS del 8086, se usó en el Gridpad, Toshiba T1200, HP 110 y finalmente en el prospector lunar 1998-1999.

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

Lista de Intel 8086 [ editar ]

Número de modelo Frecuencia Tecnología Rango de temperatura Paquete Fecha de lanzamiento Precio (dólares americanos) [Lista2 1]
8086 5 MHz [duodécimo] HMO 0 ° C a 70 ° C [13] 8 de junio de 1978 [14] $ 86.65 [15]
8086-1 10 MHz HMO Comercial
8086-2 8 MHz [duodécimo] HMO Comercial Enero/febrero de 1980 [dieciséis] $ 200 [dieciséis] [17]
8086-4 4 MHz [duodécimo] HMO Comercial $ 72.50 [Lista2 2] [18]
I8086 5 MHz HMO Industrial -40 ° C a +85 ° C [13] Mayo/junio de 1980 [13] $ 173.25 [13]
M8086 5 MHz HMO Grado militar -55 ° C a +125 ° C [19]
80C86 [20] CMOS 44 PIN PLCC [Lista2 3] [21]
  1. ^ En cantidad de 100.
  2. ^ Precio reducido en un 21% de USD $ 99.00, sin información en el valor de la cantidad enumerada.
  3. ^ Muestreo Q4 1985

Derivados y clones [ editar ]

Las versiones compatibles, y, en muchos casos, fueron fabricadas por Fujitsu, [22] Harris/Intersil, Oki, Siemens, Texas Instruments, NEC, Mitsubishi y AMD. Por ejemplo, el par NEC V20 y NEC V30 fueron compatibles con el hardware con el 8088 y 8086 a pesar de que NEC realizó clones Intel originales μPD8088D y μPD8086D respectivamente, pero incorporó el conjunto de instrucciones del 80186 junto con algunos (pero no todos) del 80186 del 80186 Mejoras de velocidad, proporcionando una capacidad de entrega para actualizar tanto la velocidad de instrucciones como la velocidad de procesamiento sin que los fabricantes tengan que modificar sus diseños. Tales procesadores relativamente simples y compatibles con baja potencia en CMOS todavía se usan en sistemas integrados.

La industria electrónica de la Unión Soviética pudo replicar el 8086 a través de Espionaje industrial e ingeniería inversa [ Cita necesaria ] . El chip resultante, K1810VM86, era binario y compatible con PIN 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 de la CE de IZOT 1036C y EC1832 es la identificación de la CE de Izot 1037C, desarrollada y fabricada en Bulgaria. EC representa Erero единаke систее{). . El EC1831 fue la primera computadora compatible con PC con tamaño de bus dinámico (US Pat. No 4,831,514). Más tarde, se adoptaron algunos de los principios EC1831 en PS/2 (Pat. No 5,548,786) y algunas otras máquinas (Solicitud de patente del Reino Unido, Publicación No. GB-A-2211325, publicada el 28 de junio de 1989).

NEC μPD8086D-2 (8 MHz) del año 1984, Semana 19 Japón (clon de Intel D8086-2)

Soporte de chips [ editar ]

Microcomputadoras usando el 8086 [ editar ]

  • La computadora de un solo tablero de tablero con Intel Multibus ISBC 86/12 se anunció en 1978. [24]
  • El Xerox Notetaker fue uno de los primeros diseños de computadora portátiles en 1978 y usó tres chips 8086 (como CPU, procesador de gráficos y procesador de E/S), pero nunca ingresó a la producción comercial.
  • Seattle Computer Products envió sistemas 8086 basados ​​en bus S-100 (SCP200B) ya en noviembre de 1979.
  • El noruego Mycron 2000, introducido en 1980.
  • Una de las microcomputadoras más influyentes de todas, la PC IBM, 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 usó un 8086 que se ejecuta a 7.16 MHz, pero era compatible con tarjetas complementarias diseñadas para el IBM PC XT de 4.77 MHz y podría cambiar la CPU a la velocidad más baja (que también cambió en un búfer de bus de memoria para simular el El acceso más lento del 8088) para evitar problemas de tiempo de software.
  • Se usó un 8086-2 de 8 MHz en la PC AT&T 6300 (construida por Olivetti, y conocido a nivel mundial bajo varias marcas y números de modelo), una microcomputadora de escritorio compatible con PC IBM. 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 patentada que proporciona el bus de datos completo de 16 bits de la CPU 8086 (similar en concepto a las ranuras de 16 bits del IBM PC en, pero diferente en los detalles del diseño, y físicamente incompatible), y todos los periféricos del sistema, incluido el sistema de video a bordo, también disfrutan de transferencias de datos de 16 bits. El posterior Olivetti M24SP presentó un 8086-2 que se ejecuta con el máximo máximo de 10 MHz.
  • Los modelos IBM PS/2 25 y 30 se construyeron con un 8086 de 8 MHz.
  • El Amstrad PC1512, PC1640, PC2086, PC3086 y PC5086 usó 8086 CPU a 8 MHz.
  • El NEC PC-9801.
  • Las máquinas Tandy 1000 SL-Series y RL utilizaron 9.47 MHz 8086 CPU.
  • La máquina de procesamiento de palabras de IBM DisplayWriter [25] y la computadora profesional de Wang, fabricada por Wang Laboratories, también utilizó el 8086.
  • La NASA utilizó CPU 8086 originales en equipos para el mantenimiento terrestre del descubrimiento del transbordador espacial hasta el final del programa de transbordadores espaciales en 2011. Esta decisión se tomó para evitar la regresión de software que podría resultar de actualizar o cambiar a clones imperfectos. [26]
  • Monitores de Kaman Process and Area Radiation Radiation [27]
  • El Tektronix 4170 corrió CP/M-86 y usó un 8086. 4170 Manual de instrucciones de la unidad de procesamiento de gráficos locales (PDF)

Ver también [ editar ]

  1. ^ Menos amortiguadores TTL, pestillos, multiplexores (aunque la cantidad de TTL lógica no se redujo drásticamente). También permite el uso de ICS de 8080 familias baratos, donde se usaron el 8254 CTC, 8255 PIO y 8259 PIC en el diseño de PC IBM. Además, hace que el diseño de PCB sea más simple y tableros más baratos, además de exigir menos chips DRAM (de 1 o 4 bits de ancho).
  2. ^ Uso de la lógica de PMOS de carga de mejora (que requiere 14 V, logre la compatibilidad de TTL al tener V V CC a +5 V y V Dd en −9 V).
  3. ^ Utilizando la lógica de NMOS de carga de mejora no saturada (exigiendo un voltaje de puerta más alto para las puertas de transistor de carga).
  4. ^ Hecho posible con la lógica de NMOS de carga de agotamiento (el 8085 se realizó más tarde usando el procesamiento de HMOS, al igual que el 8086).
  5. ^ Rev.0 del conjunto de instrucciones y la arquitectura estuvo listo en unos tres meses, según Morse.
  6. ^ Usando Rubylith, tableros de luz, reglas, borradores eléctricos y un digitalizador (según Jenny Hernández, miembro del equipo de diseño 8086, en un comunicado realizado en la página web de Intel para su 25 cumpleaños).
  7. ^ 8086 usó menos microcódigo que los diseños de muchos competidores, como el MC68000 y otros
  8. ^ Ramas estáticas rápidas en la tecnología MOS (tan rápido como las carnero bipolares) fue un producto importante para Intel durante este período.
  9. ^ CHMOS es el nombre de Intel para los circuitos CMOS fabricados con pasos de procesamiento muy similar a las HMO.
  10. ^ Otros miembros del equipo de diseño fueron Peter A. Stoll y Jenny Hernández.
  11. ^ La PC IBM y la PC/XT usan un Intel 8088 que se ejecuta en modo máximo, lo que permite que la CPU funcione con un coprocesador 8087 opcional instalado en el socket de coprocesador de matemáticas en la PC o PC/XT. (La PC y PC/XT pueden requerir el modo máximo por otras razones, como tal vez para admitir el controlador DMA).
  12. ^ Unos clones 80186 cambiaron el valor de cambio, pero nunca se usaron comúnmente en las computadoras de escritorio.
  13. ^ (PC IBM usó 4.77 MHz, 4/3 la frecuencia estándar de ráfaga de color NTSC)

Referencias [ editar ]

  1. ^ “El ciclo de vida de una CPU” . www.cpushack.com .
  2. ^ “Microprocesador Salón de la Fama” . Intel. Archivado de el original el 2007-07-06 . Recuperado 2007-08-11 .
  3. ^ Referencia del programador IAPX 286 (PDF) . Intel. 1983. p. 1-1.
  4. ^ a b “Feliz cumpleaños, 8086: la octava de edición limitada Intel Core i7-8086k ofrece la mejor experiencia de juego” . Intel.
  5. ^ “Familia 8080” . Mundo de la CPU .
  6. ^ Scanlon, Leo J. (1988). 8086/8088/80286 Idioma de ensamblaje . Brady Books. pag. duodécimo . ISBN 978-0-13-246919-7-7 . […] El 8086 es compatible con el software con el 8080 en el nivel de lenguaje de ensamblaje. […]
  7. ^ Geiger, Randall L.; Allen, Phillip E.; Strader, Noel R. (1990). “Lógica aleatoria versus formas lógicas estructuradas”. Técnicas de diseño VLSI para circuitos analógicos y digitales . McGraw-Hill. pag. 779. ISBN 0-07-023253-9 . – Ilustración del uso de la lógica de control de la CPU “aleatoria”
  8. ^ Intel Corporation (1983). IAPX 86, 88, 186 y 188 Manual del usuario: referencia del programador . páginas. 3-5. ISBN 978-0835930352 . OCLC 11091251 .
  9. ^ Morse, Stephen P.; Ravenel, Bruce W; Mazor, Stanley; Pohlman, William B. (octubre de 1980). “Microprocesadores Intel: 8008 a 8086” . Computadora IEEE . 13 (10): 42–60. doi: 10,1109/MC.1980.1653375 . S2cid 206445851 .
  10. ^ “Hoja de datos del procesador HMOS 8086 de 16 bits” (PDF) . Intel . Recuperado 26 de noviembre 2021 .
  11. ^ Manual de referencia de Microsoft Macro Ensambater 5.0 . Corporación Microsoft. 1987. Los tiempos y codificaciones en este manual se utilizan con permiso de Intel y provienen de las siguientes publicaciones: Intel Corporation. IAPX 86, 88, 186 y 188 Manual del usuario, referencia del programador, Santa Clara, California 1986. (Del mismo modo para IAPX 286, 80386, 80387.)
  12. ^ a b C El manual de usuario familiar 8086 . Corporación Intel. Octubre de 1979. p. B-1. OCLC 65699372 .
  13. ^ a b C d Es Intel Corporation (mayo -junio de 1980). “8086 disponible para entorno industrial”. Vista previa de Intel (Número especial: soluciones de 16 bits): 29. OCLC 803251993 .
  14. ^ “Guía de referencia rápida del microprocesador Intel® – Año” . www.intel.com .
  15. ^ Intel Corporation (mayo -junio de 1980). “La familia 8086: conceptos y realidades”. Vista previa de Intel (Número especial: soluciones de 16 bits): 19. ISSN 1041-8547 . OCLC 10331599 .
  16. ^ a b Intel Corporation (enero -febrero de 1980). “Nuevos productos: el 8086 más rápido proporciona un 60% más de rendimiento”. Vista previa de Intel : 22.
  17. ^ Intel Corporation (mayo -junio de 1980). “Los nuevos productos familiares 8086 aumentan el rendimiento del procesador en un 50 por ciento”. Vista previa de Intel (Número especial: soluciones de 16 bits): 17.
  18. ^ Intel Corporation (mayo -junio de 1979). “Componentes de microcomputadores: las nuevas reducciones de precios y las mejoras de producción hacen que el popular microprocesador 8086 sea aún más atractivo”. Vista previa de Intel : 11.
  19. ^ Intel Corporation (agosto de 1981). Intel IAPX86, 88 Manual del usuario . pag. B-25. ISBN 0835930165 . OCLC 8459750 .
  20. ^ Intel Corporation, “Newsbit: Intel licencia OKI en la versión CMOS de varios productos”, Solutions, julio/agosto de 1984, página 1.
  21. ^ Ashborn, Jim; “Embalaje avanzado: A Little hace mucho”, Intel Corporation, Solutions, enero/febrero de 1986, página 2
  22. ^ Intel Corporation, “Newsbits: Second Source News”, Solutions, enero/febrero de 1985, página 1
  23. ^ “La evolución del controlador de disquete | Museo OS/2” . 2011-05-26 . Recuperado 2016-05-12 . En la IBM PC original (1981) y PC/XT (1983), el FDC se ubicó físicamente en una tarjeta de adaptador de disquete separada. El FDC en sí era un NEC µPD765A o una parte compatible, como el Intel 8272A.
  24. ^ “Intel agrega una sola tabla de 16 bits” . Mundo de la informática . Volumen Xii, no. 50. 11 de diciembre de 1978. p. 86. ISSN 0010-4841 .
  25. ^ Zachmann, Mark (23 de agosto de 1982). “Los defectos en la computadora personal de IBM frustran el crítico” . Infoworld . Volumen 4, no. 33. pp. 57–58. ISNSN 0199-6649 . El IBM DisplayWriter es notablemente más caro que otros micros industriales que usan el 8086.
  26. ^ “Para las piezas antiguas, la NASA va con valentía … en eBay” . New York Times . 12 de mayo de 2002.
  27. ^ Kaman Tech. Manual

enlaces externos [ editar ]

after-content-x4