stringtranslate.com

Intel 8088

El microprocesador Intel 8088 (" eighty-eighty-eight ", también llamado iAPX 88 ) [2] [3] [4] es una variante del Intel 8086. Introducido el 1 de junio de 1979, [5] [6] [7] [8] 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. El 8088 se utilizó en el IBM PC original y en clones compatibles con IBM PC .

Historia y descripción

Matriz de AMD 8088

El 8088 fue diseñado en el laboratorio de Intel en Haifa , Israel , al igual que una gran cantidad de procesadores de Intel. [9] El 8088 estaba destinado a sistemas económicos al permitir el uso de una ruta de datos de ocho bits y chips periféricos y de soporte de ocho bits; las placas de circuitos complejas todavía eran bastante engorrosas y caras cuando se lanzó. La cola de precarga del 8088 se acortó a cuatro bytes, de los seis bytes del 8086, y el algoritmo de precarga se modificó ligeramente para adaptarse al bus más estrecho. [a] Estas modificaciones del diseño básico del 8086 fueron uno de los primeros trabajos asignados a la nueva oficina de diseño y laboratorio 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ó utilizando el nuevo proceso nMOS mejorado de Intel llamado HMOS y especificado para una frecuencia máxima de 8 MHz. Más tarde siguió el 80C88, un diseño CHMOS completamente estático , que podía operar 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ñado y fabricado por NEC . Los sucesivos procesadores NEC 8088 compatibles funcionarían a hasta 16 MHz. En 1984, Commodore International firmó un acuerdo para fabricar el 8088 para su uso en un clon Dynalogic Hyperion con licencia , en un movimiento que se consideró como una señal de una nueva dirección importante para la empresa. [10] La versión CMOS disponible fue subcontratada a Oki Electronic Industry Co., Ltd. [11] Cuando se anunció, el precio de lista del 8088 era de US$124,80. [12] [13] La versión con paquete de plástico se introdujo en julio de 1981 por US$14,10 por 100 en cantidades. [14] Intel suministró este microprocesador a Fujitsu Limited . [15]

Diferencias con el 8086

El 8088 es arquitectónicamente muy similar al 8086. La principal diferencia es que sólo 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 en el 8086 con dos excepciones. En primer lugar, el pin 34 ya no es BHE (ésta es la selección de byte de orden superior en el 8086; el 8088 no tiene un byte de orden superior en su bus de datos de ocho bits). [16] : 5–97  En su lugar, emite un estado de modo máximo, SS0 . Combinado con las señales IO/ M y DT/ R , los ciclos de bus se pueden decodificar (generalmente indica cuando una operación de escritura o una interrupción está en progreso). El segundo cambio es el pin que señala si se está realizando un acceso a la memoria o un acceso de entrada/salida ha invertido su sentido. El pin en el 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. [ 16] : 5–98 

Actuación

Dependiendo de la frecuencia de reloj , el número de estados de espera de memoria , así como de las características del programa de aplicación particular, el rendimiento promedio para el Intel 8088 osciló aproximadamente entre 0,33 y 1 millón de instrucciones por segundo . [17] Mientras tanto, las instrucciones y , que toman 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.mov reg,regALU[b] reg,reg

La velocidad de la unidad de ejecución (UE) y el bus de la CPU 8086 estaban bien equilibrados; con una combinación de instrucciones típica, un 8086 podía ejecutar instrucciones de la cola de precarga durante 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 carga 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 precarga de cuatro bytes. Cuando la cola está vacía, las instrucciones tardan tanto en completarse como en cargarse. Tanto el 8086 como el 8088 tardan cuatro ciclos de reloj en 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 desplazamiento o rotación de dos bytes, que le toma al EU solo dos ciclos de reloj para ejecutarse, en realidad le toma ocho ciclos de reloj para completarse si no está en la cola de precarga. 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 muchas instrucciones básicas se ejecutan en menos de cuatro ciclos de reloj por byte de instrucción (incluidas casi todas las instrucciones de ALU y de movimiento de datos en operandos de registro y algunas de estas en operandos de memoria), es prácticamente imposible evitar que el EU esté inactivo en el 8088 al menos 14 del tiempo mientras se ejecutan 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, debido al cuello de botella del bus (la única diferencia importante).

Un efecto secundario del diseño del 8088, con el bus lento y la cola de precarga pequeña, 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 larga ejecución con instrucciones cortas siempre que sea posible. Por ejemplo, una operación repetida de cadena o un desplazamiento de tres o más bytes tardará lo suficiente como para permitir que la cola de precarga de 4 bytes se llene por completo. Si se colocan instrucciones cortas (es decir, las que suman unos pocos bytes) entre instrucciones más lentas como estas, las cortas se pueden ejecutar a toda velocidad fuera de la cola. Si, por otro lado, las instrucciones lentas se ejecutan secuencialmente, una tras otra, entonces después de la primera de ellas la unidad de bus se verá obligada a permanecer inactiva porque la cola ya estará llena, con la consecuencia de que más adelante más instrucciones más rápidas sufrirán demoras de carga que podrían haberse evitado. Como algunas instrucciones, como los cambios de posición de un solo bit y las rotaciones, tardan literalmente cuatro veces más en obtenerse que en ejecutarse, [c] el efecto general puede ser una ralentización de 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 lento (al igual que el 8086) en el acceso a la memoria. La misma ALU que se utiliza para ejecutar instrucciones aritméticas y lógicas también se utiliza para calcular direcciones efectivas. Hay un sumador independiente para añadir un registro de segmento desplazado a la dirección de desplazamiento, pero el desplazamiento EA en sí siempre se calcula por completo en la ALU principal. Además, el acoplamiento débil 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 optimizado. Compare esto con el ciclo de bus de dos períodos de reloj de la CPU 6502 y el ciclo de bus de tres períodos de reloj del 80286 con la reducción a dos ciclos para la mayoría de las transferencias. La mayoría de las instrucciones del 8088 que pueden operar en registros o en memoria, incluidas las operaciones comunes de ALU y de movimiento de datos, son al menos cuatro veces más lentas para los operandos de memoria que para los que solo funcionan con registros. Por lo tanto, los programas eficientes 8088 (y 8086) evitan el acceso repetido a los operandos de la memoria cuando es posible, cargando los operandos de la memoria en registros para trabajar con ellos allí y almacenando de nuevo sólo 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 a la pila y sacándolos de nuevo 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. Probablemente no sea lo mismo en el 80286 y posteriores; tienen ALU de dirección dedicadas y realizan accesos a la memoria mucho más rápido que el 8088 y el 8086.

Por último, debido a que las llamadas, los saltos y las interrupciones reinician la cola de prefetch, y debido a que la carga del registro IP requiere comunicación entre la UE y la BIU (ya que el registro IP está en la BIU, no en la UE, donde están los registros generales), 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 reiniciar la cola de prefetch; por lo tanto, los saltos condicionales deben organizarse para que no se realicen la mayor parte del tiempo, especialmente dentro de bucles. En algunos casos, una secuencia de operaciones lógicas y de movimiento es más rápida que un salto condicional que se salta una o dos instrucciones para lograr el mismo resultado.

Las hojas de datos de Intel para el 8086 y el 8088 anunciaban las instrucciones dedicadas a multiplicar y dividir (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 desplazamientos) se pueden realizar mucho más rápido utilizando subrutinas cortas dedicadas. El 80286 y el 80386 aumentan en gran medida la velocidad de ejecución de estas instrucciones de multiplicación y división. [d]

Selección para uso en IBM PC

Computadora personal IBM

El IBM PC original es el microordenador más influyente en utilizar el 8088. Tiene una frecuencia de reloj de 4,77 MHz (4/3 de la frecuencia de colorburst NTSC ). Algunos de los ingenieros de IBM y otros empleados querían utilizar el procesador IBM 801 , algunos preferían el nuevo Motorola 68000 , [e] y otros abogaban por un microprocesador pequeño y sencillo, como el MOS Technology 6502 o el Zilog Z80 , que se encuentran en ordenadores personales anteriores. 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. [f]

IBM eligió el 8088 en lugar del 8086 porque Intel ofrecía un mejor precio para el primero y podía suministrar más unidades. [18] 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. Se trataba de componentes maduros y, por lo tanto, económicos. Esto incluía circuitos integrados originalmente pensados ​​para funciones periféricas y de soporte en torno al 8085 y procesadores similares (no exclusivamente de Intel), que ya eran bien conocidos por muchos ingenieros, lo que reducía aún más el coste. [g]

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 hoy en día.

Galería

  1. ^ Muestreo del cuarto trimestre de 1985

Periféricos

Véase también

Notas

  1. ^ En concreto, el cambio más obvio es que la unidad de bus 8088 buscará por adelantado un byte cuando pueda hacerlo si al menos un byte de la cola está vacío; la unidad de bus 8086 no buscará por adelantado a menos que al menos dos de los seis bytes de la cola estén vacíos, de modo que pueda buscar por adelantado una palabra completa de 16 bits alineada, lo que hace en un ciclo de bus. El 8088, que tiene un bus de datos externo de 8 bits, solo puede buscar un byte por ciclo de bus, por lo que esperar para buscar por adelantado una palabra completa no tendría ningún beneficio y solo se demoraría, reduciendo la posibilidad de que el siguiente byte de instrucción ya esté en la cola de búsqueda por adelantado cuando se lo necesite.
  2. ^ ALU representa una de las instrucciones ADD, ADC, SUB, SBC, CMP, AND, OR, XOR, TEST.
  3. ^ En el 8088, una instrucción de desplazamiento con un conteo de desplazamiento implícito de 1, que puede ejecutarse en dos ciclos de reloj, tiene una longitud de dos bytes y, por lo tanto, lleva ocho ciclos de reloj para obtenerse.
  4. ^ La mayor parte de la información técnica de esta sección proviene del Manual del usuario de Intel iAPX 86,88, agosto de 1981 (número de pedido: 210201-001) de Intel Corporation.
  5. ^ Más tarde se utilizó para la computadora de laboratorio de IBM Instruments .
  6. ^ A cambio de ceder a Intel los derechos sobre sus diseños de memoria de burbuja , Intel abandonó pronto este mercado y se centró en los microprocesadores debido a la feroz competencia de los fabricantes japoneses, que consiguieron reducir los costes.
  7. ^ Los componentes 68000 no estaban ampliamente disponibles en ese momento, aunque podía utilizar componentes Motorola 6800 hasta cierto punto.

Referencias

  1. ^ Historia de la CPU – El Museo de la CPU – Ciclo de vida de la CPU.
  2. ^ "Manual del usuario de iAPX 86, iAPX 88" (PDF) . Consultado el 5 de octubre de 2024 .
  3. ^ "Microprocesadores iAPX 86, 88, 186 Parte I, Cuaderno de taller" (PDF) . Junio ​​de 1984.
  4. ^ "Manual de referencia del programador iAPX 286" (PDF) . 1983. página 1-1.
  5. ^ "Guía de referencia rápida de microprocesadores". Intel . Intel . Consultado el 1 de junio de 2019 .
  6. ^ "Guía de referencia rápida de microprocesadores". Intel . Intel . Consultado el 1 de junio de 2019 .
  7. ^ Singh, Renu (2006). Interfaz y aplicaciones de microprocesadores. New Age International. pp. 2–27. ISBN 81-224-1400-1. Recuperado el 1 de junio de 2019 .
  8. ^ Govindarajalu, B. (2002). IBM PC y clones: hardware, solución de problemas y mantenimiento (2.ª ed.). McGraw-Hill. pág. 248. ISBN 978-0-07-048286-9. Recuperado el 1 de junio de 2019 .
  9. ^ Gilder, George F. (10 de octubre de 2013). La prueba de Israel . Encounter Books . pág. 100. ISBN. 978-1594036125.
  10. ^ Cook, Karen (17 de abril – 1 de mayo de 1984). "Commodore añade Hyperion y chips". PC Magazine . Vol. 1, núm. 8. pág. 52.
  11. ^ Intel Corporation, "NewsBit: Intel otorga licencia a Oki para la versión CMOS de varios productos", Solutions, julio/agosto de 1984, página 1.
  12. ^ "Intel presenta una MPU de 8 bits con arquitectura de 16 bits". Computerworld . Vol. XIII, no. 20. 14 de mayo de 1979. p. 71 . Consultado el 21 de noviembre de 2011 .
  13. ^ Intel Corporation, "Componentes de microcomputadoras: Intel presenta el 8089 IOP, un procesador de E/S para la avanzada familia de CPU 8088/8086, el primero de una serie de nuevos componentes de subsistema", Intel Preview, mayo/junio de 1979, pág. 9.
  14. ^ Intel Corporation, "Noticias", Solutions, julio/agosto de 1981, página 1
  15. ^ Intel Corporation, "NewsBits: Second Source News", Soluciones, enero/febrero de 1985, página 1
  16. ^ ab Manual del procesador de 16 bits de Osborne (Adam Osborne y Gerry Kane) ISBN 0-931988-43-8
  17. ^ "Olympus MIC-D: Galería de circuitos integrados - Microprocesador Intel 8088". Archivado desde el original el 19 de mayo de 2009.
  18. ^ Freiberger, Paul (23 de agosto de 1982). «Bill Gates, Microsoft y la computadora personal IBM». InfoWorld . Vol. 4, núm. 33. pág. 22. Consultado el 29 de enero de 2015 .
  19. ^ Ashborn, Jim; "Empaquetado avanzado: un poco rinde mucho", Intel Corporation, Solutions, enero/febrero de 1986, página 2
  20. ^ 8086 Disponible para entorno industrial, Intel Preview Special Issue: 16-Bit Solutions, Intel Corporation, mayo/junio de 1980, página 29.

Enlaces externos