Intel 8088

Ajustar Compartir Imprimir Citar
Modelo de microprocesador Intel

El microprocesador Intel 8088 ("ochenta-ochenta-ocho", también llamado iAPX 88) es un variante del Intel 8086. Presentado el 1 de junio de 1979, el 8088 tiene un bus de datos externo de ocho bits en lugar del bus de 16 bits del 8086. Sin embargo, los registros de 16 bits y el rango de direcciones de un megabyte no han cambiado. De hecho, según la documentación de Intel, el 8086 y el 8088 tienen la misma unidad de ejecución (EU), solo la unidad de interfaz de bus (BIU) es diferente. La PC IBM original se basa en la 8088, al igual que sus clones.

Historia y descripción

Muerte de AMD 8088

El 8088 se diseñó en el laboratorio de Intel en Haifa, Israel, al igual que una gran cantidad de procesadores de Intel. El 8088 estaba dirigido a sistemas económicos al permitir el uso de una ruta de datos de ocho bits y soporte de ocho bits y chips periféricos; las placas de circuito complejas todavía eran bastante engorrosas y costosas cuando se lanzó. La cola de captación previa del 8088 se redujo a cuatro bytes, de los seis bytes del 8086, y el algoritmo de captación previa se modificó ligeramente para adaptarse al bus más estrecho. Estas modificaciones del diseño básico del 8086 fueron uno de los primeros trabajos asignados a la nueva oficina y laboratorio de diseño de Intel en Haifa.

Las variantes del 8088 con una frecuencia de reloj máxima de más de 5 MHz incluyen el 8088–2, que se fabricó con el nuevo proceso nMOS mejorado de Intel llamado HMOS y se especificó para una frecuencia máxima de 8 MHz. Más tarde siguió el 80C88, un diseño CHMOS completamente estático, que podía funcionar con velocidades de reloj de 0 a 8 MHz. También hubo varias otras variantes, más o menos similares, de otros fabricantes. Por ejemplo, el NEC V20 era una variante compatible con pines y ligeramente más rápida (a la misma frecuencia de reloj) del 8088, diseñada y fabricada por NEC. Los sucesivos procesadores compatibles con NEC 8088 funcionarían hasta a 16 MHz. En 1984, Commodore International firmó un acuerdo para fabricar el 8088 para su uso en un clon de Dynalogic Hyperion con licencia, en un movimiento que se consideró como una señal de una nueva dirección importante para la empresa. La versión CMOS disponible se subcontrató a Oki Electronic Industry Co., Ltd. Cuando se anunció, el precio de lista del 8088 era de 124,80 dólares estadounidenses. La versión del paquete de plástico se introdujo en julio de 1981 por USD $ 14,10 por 100 en cantidades. En segundo lugar, Intel suministró este microprocesador a Fujitsu Limited.

Diferencias con el 8086

El 8088 tiene una arquitectura muy similar al 8086. La principal diferencia es que solo hay ocho líneas de datos en lugar de las 16 líneas del 8086. Todos los demás pines del dispositivo realizan la misma función que con el 8086 con dos excepciones. Primero, el pin 34 ya no es BHE (esta es la selección de bytes de orden superior en el 8086; el 8088 no tiene un byte de orden superior en su bus de datos de ocho bits). En su lugar, genera un estado de modo máximo, SSO. En combinación con las señales IO/M y DT/R, los ciclos de bus pueden ser decodificado (generalmente indica cuando una operación de escritura o una interrupción está en curso). El segundo cambio es el pin que indica si un acceso a la memoria o un acceso de entrada/salida ha tenido el sentido invertido. El pin del 8088 es IO/M. En la parte 8086 es IO/M. El motivo de la inversión es que hace que el 8088 sea compatible con el 8085.

Rendimiento

Dependiendo de la frecuencia del reloj, el número de estados de espera de la memoria, así como de las características del programa de aplicación en particular, el rendimiento promedio del Intel 8088 osciló aproximadamente entre 0,33 y 1 millón de instrucciones. por segundo. Mientras tanto, las instrucciones mov reg,reg y ALU reg,reg, tomando dos y tres ciclos respectivamente, produjeron un rendimiento máximo absoluto de entre 13 y 12 MIPS por MHz, es decir, en algún lugar en el rango de 3 a 5 MIPS a 10 MHz.

La velocidad de la unidad de ejecución (EU) y el bus de la CPU 8086 estaban bien equilibradas; con una combinación típica de instrucciones, un 8086 podría ejecutar instrucciones fuera de la cola de captación previa una buena parte del tiempo. Reducir el bus a ocho bits lo convirtió en un serio cuello de botella en el 8088. Con la velocidad de recuperación de instrucciones reducida en un 50 % en el 8088 en comparación con el 8086, una secuencia de instrucciones rápidas puede agotar rápidamente la cola de recuperación previa de cuatro bytes. Cuando la cola está vacía, las instrucciones tardan tanto en completarse como en recuperarse. Tanto el 8086 como el 8088 necesitan cuatro ciclos de reloj para completar un ciclo de bus; mientras que para el 8086 esto significa cuatro relojes para transferir dos bytes, en el 8088 son cuatro relojes por byte. Por lo tanto, por ejemplo, una instrucción de cambio o rotación de dos bytes, que le toma al EU solo dos ciclos de reloj para ejecutarse, en realidad toma ocho ciclos de reloj para completarse si no está en la cola de captación previa. Una secuencia de instrucciones tan rápidas evita que la cola se llene tan rápido como se vacía, y En general, debido a que tantas instrucciones básicas se ejecutan en menos de cuatro relojes por byte de instrucción (incluidas casi todas las instrucciones ALU y de movimiento de datos en operandos de registro y algunas de ellas en operandos de memoria), es prácticamente imposible evitar la inactividad de la UE en el 8088 al menos 14 del tiempo mientras ejecuta programas útiles del mundo real, y no es difícil dejarlo inactivo la mitad del tiempo. En resumen, un 8088 normalmente funciona aproximadamente la mitad de rápido que un 8086 con la misma velocidad de reloj, debido al cuello de botella del bus (la única diferencia importante).

Un efecto secundario del diseño 8088, con el bus lento y la pequeña cola de captación previa, es que la velocidad de ejecución del código puede depender mucho del orden de las instrucciones. Al programar el 8088, para la eficiencia de la CPU, es vital intercalar instrucciones de ejecución larga con instrucciones cortas siempre que sea posible. Por ejemplo, una operación de cadena repetida o un cambio de tres o más llevará el tiempo suficiente para que la cola de captación previa de 4 bytes se llene por completo. Si las instrucciones cortas (es decir, las que suman pocos bytes) se colocan entre instrucciones más lentas como estas, las cortas pueden ejecutarse a toda velocidad fuera de la cola. Si, por el contrario, las instrucciones lentas se ejecutan secuencialmente, una tras otra, luego de la primera de ellas, la unidad de bus se verá forzada a permanecer inactiva porque la cola ya estará llena, con la consecuencia de que más adelante se ejecutarán más instrucciones más rápidas. sufrirá retrasos en la recuperación que podrían haberse evitado. Como algunas instrucciones, como los cambios y rotaciones de posición de un solo bit, tardan literalmente 4 veces más en recuperarse que en ejecutarse, el efecto general puede ser una ralentización por un factor de dos o más. Si esos segmentos de código son los cuerpos de los bucles, la diferencia en el tiempo de ejecución puede ser muy notable en la escala de tiempo humana.

El 8088 también es (como el 8086) lento para acceder a la memoria. La misma ALU que se usa para ejecutar instrucciones aritméticas y lógicas también se usa para calcular direcciones efectivas. Hay un sumador separado para agregar un registro de segmento desplazado a la dirección de desplazamiento, pero el propio EA de desplazamiento siempre se calcula por completo en la ALU principal. Además, el acoplamiento flojo de la UE y la BIU (unidad de bus) inserta una sobrecarga de comunicación entre las unidades, y el ciclo de transferencia de bus de cuatro períodos de reloj no está particularmente simplificado. Compare esto con el ciclo de bus de período de dos relojes de la CPU 6502 y el ciclo de bus de período de tres relojes del 80286 con canalización hasta dos ciclos para la mayoría de las transferencias. La mayoría de las instrucciones 8088 que pueden operar en registros o memoria, incluidas las operaciones comunes de movimiento de datos y ALU, son al menos cuatro veces más lentas para los operandos de memoria que solo para los operandos de registro. Por lo tanto, los programas 8088 (y 8086) eficientes evitan el acceso repetido a los operandos de la memoria cuando es posible, cargan operandos de la memoria en registros para trabajar con ellos allí y almacenan solo los resultados finales. El conjunto de registros generales relativamente grande del 8088 en comparación con sus contemporáneos ayuda a esta estrategia. Cuando no hay suficientes registros para todas las variables que se necesitan a la vez, guardar registros empujándolos en la pila y volviendo a abrirlos para restaurarlos es la forma más rápida de usar la memoria para aumentar los registros, ya que las instrucciones PUSH y POP de la pila son las operaciones de memoria más rápidas. Lo mismo probablemente no sea cierto en el 80286 y posteriores; tienen ALU de dirección dedicada y realizan accesos a la memoria mucho más rápido que el 8088 y el 8086.

Finalmente, porque las llamadas, los saltos y las interrupciones restablecen la cola de captación previa y porque la carga del registro de IP requiere comunicación entre la UE y la BIU (dado que el registro de IP está en la BIU, no en la UE, donde los registros generales son), estas operaciones son costosas. Todos los saltos y llamadas toman al menos 15 ciclos de reloj. Cualquier salto condicional requiere cuatro ciclos de reloj si no se realiza, pero si se realiza, requiere 16 ciclos además de restablecer la cola de captación previa; por lo tanto, los saltos condicionales deben organizarse para que no se realicen la mayor parte del tiempo, especialmente dentro de los bucles. En algunos casos, una secuencia de operaciones lógicas y de movimiento es más rápida que un salto condicional que salta una o dos instrucciones para lograr el mismo resultado.

Las hojas de datos de Intel para el 8086 y el 8088 publicitaban las instrucciones dedicadas de multiplicación y división (MUL, IMUL, DIV e IDIV), pero son muy lentas, del orden de 100 a 200 ciclos de reloj cada una. Muchas multiplicaciones simples por pequeñas constantes (además de las potencias de 2, para las que se pueden usar cambios) se pueden hacer mucho más rápido usando subrutinas cortas dedicadas. El 80286 y el 80386 aumentan considerablemente la velocidad de ejecución de estas instrucciones de multiplicación y división.

Selección para uso en IBM PC

IBM Personal Computer

La IBM PC original es la microcomputadora más influyente que usa el 8088. Tiene una frecuencia de reloj de 4,77 MHz (4/3 de la frecuencia de ráfaga de colores NTSC). Algunos de los ingenieros de IBM y otros empleados querían usar el procesador IBM 801, algunos preferían el nuevo Motorola 68000 y otros abogaban por un microprocesador pequeño y simple, como MOS Technology 6502 o Zilog Z80, que están en modelos anteriores. Computadoras personales. Sin embargo, IBM ya tenía un historial de uso de chips Intel en sus productos y también había adquirido los derechos para fabricar la familia 8086.

IBM eligió el 8088 sobre el 8086 porque Intel ofrecía un mejor precio por el primero y podía suministrar más unidades. Otro factor fue que el 8088 permitió que la computadora se basara en un diseño 8085 modificado, ya que podía interactuar fácilmente con la mayoría de los chips nMOS con buses de datos de 8 bits. Estos eran componentes maduros y, por lo tanto, económicos. Esto incluía circuitos integrados originalmente destinados a soporte y funciones periféricas alrededor del 8085 y procesadores similares (no exclusivamente de Intel), que ya eran bien conocidos por muchos ingenieros, lo que redujo aún más los costos.

Los descendientes del 8088 incluyen los procesadores 80188, 80186, 80286, 80386, 80486 y posteriores compatibles con software, incluidos los procesadores Intel Core, que son populares en la actualidad.

Galería

  1. ^ Muestra Q4 1985

Periféricos