stringtranslate.com

Instrumento general CP1600

La consola de videojuegos Intellivision fue la única aplicación generalizada de la familia CP1600.

El CP1600 es un microprocesador de 16 bits creado en una asociación entre General Instrument y Honeywell , presentado en febrero de 1975. [1] [2] Es uno de los primeros procesadores de 16 bits de un solo chip. El diseño general tiene un gran parecido con el PDP-11 .

Honeywell utilizó el CP1600 en varias computadoras de control de procesos y sistemas relacionados, pero su uso más extendido fue la versión CP1610 en la consola de videojuegos Intellivision . El sistema tuvo poco uso debido a la filosofía de marketing de General Instrument de buscar clientes sólo con pedidos muy grandes e ignorar a los clientes más pequeños. Tampoco buscaron un acuerdo de segunda fuente , lo que en los primeros días de los diseños de microprocesadores era un requisito para la mayoría de los clientes potenciales. [3]

Descripción

Implementación física

Distribución de pines CP1600

El CP1600 se implementó en modo de mejora nMOS y requirió fuentes de alimentación de +12, +5, -3 V; Las conexiones de E/S, excepto los relojes, eran compatibles con TTL (5 V). [a] Cada microestado o ciclo de procesador utiliza cuatro intervalos de tiempo internos generados por dos relojes que no se superponen. Un reloj bifásico de 3,3 MHz produce un microciclo de 600 nanosegundos. Un reloj bifásico de 5 MHz produce un microciclo de 400 nanosegundos. Debido a los requisitos de voltaje de las señales del reloj, éstas debían generarse con circuitos externos, como era común en esta era del diseño de microprocesadores. [3]

Para encajar un procesador de 16 bits en un diseño de chip de paquete dual en línea (DIP) de 40 pines, el CP1600 multiplexó sus pines de datos y direcciones. Esto permitió utilizar un conjunto de 16 pines tanto para la selección de direcciones como para la lectura y escritura de datos, pero para hacerlo se requirieron dos ciclos de bus. También complicó el diseño general de la máquina, ya que se requerían buffers en el bus de memoria para bloquear la dirección mientras el procesador cambiaba los pines al modo de datos. La interfaz del sistema también era compleja y requería tres pines, BDIRy BC1, BC2que debían decodificarse para comprender en qué estado se encontraba el bus de memoria. [4]

Una característica relativamente poco común del CP1600 fue su concepto de "rama externa". Esto se implementó como cuatro pines en el chip, EBCA0a través de EBCA3, que contenían los cuatro bits inferiores del BEXTcódigo de operación de instrucción. Cuando se realiza esta instrucción, los pines se activan y se utilizan para indicar cuál de hasta dieciséis sistemas externos debe muestrearse. Luego, esos dispositivos responderían a la consulta configurando EBCIun pin, y el estado de este pin determinaría si la rama se tomó o no. [4] Esto podría usarse, por ejemplo, para probar si un dispositivo externo tenía datos de entrada que debían ser procesados; el procesador podría expresar el valor "2" en el EBCAdispositivo de muestra 2, llamar a BEXT, y ese dispositivo luego respondería estableciéndose EBCIen verdadero si hubiera datos, lo que provocaría que el procesador saltara al código para leer los datos de ese dispositivo.

Esto contrasta con la solución típica para manejar dispositivos externos; en la mayoría de los sistemas, los dispositivos generan una interrupción que hace que el procesador llame a un código especial, el controlador de interrupciones , que luego lee datos adicionales para determinar qué dispositivo llamó la interrupción. Estos datos adicionales pueden presentarse mediante pines dedicados en la CPU, pero a menudo se presentan como un valor en el bus de datos . El código del controlador de interrupciones decide a qué controlador de dispositivo llamar para procesar los datos. El CP1600 puede implementar esto en menos instrucciones; el controlador de interrupciones es simplemente una serie de BEXTinstrucciones que apuntan a los controladores asociados que ejecuta uno a la vez hasta que el dispositivo en cuestión configura EBCIy automáticamente hace que el código se bifurque.

En total, implementar un sistema que utiliza el CP1600 a menudo requería lógica y chips de soporte adicionales. Esto incluía un sistema para multiplexar dieciséis señales en un solo pin si se usaba la derivación externa, y un convertidor de tres bits a ocho líneas para evitar tener que decodificar las señales de estado del bus en partes externas. [3]

Conjunto de instrucciones y registros.

De los 16 bits disponibles en un código de operación de instrucción , el CP1600 usó solo 10. Los 6 bits restantes fueron marcados como "Uso futuro". [5] Las instrucciones de 10 bits significaban que el código almacenado en una ROM típica orientada a bytes desperdiciaría seis bits por instrucción. En la era de la memoria cara, este era un problema importante. Para solucionar este problema, General Instrument también produjo ROM especiales de 10 bits que almacenaban las instrucciones de manera eficiente. Como los datos y las direcciones aún requerirían valores de 16 bits, el 1600 incluía una instrucción SDBD especial que reconstruía un argumento de 16 bits a partir de dos lecturas de ROM de 10 bits.

Parece que los 6 bits no utilizados estaban destinados a ser utilizados con coprocesadores, afirmando la línea PCIT que detuvo la CPU hasta su lanzamiento. La documentación inicial muestra dos chips planificados en la serie, el 1616 que agregó el "Conjunto de instrucciones extendido" y el 1618 "Expansor prioritario". [6]

El sistema incluía 87 instrucciones básicas. Las instrucciones pueden tener de una a tres palabras de 16 bits, según el formato de direccionamiento que se utilice. [4] El CP1600 no admitía direccionamiento indirecto memoria-memoria (compensaciones) y el bucle se implementó utilizando un sumador dedicado que realizaba cambios de ciclo único en las direcciones en la memoria. La unidad lógica aritmética (ALU) tenía 16 bits de ancho y podía agregar dos registros internos de 16 bits en 2,4 microsegundos, y la memoria para registrar agregar dos números de 16 bits en 3,2 microsegundos. [7]

Al igual que el PDP-11, el CP1600 utilizaba ocho registros de procesador de "propósito general" de 16 bits , aunque no eran verdaderamente de propósito general como en los diseños modernos. Sólo R0 no tenía un propósito predefinido y ha sido descrito como "el acumulador primario". [8] R1 a R3 podrían usarse punteros de datos, generalmente utilizados para direccionamiento basado en registros ("direccionamiento implícito"). R4 y R5 se incrementaban automáticamente después de acceder a ellos, lo que los hacía útiles para recorrer colecciones de datos.

R6 era el puntero de la pila , R7 el contador del programa. Dado que ambos registros eran visibles para el programador, podrían usarse para implementar múltiples pilas o admitir ramificaciones más complejas, entre otras cosas. No había instrucciones de pila implícitas; cuando se usaba R6 en una operación de "lectura", disminuía la dirección y luego devolvía los datos a los que se apuntaba, simulando un POP, y cuando se usaba en una "escritura", escribía luego del incremento (como R4/R5), simulando un PUSH.

E/S

Como era común en la época, el CP1600 usaba E/S asignadas en memoria , a diferencia de pines de E/S separados como se ve en los sistemas Intel . El uso de un bus multiplexado y un estado de bus multiestado hizo que la implementación de E/S fuera más difícil de lo que normalmente sería el caso en sistemas mapeados en memoria. Esto significaba que las implementaciones tenían que usar pestillos o buffers para poder interactuar con la CPU mientras cambiaba el bus de indicar una dirección a datos. [8] Esto afectó negativamente el rendimiento de E/S y aumentó la complejidad de los dispositivos de E/S.

Para solucionar este problema, GI suministró una serie de chips de E/S dedicados 164x que implementaron la lógica de bus requerida. Estos incluían, por ejemplo, el controlador de teclado 1641, el controlador de cinta de casete 1643 y el control de pantalla 1647. [6] El más famoso entre ellos es el "Controlador de interfaz programable" 1640 , o PIC, que fue diseñado para funcionar en conjunto con el CP1600 y actuar como un controlador de canal para la CPU. Al igual que con los otros chips de la serie 1640, el PIC decodificaba internamente la lógica del bus, pero también agregaba un procesador muy simple que podía ejecutar sus propios programas para realizar E/S y acceso directo a la memoria . Por ejemplo, se podría enviar una instrucción a un PIC en una tarjeta de disquete para leer datos de un sector determinado del disco. Luego, el PIC leería los datos en su propio búfer interno, observaría el bus durante el tiempo no utilizado cuando todos los pines de estado del bus estuvieran en cero y luego enviaría datos a la memoria principal. [6]

General Instrument proporcionó ensambladores cruzados y simuladores/depuradores compatibles con minicomputadoras de 16 bits o más . [9] GI también proporcionó un sistema de microcomputadora independiente basado en CP1600 en el GIC1600. [10]

Usos

El CP1610, utilizado en consolas de juegos como Champion 2711 [11] y, más notablemente, Intellivision , es un miembro compatible de la familia de microprocesadores 1600. Utiliza un reloj de dos fases de 2 MHz que produce un ciclo de procesador de 1 microsegundo. El CP1610 en NTSC Intellivisions utiliza un reloj bifásico de 1,7897725 MHz. Aunque los usuarios del CP1600 en el rol tradicional de computadora eran relativamente raros, se produjeron más de 3 millones de Intellivisions desde 1980 hasta que la caída del videojuego de 1983 provocó el cierre de las líneas de producción de Intellivision en 1984. [12]

La producción del CP1600 terminó en 1985 cuando General Instrument escindió su división de microelectrónica para crear Microchip Technology . En ese momento, estaban disponibles varios diseños de 32 bits como el MC68000 , lo que limitaba el interés en un diseño de 16 bits como el CP1600, y su principal cliente existente, Intellivision, ya no estaba en producción. Muchos otros productos también llegaron al final de su vida útil al mismo tiempo, y su producto principal fue el PIC.

Notas

  1. ^ A diferencia del National Semiconductor PACE , por ejemplo, que genera señales de 12 V y requiere una amplia interfaz para su uso con componentes TTL.

Referencias

Citas

  1. ^ https://www.edn.com/general-instruments-microprocessor-aimed-at-minicomputer-market/
  2. ^ Belzer, Jack; Holzman, Albert G.; Kent, Allen (1978). Enciclopedia de ciencias y tecnología de la computación: Volumen 10 - Álgebra lineal y matricial para microorganismos: identificación asistida por computadora. Prensa CRC . pag. 402.ISBN​ 9780824722609.
  3. ^ abc Osborne 1981, pag. 2.1.
  4. ^ abc Serie1600 1975, 2.1.
  5. ^ Manual de usuario del microprocesador CP-1600 (PDF) (S16DOC-CP 1600 -04 ed.). Instrumentos generales. Mayo de 1975 . Consultado el 5 de julio de 2022 .
  6. ^ Serie abc1600 1975, pag. i.
  7. ^ Serie1600 1975.
  8. ^ ab Lowell Turner, "General Instruments CP1600", 10 de julio de 2001
  9. ^ Manual de usuario del simulador de ensamblador cruzado CP-1600 (PDF) . Instrumento General. Noviembre de 1974.
  10. ^ Manual de usuario del microordenador GIC1600 (PDF) . Instrumento General. Septiembre de 1975.
  11. ^ "Campeón 2711 | Pre-83". pre83.com . Consultado el 23 de mayo de 2022 .
  12. ^ "Mattel Intellivision - 1980-1984". Juegos clásicos . IGN . Archivado desde el original el 23 de junio de 2008 . Consultado el 16 de mayo de 2008 .

Bibliografía

enlaces externos