CP1600 es un microprocesador de 16 bits , creado a mediados de la década de 1970 conjuntamente por General Instrument y Honeywell . El microprocesador CP1600 fue diseñado sobre la base de la arquitectura de minicomputadora PDP-11 , también se utiliza sobre la base del microprocesador MCP-1600 de Western Digital e influye en muchos otros diseños. Honeywell ha utilizado el CP1600 en varias computadoras de control de procesos y sistemas interconectados, pero la versión CP1610 utilizada en la consola de juegos Intellivision ha sido la más utilizada .
El sistema de mando CP1600 repite casi en su totalidad el sistema de mando PDP-11, pero no es compatible con él a nivel de códigos de operación y tiene diferencias en los tipos de direccionamiento. Solo los 10 bits inferiores se utilizan para los códigos de operación, los 6 superiores están marcados como "Reservados para una mayor expansión". Por otro lado, a la hora de diseñar sistemas, esto permitió reducir la cantidad de ROM. Presumiblemente, los 6 bits reservados estaban destinados a ser utilizados por coprocesadores. La longitud de los comandos es de una a tres palabras máquina, según el tipo de direccionamiento. A diferencia de otros procesadores con la misma arquitectura, el CP1600 no admite transferencias de datos de memoria a memoria mediante direccionamiento indirecto (offsets), además, las instrucciones de salto condicional utilizan desplazamientos de 16 bits en lugar de 8 bits, lo que permite, en el caso de saltos largos, evite usar comandos de salto incondicionales adicionales.
Al igual que el PDP-11, el CP1600 utiliza ocho registros de propósito general de 16 bits , aunque estos registros no son completamente equivalentes en el conjunto de instrucciones. El registro R0 no se puede utilizar para el acceso indirecto a la memoria. Los registros R1 - R3 se pueden usar para el acceso indirecto a la memoria, pero no admiten el incremento automático. Los registros R4 y R5 siempre se incrementan automáticamente después de un acceso indirecto a la memoria [1] .
El registro R6 se usa como puntero de pila, el registro R7 es el contador de programa. Debido a que ambos registros están disponibles programáticamente para el programador, es posible implementar múltiples pilas o lógica de salto compleja. No hay instrucciones explícitas para acceder a la pila, el registro R6 se reduce automáticamente antes de usarlo para leer indirectamente datos de la memoria, lo que simula una instrucción POP, y se incrementa automáticamente después de usarlo para escribir datos indirectamente en la memoria, lo que simula una instrucción. PUSH.
Al igual que el PDP-11, una de las características distintivas del CP1600 es la compatibilidad con la asignación de registros de E/S de memoria , lo que significa la capacidad de controlar dispositivos escribiendo en direcciones de memoria específicas. En el CP1600, a diferencia del Unibus utilizado en el PDP-11, los buses de dirección y datos se multiplexaron para reducir la cantidad de pines y ajustar el procesador en un paquete DIP de 40 pines . Esta diferencia hizo que en las aplicaciones prácticas del procesador fuera necesario utilizar latches o buffers para fijar la dirección y los datos [1] . Esto limitó la velocidad de E/S, por lo que General Instrument desarrolló una serie de "Controladores de interfaz programables" diseñados para usarse con el CP1600 como controladores de canal .
El procesador CP1600 se fabricó con tecnología N-MOS , se utilizaron fuentes de +12, +5, -3 V para la fuente de alimentación, los niveles de señal lógica son compatibles con TTL . Inicialmente lanzado a 3,3 MHz (tiempo de ciclo de máquina de 600 ns) [2] , luego la frecuencia se incrementó a 5 MHz (tiempo de ciclo de máquina de 400 ns). Los comandos requerían ejecutar de 6 a 14 ciclos de máquina, que a una frecuencia de 5 MHz oscilaban entre 2,4 y 5,6 μs [3] . General Instruments también produjo el sistema de desarrollo "GIMINI" para el CP1600 [2] .
El microprocesador CP1610 utilizado en la consola de juegos Intellivision es en realidad una versión más lenta del CP1600 con algunas simplificaciones. En el decodificador Intellivision, el microprocesador CP1610 funcionaba a 894 kHz para televisores NTSC , o 1 MHz para versiones PAL / SECAM . Aunque los usuarios de computadoras basadas en CP1600 eran muy raros, se produjeron más de 3 millones de consolas Intellivision desde 1980 hasta la crisis de la industria de juegos de computadora de 1983 , que llevó al cierre de las industrias productoras de consolas en 1984. [cuatro]
La producción del CP1600 cesó en 1985 cuando General Instruments escindió su división de microelectrónica para formar Microchip Technology . En este punto, ya estaban disponibles una serie de desarrollos de 32 bits, como el Motorola 680x0 , que redujo el interés en sistemas de 16 bits como el CP1600, y el principal consumidor, Intellivision, cesó la producción. Al mismo tiempo, se eliminó el soporte para muchos otros productos y los microcontroladores PIC se convirtieron en el producto principal de la nueva empresa .