


El CDC 6600 es el buque insignia de la serie 6000 de sistemas informáticos centrales descontinuados fabricados por Control Data Corporation . [ 8 ] [ 9 ] Generalmente considerado como el primer superordenador exitoso , superó al poseedor del récord anterior de la industria, el IBM 7030 Stretch , por un factor de tres. [ 10 ] [ 11 ] Con un rendimiento de hasta tres megaFLOPS , [ 12 ] [ 13 ] el CDC 6600 fue el ordenador más rápido del mundo desde 1964 hasta 1969, cuando cedió ese estatus a su sucesor, el CDC 7600. [ 14 ]
Los primeros CDC 6600 se entregaron en 1965 a Livermore y Los Alamos . [ 15 ] Rápidamente se convirtieron en un sistema indispensable en la computación científica y matemática de alta gama, y se entregaron sistemas al Instituto Courant de Ciencias Matemáticas , al CERN , [ 16 ] [ 17 ] al Laboratorio de Radiación Lawrence , [ 18 ] y a muchos otros. Se entregaron al menos 100 en total. [ 19 ]
Un ordenador CDC 6600 se exhibe en el Museo de Historia de la Computación en Mountain View, California .
Historia e impacto
Los primeros productos de CDC se basaron en las máquinas diseñadas en Engineering Research Associates (ERA), que Seymour Cray había recibido el encargo de actualizar tras su incorporación a CDC. Después de una máquina experimental conocida como Little Character , [ 20 ] en 1960 lanzaron la CDC 1604 , una de las primeras computadoras comerciales basadas en transistores y una de las más rápidas del mercado. La dirección quedó encantada y planeó una nueva serie de máquinas más adaptadas al uso empresarial; estas incluirían, por ejemplo, instrucciones para el manejo de caracteres y el registro de datos. Cray no estaba interesado en dicho proyecto y se propuso crear una nueva máquina que fuera 50 veces más rápida que la 1604. Cuando se le pidió que elaborara un informe detallado sobre los planes a uno y cinco años vista, respondió que su objetivo a cinco años era "producir la computadora más grande del mundo", siendo "la más grande" sinónimo de "la más rápida" en aquel entonces, y que su plan a un año era "haber avanzado una quinta parte". [ 21 ]
Tras trasladar a su equipo principal a unas nuevas oficinas cerca de la sede original de CDC, comenzaron a experimentar con versiones de mayor calidad de los transistores "baratos" que Cray había utilizado en el 1604. Después de muchas pruebas, descubrieron que era imposible que los transistores de germanio funcionaran a una velocidad mucho mayor que los del 1604. La "máquina de negocios" que la dirección había deseado inicialmente, ahora convertida en la serie CDC 3000 , los llevó al límite de sus posibilidades. Entonces, Cray decidió que la solución era trabajar con los transistores de silicio de Fairchild Semiconductor , que por aquel entonces eran novedosos y acababan de salir al mercado, ofreciendo un rendimiento de conmutación notablemente superior.
Durante este periodo, CDC pasó de ser una empresa emergente a una gran corporación, y Cray se sentía cada vez más frustrado con lo que consideraba exigencias de gestión absurdas. La situación se tornó mucho más tensa en 1962, cuando el nuevo CDC 3600 comenzó a alcanzar la calidad de producción y parecía ser justo lo que la dirección necesitaba, justo cuando lo necesitaba. Finalmente, Cray le comunicó al director ejecutivo de CDC, William Norris, que algo tenía que cambiar o abandonaría la empresa. Norris consideró que era demasiado importante como para perderlo y le dio a Cray luz verde para establecer un nuevo laboratorio donde quisiera.
Tras una breve búsqueda, Cray decidió regresar a su ciudad natal de Chippewa Falls, Wisconsin , donde compró un terreno y puso en marcha un nuevo laboratorio.
Aunque este proceso supuso una demora considerable en el diseño de su nueva máquina, una vez en el nuevo laboratorio, sin interferencias de la dirección, el proyecto avanzó rápidamente. Para entonces, los nuevos transistores ya eran bastante fiables y los módulos construidos con ellos solían funcionar correctamente al primer intento. La 6600 comenzó a tomar forma, con Cray trabajando junto a Jim Thornton , arquitecto del sistema y «genio oculto» de la 6600.
Se vendieron más de 100 CDC 6600 durante la vida útil de la máquina (1964 a 1969). Muchas de ellas fueron a parar a diversos laboratorios relacionados con armas nucleares , y bastantes terminaron en laboratorios de informática universitarios. Una CDC 6600 se utilizó para refutar la conjetura de Euler sobre la suma de potencias en un ejemplo temprano de búsqueda numérica directa. [ 22 ]
Cray centró inmediatamente su atención en su reemplazo, fijándose esta vez el objetivo de lograr un rendimiento diez veces superior al del 6600, dando como resultado el CDC 7600. Los posteriores ordenadores CDC Cyber 70 y 170 eran muy similares al CDC 6600 en su diseño general y eran prácticamente totalmente compatibles con versiones anteriores.
La 6600 era tres veces más rápida que la anterior poseedora del récord, la IBM 7030 Stretch ; esto alarmó a IBM . El entonces director ejecutivo, Thomas Watson Jr., escribió un memorándum a sus empleados el 28 de agosto de 1963: "La semana pasada, CDC [...] anunció su sistema 6600. Entiendo que en el laboratorio que desarrolla este sistema solo hay 34 personas, 'incluido el conserje'. De ellas, 14 son ingenieros y 4 son programadores [...] Comparando este modesto esfuerzo con nuestras vastas actividades de desarrollo, no entiendo por qué hemos perdido nuestra posición de liderazgo en la industria al permitir que alguien más ofrezca la computadora más potente del mundo". La respuesta de Cray fue sarcástica: "Parece que el Sr. Watson ha respondido a su propia pregunta". [ 23 ] [ 24 ]
Descripción
Las máquinas típicas de las décadas de 1950 y 1960 utilizaban una única unidad central de procesamiento (CPU) para controlar todo el sistema. [ 25 ] Un programa típico primero cargaba datos en la memoria (a menudo utilizando código de biblioteca predefinido), los procesaba y luego los volvía a escribir. Esto requería que las CPU fueran bastante complejas para poder manejar el conjunto completo de instrucciones que debían ejecutar, incluyendo entrada/salida y procesamiento. Una CPU compleja implicaba una CPU grande, lo que introducía retrasos en la señalización mientras la información fluía entre los módulos individuales que la componían. Estos retrasos establecían un límite máximo de rendimiento, ya que la máquina solo podía operar a una velocidad de ciclo que permitiera que las señales llegaran al siguiente módulo. Además, las CPU generalmente funcionaban más lentamente que la memoria principal a la que estaban conectadas. Por ejemplo, un procesador podía tardar 15 ciclos en multiplicar dos números, mientras que cada acceso a la memoria tardaba solo uno o dos ciclos. Esto significaba que había un tiempo significativo en el que la memoria principal estaba inactiva. Cray mejoró el rendimiento de varias maneras, aprovechando este tiempo de inactividad.
En lugar de una sola CPU, el CDC 6600 la complementaba con diez procesadores periféricos (PP) de 12 bits y 4 KiB, cada uno con acceso a un conjunto común de 12 canales de entrada/salida (E/S) que gestionaban la entrada y salida de datos, además de controlar qué datos se enviaban a la memoria central para su procesamiento por el procesador central (CP). Los PP estaban diseñados para acceder a la memoria durante los periodos de inactividad, cuando la CPU estaba ocupada realizando operaciones. Esto les permitía realizar operaciones de entrada/salida prácticamente sin coste alguno en términos de tiempo de procesamiento central, manteniendo así la CPU ocupada el mayor tiempo posible.
Dado que la entrada/salida era gestionada por procesadores periféricos, el CDC 6600 utilizaba un procesador central (PC) simplificado, diseñado para ejecutar operaciones matemáticas y lógicas con la mayor rapidez posible. Esto requería un tamaño mínimo para reducir la longitud del cableado y los retrasos de señalización asociados. Como resultado, el chasis principal de la máquina tenía una forma de cruz (típicamente), con las placas de circuito de la CPU dispuestas cerca del centro, lo que permitió obtener una CPU mucho más pequeña. Gracias a la mayor velocidad de conmutación de los transistores de silicio, la nueva CPU funcionaba a 10 MHz ( con un tiempo de ciclo de 100 ns), aproximadamente diez veces más rápido que otras máquinas del mercado. Además de la mayor velocidad de reloj, el procesador simplificado ejecutaba las instrucciones en menos ciclos; por ejemplo, la CPU podía completar una multiplicación en diez ciclos.
El CP del 6600 utilizaba una palabra de 60 bits y una representación en complemento a uno de los enteros, algo que las máquinas CDC posteriores utilizarían hasta finales de la década de 1980, convirtiéndolas en los últimos sistemas, además de algunos procesadores de señales digitales , en utilizar esta arquitectura. [ 26 ]
Posteriormente, CDC ofreció opciones en cuanto al número y tipo de procesadores centrales (CP), procesadores de paquetes (PP) y canales; por ejemplo, el CDC 6700 tenía dos procesadores centrales, un CP 6400 y un CP 6600.
Mientras que otras máquinas de su época tenían elaborados paneles frontales para controlarlas, la 6600 solo tiene un panel de inicio muerto . [ 27 ] Hay una consola de sistema CRT dual, pero está controlada por el sistema operativo y no controla ni muestra el hardware directamente.
La máquina 6600 completa contenía aproximadamente 400.000 transistores. [ 28 ]
Procesadores periféricos
La CPU solo podía ejecutar un número limitado de instrucciones sencillas. Una CPU típica de la época tenía un conjunto de instrucciones complejo , que incluía instrucciones para gestionar todas las tareas básicas, como el acceso a la memoria y la entrada/salida de datos . Cray, en cambio, implementó estas instrucciones en procesadores separados y más sencillos, dedicados exclusivamente a estas tareas, lo que redujo considerablemente el conjunto de instrucciones de la CPU. Este fue el primer ejemplo de lo que más tarde se conocería como arquitectura RISC ( computadora con conjunto de instrucciones reducido ).
Al permitir que la CPU, los procesadores periféricos (PP) y las E/S operaran en paralelo, el diseño mejoró considerablemente el rendimiento de la máquina. En condiciones normales, una máquina con varios procesadores también costaría mucho más. La clave del diseño del 6600 fue simplificar al máximo los procesadores de E/S, conocidos como procesadores periféricos (PP). Los PP se basaban en el sencillo CDC 160-A de 12 bits , que funcionaba mucho más lento que la CPU, recopilando datos y transmitiéndolos en ráfagas a la memoria principal a alta velocidad mediante hardware dedicado.
Los 10 PP se implementaron virtualmente; solo había hardware de CPU para un único PP. [ 29 ] : pp.4-3 a 4-4 Este hardware de CPU era compartido y operaba en 10 conjuntos de registros PP que representaban cada uno de los 10 estados PP (similar a los procesadores multihilo modernos ). El barril de registros PP "rotaba", presentando cada conjunto de registros PP a la "ranura" que ocupaba la CPU PP real. La CPU compartida ejecutaba la instrucción de un PP en su totalidad o en parte, tras lo cual el barril volvía a "rotar", presentando el siguiente conjunto de registros (estado) PP. Se necesitaban múltiples "rotaciones" del barril para completar una instrucción. Una "rotación" completa del barril ocurría en 1000 nanosegundos (100 nanosegundos por PP), y una instrucción podía tardar de una a cinco "rotaciones" del barril en completarse, o más si se trataba de una instrucción de transferencia de datos.
Arquitectura del conjunto de instrucciones de CP
La CPU 6600 se basa en lo que más tarde se denominaría un sistema RISC , en el que el procesador está optimizado para ejecutar instrucciones relativamente sencillas con acceso limitado y bien definido a la memoria. La filosofía de muchas otras máquinas se centraba en el uso de instrucciones complejas; por ejemplo, una sola instrucción que extrajera un operando de la memoria y lo sumara a un valor en un registro.
Las instrucciones para el CP son de 15 bits divididos en 5 campos de 3 bits designados como f, m, i, j y k, o de 30 bits divididos en campos de 3 bits (f, m, i y j) y un campo K de 18 bits. La función (f) y el modificador (m) suelen especificar el código de operación, aunque en algunos casos, el número de registro forma parte de un código de operación de 9 bits. La mayoría de las instrucciones de 15 bits realizan una operación en dos registros y almacenan el resultado en un tercer registro (i). La mayoría de las instrucciones de 30 bits realizan una operación en un registro y una constante, y almacenan el resultado en un segundo registro (i).
El CP no tiene instrucciones explícitas de carga y almacenamiento, y solo saltos y las instrucciones SAi hacen referencia a la memoria. Una instrucción SAi lee de la memoria central a un registro X asociado cuando i es 1-5 y escribe desde él cuando i es 6 o 7. Por lo tanto, en el CP, agregar desde la memoria requeriría dos instrucciones. Si bien en teoría es más lento debido a la instrucción adicional, el hecho de que en un código bien planificado se puedan procesar varias instrucciones en paralelo reduce este costo. Esta simplificación también obliga a los programadores a ser muy conscientes de sus accesos a la memoria y, por lo tanto, a programar deliberadamente para reducirlos tanto como sea posible. El CP del CDC 6600, al ser una máquina de tres direcciones, permite la especificación de los tres operandos. [ 30 ]
Modelos
La serie CDC 6000 incluía cuatro modelos básicos: el CDC 6400 , el CDC 6500 , el CDC 6600 y el CDC 6700. Los modelos de la serie 6000 se diferenciaban únicamente en sus CPU, que eran de dos tipos: la CPU 6400 y la CPU 6600. La CPU 6400 tenía una unidad aritmética unificada, en lugar de unidades funcionales discretas . Por lo tanto, no podía superponer los tiempos de ejecución de las instrucciones. Por ejemplo, en una CPU 6400, si una instrucción de suma seguía inmediatamente a una instrucción de multiplicación, la instrucción de suma no podía comenzar hasta que la instrucción de multiplicación terminara, por lo que el tiempo de ejecución neto de las dos instrucciones sería la suma de sus tiempos de ejecución individuales. La CPU 6600 tenía múltiples unidades funcionales que podían operar simultáneamente, es decir , "en paralelo ", lo que permitía que la CPU superpusiera los tiempos de ejecución de las instrucciones. Por ejemplo, una CPU 6600 podía comenzar a ejecutar una instrucción de suma en el siguiente ciclo de CPU después del inicio de una instrucción de multiplicación (suponiendo, por supuesto, que el resultado de la instrucción de multiplicación no fuera un operando de la instrucción de suma), por lo que el tiempo de ejecución neto de las dos instrucciones sería simplemente el tiempo de ejecución (más largo) de la instrucción de multiplicación. La CPU 6600 también tenía una pila de instrucciones , una especie de caché de instrucciones , que ayudaba a aumentar el rendimiento de la CPU al reducir el tiempo de inactividad de la CPU causado por la espera de que la memoria respondiera a las solicitudes de búsqueda de instrucciones. Los dos tipos de CPU eran compatibles en cuanto a instrucciones, de modo que un programa que se ejecutaba en cualquiera de los tipos de CPU se ejecutaría de la misma manera en el otro tipo, pero más rápido en la CPU 6600. De hecho, todos los modelos de la serie 6000 eran totalmente compatibles entre sí. El CDC 6400 tenía una CPU (una CPU 6400), el CDC 6500 tenía dos CPU (ambas CPU 6400), el CDC 6600 tenía una CPU (una CPU 6600) y el CDC 6700 tenía dos CPU (una CPU 6600 y una CPU 6400).
Procesador Central (PC)
El procesador central (CP) y la memoria principal de las máquinas 6400, 6500 y 6600 tenían una longitud de palabra de 60 bits. El procesador central contaba con ocho registros de propósito general de 60 bits (X0 a X7), ocho registros de direcciones de 18 bits (A0 a A7) y ocho registros de incremento de 18 bits (B0 a B7). El hardware mantenía B0 permanentemente en cero. Muchos programadores consideraban útil establecer B1 en 1 y, de forma similar, tratarlo como inviolable.
El CP no tenía instrucciones para entrada y salida, que se realizaban mediante procesadores periféricos (ver más abajo). No había códigos de operación dedicados específicamente a la carga o almacenamiento de memoria; esto ocurría como efecto secundario de la asignación a ciertos registros A. Al configurar A1 a A5, se cargaba la palabra en esa dirección en X1 a X5 respectivamente; al configurar A6 o A7, se almacenaba una palabra de X6 o X7. No había efectos secundarios asociados con A0. Una unidad de carga/almacenamiento de hardware independiente, llamada caja de control , gestionaba el movimiento real de datos independientemente del funcionamiento del flujo de instrucciones, lo que permitía que otras operaciones se completaran mientras se accedía a la memoria, lo que requería ocho ciclos, en el mejor de los casos.
El procesador 6600 CP incluía diez unidades funcionales paralelas, lo que permitía procesar varias instrucciones simultáneamente. Hoy en día, esto se conoce como diseño de procesador superescalar , pero fue único en su época. A diferencia de la mayoría de los diseños de CPU modernos, las unidades funcionales no estaban segmentadas; la unidad funcional se activaba cuando se le "emitaba" una instrucción y permanecía activa durante todo el tiempo necesario para ejecutarla. (En contraste, el CDC 7600 introdujo la segmentación en sus unidades funcionales). En el mejor de los casos, se podía emitir una instrucción a una unidad funcional cada 100 ns de ciclo de reloj. El sistema leía y decodificaba las instrucciones de la memoria lo más rápido posible, generalmente más rápido de lo que se podían completar, y las enviaba a las unidades para su procesamiento. Las unidades eran:
- Multiplicación de punto flotante (dos copias)
- división de punto flotante
- suma de punto flotante
- suma de enteros "largos"
- Incrementadores (dos copias; realizaron carga/almacenamiento en memoria)
- cambio
- lógica booleana
- rama
Las operaciones de punto flotante ocupaban un lugar privilegiado en esta arquitectura : el CDC 6600 (y sus derivados) son prácticamente los únicos capaces de ejecutar una multiplicación de punto flotante de 60 bits en un tiempo comparable al de una bifurcación de programa. Un análisis reciente de Mitch Alsup del libro de James Thornton, "Design of a Computer", reveló que la unidad de punto flotante del 6600 tiene un diseño segmentado de dos etapas.
La suma y resta de números de 60 bits en punto fijo se gestionaba en la unidad de suma larga, utilizando el complemento a uno para los números negativos. La multiplicación en punto fijo se realizaba como un caso especial en la unidad de multiplicación en punto flotante: si el exponente era cero, la unidad FP realizaba una multiplicación en punto flotante de precisión simple de 48 bits y borraba la parte del exponente alto, lo que resultaba en un entero de 48 bits. La división entera se realizaba mediante una macro, convirtiendo a y desde punto flotante. [ 31 ]
Las instrucciones ejecutadas previamente se guardaban en una caché de ocho palabras , denominada "pila". Los saltos dentro de la pila eran más rápidos que los saltos fuera de ella, ya que no requerían acceso a la memoria. La pila se vaciaba mediante una instrucción de salto incondicional, por lo que los saltos incondicionales al final de los bucles se escribían convencionalmente como saltos condicionales que siempre tenían éxito.
El sistema utilizaba un reloj de 10 MHz con una señal de cuatro fases . Una multiplicación de punto flotante tardaba diez ciclos, una división 29, y el rendimiento general, teniendo en cuenta los retrasos de memoria y otros problemas, era de aproximadamente 3 MFLOPS . Utilizando los mejores compiladores disponibles, en la última etapa de la historia de la máquina, los programas FORTRAN podían alcanzar un rendimiento de alrededor de 0,5 MFLOPS.
Organización de la memoria
Los programas de usuario están restringidos a usar solo un área contigua de la memoria principal. La porción de memoria a la que tiene acceso un programa en ejecución está controlada por los registros RA (Dirección Relativa) y FL (Longitud de Campo), que no son accesibles para el programa de usuario. Cuando un programa de usuario intenta leer o escribir una palabra en la memoria central en la dirección a , el procesador primero verifica que a esté entre 0 y FL-1. Si lo está, el procesador accede a la palabra en la memoria central en la dirección RA+a. Este proceso se conoce como reubicación de base ; cada programa de usuario ve la memoria central como un bloque contiguo de palabras con longitud FL, comenzando en la dirección 0; de hecho, el programa puede estar en cualquier lugar de la memoria física. Usando esta técnica, cada programa de usuario puede ser movido ("reubicado") en la memoria principal por el sistema operativo, siempre que el registro RA refleje su posición en la memoria. Un programa de usuario que intente acceder a memoria fuera del rango permitido (es decir, con una dirección que no sea menor que FL) activará una interrupción y será terminado por el sistema operativo. Cuando esto ocurre, el sistema operativo puede generar un volcado de memoria que registra el contenido de la memoria y los registros del programa en un archivo, lo que permite al desarrollador del programa saber qué sucedió. Cabe destacar la diferencia con los sistemas de memoria virtual ; en este caso, la totalidad del espacio direccionable de un proceso debe estar en la memoria principal, debe ser contigua y su tamaño no puede ser mayor que la capacidad de memoria real.
Todas las máquinas de la serie CDC 6000, excepto las primeras siete, podían configurarse con un sistema opcional de almacenamiento de núcleo extendido (ECS). El ECS se construía con un tipo de memoria de núcleo diferente a la utilizada en la memoria central. Esta memoria era más lenta, pero lo suficientemente económica como para permitir una capacidad mucho mayor. La razón principal era que la memoria ECS se cableaba con solo dos cables por núcleo (en contraste con los cinco de la memoria central). Debido a que realizaba transferencias muy amplias, su velocidad de transferencia secuencial era la misma que la de la memoria de núcleo pequeño. Una CPU 6000 podía realizar directamente transferencias de memoria en bloques entre el programa del usuario (o el sistema operativo) y la unidad ECS. Se utilizaban rutas de datos amplias, por lo que esta operación era muy rápida. Los límites de memoria se mantenían de forma similar a la memoria central, con un mecanismo RA/FL gestionado por el sistema operativo. El ECS podía utilizarse para diversos fines, como almacenar matrices de datos de usuario demasiado grandes para la memoria central, guardar archivos de uso frecuente, realizar intercambios e incluso como vía de comunicación en un complejo de múltiples mainframes.
Procesadores periféricos (PP)
Para gestionar las tareas de "mantenimiento", que en otros diseños se asignaban a la CPU, Cray incluyó otros diez procesadores, basados en parte en su ordenador anterior, el CDC 160-A. Estas máquinas, llamadas Procesadores Periféricos o PP, eran ordenadores completos por derecho propio, pero estaban optimizadas para realizar tareas de E/S y ejecutar el sistema operativo. (Gran parte del sistema operativo se ejecutaba en los PP; dejando así la mayor parte de la potencia del Procesador Central disponible para los programas de usuario). Solo los PP tenían acceso a los canales de E/S . Uno de los PP (PP0) tenía el control general de la máquina, incluido el control del programa que se ejecutaba en la CPU principal, mientras que los demás se dedicaban a diversas tareas de E/S; PP9 estaba dedicado a la consola del sistema. Cuando el programa CP necesitaba realizar una función del sistema operativo, colocaba una solicitud en una ubicación conocida ( Dirección de Referencia + 1) supervisada [ 32 ] por PP0. Si era necesario, PP0 asignaba otro PP para cargar el código necesario y gestionar la solicitud. El PP autorizaría entonces a RA+1 para informar al programa CP de que la tarea se había completado.
El papel único del PP0 en el control de la máquina representaba un posible punto único de fallo , ya que un mal funcionamiento en este componente podía apagar toda la máquina, incluso si los otros nueve PP y la CPU seguían funcionando correctamente. Cray solucionó este problema en el diseño del modelo sucesor, el 7600, donde cualquiera de los PP podía actuar como controlador, y la CPU podía reasignar a cualquiera de ellos a esta función.
Cada PP incluía su propia memoria de 4096 palabras de 12 bits . Esta memoria servía tanto para el almacenamiento en búfer de E/S como para el almacenamiento de programas, pero las unidades de ejecución eran compartidas por diez PP, en una configuración denominada Barrel and slot . Esto significaba que las unidades de ejecución (la "ranura") ejecutaban un ciclo de instrucción del primer PP, luego un ciclo de instrucción del segundo PP, y así sucesivamente, de forma rotativa. Esto se hacía tanto para reducir costes como porque el acceso a la memoria CP requería 10 ciclos de reloj del PP: cuando un PP accede a la memoria CP, los datos están disponibles la próxima vez que el PP recibe su tiempo de ranura.
Acceso al procesador central
Además de un conjunto de instrucciones convencional, los PP tienen varias instrucciones específicamente destinadas a comunicarse con el procesador central. [ 33 ] : pp.4-24–4-27
CRD d- transfiere una palabra de 60 bits desde la memoria central en la dirección especificada por el registro A de los PP a cinco palabras PP consecutivas que comienzan en la dirección d .CRM d,m- similar a CRD, pero transfiere un bloque de palabras cuya longitud se almacenó previamente en la ubicación d a la memoria PP a partir de la dirección PP m .CWD d- ensambla cinco palabras PP consecutivas comenzando en la ubicación d y las transfiere a la ubicación de memoria central especificada por el registro A.CWM d,m- Transfiere un bloque que comienza en la dirección de memoria PP m a la memoria central. La dirección de memoria central se almacenó en el registro A , y la longitud se almacenó en la ubicación d antes de la ejecución.RPN- Transfiere el contenido del registro de dirección de programa del procesador central al registro A del PP.EXN- El salto de intercambio transmite una dirección del registro A e indica al procesador que realice un salto de intercambio utilizando la dirección especificada. El salto de intercambio CP interrumpe al procesador, carga sus registros desde la ubicación especificada y almacena el contenido anterior en la misma ubicación. Esto realiza un cambio de tarea. [ 33 ] : pp.3-9–3-10
Longitud de las palabras, caracteres
El procesador central tiene palabras de 60 bits , mientras que los procesadores periféricos tienen palabras de 12 bits . CDC usó el término "byte" para referirse a las entidades de 12 bits utilizadas por los procesadores periféricos; los caracteres son de 6 bits, y las instrucciones del procesador central son de 15 bits, o de 30 bits con un campo de dirección con signo de 18 bits, lo que permite un espacio de memoria directamente direccionable de 128K palabras de memoria central (convertido a términos modernos, con bytes de 8 bits, esto es un poco menos de 1 MB). La naturaleza con signo de los registros de dirección limita un programa individual a 128K palabras. (Las máquinas posteriores compatibles con CDC 6000 podían tener 256K o más palabras de memoria central, si el presupuesto lo permitía, pero los programas de usuario individuales seguían limitados a 128K palabras de CM). Las instrucciones del procesador central comienzan en un límite de palabra cuando son el destino de una instrucción de salto o una instrucción de salto de retorno de subrutina, por lo que a veces se requieren instrucciones sin operación para completar los últimos 15, 30 o 45 bits de una palabra. Los programadores de lenguaje ensamblador experimentados podían perfeccionar sus programas rellenando estos espacios sin operación con instrucciones diversas que serían necesarias más adelante en el programa.
Los caracteres de 6 bits , en una codificación llamada código de visualización CDC , [ 34 ] [ 35 ] [ 36 ] podían usarse para almacenar hasta 10 caracteres en una palabra. Permitían un conjunto de caracteres de 64 caracteres, suficiente para todas las letras mayúsculas, dígitos y algunos signos de puntuación. Sin duda, era suficiente para escribir FORTRAN o imprimir informes financieros o científicos. En realidad, existían dos variantes de los conjuntos de caracteres del código de visualización CDC en uso : de 64 caracteres y de 63 caracteres. El conjunto de 64 caracteres tenía la desventaja de que el carácter ":" (dos puntos) se ignoraba (se interpretaba como relleno de ceros) si era el último carácter de una palabra. Una variante complementaria, llamada código de visualización 6/12 , también se usaba en los sistemas de tiempo compartido Kronos y NOS para permitir el uso completo del conjunto de caracteres ASCII de una manera parcialmente compatible con software más antiguo. [ 37 ]
Al no existir instrucciones de direccionamiento por bytes, era necesario escribir código para empaquetar y desplazar caracteres en palabras. El gran tamaño de las palabras y la cantidad relativamente pequeña de memoria implicaban que los programadores solían ahorrar memoria empaquetando los datos en palabras a nivel de bits.
Debido al gran tamaño de las palabras, con 10 caracteres por palabra, a menudo era más rápido procesar los caracteres de una palabra a la vez, en lugar de desempaquetarlos, procesarlos y volver a empaquetarlos. Por ejemplo, el compilador CDC COBOL era bastante eficiente procesando campos decimales con esta técnica. Este tipo de técnicas se utilizan actualmente con frecuencia en las instrucciones vectoriales de los procesadores actuales, como AVX .
Diseño físico

La máquina estaba construida en un gabinete con forma de cruz, con una bomba y un intercambiador de calor en los 46 cm (18 pulgadas) más externos de cada uno de los cuatro brazos. La refrigeración se realizaba mediante la circulación de freón dentro de la máquina, que intercambiaba calor con un suministro externo de agua fría. Cada brazo podía albergar cuatro chasis, de unos 20 cm (8 pulgadas) de grosor, articulados cerca del centro y que se abrían como un libro. La intersección de la cruz estaba llena de cables que interconectaban los chasis. Los chasis estaban numerados del 1 (que contenía las 10 PPU y sus memorias, así como los 12 canales de E/S, bastante básicos) al 16. La memoria principal de la CPU estaba distribuida en varios de los chasis. En un sistema con solo 64 KB de memoria principal, se omitía uno de los brazos de la cruz.
La lógica de la máquina estaba empaquetada en módulos de aproximadamente 64 mm (2,5 pulgadas) de lado y 2,5 cm (1 pulgada) de grosor. Cada módulo tenía un conector (30 pines, dos filas verticales de 15) en un borde y seis puntos de prueba en el borde opuesto. El módulo se colocaba entre dos placas frías de aluminio para disipar el calor. El módulo constaba de dos placas de circuito impreso paralelas, con componentes montados en una de las placas o entre ambas. Esto proporcionaba un encapsulado muy denso, generalmente imposible de reparar, pero con buenas características de transferencia de calor. Se conocía como construcción de leña .
Sistema operativo y programación
Hubo un punto débil con el soporte del sistema operativo 6600 : los retrasos en los plazos de entrega. Las máquinas originalmente ejecutaban un sistema de control de trabajos muy simple conocido como COS ( Chippewa Operating System ), que se había "ensamblado" rápidamente basándose en el sistema operativo CDC 3000 anterior para tener algo en funcionamiento que permitiera probar los sistemas antes de su entrega. Sin embargo, las máquinas debían entregarse con un sistema mucho más potente conocido como SIPROS (Simultaneous Processing Operating System), que se estaba desarrollando en la División de Ciencias de Sistemas de la compañía en Los Ángeles . Los clientes quedaron impresionados con las características de SIPROS, y muchos lo incluyeron en sus contratos de entrega.
SIPROS resultó ser un gran fiasco. Los plazos de desarrollo se retrasaron continuamente, lo que le costó a CDC importantes pérdidas de beneficios en forma de penalizaciones por demora en la entrega. Tras varios meses de espera con las máquinas listas para su envío, el proyecto finalmente se canceló. Los programadores que habían trabajado en COS tenían poca fe en SIPROS y habían seguido trabajando en la mejora de COS.
El desarrollo del sistema operativo se dividió entonces en dos bandos. La evolución de COS, autorizada por los CDC, se llevó a cabo en el laboratorio de desarrollo de software de Sunnyvale, California . Muchos clientes recibieron sus sistemas con este software, entonces conocido como SCOPE (Supervisory Control Of Program Execution). La versión 1 de SCOPE era, esencialmente, una versión desensamblada de COS; la versión 2 incluía compatibilidad con nuevos dispositivos y sistemas de archivos ; la versión 3 incluía compatibilidad con archivos permanentes, compatibilidad con procesamiento por lotes remoto EI/200 y compatibilidad con el sistema de tiempo compartido INTERCOM . SCOPE siempre presentó importantes problemas de fiabilidad y mantenimiento.
La evolución clandestina de COS tuvo lugar en la planta de ensamblaje de Arden Hills, Minnesota . MACE ([Greg] Mansfield And [Dave] Cahlander Executive) fue desarrollado principalmente por un solo programador en sus ratos libres, cuando las máquinas estaban disponibles. Su conjunto de características era esencialmente el mismo que el de COS y SCOPE 1. Conservaba el sistema de archivos COS anterior, pero introdujo avances significativos en la modularidad del código para mejorar la fiabilidad del sistema y su adaptabilidad a nuevos dispositivos de almacenamiento. MACE nunca fue un producto oficial, aunque muchos clientes lograron obtener una copia de CDC.
El software no oficial MACE fue posteriormente elegido en lugar del producto oficial SCOPE como base del siguiente sistema operativo de los CDC, Kronos , llamado así por el dios griego del tiempo . La principal razón comercial para su adopción fue el desarrollo de su función de tiempo compartido TELEX y su función de procesamiento por lotes remoto BATCHIO. Kronos continuó utilizando el sistema de archivos COS/SCOPE 1, con la adición de una función de archivo permanente.
El intento de unificar los sistemas operativos SCOPE y Kronos dio como resultado NOS (Network Operating System). NOS estaba concebido para ser el único sistema operativo para todas las máquinas de CDC, un hecho que CDC promovió intensamente. Muchos clientes de SCOPE seguían dependiendo del software de la arquitectura SCOPE, por lo que CDC simplemente lo renombró como NOS/BE (Batch Environment) y pudo afirmar que, de esta manera, todos utilizaban NOS. En la práctica, era mucho más sencillo modificar el código base de Kronos para añadir las funcionalidades de SCOPE que al revés.
El entorno de la planta de ensamblaje también produjo otros sistemas operativos que nunca fueron diseñados para el uso del cliente. Estos incluían las herramientas de ingeniería SMM para pruebas de hardware y KALEIDOSCOPE para pruebas de humo de software . Otra herramienta comúnmente utilizada por los ingenieros de campo de CDC durante las pruebas era MALET (Lenguaje de Aplicación de Mantenimiento para Pruebas de Equipos), que se utilizaba para realizar pruebas de estrés a componentes y dispositivos después de reparaciones o mantenimiento por parte de los ingenieros. Las condiciones de prueba a menudo utilizaban paquetes de discos duros y cintas magnéticas que se marcaban deliberadamente con errores para determinar si MALET y el ingeniero detectarían dichos errores.
Los nombres SCOPE y COMPASS fueron utilizados por CDC tanto para la serie CDC 6000 , incluyendo el 6600, como para la serie CDC 3000 :
CDC 7600
El CDC 7600 fue concebido originalmente para ser totalmente compatible con las máquinas de la serie 6000; inicialmente se le conocía como CDC 6800. Sin embargo, durante su diseño, los diseñadores determinaron que mantener una compatibilidad total con las máquinas de la serie 6000 limitaría la mejora del rendimiento y decidieron priorizar el rendimiento sobre la compatibilidad. Si bien la CPU del CDC 7600 era básicamente compatible a nivel de instrucciones con las CPU 6400 y 6600, lo que permitía la portabilidad del código a nivel de código fuente de alto nivel , el hardware del CDC 7600, especialmente el de sus Unidades de Procesamiento Periférico (PPU), era bastante diferente, y el CDC 7600 requería un sistema operativo distinto. Esto resultó ser algo fortuito, ya que permitió a los diseñadores mejorar algunas características del diseño de la serie 6000, como su total dependencia de los procesadores periféricos (PP), en particular del primero (denominado PP0), para controlar el funcionamiento de todo el sistema informático, incluyendo la(s) CPU. A diferencia de la CPU de la serie 6600, la CPU del CDC 7600 podía controlar su propio funcionamiento mediante una instrucción de salto de intercambio central (XJ) que intercambiaba el contenido de todos los registros con la memoria principal. De hecho, las máquinas de la serie 6000 fueron adaptadas con esta capacidad.
Véase también
Referencias
- 1 2 Encuesta de Adams 1968
- 1 2 El directorio informático y guía del comprador 1967
- 1 2 3 Serie 6000 Preparación del sitio, septiembre 65
- ↑ "Control Data 6600: Llega la supercomputadora" . Dr. Dobb's . Archivado del original el 5 de junio de 2017. Consultado el 6 de octubre de 2018 .
- ↑ Manual de capacitación del procesador central CDC 6400, febrero de 1967
- ↑ Anuncio del producto Cyber 70
- 1 2 Historial y resultados de referencia de Whetstone
- ↑ Cayton, Andrew RL; Sisson, Richard; Zacher, Chris (2006). El Medio Oeste estadounidense: una enciclopedia interpretativa . Indiana University Press. ISBN 0253003490.
- ↑ "CDC 6600 – Interludio histórico: Del ordenador central al miniordenador, parte 2, IBM y los siete enanitos : Crean mundos" . 8 de noviembre de 2014.
- ↑ «Diseñada por Seymour Cray, la CDC 6600 era casi tres veces más rápida que la siguiente máquina más rápida de su época, la IBM 7030 Stretch». Making a World of Difference: Engineering Ideas into Reality . National Academy of Engineering. 2014. ISBN 978-0309312653.
- ↑ "En 1964, la CDC 6600 de Cray reemplazó a Stretch como la computadora más rápida del mundo." Sofroniou, Andreas (2013). Expert Systems, Knowledge Engineering for Human Replication . Lulu.com. ISBN 978-1291595093.
- ↑ Anthony, Sebastian (10 de abril de 2012). "La historia de las supercomputadoras" . ExtremeTech . Consultado el 2 de febrero de 2015 .
- ↑ "CDC 6600" . Encyclopædia Britannica . Consultado el 2 de febrero de 2015 .
- ↑ "El diseño 7600 duró más que cualquier otro diseño de supercomputadora. Tuvo el mayor rendimiento de cualquier computadora desde su introducción en 1969 hasta la introducción de la Cray 1 en 1976." "CDC 7600" . Archivado del original el 15 de mayo de 2016. Recuperado el 15 de octubre de 2017 .
- ↑ N. Lewis, "Poder adquisitivo: rivalidad, disidencia y estrategia informática en la selección de supercomputadoras en Los Alamos", en IEEE Annals of the History of Computing, vol. 39 n.º 3 (2017): 25-40, 2017
- ↑ "El CDC 6600 llega al CERN" . Cronología del CERN .
- ↑ Compagnie Lyonnaise de Cinéma (14 de enero de 1965). "El ordenador Contral Data 6600 llega al CERN, la Organización Europea para la Investigación Nuclear" . Vídeos CDS .
- ↑ "Bumper Crop" . Revisión de investigación . Laboratorio Lawrence Berkeley . 1981. Archivado del original el 18 de enero de 2018. Recuperado el 4 de mayo de 2017 .
- ↑ "Control Data 6600: Llega la supercomputadora" . Archivado del original el 7 de julio de 2019.
- ↑ "Control Data Corporation, prototipo "Little Character" . Museo de Historia de la Computación . Consultado el 21 de abril de 2016 .
- ↑ Howard, Toby (febrero de 1997). "Seymour Cray: Un homenaje" . Personal Computer World .
- ↑ LJ Lander; TR Parkin (1966). "Contraejemplo a la conjetura de Euler sobre sumas de potencias semejantes" . Bull. Amer. Math. Soc . 72 (6): 1079. doi : 10.1090/S0002-9904-1966-11654-3 .
- ↑ Mark D. Hill; Norman P. Jouppi ; Gurindar S. Sohi, eds. (23 de septiembre de 1999). Lecturas en arquitectura de computadoras . Morgan Kaufmann. pág. 11. ISBN 978-1558605398.
- ↑ Una imagen exacta del memorándum aparece en: "Memorándum de Watson Jr. sobre CDC 6600" . 28 de agosto de 1963.
- ↑ Smotherman, Mark; Spicer, Dag (diciembre de 2010). "Esfuerzos de IBM en supercomputadoras de un solo procesador" . Communications of the ACM . 53 (12). Association for Computing Machinery : 28–30 . doi : 10.1145/1859204.1859216 . S2CID 23816526 .
- ↑ La serie UNIVAC 1100/2200 sigue proporcionando un entorno de complemento a uno, pero utilizando hardware de complemento a dos.
- ↑ "Figura 6-1. Panel de arranque en seco" (PDF) . Datos de control - Serie 6000 - Sistemas informáticos (PDF) . pág. 6-3 . Consultado el 6 de octubre de 2023 .
- ↑ Thornton, James (1 de diciembre de 1970). Diseño de una computadora: la Control Data 6600. pág. 20. ISBN 978-0673059536.
- ↑ Manual de referencia de hardware de la serie Control Data 6000 (PDF) . 1978.
- ↑ Hayes, John P. (1978), Arquitectura y organización de computadoras , McGraw-Hill, pág. 163, ISBN 0-07-027363-4
- ↑ "Copia archivada" . Archivado del original el 2 de enero de 2014. Recuperado el 13 de junio de 2005 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ Esta descripción abarca las primeras versiones del software CDC; las versiones posteriores utilizaron la instrucción de salto de intercambio central (XJ) para reducir la sobrecarga de las funciones que podían realizarse completamente en el CP.
- 1 2 Control Data Corporation (julio de 1965). Manual de referencia de sistemas informáticos de la serie Control Data® 6000 (PDF) . 60100000. Consultado el 28 de marzo de 2023 .
- ↑ El término "código de visualización" se asoció con CDC de forma similar a como "EBCDIC" se asoció *originalmente* con IBM. Otros términos utilizados en la industria fueron BCD y SIXBIT (este último preferido por DEC).
- ↑ "Códigos de caracteres DEC/PDP" .
- ↑ "Referencia del código de caracteres SIXBIT" . Archivado del original el 24/11/2016 . Consultado el 15/10/2017 .
- ↑ "CDC Kronos" (PDF) .
- ↑ Comprender las computadoras: velocidad y potencia 1990, pág. 17.
- ↑ "COMPASS para máquinas de 24 bits" (PDF) . Archivado del original (PDF) el 10 de septiembre de 2012. Consultado el 15 de octubre de 2017 .
- ↑ "COMPASS para máquinas de 48 bits" (PDF) .
- ↑ "CDC entregó una versión preliminar de su sistema operativo SCOPE para el 3600" Henley, Ernest J.; Lewins, Jeffery (2014). Avances en ciencia y tecnología nuclear . Elsevier. ISBN 978-1483215662.
Lecturas adicionales
- Grishman, Ralph (1974). Programación en lenguaje ensamblador para las series Control Data 6000 y Cyber 70. Nueva York, NY: Algorithmics Press.
- Manual de referencia de los sistemas informáticos Control Data 6400/6500/6600
- Thornton, J. (1963). Consideraciones en el diseño de computadoras : preparación para el Control Data 6600.
- Thornton, J. (1970). Diseño de una computadora: la Control Data 6600. Glenview, IL: Scott, Foresman and Co.
- (1990) Entendiendo las computadoras: Velocidad y potencia, una serie de Time Life ISBN 0809475863
Enlaces externos
- Neil R. Lincoln con 18 ingenieros de Control Data Corporation (CDC) sobre arquitectura y diseño de computadoras , Instituto Charles Babbage , Universidad de Minnesota. Los ingenieros son Robert Moe, Wayne Specker, Dennis Grinna, Tom Rowan, Maurice Hutson, Curt Alexander, Don Pagelkopf, Maris Bergmanis, Dolan Toth, Chuck Hawley, Larry Krueger, Mike Pavlov, Dave Resnick, Howard Krohn, Bill Bhend, Kent Steiner, Raymon Kort y Neil R. Lincoln. Los temas de discusión incluyen CDC 1604 , CDC 6600, CDC 7600 , CDC 8600 , CDC STAR-100 y Seymour Cray .
- Funcionamiento en paralelo en el Control Data 6600, James Thornton
- Presentación del CDC 6600 y otras máquinas diseñadas por Seymour Cray , a cargo de C. Gordon Bell de Microsoft Research (anteriormente de DEC).
- "El reinado de cinco años del CDC 6600" . Museo de Historia de la Computación. 2003.
El 6600 tenía 400.000 transistores y más de 160 kilómetros de cableado.
– Resumen con imágenes
- Hardware de Control Data Corporation
- Supercomputadoras
- Computadoras transistorizadas
- Introducciones relacionadas con la informática en 1964
- computadoras de 60 bits