El Intel 4040 (" cuarenta-cuarenta ") es el segundo microprocesador de 4 bits diseñado y fabricado por Intel . Presentado en 1974 como sucesor del Intel 4004 , el 4040 se produjo con un proceso de 10 μm e incluye tecnología lógica PMOS de carga de mejora de puerta de silicio . El 4040 contenía 3000 transistores [ 2 ] y podía ejecutar aproximadamente 62 000 instrucciones por segundo .
El rendimiento general, la disposición del bus y la unidad aritmético-lógica (ALU) eran idénticos a los del 4004. La principal mejora consistió en utilizar un encapsulado DIP ( Dual In-line Package) de 24 pines , lo que le proporcionaba 8 pines más que el 4004 de 16 pines. Dos de estos pines se utilizaron para implementar interrupciones , que no estaban presentes en el 4004 y se consideraban una importante deficiencia. Otros dos pines implementaban un sistema de parada/parada, que ponía al procesador en modo de bajo consumo y permitía la ejecución paso a paso, lo que facilitaba enormemente la depuración. Otro pin se utilizaba para seleccionar un segundo banco de memoria de solo lectura (ROM), duplicando la cantidad de ROM que el procesador podía direccionar en comparación con el 4004.
Para aprovechar estos nuevos pines, se amplió el conjunto de instrucciones , pasando de las 46 originales a 60. Además, se ampliaron el archivo de registros interno y la pila de apilamiento para admitir un procesamiento rápido de interrupciones.


Descripción
4004
El microcontrolador 4004 fue diseñado para usarse en una calculadora electrónica , y muchas de sus notas de diseño están relacionadas con esta función. Por ejemplo, el código del programa solo se puede leer desde un área dedicada a la memoria de solo lectura , no a la RAM. Si bien se podía implementar el "espacio ROM" usando chips de RAM, no existían instrucciones para escribir en esa área de memoria ni para leer el código del programa desde el espacio de RAM. La idea era que los sistemas almacenaran el programa del sistema en la ROM, y que pequeñas cantidades de RAM se usaran solo para datos, si acaso. En el uso típico, los "registros de índice" internos se usaban para el almacenamiento durante los cálculos, con 16 registros de 4 bits capaces de almacenar un único valor decimal codificado en binario de 8 dígitos , el formato de datos utilizado por las calculadoras. También tenía cuatro registros de 12 bits para almacenar direcciones de programa; el superior era el contador de programa y los tres siguientes funcionaban como una pila de inserción para llamadas a subrutinas .
Para reducir el número de pines a solo 16, el 4004 original tenía únicamente cuatro pines de datos, multiplexados tanto para datos como para direcciones. Los pines adicionales indicaban si la dirección se encontraba en la ROM o en uno de los varios "bancos" de RAM. Dado que las direcciones tenían 12 bits de longitud, expresar una dirección requería tres ciclos, además de la lectura o escritura subsiguiente, y los circuitos externos debían almacenar cada parte de 4 bits de la dirección entre ciclos. Las instrucciones eran de 8 bits, por lo que cargar la siguiente instrucción requería al menos dos ciclos más, lo que resultaba en un rendimiento lento a pesar de una frecuencia de reloj relativamente alta para la época.
4040


El 4040 era esencialmente una ampliación del 4004, con pines adicionales, más registros y nuevas instrucciones para aprovechar ambas características.
El chip 4004 tenía un único pin ROM, mientras que el 4040 añadió otro pin ROM para admitir dos bancos de ROM. Esto aumentó la dirección de la ROM de 12 a 13 bits, o 8 KB. A diferencia de diseños posteriores, donde las dos líneas podían codificarse en binario y, por lo tanto, admitir cuatro bancos, los chips ROM utilizados con los chips 4004 y 4040 usaban estas líneas como pines de selección de chip , por lo que las dos líneas solo podían admitir dos bancos.
El 4004 carecía de interrupciones , una limitación importante para algunas aplicaciones en tiempo real . El 4040 añadió un nuevo pin de entrada para llamar a una interrupción, así como un pin de salida para indicar que la señal de interrupción se había detectado y se estaba procesando. Dado que las interrupciones también necesitan guardar una dirección de retorno, el archivo de registros de la pila se amplió a siete entradas, en lugar de tres. [ Nota 1 ]
El código del controlador de interrupciones normalmente comienza guardando valores en los registros para que el código de interrupción pueda utilizarlos, y luego, al final, copia los valores de vuelta desde la memoria para que el procesador regrese a su estado original previo a la interrupción. Con el acceso a memoria multiciclo del diseño, esto habría sido extremadamente lento. Para solucionar esto, se agregaron ocho registros adicionales en un nuevo "banco 1", y los dieciséis registros originales se convirtieron retroactivamente en el "banco 0". Cuando se recibía una interrupción, el código del controlador llamaba a una instrucción para intercambiar bancos, lo que hacía que los registros del banco 1 sobrescribieran los registros del 0 al 7 del banco 0. El código del controlador usaba entonces estos primeros ocho registros para cualquier dato local, dejando los valores originales intactos. Cuando el controlador terminaba, simplemente volvía a conectar el banco 0. Esto redujo el tiempo de intercambio a una sola instrucción, mejorando considerablemente los tiempos de respuesta a las interrupciones.
Otra adición fue el pin de parada de entrada y el correspondiente acuse de recibo de parada de salida. Estos podían usarse para detener el procesador mientras el sistema realizaba tareas de entrada/salida u otras tareas que no requerían la CPU, pero su uso más extendido era la depuración, ya que permitía la ejecución paso a paso del procesador. Cuando el procesador estaba detenido, la mayor parte del hardware del chip entraba en un estado de bajo consumo y alta impedancia, lo que reducía el consumo de energía. Los relojes del ciclo de máquina se mantenían en funcionamiento para beneficio de los dispositivos externos, incluidos los controladores de interrupción necesarios para reactivar el chip, que dependían de que estos controladores permanecieran sincronizados.
Para aprovechar estas nuevas características y dar soporte a los nuevos operadores lógicos ANDAND OR, se añadieron 14 nuevas instrucciones al conjunto de instrucciones, lo que eleva el total a 60.
Características
- Bus de datos: 4 bits
- Bus de direcciones: 12 bits para ROM (multiplexado en el bus de datos; las direcciones tardaban tres ciclos de bus en transmitirse, igual que en el 4004), efectivamente 13 bits con el uso de comandos de conmutación de bancos; efectivamente 10 bits u 8 bits para RAM (dirección directa de 8 bits más selección de banco de uno de cuatro, es decir, equivalente a 2 bits; 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, superpuestas); 62500 a 92500 ciclos de máquina de 8 relojes por segundo, cada instrucción requiere uno o dos ciclos de máquina para leerse y ejecutarse, lo que significa un promedio aproximado de 62 kIPS a 740 kHz con una mezcla equitativa. [ Nota 2 ]
- Rendimiento: Tiempo de ejecución declarado de ~850 μs para sumar 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 3 ]
Diseñadores
Federico Faggin propuso el proyecto, formuló la arquitectura y dirigió el diseño. El diseño detallado fue realizado por Tom Innes . La máscara original muestra, junto a las iniciales de Tom Innes (TI), otras dos iniciales de diseñadores aún no identificados (JO, EL).
Nuevos chips de soporte
- Controladores de bus paralelo de 4 bits 3216 y 3226 [ Nota 4 ]
- 4101 – 256 × RAM estática de 4 bits [ Nota 5 ]
- 4201 – Generador de reloj, de 500 a 740 kHz, que utiliza cristales de 4,000 a 5,185 MHz.
- 4207 – Puerto de salida de 8 bits de propósito general
- 4209 – Puerto de entrada de 8 bits de propósito general
- 4211 – Puerto de E/S de 8 bits de propósito general
- 4265 - E/S programable de propósito general. Contiene cuatro puertos de E/S de 4 bits. Dispone de 14 modos seleccionables por software que pueden programarse para interactuar con estos puertos. El 4265 no solo puede interactuar con el 4040, sino también con el procesador 8080A. Estuvo disponible en cantidades de muestra en marzo de 1976. [ 3 ] [ 4 ]
- 4269 – Teclado/pantalla programable. Este chipset cuenta con configuración de software de sistema mediante instrucciones que controlan el manejo de estos puertos. Estuvo disponible en cantidades de muestra en marzo de 1976. [ 3 ] [ 5 ]
- Características del teclado: Genera una interrupción al presionar la tecla. Almacena hasta 8 caracteres en un búfer FIFO antes de procesar la CPU. Se puede conectar con sensores, interruptores de panel y teclados compatibles con el tamaño completo de un teletipo. Incluye codificación de entrada de teclas, sondeo, almacenamiento en búfer de entrada de caracteres y recuperación de sobrepresión de teclado.
- Características de la pantalla: Controla y actualiza pantallas o matrices de indicadores de hasta 128 elementos o luces. También controla hasta 20 caracteres de descarga de gas en una pantalla como la Burroughs Self-Scan .
- 4289 – Interfaz de memoria estándar (sustituye a 4008/4009) [ Nota 6 ]
- 4308 – 1K × ROM de 8 bits más 4 puertos de E/S de 4 bits [ Nota 7 ]
- 4316 – ROM de 2K × 8 bits [ Note 8 ]
- 4702 – EPROM de 256 × 8 bits [ Nota 9 ]
Uso en ordenadores
El 4040 se utilizó por primera vez en un microordenador en el sistema de desarrollo Intellec 4 Mod 40 de Intel , lanzado a principios de 1975. [ 6 ] Según la revista Byte , el primer microordenador de terceros diseñado en torno al Intel 4040 fue el Micro 440 , lanzado por Comp-Sultants de Huntsville, Alabama, a finales de 1975. [ 7 ]
Véase también
Notas
- ↑ Por defecto, solo se admitía un nivel de interrupción, ya que el servicio posterior se desactivaba una vez que se reconocía una interrupción inicial y solo se podía volver a habilitar en RTI, lo que esencialmente permitía tres niveles de apilamiento de subrutinas dentro de una interrupción que ocurría dentro de una subrutina de tres niveles de profundidad, pero la detección podía forzarse de nuevo con un comando específico.
- ↑ Esto puede no ser del todo exacto y se basa en las características del 4004; algunas de las instrucciones añadidas pueden requerir ciclos adicionales para ejecutarse, especialmente cualquier apilamiento de registros externos necesario 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 se tienen en cuenta para el cálculo de la velocidad.
- ↑ Asimismo, basándonos en el rendimiento declarado del 4004; "850 μs" es una cifra algo redondeada que aparece en un folleto antiguo de Intel y puede que no sea particularmente precisa, pero el tiempo total de ejecución resulta en 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, u 8 por par más 15 adicionales (…etc.). La combinación real de instrucciones no se especificó, por lo que sin el código fuente y una lista de tiempos de ejecución de instrucciones es imposible estar seguro. Una rutina de suma más eficiente podría haber sido posible en el 4040 en comparación con el 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 evidentes del chip anterior, por ejemplo, la falta de interrupciones y la capacidad de detenerse.
- ↑ Proporciona una alta capacidad de manejo de corriente (~25 mA) para dispositivos de E/S externos. Supuestamente, está diseñado exclusivamente para usarse con el 4289, pero su diseño parece bastante genérico y podría adaptarse a un 4004/4040 básico.
- ↑ Es decir, combinar el almacenamiento principal de cuatro 4002 en un único chip seleccionable individualmente, pero sin el puerto de E/S de 4 bits ni las 64 palabras adicionales de memoria de "estado" a la que se accede mediante comandos de E/S. Dado que tiene un bus de direcciones dedicado de 8 bits y dos buses de entrada y salida de datos separados de 4 bits, el 4101 está diseñado únicamente para usarse como periférico descendente del 4289. Esto se ve reforzado por la afirmación de que la SRAM puede "utilizarse como memoria de programa escribible", algo que no se puede lograr con un 4004 o un 4040 sin memoria.
- ↑ Permite la conexión de memoria "estándar" (datos paralelos de 8 bits y direccionamiento paralelo de hasta 12 bits, este último en forma de dirección de 8 bits más selección de chip binaria de 4 bits) y dispositivos al 4004 o 4040, así como el uso de RAM como memoria de programa. (El 4289 se puede instalar de manera que aparezca como una ROM 4001 normal para el procesador, independientemente de lo que esté conectado al otro lado; para reforzar la ilusión, también proporciona las mismas cuatro líneas de E/S que ofrecería un 4001). Un 4040 que utilice dos 4289 podría ofrecer varias combinaciones de ROM y RAM en segmentos de 2 KB hasta un total de 8 KB con un esquema de direccionamiento segregado relativamente simple y un pequeño número de 4101 y 4308, por ejemplo, 3 × 4308 y 8 × 4101 para 6 KB de ROM y 1 KB de RAM.
- ↑ Reemplaza directamente cuatro chips 4001 separados con un solo chip, incluyendo la disponibilidad en cuatro variantes "metálicas" que responden a las direcciones lógicas del chip 0–3, 4–7, 8–11 y 12–15, simulando las dieciséis versiones originales del 4001.
- ↑ Diseñado para usarse después de un 4289, ya que presenta un bus de entrada de direcciones paralelo de 11 bits y un bus de salida de datos paralelo separado de 8 bits, así como tres líneas de selección de chip codificadas en binario (lo que permite proporcionar hasta 16 KB de ROM con un esquema de direccionamiento incompatible con el 4004/4040 en varios niveles diferentes; aunque solo dos 4316, es decir, 4 KB de ROM, o un 4316 más RAM, pueden ser direccionados directamente por un 4289 sin hardware adicional y/o técnicas de programación especiales).
- ↑ es decir, borrado con luz ultravioleta en lugar de electrónicamente, y está nuevamente diseñado para usarse con el 4289, ya que tiene buses separados de entrada de direcciones y salida de datos paralelos de 8 bits.
Referencias
- ↑ "El ciclo de vida de una CPU" . The CPUShack . 2005.
- 1 2 "cpu-collection.de >> Intel >> 4040" . www.cpu-collection.de .
- 1 2 Intel Corporation, "Se presentan los componentes de E/S programables 4269 y 4265 para los sistemas Intel MCS-40 de 4 bits", Intel Microcomputer News, Volumen 3, No. 1, enero de 1976, página 3
- ↑ Intel Corporation, "Dispositivo de E/S programable de propósito general 4265", Catálogo de datos de Intel de 1976 , febrero de 1976, página 7-22
- ↑ Intel Corporation, "Dispositivo de visualización con teclado programable 4269", Catálogo de datos de Intel de 1976 , febrero de 1976, página 7-39
- ↑ Redactor (marzo de 1975). "Intel presenta 4/Mod 40" . Microcomputer Digest . 1 (9). Microcomputer Associates: 1, 3– 4 – vía Internet Archive.
- ↑ Helmers, Carl T. Jr., ed. (diciembre de 1975). "Micro-440" . Byte (4). Byte Publications: 89 – vía Internet Archive.
Lecturas adicionales
- Hojas de datos de ChipDB: i4040 (PDF)
- Bitsavers: Manual de usuario del MCS-40, noviembre de 1974 (PDF)
- Recaudador de fondos: Organización de la Memoria i4040
- Wikichip: MCS-40
- Zona de CPU: Chipset MCS-4
- Zona de CPU: i4702
- Microprocesadores Intel
- microprocesadores de 4 bits
- Introducciones relacionadas con la informática en 1974