El microprocesador Intel 4040 fue el sucesor del Intel 4004 . Fue introducido en 1974. El 4040 empleaba una tecnología PMOS de carga mejorada de puerta de silicio de 10 μm , estaba compuesto por 3.000 transistores [3] y podía ejecutar aproximadamente 62.000 instrucciones por segundo . El rendimiento general, el diseño del bus y el conjunto de instrucciones eran idénticos a los del 4004, con las principales mejoras en la adición de líneas e instrucciones adicionales para reconocer y dar servicio a las interrupciones y los comandos de parada / parada del hardware (este último permite pasos únicos controlados por el operador para la depuración propósitos), una pila interna extendida y espacio de registro de "índice" de propósito general para manejar el anidamiento de varias subrutinas y / o interrupciones, más una duplicación del rango de direcciones de la ROM del programa .
Información general | |
---|---|
Lanzado | 1974 |
Interrumpido | 1981 [1] |
Fabricante (s) común (es) |
|
Actuación | |
Max. Frecuencia de reloj de la CPU | 500 kHz a 740 kHz |
Ancho de datos | 4 bits |
Ancho de la dirección | 12 bits (multiplexados) |
Arquitectura y clasificación | |
Min. tamaño de la característica | 10 micras |
Conjunto de instrucciones | Orientado a BCD de 4 bits |
Especificaciones físicas | |
Transistores |
|
Paquete (s) |
|
Enchufe (s) | |
Historia | |
Predecesor | Intel 4004 |
Sucesor | ninguno (Intel descontinuó sus procesadores de 4 bits después del 4040). |
Nuevas características
- Interrupciones
- Single Stepping más HALTing de hardware y software.
- Modo de espera de bajo consumo [Nota 1]
Extensiones
Registros Intel 4040 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
- Conjunto de instrucciones ampliado a 60 instrucciones (14 nuevas instrucciones agregadas a las 46 existentes, principalmente relacionadas con el manejo de interrupciones, detención / paso único y cambio de banco ROM)
- Memoria de programa (ROM) expandida a 8 KB (espacio de direcciones de 13 bits), usando cambio de banco (selección de chip único original de 4004 expandida a dos líneas mutuamente excluyentes) [Nota 2]
- Registros expandidos a 24 (8 agregados al conjunto de 16 registros de índice de uso general de 4 bits existentes, principalmente para uso con procesamiento de interrupciones) [Nota 3]
- Pila de subrutinas / interrupciones expandida a 7 niveles de profundidad (usando registros internos dedicados) [Nota 4]
Caracteristicas
- Bus de datos: 4 bits
- Bus de direcciones: 12 bits para ROM (multiplexado en bus de datos; las direcciones tardaron tres ciclos de bus en transmitirse, al igual que en el 4004), efectivamente 13 bits con el uso de comandos de conmutación de banco; efectivamente 10 u 8 bits para RAM (dirección directa de 8 bits más uno de cuatro, es decir, equivalente a 2 bits, selección de banco; las 256 ubicaciones de memoria de "estado" adicionales requerían el uso de comandos de E / S para leer o escribir, desde un espacio de direcciones general de 8 bits)
- Voltaje: -15 V CC
- Frecuencia de funcionamiento: reloj principal de 500 a 740 kHz (2 fases, superpuesto); 62500 a 92500 ciclos de máquina de 8 relojes por segundo, cada instrucción requiere uno o dos ciclos de máquina para leer y ejecutar, lo que significa un promedio aproximado de 62 kIPS a 740 kHz con una mezcla igual. [Nota 5]
- Rendimiento: Tiempo de ejecución reclamado de ~ 850 µs para agregar dos números de 32 bits (BCD de 8 dígitos), o alrededor de 1175 operaciones de este tipo por segundo y aproximadamente 10 ciclos de máquina por par de dígitos. [Nota 6]
Diseñadores
Federico Faggin propuso el proyecto, formuló la arquitectura y dirigió el diseño. El diseño detallado fue realizado por Tom Innes (Tinnes de Bristol).
Nuevos chips de soporte
- Controladores de bus paralelo de 4 bits 3216 y 3226 [Nota 7]
- 4101 - RAM estática de 256 x 4 bits [Nota 8]
- 4201 - Generador de reloj, 500 a 740 kHz, usando cristales de 4.000 a 5.185 MHz
- 4207 - Puerto de salida de 8 bits de uso general
- 4209 - Puerto de entrada de 8 bits de uso general
- 4211 - Puerto de E / S de 8 bits de uso general
- 4265 - E / S programables de uso general
- 4269 - Pantalla / teclado programable
- 4289 - Interfaz de memoria estándar (reemplaza a 4008/4009) [Nota 9]
- 4308 - ROM de 1K x 8 bits más 4 puertos IO de 4 bits [Nota 10]
- 4316 - ROM de 2 K x 8 bits [Nota 11]
- 4702 - EPROM de 256 x 8 bits [Nota 12]
Producción
Filipinas
Notas
- ^ Esencialmente una función lateral de Detener / Paso único; todo el procesamiento interno se suspendería y la mayor parte del hardware del chip se pondría en una condición de alta impedancia de bajo consumo, pero los relojes de ciclo de la máquina se mantendrían funcionando para el beneficio de los dispositivos externos, incluidos los controladores de interrupción que serían necesarios para despertar la copia de seguridad del chip, que dependía de ellos para mantenerse sincronizados.
- ^ El espacio de RAM se mantuvo sin cambios desde el 4004, al igual que la imposibilidad de ejecutar programas desde la RAM
- ^ Solo 16 de los llamados registros "Index" (que funcionaban y eran utilizables de una manera que sería más familiar como registros de propósito general en una CPU moderna, donde un registro Index tiene una aplicación mucho más específica para el direccionamiento de memoria) podrían ser accedido en cualquier momento, con un comando de cambio de banco particular que se requiere para intercambiar uno u otro banco de 8 a los registros lógicos 0-7, y los registros 8-15 permanecen accesibles continuamente. La idea era que cualquier contexto de misión crítica debería mantenerse en los primeros 8, ya que cuando ocurría una interrupción no solo empujaría una dirección de manejador de excepciones a la pila, sino que también cambiaría los bancos de Index Register, preservando automáticamente ese estado hasta que el manejador devolviera el control. al flujo normal del programa, asumiendo, por supuesto, que no haya intercambiado ya deliberadamente los bancos para hacer uso del espacio adicional de la memoria interna. Si una rutina de interrupción quería hacer uso de los últimos ocho registros, el programador tenía que guardar primero los datos almacenados en ellos en otra ubicación y luego restaurarlos antes de regresar de la rutina.
- ^ de forma predeterminada, solo se admitía un nivel de interrupción, ya que el servicio adicional se deshabilitó una vez que se reconoció una interrupción inicial y solo se volvió a habilitar en RTI, lo que esencialmente permite tres niveles de apilamiento de subrutinas dentro de una interrupción que ocurre dentro de una subrutina de tres profundidades, pero la detección podría volver a activarse con un comando específico
- ^ Esto puede no ser del todo exacto y se basa en las características 4004; algunas de las instrucciones agregadas pueden requerir ciclos adicionales para ejecutarse, especialmente cualquier apilamiento de registros externos requerido para el manejo de interrupciones, pero no se aclara en la documentación si este es el caso; halt / step son casos especiales que, naturalmente, requieren potencialmente muchos millones de ciclos para "ejecutarse", pero como estos ocurren esencialmente "fuera" del flujo habitual del programa, no cuentan para el cálculo de la velocidad.
- ^ Del mismo modo, basado en el rendimiento de 4004 reclamado; "850 µs" es una cifra algo redondeada que se afirma en un folleto de Intel anterior y puede que no sea particularmente precisa, pero el tiempo total de ejecución es de aproximadamente 79 u 80 ciclos de máquina, lo que encaja perfectamente con 10 ciclos por par de dígitos, 9 ciclos por par más 7 para la configuración y cualquier posprocesamiento necesario, o 8 por par más 15 adicionales (... etc). La combinación de instrucciones real no se especificó, por lo que sin código fuente y una lista de tiempos de ejecución de instrucciones es imposible estar seguro. Una rutina de adición más eficiente podría haber sido posible en el 4040 frente al 4004, pero las instrucciones adicionales no sugieren ningún método obvio para lograr esto y parecen estar enfocadas en abordar las deficiencias más obvias del chip anterior, por ejemplo, la falta de interrupciones y frenabilidad.
- ^ Proporciona capacidad de manejo de corriente "alta" (~ 25 mA) para dispositivos de E / S externos. Supuestamente destinado exclusivamente para su uso con el 4289, pero el diseño parece bastante genérico y puede ser adaptable a un 4004/4040 desnudo.
- ^ es decir, combinar elalmacenamiento principal de cuatro 4002 en un solo chip seleccionable individualmente, pero sin el puerto de E / S de 4 bits ni 64 palabras adicionales de memoria de "estado" de acceso mediante comandos de E / S. Como tiene un bus de direcciones dedicado de 8 bits y dos buses de entrada y salida de datos de 4 bits separados, el 4101 está diseñado solo para usarse como un periférico descendente del 4289. Esto se enfatiza aún más por la afirmación de la SRAM de ser " utilizado para memoria de programa grabable ", algo que no se puede lograr con un 4004 o 4040 simple.
- ^ Permite la conexión de memoria "estándar" (datos en paralelo de 8 bits y / o direccionamiento paralelo de hasta 12 bits, este último en forma de dirección de 8 bits más selección de chip binario de 4 bits) y dispositivos al 4004 o 4040, así como el uso de RAM como memoria de programa (el 4289 se puede instalar para que parezca una ROM 4001 normal para el procesador independientemente de lo que esté conectado en el otro lado; fomentando la ilusión, también proporciona las mismas cuatro E / S líneas que ofrecería un 4001). Un 4040 que hace uso de dos 4289 podría ofrecer varias combinaciones de ROM y RAM en segmentos de 2KB hasta un total de 8KB con un esquema de direccionamiento segregado relativamente simplista y un pequeño número de 4101s y 4308s, por ejemplo, 3x 4308 y 8x 4101 para 6KB ROM y 1KB RAM .
- ^ Sustituye directamente cuatro 4001 separados con un solo chip, incluida la disponibilidad en cuatro variantes "metálicas" que responden a las direcciones lógicas de chip 0-3, 4-7, 8-11 y 12-15, simulando las dieciséis versiones originales del 4001
- ^ Diseñado para usarse en sentido descendente de un 4289, ya que presenta un bus de entrada de dirección paralela de 11 bits y un bus de salida de datos paralelo de 8 bits separado, así como tres líneas de selección de chip codificadas en binario (lo que permite la provisión de hasta 16 KB de ROM con un esquema de direccionamiento incompatible con el 4004/4040 en varios niveles diferentes, aunque solo dos 4316, por lo tanto 4 KB de ROM, o un 4316 más RAM, pueden serdireccionados directamente por un 4289 sin hardware adicional y / o técnicas de programación especiales)
- ^ es decir, borrado por UV en lugar de electrónicamente, y nuevamente está diseñado para su uso con el 4289, ya que tiene buses de entrada de dirección y salida de datos en paralelo de 8 bits separados
Referencias
- ^ "Historia de la CPU - Museo de la CPU - Ciclo de vida de la CPU" . www.cpushack.com .
- ^ "cpu-collection.de >> Intel >> 4040" . www.cpu-collection.de .
- ^ "cpu-collection.de >> Intel >> 4040" . www.cpu-collection.de .
Otras lecturas
- Hojas de datos de ChipDB: i4040 (PDF)
- Bitsavers: MCS-40 User Manual, noviembre de 1974 (PDF)
- Wikichip: MCS-40
- Pastraiser: Organización de la memoria i4040
- Intel-Vintage: chips de memoria
- Zona de CPU: conjunto de chips MCS-4
- Zona de CPU: i4702