El Intel 8080 ( "ochenta y ochenta" ) es el segundo microprocesador de 8 bits diseñado y fabricado por Intel . Apareció por primera vez en abril de 1974 y es una variante extendida y mejorada del diseño anterior 8008 , aunque sin compatibilidad binaria . [3] La velocidad de reloj o límite de frecuencia inicial especificado era 2 MHz , con instrucciones comunes que usaban 4, 5, 7, 10 u 11 ciclos. Como resultado, el procesador es capaz de ejecutar varios cientos de miles de instrucciones por segundo . Dos variantes más rápidas, el 8080A-1 (a veces denominado 8080B [ cita necesaria ] ) y el 8080A-2, estuvieron disponibles más tarde con límites de frecuencia de reloj de 3,125 MHz y 2,63 MHz respectivamente. [4] El 8080 necesita dos chips de soporte para funcionar en la mayoría de las aplicaciones: el generador/controlador de reloj i8224 y el controlador de bus i8228. Se implementa en lógica semiconductora de óxido metálico (NMOS) de tipo N utilizando transistores en modo de mejora no saturados como cargas [5] [6] , por lo que exige un voltaje de +12 V y −5 V además del transistor principal. Compatible con lógica de transistores (TTL) +5 V.
Aunque los microprocesadores anteriores se usaban comúnmente en dispositivos producidos en masa como calculadoras , cajas registradoras , terminales de computadora , robots industriales , [7] y otras aplicaciones, el 8080 tuvo mayor éxito en un conjunto más amplio de aplicaciones y se le atribuye en gran medida el inicio de la industria de microcomputadoras . [8] Varios factores contribuyeron a su popularidad: su paquete de 40 pines hizo que fuera más fácil de interconectar que el 8008 de 18 pines, y también hizo que su bus de datos fuera más eficiente; su implementación NMOS le proporcionó transistores más rápidos que los de la lógica de semiconductores de óxido metálico (PMOS) de tipo P 8008, al tiempo que simplificó la interfaz al hacerlo compatible con TTL ; estaba disponible una variedad más amplia de chips de soporte; su conjunto de instrucciones se mejoró con respecto al 8008; [9] y su bus de direcciones completo de 16 bits (frente al de 14 bits del 8008) le permitieron acceder a 64 KB de memoria, cuatro veces más que el rango de 16 KB del 8008. Se utilizó en las computadoras personales Altair 8800 y posteriores del bus S-100 hasta que fue reemplazada por la Z80 en esta función, y fue la CPU de destino original para los sistemas operativos CP/M desarrollados por Gary Kildall .
El 8080 influyó directamente en la arquitectura x86 posterior . Intel diseñó el 8086 para que su lenguaje ensamblador fuera lo suficientemente similar al 8080, con la mayoría de las instrucciones asignadas directamente entre sí, de modo que el código ensamblador transpilado del 8080 pudiera ejecutarse en el 8086. [10]
Los clientes de microprocesadores se mostraron reacios a adoptar el 8008 debido a limitaciones como el modo de direccionamiento único, la baja velocidad del reloj, el bajo número de pines y la pequeña pila en el chip, que restringían la escala y la complejidad del software. Hubo varios diseños propuestos para el 8080, que van desde simplemente agregar instrucciones de pila al 8008 hasta una desviación completa de todas las arquitecturas Intel anteriores. [11] El diseño final fue un compromiso entre las propuestas.
Federico Faggin , el creador de la arquitectura 8080 a principios de 1972, propuso el chip a la dirección de Intel e impulsó su implementación. Finalmente obtuvo el permiso para desarrollarlo seis meses después. Faggin contrató a Masatoshi Shima , quien ayudó a diseñar el 4004 con él, desde Japón en noviembre de 1972. Shima hizo el diseño detallado bajo la dirección de Faggin, [12] utilizando la metodología de diseño para lógica aleatoria con puerta de silicio que Faggin había creado para la familia 4000.
El 8080 fue diseñado explícitamente para ser un microprocesador de uso general para un mayor número de clientes. Gran parte del esfuerzo de desarrollo se dedicó a intentar integrar las funcionalidades de los chips suplementarios del 8008 en un solo paquete. Al principio del desarrollo se decidió que el 8080 no iba a ser compatible binariamente con el 8008, sino que se optó por la compatibilidad de origen una vez ejecutado a través de un transpilador, para permitir que el nuevo software no estuviera sujeto a las mismas restricciones que el 8008. Por esta razón, además de ampliar las capacidades de las rutinas e interrupciones basadas en la pila, la pila se trasladó a la memoria externa.
Al observar el uso especializado de registros de propósito general por parte de programadores en sistemas mainframe, Stanley Mazor , el arquitecto del chip, decidió que los registros del 8080 serían especializados, y que los pares de registros tendrían un conjunto diferente de usos. [13] Esto también permitió a los ingenieros utilizar transistores de manera más efectiva para otros fines.
Shima terminó el diseño en agosto de 1973. Después de la regulación de la fabricación de NMOS, se completó un prototipo del 8080 en enero de 1974. Tenía un defecto: conducir con dispositivos TTL estándar aumentaba el voltaje de tierra porque una corriente alta fluía hacia la línea estrecha. . Intel ya había producido 40.000 unidades del 8080 bajo la dirección del departamento de ventas antes de que Shima caracterizara el prototipo. Se lanzó como requisito para dispositivos Schottky TTL (LS TTL) de bajo consumo. El 8080A solucionó este defecto. [14]
Intel ofreció un simulador de conjunto de instrucciones para el 8080 llamado INTERP/80 para ejecutar programas PL/M compilados. Fue escrito en FORTRAN IV por Gary Kildall mientras trabajaba como consultor para Intel. [15] [16]
El Intel 8080 es el sucesor del 8008 . Utiliza el mismo conjunto de instrucciones básicas y modelo de registro que el 8008, aunque no es compatible con el código fuente ni con el código binario de su predecesor. Cada instrucción del 8008 tiene una instrucción equivalente en el 8080. El 8080 también agrega operaciones de 16 bits en su conjunto de instrucciones. Mientras que el 8008 requería el uso del par de registros HL para acceder indirectamente a su espacio de memoria de 14 bits, el 8080 agregó modos de direccionamiento para permitir el acceso directo a su espacio de memoria completo de 16 bits. La pila de llamadas push-down interna de 7 niveles del 8008 fue reemplazada por un registro de puntero de pila (SP) dedicado de 16 bits. El paquete DIP de 40 pines del 8080 le permite proporcionar un bus de direcciones de 16 bits y un bus de datos de 8 bits , lo que permite el acceso a 64 KiB (2 16 bytes) de memoria.
El procesador tiene siete registros de 8 bits (A, B, C, D, E, H y L), donde A es el acumulador principal de 8 bits. Los otros seis registros se pueden utilizar como registros individuales de 8 bits o en tres pares de registros de 16 bits (BC, DE y HL, denominados B, D y H en los documentos de Intel), según la instrucción particular. Algunas instrucciones también permiten utilizar el par de registros HL como un acumulador (limitado) de 16 bits. Un pseudo-registro M, que se refiere a la ubicación de memoria desreferenciada señalada por HL, se puede usar casi en cualquier lugar donde se puedan usar otros registros. El 8080 tiene un puntero de pila de 16 bits a la memoria, que reemplaza la pila interna del 8008, y un contador de programa de 16 bits .
El procesador mantiene bits de bandera internos (un registro de estado ), que indican los resultados de instrucciones aritméticas y lógicas. Sólo determinadas instrucciones afectan a las banderas. Las banderas son:
El bit de acarreo se puede configurar o complementar con instrucciones específicas. Las instrucciones de rama condicional prueban los distintos bits de estado del indicador. El acumulador y las banderas juntos se denominan PSW o palabra de estado del programa. PSW se puede empujar o sacar de la pila.
Como ocurre con muchos otros procesadores de 8 bits, todas las instrucciones están codificadas en un byte (incluidos los números de registro, pero excluyendo los datos inmediatos), por simplicidad. Algunos pueden ir seguidos de uno o dos bytes de datos, que pueden ser un operando inmediato, una dirección de memoria o un número de puerto. Al igual que los procesadores más avanzados, tiene instrucciones CALL y RET automáticas para llamadas y retornos a procedimientos de varios niveles (que incluso pueden ejecutarse condicionalmente, como saltos) e instrucciones para guardar y restaurar cualquier par de registros de 16 bits en la pila de la máquina. Existen ocho instrucciones de llamada de un byte ( RST
) para subrutinas en las direcciones fijas 00h, 08h, 10h, ..., 38h. Estos están destinados a ser suministrados por hardware externo para invocar una rutina de servicio de interrupción correspondiente , pero también se emplean a menudo como llamadas rápidas al sistema . La instrucción que se ejecuta más lenta es XTHL
, que se utiliza para intercambiar el par de registros HL con el valor almacenado en la dirección indicada por el puntero de la pila.
Todas las operaciones de 8 bits con dos operandos sólo se pueden realizar en el acumulador de 8 bits (el registro A). El otro operando puede ser un valor inmediato, otro registro de 8 bits o un byte de memoria direccionado por el par de registros HL de 16 bits. Se pueden realizar incrementos y decrementos en cualquier registro de 8 bits o en un byte de memoria con dirección HL. Se admite la copia directa entre dos registros de 8 bits cualesquiera y entre cualquier registro de 8 bits y un byte de memoria con dirección HL. Debido a la codificación regular de la MOV
instrucción (utilizando una cuarta parte del espacio de código de operación disponible), existen códigos redundantes para copiar un registro en sí mismo ( MOV B,B
, por ejemplo), que son de poca utilidad, excepto para retrasos. Sin embargo, el código de operación sistemático for MOV M,M
se utiliza para codificar la HLTinstrucción detener ( ), deteniendo la ejecución hasta que se produzca un reinicio o una interrupción externa.
Aunque el 8080 es generalmente un procesador de 8 bits, tiene capacidades limitadas para realizar operaciones de 16 bits. Cualquiera de los tres pares de registros de 16 bits (BC, DE o HL, denominados B, D, H en los documentos Intel) o SP se puede cargar con un valor inmediato de 16 bits (usando ) LXI
, incrementado o decrementado (usando INX
y DCX
), o agregado a HL (usando DAD
). Al agregar HL a sí mismo, es posible lograr el mismo resultado que un desplazamiento aritmético a la izquierda de 16 bits con una instrucción. Las únicas instrucciones de 16 bits que afectan cualquier indicador son DAD
, que establece el indicador CY (acarreo) para permitir la aritmética programada de 24 o 32 bits (o mayor), necesaria para implementar la aritmética de punto flotante . Se puede asignar un marco de pila usando DAD SP
y SPHL
. Se puede ejecutar una rama a un puntero calculado con PCHL
. LHLD
carga HL desde la memoria direccionada directamente y SHLD
almacena HL de la misma manera. La instrucción XCHG
[17] intercambia los valores de los pares de registros HL y DE. XTHL
intercambia el último artículo colocado en la pila con HL.
El 8080 admite hasta 256 [18] puertos de entrada/salida (E/S), a los que se accede mediante instrucciones de E/S dedicadas que toman direcciones de puerto como operandos. [19] Este esquema de mapeo de E/S se considera una ventaja, ya que libera el espacio de direcciones limitado del procesador. En cambio, muchas arquitecturas de CPU utilizan las llamadas E/S asignadas en memoria (MMIO), en las que se utiliza un espacio de direcciones común tanto para la RAM como para los chips periféricos. Esto elimina la necesidad de instrucciones de E/S dedicadas, aunque un inconveniente de dichos diseños puede ser que se debe utilizar hardware especial para insertar estados de espera, ya que los periféricos suelen ser más lentos que la memoria. Sin embargo, en algunas computadoras 8080 simples, las E/S se abordan como si fueran celdas de memoria, "mapeadas en memoria", dejando los comandos de E/S sin usar. El direccionamiento de E/S a veces también puede emplear el hecho de que el procesador genera la misma dirección de puerto de 8 bits tanto en el byte de dirección inferior como en el superior (es decir, IN 05h
colocaría la dirección 0505h en el bus de direcciones de 16 bits). Se utilizan esquemas de puertos de E/S similares en Zilog Z80 e Intel 8085, compatibles con versiones anteriores, y en las familias de microprocesadores x86 estrechamente relacionadas.
Uno de los bits en la palabra de estado del procesador (ver más abajo) indica que el procesador está accediendo a datos de la pila. Usando esta señal, es posible implementar un espacio de memoria de pila separado. Esta característica rara vez se utiliza.
Para sistemas más avanzados, durante una fase de su ciclo de trabajo, el procesador establece su "byte de estado interno" en el bus de datos. Este byte contiene indicadores que determinan si se accede a la memoria o al puerto de E/S y si es necesario manejar una interrupción.
El estado del sistema de interrupción (habilitado o deshabilitado) también se emite en un pin separado. Para sistemas simples, donde no se utilizan interrupciones, es posible encontrar casos en los que este pin se utiliza como puerto de salida adicional de un solo bit (el popular ordenador Radio-86RK fabricado en la Unión Soviética , por ejemplo).
El siguiente código fuente del ensamblador 8080/8085 es para una subrutina denominada memcpy
que copia un bloque de bytes de datos de un tamaño determinado de una ubicación a otra. El bloque de datos se copia un byte a la vez y la lógica de bucle y movimiento de datos utiliza operaciones de 16 bits.
El bus de direcciones tiene sus propios 16 pines y el bus de datos tiene 8 pines que se pueden utilizar sin ningún tipo de multiplexación. Usando los dos pines adicionales (señales de lectura y escritura), es posible ensamblar dispositivos de microprocesador simples muy fácilmente. Solo el espacio IO separado, las interrupciones y DMA necesitan chips adicionales para decodificar las señales de los pines del procesador. Sin embargo, la capacidad de carga del pasador es limitada; Incluso los ordenadores más sencillos suelen necesitar amplificadores de bus.
El procesador necesita tres fuentes de alimentación (−5, +5 y +12 V) y dos señales de sincronización de alta amplitud que no se superpongan. Sin embargo, al menos la última versión soviética КР580ВМ80А podía funcionar con una única fuente de alimentación de +5 V, estando el pin de +12 V conectado a +5 V y el pin de -5 V a tierra.
La tabla de distribución de pines, de la documentación adjunta al chip, describe los pines de la siguiente manera:
Un factor clave en el éxito del 8080 fue la amplia gama de chips de soporte disponibles, que proporcionan comunicaciones en serie, contador/temporizador, entrada/salida, acceso directo a memoria y control de interrupciones programable, entre otras funciones:
El circuito integrado 8080 utiliza puertas nMOS de carga de mejora no saturadas , lo que exige voltajes adicionales (para la polarización de la puerta de carga). Se fabricó mediante un proceso de puerta de silicio utilizando un tamaño mínimo de 6 µm. Se utiliza una sola capa de metal para interconectar los aproximadamente 4500 transistores [22] en el diseño, pero la capa de polisilicio de mayor resistencia , que requiere un voltaje más alto para algunas interconexiones, se implementa con puertas de transistores. El tamaño del troquel es de aproximadamente 20 mm 2 .
El 8080 se utiliza en muchas de las primeras microcomputadoras, como la computadora MITS Altair 8800 , la computadora terminal SOL-20 con tecnología de procesador y la microcomputadora IMSAI 8080 , formando la base para las máquinas que ejecutan el sistema operativo CP/M (el último, casi totalmente compatible y más). capaz, el procesador Zilog Z80 sacaría provecho de esto, convirtiéndose Z80 y CP/M en la combinación dominante de CPU y sistema operativo del período entre 1976 y 1983, al igual que lo hicieron x86 y DOS para PC una década después).
En 1979, incluso después de la introducción de los procesadores Z80 y 8085, cinco fabricantes del 8080 vendían aproximadamente 500.000 unidades por mes a un precio de entre 3 y 4 dólares cada una. [23]
Las primeras microcomputadoras de placa única , como MYCRO-1 y dyna-micro /MMD-1 (ver: Computadora de placa única ) se basaron en el Intel 8080. Uno de los primeros usos del 8080 se realizó a fines de la década de 1970. por Cubic-Western Data de San Diego, California, en sus sistemas automatizados de cobro de tarifas diseñados a medida para sistemas de transporte público en todo el mundo. Uno de los primeros usos industriales del 8080 es como "cerebro" de la línea de productos DatagraphiX Auto-COM (Microficha de salida por computadora), que toma grandes cantidades de datos de usuario de una cinta de carrete a carrete y los graba en microfichas. Los instrumentos Auto-COM también incluyen un subsistema completo automatizado de corte, procesamiento, lavado y secado de películas.
Varios de los primeros videojuegos arcade se crearon alrededor del microprocesador 8080. El primer videojuego arcade disponible comercialmente que incorporó un microprocesador fue Gun Fight , la reimplementación basada en 8080 de Midway Games del Western Gun de lógica discreta de Taito , que se lanzó en noviembre de 1975. [24] [25] [26] [ 27] ( El mes anterior ya se había lanzado una máquina de pinball que incorporaba un procesador Motorola 6800 , The Spirit of '76 . [28] [29] ) La 8080 se utilizó posteriormente en videojuegos arcade Midway [30] y en Space Invaders de 1978 de Taito , uno de los videojuegos arcade más exitosos y conocidos. [31] [32]
Zilog presentó el Z80 , que tiene un conjunto de instrucciones en lenguaje de máquina compatible e inicialmente utilizó el mismo lenguaje ensamblador que el 8080, pero por razones legales, Zilog desarrolló un lenguaje ensamblador alternativo sintácticamente diferente (pero compatible con el código) para el Z80. En Intel, al 8080 le siguió el 8085, compatible y eléctricamente más elegante .
Más tarde, Intel lanzó el 8086 de 16 bits compatible con lenguaje ensamblador (pero no compatible con binarios) y luego el 8088 de 8/16 bits , que fue seleccionado por IBM para su nueva PC que se lanzaría en 1981. Posteriormente, NEC fabricó el NEC. V20 (un clon de 8088 con compatibilidad con el conjunto de instrucciones Intel 80186 ) que también admite un modo de emulación 8080. Esto también es compatible con el V30 de NEC (un clon 8086 igualmente mejorado). Así, el 8080, a través de su arquitectura de conjunto de instrucciones (ISA), tuvo un impacto duradero en la historia de la informática.
En el Bloque del Este se fabricaron varios procesadores compatibles con Intel 8080A : el KR580VM80A (inicialmente marcado como КР580ИК80) en la Unión Soviética , el MCY7880 [33] fabricado por Unitra CEMI en Polonia , el MHB8080A [34] fabricado por TESLA en Checoslovaquia , el 8080APC [34] fabricado por Tungsram /MEV en Hungría , y el MMN8080 [34] fabricado por Microelectronica Bucharest en Rumania .
En 2017 [actualizar], el 8080 todavía está en producción en Lansdale Semiconductors. [35]
El 8080 también cambió la forma en que se crearon las computadoras. Cuando se introdujo el 8080, los sistemas informáticos solían ser creados por fabricantes de ordenadores como Digital Equipment Corporation , Hewlett-Packard o IBM . Un fabricante produciría la computadora completa, incluido el procesador, los terminales y el software del sistema, como los compiladores y el sistema operativo. El 8080 fue diseñado para casi cualquier aplicación excepto un sistema informático completo. Hewlett-Packard desarrolló la serie HP 2640 de terminales inteligentes alrededor del 8080. El HP 2647 es un terminal que ejecuta el lenguaje de programación BASIC en el 8080. El producto fundador de Microsoft , Microsoft BASIC , fue programado originalmente para el 8080.
El 8080 y el 8085 dieron lugar al 8086, que fue diseñado como una extensión compatible con el código fuente , aunque no compatible con binarios , del 8080. [36] Este diseño, a su vez, generó más tarde la familia de chips x86 , que continúan siendo La principal línea de procesadores de Intel. Muchas de las instrucciones y conceptos centrales de la máquina 8080 sobreviven en la plataforma x86 generalizada. Los ejemplos incluyen los registros denominados A , B , C y D y muchas de las banderas utilizadas para controlar los saltos condicionales. El código ensamblador 8080 aún se puede traducir directamente a instrucciones x86, [ vago ] ya que todos sus elementos principales todavía están presentes.
{{cite web}}
: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )