CDC 7600
El CDC 7600 fue el sucesor del CDC 6600 diseñado por Seymour Cray, extendiendo el dominio de Control Data en el campo de las supercomputadoras hasta la década de 1970. El 7600 funcionó a 36,4 MHz (ciclo de reloj de 27,5 ns) y tenía una memoria primaria de 65 Kword (con un tamaño de palabra de 60 bits) que utilizaba un núcleo magnético y una memoria secundaria de tamaño variable (hasta 512 Kword) (según el sitio). En general, era aproximadamente diez veces más rápido que el CDC 6600 y podía entregar alrededor de 10 MFLOPS en código compilado manualmente, con un pico de 36 MFLOPS. Además, en pruebas comparativas realizadas a principios de 1970 se demostró que era ligeramente más rápido que su rival de IBM, el IBM System/360, modelo 195. Cuando el sistema fue lanzado en 1967, se vendió por alrededor de 5 millones de dólares en configuraciones básicas, y considerablemente. más a medida que se agregaron opciones y características.
Entre las notables contribuciones de vanguardia del 7600, más allá de las extensas tuberías, se encuentra la forma física de C, que redujo el espacio y aumentó drásticamente el rendimiento al reducir la distancia que las señales debían viajar.
Diseño
Número de serie CDC 7600 1. Esta imagen muestra dos lados del chasis en forma de C.
CDC 7600 con escala
3D rendering of a full overview of two CDC 7600

A medida que el 6600 se acercaba a la calidad de producción, Cray perdió interés en él y se dedicó a diseñar su reemplazo. Hacer una máquina "un poco" más rápido no sería demasiado difícil a finales de los años 1960; la introducción de circuitos integrados permitió un empaquetado más denso de componentes y, a su vez, una mayor velocidad de reloj. Los transistores en general también se volvieron algo más rápidos a medida que mejoraron los procesos de producción y la calidad. Se podría esperar que este tipo de mejoras hicieran una máquina dos veces más rápida, tal vez hasta cinco veces. Sin embargo, al igual que con el diseño 6600, Cray se fijó el objetivo de producir una máquina con un rendimiento diez veces mayor.
Una de las razones por las que el 6600 era mucho más rápido que sus contemporáneos es que tenía múltiples unidades funcionales que podían operar en paralelo. Por ejemplo, la máquina podría realizar la suma de dos números y al mismo tiempo multiplicar otros dos. Sin embargo, cualquier instrucción dada tenía que completar su recorrido a través de la unidad antes de que se pudiera introducir la siguiente, lo que provocó un cuello de botella cuando el sistema de programación se quedó sin instrucciones. Agregar más unidades funcionales no mejoraría el rendimiento a menos que el programador también mejorara mucho, especialmente en términos de permitirle tener más memoria, de modo que pudiera buscar más instrucciones que pudieran introducirse en las unidades paralelas. Ése parecía ser un problema importante.
Para resolver este problema, Cray recurrió al concepto de canal de instrucciones. Cada unidad funcional constaba de varias secciones que operaban a su vez; por ejemplo, una unidad de suma podía tener circuitos dedicados a recuperar los operandos de la memoria, luego la unidad matemática real y finalmente otra para enviar los resultados a la memoria. En cualquier momento dado, sólo una parte de la unidad estaba activa, mientras el resto esperaba su turno. Una canalización mejora esto al introducir la siguiente instrucción antes de que se complete la primera, consumiendo ese tiempo de inactividad. Por ejemplo, mientras se suma una instrucción, se pueden recuperar los operandos para la siguiente instrucción de suma. De esa manera, tan pronto como la instrucción actual se completa y pasa al circuito de salida, los operandos para la siguiente adición ya están esperando ser agregados. De esta forma cada unidad funcional trabaja en "paralelo", al igual que la máquina en su conjunto. La mejora en el rendimiento generalmente depende de la cantidad de pasos que toma la unidad para completar. Por ejemplo, la unidad multiplicadora del 6600 tardó 10 ciclos en completar una instrucción, por lo que al canalizar las unidades se podría esperar ganar aproximadamente 10 veces la velocidad.
Sin embargo, las cosas nunca son tan simples. La canalización requiere que los componentes internos de la unidad puedan separarse efectivamente hasta el punto en que cada paso de la operación se ejecute en circuitos completamente separados. Esto rara vez se puede lograr en el mundo real. Sin embargo, el uso de canalización en el 7600 mejoró el rendimiento con respecto al 6600 en un factor de aproximadamente 3. Para lograr el resto del objetivo, la máquina tendría que funcionar a una velocidad más rápida, lo que ahora es posible gracias a nuevos diseños de transistores. Sin embargo, existe un límite físico para el rendimiento debido al tiempo que tardan las señales en moverse entre las partes de la máquina, que a su vez está definido por su tamaño físico. Como siempre, el trabajo de diseño de Cray dedicó un esfuerzo considerable a este problema y, por lo tanto, permitió frecuencias operativas más altas. Para el 7600, cada módulo de circuito constaba en realidad de hasta seis placas de circuito impreso, cada una repleta de resistencias, diodos y transistores subminiatura. Las seis placas se apilaron y luego se interconectaron a lo largo de sus bordes, formando un módulo muy compacto, pero básicamente irreparable.
Sin embargo, el mismo embalaje denso también provocó el mayor problema de la máquina: el calor. Para el 7600, Cray recurrió una vez más a su ingeniero de refrigeración, Dean Roush, ex empleado de la empresa Amana. Roush añadió una placa de aluminio en la parte posterior de cada lado de la pila de leña, que a su vez se enfriaba mediante un sistema de freón líquido que recorría el núcleo de la máquina. Dado que este sistema era mecánico y, por lo tanto, propenso a fallar, el 7600 fue rediseñado para convertirlo en un sistema "C" forma para permitir el acceso a los módulos a ambos lados de la tubería de refrigeración caminando hacia el interior del módulo "C" y abriendo el gabinete.
Arquitectura
El 7600 fue un hito arquitectónico y la mayoría de sus características siguen siendo partes estándar del diseño por computadora. Es una computadora con un conjunto de instrucciones reducido con una palabra de instrucción de 15 bits que contiene un código de operación de 6 bits. Sólo hay 64 códigos de máquina, incluido un código de no operación, sin operaciones de multiplicación o división de punto fijo en el procesador central.
El 7600 tiene dos memorias centrales principales. La memoria de núcleo pequeño contiene las instrucciones que se ejecutan actualmente y los datos que se procesan actualmente. Tiene un tiempo de acceso de 10 de los ciclos menores de 27,5 ns y una longitud de palabra de 60 bits. La memoria central grande contiene datos listos para transferir a la memoria central pequeña. Tiene un tiempo de acceso de 60 de los ciclos menores de 27,5 ns y una longitud de palabra de 480 bits (512 bits con paridad). Los accesos están completamente canalizados y almacenados en búfer, por lo que los dos tienen la misma velocidad de transferencia secuencial de 60 bits cada 27,5 ns. Los dos funcionan en paralelo, por lo que la tasa de transferencia secuencial de uno a otro es de 60 bits por ciclo menor de 27,5 ns. En una llamada al sistema operativo, el sistema operativo intercambia y reemplaza el contenido de la memoria central pequeña de la memoria central grande y luego lo restaura.
Existe un canal de instrucciones de 12 palabras, llamado pila de palabras de instrucción en la documentación de los CDC. Se recuperan todas las direcciones de la pila, sin esperar a que se procese el campo de instrucciones. Por lo tanto, la búsqueda de la instrucción de destino de una rama condicional precede a la evaluación de la condición de la rama. Durante la ejecución de un bucle de 10 palabras (hasta 40 instrucciones), todas las instrucciones necesarias permanecen en la pila, por lo que no se recupera ninguna instrucción, lo que deja una pequeña memoria central libre para las transferencias de datos.
Hay ocho registros de 60 bits, cada uno con un registro de dirección. Mover una dirección a un registro de direcciones inicia una pequeña lectura o escritura en la memoria central. Las instrucciones aritméticas y lógicas tienen estos registros como origen y destino. El programador o compilador intenta recuperar los datos a tiempo para usarlos y almacenarlos antes de que más datos necesiten el mismo registro, pero si no está listo, el procesador entra en un estado de espera hasta que lo esté. También espera si una de las cuatro unidades aritméticas de punto flotante no está lista cuando se solicita, pero debido a la canalización, esto no suele suceder.
Relación con el CDC 6600
El CDC 7600 "fue diseñado para ser compatible con código de máquina hacia arriba con el 6600, pero para proporcionar un aumento sustancial en el rendimiento". Un usuario dijo: "La mayoría de los usuarios podrían ejecutar cualquier sistema sin cambios".
Aunque el 7600 compartía muchas características del 6600, incluido el hardware, las instrucciones y el tamaño de palabra de 60 bits, no era compatible con el código objeto del CDC 6600. Además, no era enteramente código fuente (COMPASS) compatible, ya que algunas instrucciones en el 7600 no existían en el 6600, y viceversa. Originalmente se llamó CDC 6800, pero se cambió a 7600 cuando Cray decidió que no podía ser completamente compatible. Sin embargo, debido al diseño del sistema operativo del 7600, el 6600 y el 7600 compartían un "entorno de software uniforme"; a pesar de las diferencias de bajo nivel.
De hecho, desde una perspectiva de alto nivel, el 7600 era bastante similar al 6600. En ese momento, la memoria de la computadora se podía organizar en bloques con rutas de acceso independientes, y los diseños de Cray aprovecharon esto. Si bien la mayoría de las máquinas usarían una sola CPU para ejecutar todas las funciones del sistema, Cray se dio cuenta de que esto significaba que cada bloque de memoria pasaba una cantidad considerable de tiempo inactivo mientras la CPU procesaba instrucciones y accedía a otros bloques. Para aprovechar esto, los modelos 6600 y 7600 dejaron las tareas domésticas mundanas, como imprimir o leer tarjetas perforadas, por ejemplo, a una serie de diez máquinas más pequeñas de 12 bits basadas en el CDC 160-A conocido como " Unidades de procesador periférico, o PPU. Para cualquier ciclo dado de la máquina, una de las PPU tenía el control, introduciendo datos en la memoria mientras el procesador principal procesaba números. Cuando se completó el ciclo, se le dio el control a la siguiente PPU. De esta manera, la memoria siempre mantuvo información actualizada para que trabajara el procesador principal (salvo retrasos en los propios dispositivos externos), eliminando retrasos en los datos, además de permitir que la CPU se construyera para el rendimiento matemático y nada más.. Se podría decir que el PPU es un “canal de comunicación” muy inteligente.
Al igual que el 6600, el 7600 usaba palabras de 60 bits con instrucciones que generalmente tenían una longitud de 15 bits, aunque también había instrucciones de 30 bits. Las instrucciones estaban empaquetadas en palabras de 60 bits, pero una instrucción de 30 bits no podía abarcar dos palabras y el control solo podía transferirse a la primera instrucción de una palabra. Sin embargo, el conjunto de instrucciones en sí había cambiado para reflejar el nuevo diseño de la memoria interna, lo que la hacía incompatible con el 6600 anterior. Las máquinas eran lo suficientemente similares como para hacer posible la portabilidad de compiladores y sistemas operativos sin demasiados problemas. Inicialmente, la máquina no venía con software; los sitios tenían que estar dispuestos a escribir su propio sistema operativo, como LTSS, NCAROS y otros; y compiladores como LRLTRAN (la versión de Fortran de Livermore con administración dinámica de memoria y otras características no estándar).
CDC también fabricó dos computadoras multiprocesador basadas en la 7600, con el número de modelo 7700. Consistían en dos máquinas 7600 en una configuración asimétrica: una central y una adjunta. Se utilizaron para el lanzamiento de misiles y el seguimiento de misiles balísticos intercontinentales de la URSS. El simulador de radar era un simulador en tiempo real con un CDC 6400 como interfaz de entrada/salida. Estos sistemas iban a utilizarse en el campo de misiles del Pacífico. Una computadora se instaló en TRW en Redondo Beach CA (luego se trasladó al atolón Kwajalein, Pacífico Sur) y la segunda se instaló en McDonnell Douglas en Huntington Beach, California. Eran 7600 reales conectados por el chasis 25 para convertirlos en 7600 MP.
Recepción y uso
Desde 1969 hasta 1975 aproximadamente, la CDC 7600 fue considerada generalmente como la computadora más rápida del mundo, a excepción de las unidades especializadas. Sin embargo, incluso con la mecánica y la refrigeración avanzadas, el 7600 era propenso a fallar. Tanto LLNL como NCAR informaron que la máquina se averiaba al menos una vez al día y, a menudo, cuatro o cinco veces. La aceptación en los sitios de instalación tomó años hasta que se resolvieron los errores, y aunque la máquina en general se vendió bastante bien dada su calidad de "gama alta"; nicho, es poco probable que la máquina haya generado algún tipo de beneficio real para CDC. El sucesor CDC 8600 nunca se completó y Seymour Cray formó su propia empresa, Cray Research.
Uno de los 7600 superviviente se exhibe parcialmente en el Museo de Historia de la Computación. Su gran tamaño permite mostrar sólo dos unidades de esquina. El resto está almacenado. Otro 7600 está en exhibición en el Museo de Industria y Tecnología de Chippewa Falls, junto con su consola y un controlador de cinta.
Fotos
- Dentro del 7600