CDC 6600
El CDC 6600 fue el buque insignia de la serie 6000 de sistemas informáticos centrales fabricados por Control Data Corporation. Generalmente considerada como la primera supercomputadora exitosa, superó al poseedor del récord anterior de la industria, el IBM 7030 Stretch, por un factor de tres. Con un rendimiento de hasta tres megaFLOPS, la CDC 6600 fue la computadora más rápida del mundo entre 1964 y 1969, cuando cedió ese estatus a su sucesora, la CDC 7600.
Los primeros CDC 6600 se entregaron en 1965 a Livermore y Los Alamos. Rápidamente se convirtieron en un sistema imprescindible en computación científica y matemática de alto nivel, con sistemas entregados al Instituto Courant de Ciencias Matemáticas, CERN, el Laboratorio de Radiación Lawrence y muchos otros. Al menos 100 fueron entregados en total.
Un CDC 6600 está en exhibición en el Museo de Historia de la Computación en Mountain View, California. La única máquina de la serie CDC 6000 en funcionamiento ha sido restaurada por Living Computers: Museum + Labs.
Historia e impacto
Los primeros productos de CDC se basaron en las máquinas diseñadas en ERA, que se le pidió a Seymour Cray que actualizara después de mudarse a CDC. Después de una máquina experimental conocida como Little Character, en 1960 entregaron la CDC 1604, una de las primeras computadoras comerciales basadas en transistores y una de las máquinas más rápidas del mercado. La gerencia estaba encantada e hizo planes para una nueva serie de máquinas que estaban más adaptadas al uso comercial; incluirían instrucciones para el manejo de caracteres y el mantenimiento de registros, por ejemplo. Cray no estaba interesado en un proyecto de este tipo y se fijó el objetivo de producir una nueva máquina que fuera 50 veces más rápida que la 1604. Cuando se le pidió que completara un informe detallado sobre los planes a uno y cinco años en el futuro, respondió que su meta de cinco años era "producir la computadora más grande del mundo", "más grande" en ese momento era sinónimo de "más rápido", y que su plan de un año era "estar a una quinta parte del camino".
Llevando a su equipo central a nuevas oficinas cerca de la sede original de los CDC, comenzaron a experimentar con versiones de mayor calidad del "barato" transistores que Cray había usado en 1604. Después de mucha experimentación, descubrieron que simplemente no había forma de que los transistores basados en germanio pudieran funcionar mucho más rápido que los usados en 1604. La 'máquina de negocios' que la gerencia había querido originalmente, ahora formándose como la serie CDC 3000, los empujó tan lejos como pudieron. Cray decidió entonces que la solución era trabajar con los nuevos transistores basados en silicio de Fairchild Semiconductor, que acababan de salir al mercado y ofrecían un rendimiento de conmutación notablemente mejorado.
Durante este período, CDC pasó de ser una empresa emergente a una gran empresa y Cray se sintió cada vez más frustrado con lo que consideraba requisitos de gestión ridículos. Las cosas se pusieron considerablemente más tensas en 1962 cuando el nuevo CDC 3600 comenzó a acercarse a la calidad de producción y parecía ser exactamente lo que la gerencia quería, cuando lo querían. Cray finalmente le dijo al CEO de CDC, William Norris, que algo tenía que cambiar o dejaría la compañía. Norris sintió que era demasiado importante como para perderlo y le dio luz verde a Cray para establecer un nuevo laboratorio donde quisiera.
Después de una breve búsqueda, Cray decidió regresar a su ciudad natal de Chippewa Falls, Wisconsin, donde compró un terreno y abrió un nuevo laboratorio.
Aunque este proceso introdujo un retraso bastante largo en el diseño de su nueva máquina, una vez en el nuevo laboratorio, sin interferencia de la gerencia, las cosas comenzaron a progresar rápidamente. En ese momento, los nuevos transistores se estaban volviendo bastante confiables y los módulos construidos con ellos tendían a funcionar correctamente en el primer intento. El 6600 comenzó a tomar forma, con Cray trabajando junto a Jim Thornton, arquitecto de sistemas y "genio oculto" del 6600.
Se vendieron más de 100 CDC 6600 durante la vida útil de la máquina. Muchos de estos fueron a varios laboratorios relacionados con armas nucleares, y bastantes llegaron a laboratorios de computación universitarios. Cray de inmediato centró su atención en su reemplazo, esta vez estableciendo una meta de diez veces el rendimiento del 6600, entregado como el CDC 7600. Las computadoras posteriores CDC Cyber 70 y 170 eran muy similares al CDC 6600 en diseño general y eran casi completamente retrocompatible.
El 6600 fue tres veces más rápido que el poseedor del récord anterior, el IBM 7030 Stretch; esto alarmó a IBM. El entonces director ejecutivo Thomas Watson Jr. escribió un memorando a sus empleados: "La semana pasada, Control Data... anunció el sistema 6600. Tengo entendido que en el laboratorio de desarrollo del sistema solo hay 34 personas incluido el conserje. De estos, 14 son ingenieros y 4 son programadores... Contrastando 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 poderosa del mundo. " La respuesta de Cray fue sardónica: "Parece que el Sr. Watson ha respondido a su propia pregunta".
Descripción
Las máquinas típicas de la época usaban una única unidad de procesamiento central (CPU) para controlar todo el sistema. Un programa típico cargaría primero los datos en la memoria (a menudo usando un código de biblioteca preenrollado), los procesaría y luego los volvería a escribir. Esto requería que las CPU fueran bastante complejas para manejar el conjunto completo de instrucciones que debían ejecutar. 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 establecieron un límite superior máximo en el 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.
Cray tomó otro enfoque. En ese momento, las CPU generalmente funcionaban más lentamente que la memoria principal a la que estaban conectadas. Por ejemplo, un procesador puede tardar 15 ciclos en multiplicar dos números, mientras que cada acceso a la memoria solo requiere uno o dos ciclos. Esto significaba que hubo un tiempo significativo en el que la memoria principal estuvo inactiva. Fue este tiempo de inactividad lo que explotó el 6600.
El CDC 6600 usaba un procesador central simplificado (CP) que fue diseñado para ejecutar operaciones matemáticas y lógicas lo más rápido posible, lo que requería que se construyera lo más pequeño posible para reducir la longitud del cableado y los retrasos de señalización asociados. Esto condujo al chasis principal (típicamente) en forma de cruz de la máquina con las placas de circuito para la CPU dispuestas cerca del centro, y dio como resultado una CPU mucho más pequeña. En combinación con las velocidades de conmutación más rápidas de los transistores de silicio, la nueva CPU funcionaba a 10 MHz (tiempo de ciclo de 100 ns), unas diez veces más rápido que otras máquinas del mercado. Además de que el reloj era más rápido, el procesador simple ejecutaba instrucciones en menos ciclos de reloj; por ejemplo, la CPU podría completar una multiplicación en diez ciclos.
Diez procesadores periféricos (PP) de 12 bits y 4 KiB respaldaban la CPU, cada uno con acceso a un conjunto común de 12 canales de entrada/salida (E/S), que manejaban la entrada y la salida, así como el control de los datos. fueron enviados a la memoria central para ser procesados por el CP. Los PP fueron diseñados para acceder a la memoria durante los momentos en que la CPU estaba ocupada realizando operaciones. Esto les permitió realizar entrada/salida esencialmente de forma gratuita en términos de tiempo de procesamiento central, manteniendo la CPU ocupada tanto como fuera posible.
El CP del 6600 usaba una palabra de 60 bits y una de unos. complementar la representación de números enteros, algo que las máquinas CDC posteriores usarían hasta fines de la década de 1980, convirtiéndolos en los últimos sistemas además de algunos procesadores de señales digitales en usar esta arquitectura.
Más tarde, CDC ofreció opciones en cuanto al número y tipo de CP, PP y canales, por ejemplo, el CDC 6700 tenía un 6400 CP y un 6600 CP.
Toda la máquina 6600 contenía aproximadamente 400 000 transistores.
Procesadores periféricos
La CPU solo podía ejecutar un número limitado de instrucciones simples. Una CPU típica de la época tenía un conjunto de instrucciones complejo, que incluía instrucciones para manejar todas las tareas normales de 'limpieza'. tareas, como el acceso a la memoria y la entrada/salida. En cambio, Cray implementó estas instrucciones en procesadores separados y más simples dedicados únicamente a estas tareas, dejando a la CPU con un conjunto de instrucciones mucho más pequeño. Este fue el primero de lo que más tarde se denominó diseño de computadora con conjunto de instrucciones reducido (RISC).
Al permitir que la CPU, los procesadores periféricos (PP) y las E/S funcionen 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 hacer que los procesadores de E/S, conocidos como procesadores periféricos (PP), fueran lo más simples posible. Los PP se basaban en el CDC 160-A simple de 12 bits, que funcionaba mucho más lento que la CPU, recopilaba datos y los transmitía en forma de ráfagas a la memoria principal a alta velocidad a través de hardware dedicado.
Los 10 PP se implementaron de manera virtual; había hardware de CPU solo para un solo PP. Este hardware de CPU se compartía y operaba en 10 conjuntos de registros PP que representaban cada uno de los 10 estados de PP (similar a los procesadores multiproceso modernos). El barril de registros de PP "rotaría", y cada conjunto de registros de PP se presentaría en la "ranura" que ocupaba la CPU PP real. La CPU compartida ejecutaría la totalidad o una parte de la instrucción de un PP, con lo cual el barril 'rotaría'. de nuevo, presentando el siguiente conjunto de registros PP (estado). Múltiples "rotaciones" del barril eran necesarios para completar una instrucción. Una "rotación" de barril completa ocurría en 1000 nanosegundos (100 nanosegundos por PP), y una instrucción podía tomar de una a cinco "rotaciones" del barril a completar, o más si se trata de una instrucción de transferencia de datos.
Arquitectura de conjunto de instrucciones
La base de la CPU 6600 es lo que luego se llamaría un sistema RISC, uno en el que el procesador está ajustado para realizar instrucciones que son comparativamente simples y tienen un acceso limitado y bien definido a la memoria. La filosofía de muchas otras máquinas era usar instrucciones que eran complicadas; por ejemplo, una sola instrucción que obtenía un operando de la memoria y lo agregaba a un valor en un registro. En el 6600, cargar el valor de la memoria requeriría una instrucción y agregarlo requeriría una segunda. Si bien en teoría es más lento debido a los accesos adicionales a la memoria, el hecho de que en un código bien programado se puedan procesar varias instrucciones en paralelo alivió este gasto. Esta simplificación también obligó a los programadores a ser muy conscientes de sus accesos a la memoria y, por lo tanto, codificar deliberadamente para reducirlos tanto como sea posible.
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 diferían solo 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. Como tal, no podía superponerse a las instrucciones' tiempos de ejecución. Por ejemplo, en una CPU 6400, si una instrucción de suma sigue inmediatamente a una instrucción de multiplicación, la instrucción de suma no se puede iniciar hasta que termine la instrucción de multiplicación, 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 instrucciones' tiempos de ejecución. Por ejemplo, una CPU 6600 podría comenzar a ejecutar una instrucción de suma en el siguiente ciclo de la CPU después del comienzo 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 la red el tiempo de ejecución 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 la cantidad de tiempo de inactividad de la CPU causado por la espera de que la memoria respondiera. Solicitudes de obtención de instrucciones. Los dos tipos de CPU eran compatibles con las instrucciones, por lo 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 se ejecutaría 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 6400 CPU), el CDC 6600 tenía una CPU (una CPU 6600) y el CDC 6700 tenía dos CPU (una 6600 CPU y una 6400 UPC).
Procesador central (CP)
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 tenía ocho registros X0 a X7 de propósito general de 60 bits, ocho registros A0 a A7 de dirección de 18 bits y ocho registros de "incremento" registros B0 a B7. B0 se mantuvo en cero permanentemente por el hardware. Muchos programadores encontraron útil establecer B1 en 1 y, de manera similar, tratarlo como inviolable.
El CP no tenía instrucciones de entrada y salida, que se realizan a través de los procesadores periféricos (abajo). Ningún código de operación se dedicó específicamente a cargar o almacenar memoria; esto ocurrió como un efecto secundario de la asignación a ciertos registros A. La configuración de A1 a A5 cargó la palabra en esa dirección en X1 a X5 respectivamente; la configuración A6 o A7 almacenó una palabra de X6 o X7. No se asociaron efectos secundarios con A0. Una unidad separada de carga/almacenamiento de hardware, llamada stunt box, manejaba el movimiento de datos real independientemente de la operación 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 CP 6600 incluía diez unidades funcionales paralelas, lo que permitía trabajar en varias instrucciones al mismo tiempo. Hoy en día, esto se conoce como un 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 se canalizaron; la unidad funcional estaría ocupada cuando se "emitiera" a él y permanecería ocupado durante todo el tiempo requerido para ejecutar esa instrucción. (Por el contrario, el CDC 7600 introdujo canalización en sus unidades funcionales). En el mejor de los casos, se podría emitir una instrucción a una unidad funcional cada ciclo de reloj de 100 ns. El sistema leía y decodificaba instrucciones de la memoria lo más rápido posible, generalmente más rápido de lo que podían completarse, y las alimentaba a las unidades para su procesamiento. Las unidades eran:
- punto flotante multiplicado (dos copias)
- división del punto flotante
- punto flotante añadir
- "long" entero añadir
- aumentos (dos copias; carga de memoria realizada / tienda)
- cambio
- lógica booleana
- rama
Las operaciones de punto flotante ocuparon un lugar privilegiado en esta arquitectura: el CDC 6600 (y sus parientes) son prácticamente los únicos capaces de ejecutar una multiplicación de punto flotante de 60 bits en un tiempo comparable al de una rama de programa. Un análisis reciente de Mitch Alsup del libro de James Thornton, "Design of a Computer", reveló que la unidad de coma flotante del 6600 es un diseño canalizado de 2 etapas.
La suma y resta de puntos fijos de números de 60 bits se manejaron en la Unidad de suma larga, usando unidades ' Complemento para números negativos. La multiplicación de punto fijo se realizó como un caso especial en la unidad de multiplicación de punto flotante: si el exponente era cero, la unidad FP haría una multiplicación de punto flotante de 48 bits de precisión simple y borraría la parte del exponente alto, lo que daría como resultado un 48 -bit resultado entero. La división de enteros se realizó mediante una macro, convirtiendo a y desde punto flotante.
Las instrucciones ejecutadas anteriormente se guardaron en un caché de ocho palabras, llamado "pila". Los saltos dentro de la pila fueron más rápidos que los saltos fuera de la pila porque no se requirió recuperación de memoria. La pila fue vaciada por una instrucción de salto incondicional, por lo que los saltos incondicionales al final de los bucles se escribieron convencionalmente como saltos condicionales que siempre tendrían éxito.
El sistema usaba un reloj de 10 MHz, con una señal de cuatro fases. Una multiplicación de coma flotante tomó diez ciclos, una división tomó 29 y el rendimiento general, teniendo en cuenta los retrasos de memoria y otros problemas, fue de aproximadamente 3 MFLOPS. Usando los mejores compiladores disponibles, al final de la historia de la máquina, los programas FORTRAN podrían esperar mantener 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 parte de la 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 del usuario. Cuando un programa de usuario intenta leer o escribir una palabra en la memoria central en la dirección a, el procesador primero verificará que a esté entre 0 y FL-1. Si es así, el procesador accede a la palabra en la memoria central en la dirección RA+a. Este proceso se conoce como reubicación ligada a la base; cada programa de usuario ve la memoria central como un bloque contiguo de palabras con longitud FL, comenzando con la dirección 0; de hecho, el programa puede estar en cualquier parte de la memoria física. Con esta técnica, el sistema operativo puede mover ("reubicar") cada programa de usuario en la memoria principal, siempre que el registro RA refleje su posición en la memoria. Un programa de usuario que intente acceder a la memoria fuera del rango permitido (es decir, con una dirección que no sea menor que FL) activará una interrupción y el sistema operativo lo cancelará. Cuando esto sucede, el sistema operativo puede crear un volcado del núcleo que registra el contenido de la memoria del programa y lo registra en un archivo, lo que le permite al desarrollador del programa saber qué sucedió. Tenga en cuenta la distinción con los sistemas de memoria virtual; en este caso, la totalidad del espacio direccionable de un proceso debe estar en la memoria central, debe ser contiguo y su tamaño no puede ser mayor que la capacidad real de la memoria.
Todas las máquinas de la serie CDC 6000, excepto las primeras siete, podrían configurarse con un sistema de almacenamiento de núcleo extendido (ECS) opcional. ECS se construyó a partir de una variedad diferente de memoria central que la que se usó en la memoria central. Esta memoria era más lenta, pero lo suficientemente barata como para que pudiera ser mucho más grande. La razón principal fue que la memoria ECS estaba conectada con solo dos cables por núcleo (en contraste con cinco para la memoria central). Debido a que realizaba transferencias muy amplias, su tasa de transferencia secuencial era la misma que la de la memoria central pequeña. Una CPU 6000 podría realizar directamente transferencias de memoria en bloque entre el programa de un usuario (o sistema operativo) y la unidad ECS. Se utilizaron rutas de datos anchas, por lo que esta fue una operación muy rápida. Los límites de la memoria se mantuvieron de manera similar a la memoria central, con un mecanismo RA/FL mantenido por el sistema operativo. ECS podría usarse para una variedad de propósitos, incluido contener conjuntos de datos de usuario que eran demasiado grandes para la memoria central, almacenar archivos de uso frecuente, intercambiar e incluso como una ruta de comunicación en un complejo de múltiples mainframe.
Procesadores periféricos (PP)
Para manejar la "limpieza" tareas, que en otros diseños se asignaban a la CPU, Cray incluyó otros diez procesadores, basados en parte en su computadora anterior, la CDC 160-A. Estas máquinas, llamadas Procesadores Periféricos, o PP, eran computadoras completas por derecho propio, pero estaban ajustadas para realizar tareas de E/S y ejecutar el sistema operativo. (Partes sustanciales del sistema operativo se ejecutaban 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 varias tareas de E/S; PP9 se dedicó 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 por PP0. Si es necesario, PP0 asignaría otro PP para cargar cualquier código necesario y manejar la solicitud. El PP luego autorizaría RA+1 para informar al programa CP que la tarea estaba completa.
La función única de PP0 en el control de la máquina era un posible punto único de falla, ya que un mal funcionamiento aquí podría apagar toda la máquina, incluso si los otros nueve PP y la CPU todavía funcionaban correctamente. Cray arregló esto en el diseño del sucesor 7600, cuando cualquiera de los PP podía ser el controlador y la CPU podía reasignar a cualquiera a este rol.
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 Barril y ranura. Esto significaba que las unidades de ejecución (la 'ranura') ejecutarían un ciclo de instrucción desde el primer PP, luego un ciclo de instrucción desde el segundo PP, etc. en forma rotativa. Esto se hizo tanto para reducir costos como porque el acceso a la memoria de CP requería 10 ciclos de reloj de PP: cuando un PP accede a la memoria de CP, los datos están disponibles la próxima vez que el PP recibe su ranura de tiempo.
Longitud de palabra, caracteres
El procesador central tenía palabras de 60 bits, mientras que los procesadores periféricos tenían palabras de 12 bits. CDC utilizó el término "byte" para referirse a entidades de 12 bits utilizadas por procesadores periféricos; los caracteres eran de 6 bits y las instrucciones del procesador central eran de 15 bits o de 30 bits con un campo de dirección firmado de 18 bits, lo que permitía un espacio de memoria directamente direccionable de 128 K palabras de memoria central (convertido a términos modernos, con 8 -bit bytes, esto es 0,94 MB). La naturaleza firmada de los registros de direcciones limitaba un programa individual a 128K palabras. (Las máquinas posteriores compatibles con CDC 6000 podían tener 256 000 palabras o más de memoria central, si el presupuesto lo permitía, pero los programas de usuario individuales todavía estaban limitados a 128 000 palabras de CM). Las instrucciones del procesador central comenzaban en un límite de palabra cuando eran el objetivo de un salto declaración o instrucción de salto de retorno de subrutina, por lo que a veces se requerían instrucciones no operativas para completar los últimos 15, 30 o 45 bits de una palabra. Los programadores ensambladores experimentados podrían afinar sus programas llenando estos espacios no-op con instrucciones misceláneas 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, podrían usarse para almacenar hasta 10 caracteres en una palabra. Permitieron un conjunto de caracteres de 64 caracteres, que es suficiente para todas las letras mayúsculas, dígitos y algunos signos de puntuación. Ciertamente era suficiente para escribir FORTRAN, o imprimir informes financieros o científicos. En realidad, había dos variaciones de los conjuntos de caracteres del código de visualización de CDC en uso: 64 caracteres y 63 caracteres. El conjunto de 64 caracteres tenía la desventaja de que el ":" (dos puntos) se ignoraría (se interpretaría como cero) si fuera el último carácter de una palabra. También se usó una variante complementaria, llamada código de visualización 6/12, en los sistemas de tiempo compartido Kronos y NOS para permitir el uso completo del conjunto de caracteres ASCII de una manera algo compatible con el software anterior.
Sin instrucciones de direccionamiento de bytes, se tuvo que escribir código para empaquetar y convertir caracteres en palabras. Las palabras muy grandes y la cantidad comparativamente pequeña de memoria significaban que los programadores frecuentemente economizarían en memoria empaquetando datos en palabras a nivel de bits.
Debido al gran tamaño de palabra, y con 10 caracteres por palabra, a menudo era más rápido procesar palabras llenas de caracteres a la vez, en lugar de desempaquetarlos, procesarlos o volver a empaquetarlos. Por ejemplo, el compilador CDC COBOL fue bastante bueno procesando campos decimales utilizando esta técnica. Este tipo de técnicas ahora se usan comúnmente en el sector "multimedia" instrucciones de los procesadores actuales.
Diseño físico
La máquina se construyó en un gabinete con forma de signo más con una bomba y un intercambiador de calor en los 46 cm (18 in) más externos de cada uno de los cuatro brazos. El enfriamiento se realizó con freón circulando dentro de la máquina e intercambiando calor con un suministro externo de agua helada. Cada brazo podía contener cuatro chasis, cada uno de unos 20 cm (8 pulgadas) de grosor, con bisagras cerca del centro y que se abrían un poco como un libro. La intersección del "más" estaba lleno de cables que interconectaban el chasis. Los chasis se numeraron del 1 (que contenía las 10 PPU y sus memorias, así como los 12 canales de E/S bastante mínimos) al 16. La memoria principal de la CPU se distribuyó en muchos de los chasis. En un sistema con solo 64K palabras de memoria principal, uno de los brazos del "plus" fue omitido.
La lógica de la máquina se empaquetó en módulos de aproximadamente 2,5 pulgadas (64 mm) cuadrados y aproximadamente 1 pulgada (2,5 cm) 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 colocó entre dos placas frías de aluminio para eliminar el calor. El módulo constaba de dos placas de circuito impreso en paralelo, con componentes montados en una de las placas o entre las dos placas. Esto proporcionó un paquete muy denso; generalmente imposible de reparar, pero con buenas características de transferencia de calor. Era conocido como construcción cordwood.
Sistema operativo y programación
Había un punto delicado con la compatibilidad con el sistema operativo 6600: el retraso en los plazos. Originalmente, las máquinas ejecutaban un sistema de control de trabajos muy simple conocido como COS (Sistema operativo Chippewa), que rápidamente se "juntó" basado en el sistema operativo CDC 3000 anterior para tener algo ejecutándose para probar los sistemas para la entrega. Sin embargo, las máquinas estaban destinadas a entregarse con un sistema mucho más potente conocido como SIPROS (Sistema Operativo de Procesamiento Simultáneo), que se estaba desarrollando en la División de Ciencias del Sistema de la compañía en Los Ángeles. Los clientes quedaron impresionados con SIPROS' lista de características, y muchos tenían SIPROS escrito en sus contratos de entrega.
SIPROS resultó ser un gran fiasco. Los plazos de desarrollo continuaron deslizándose, lo que le costó a CDC grandes cantidades de ganancias en forma de multas por retraso en la entrega. Después de varios meses de espera con las máquinas listas para ser enviadas, el proyecto finalmente se canceló. Los programadores que habían trabajado en COS tenían poca fe en SIPROS y continuaron trabajando para mejorar COS.
El desarrollo del sistema operativo luego se dividió en dos campos. La evolución de COS aprobada por los CDC se llevó a cabo en el laboratorio de desarrollo de software de Sunnyvale, California. Muchos clientes finalmente recibieron sus sistemas con este software, entonces conocido como SCOPE (Supervisory Control Of Program Execution). SCOPE versión 1 fue, esencialmente, COS desmontado; La versión 2 de SCOPE incluía compatibilidad con nuevos dispositivos y sistemas de archivos; La versión 3 de SCOPE incluía compatibilidad con archivos permanentes, compatibilidad con lotes remotos EI/200 y compatibilidad con tiempo compartido de INTERCOM. SCOPE siempre tuvo importantes problemas de confiabilidad y mantenibilidad.
La evolución subterránea de COS tuvo lugar en la planta de ensamblaje de Arden Hills, Minnesota. MACE ([Greg] Mansfield y [Dave] Cahlander Executive) fue escrito en gran parte por un solo programador en las horas libres cuando las máquinas estaban disponibles. Su conjunto de características era esencialmente el mismo que el de COS y SCOPE 1. Retuvo el sistema de archivos COS anterior, pero realizó avances significativos en la modularidad del código para mejorar la confiabilidad del sistema y la capacidad de adaptación a los nuevos dispositivos de almacenamiento. MACE nunca fue un producto oficial, aunque muchos clientes pudieron obtener una copia de los CDC.
Más tarde se eligió el software MACE no oficial sobre el producto SCOPE oficial como la base del próximo sistema operativo de CDC, Kronos, llamado así por el dios griego del tiempo. La historia cuenta que Dave Mansfield llamó a la biblioteca de la Universidad de Minnesota y pidió una palabra antigua que significa "tiempo". Escribió "Kronos" en lugar de "Chronos". El principal motivo de marketing para su adopción fue el desarrollo de su función de tiempo compartido TELEX y su función de lotes remotos BATCHIO. Kronos continuó utilizando el sistema de archivos COS/SCOPE 1 con la adición de una función de archivo permanente.
Un intento de unificar los productos del sistema operativo SCOPE y Kronos produjo NOS, (Sistema operativo de red). NOS estaba destinado a ser el único sistema operativo para todas las máquinas CDC, un hecho que CDC promovió fuertemente. Muchos clientes de SCOPE seguían dependiendo del software de la arquitectura SCOPE, por lo que CDC simplemente la rebautizó como NOS/BE (Batch Environment) y pudo afirmar que, por lo tanto, todos estaban ejecutando NOS. En la práctica, era mucho más fácil modificar la base de código de Kronos para agregar funciones de SCOPE que al revés.
El entorno de la planta de ensamblaje también produjo otros sistemas operativos que nunca fueron pensados para el uso del cliente. Estos incluyeron las herramientas de ingeniería SMM para pruebas de hardware y KALEIDOSCOPE, para pruebas de humo de software. Otra herramienta de uso común para los ingenieros de campo de CDC durante las pruebas fue MALET (Lenguaje de aplicación de mantenimiento para pruebas de equipos), que se utilizó para probar componentes y dispositivos después de las reparaciones o el servicio por parte de los ingenieros. Las condiciones de prueba a menudo usaban paquetes de discos duros y cintas magnéticas que se marcaban deliberadamente con errores para determinar si MALET y el ingeniero detectarían los errores.
Los nombres SCOPE y COMPASS fueron utilizados por CDC tanto para la serie CDC 6000, incluida la 6600, como para la serie CDC 3000:
- El CDC utilizó el nombre COMPASS para los idiomas de la Asamblea en ambas familias.
- El nombre SCOPE se utilizó para sus implementaciones en la serie 3000 y 6000.
CDC 7600
La CDC 7600 también se diseñó originalmente para ser totalmente compatible con las máquinas de la serie 6000 existentes; comenzó su vida conocida como CDC 6800. Pero durante su diseño, los diseñadores determinaron que mantener la compatibilidad total con las máquinas de la serie 6000 existentes limitaría la mejora del rendimiento que podrían lograr y decidieron sacrificar la compatibilidad por el rendimiento. Si bien la CPU de la CDC 7600 era básicamente compatible con las instrucciones de las CPU 6400 y 6600, lo que permitía la portabilidad del código en el nivel de código fuente del lenguaje de alto nivel, el hardware de la CDC 7600, especialmente el de sus unidades de procesamiento periférico (PPU), era bastante diferente y el CDC 7600 requería un sistema operativo diferente. Esto resultó ser algo fortuito porque permitió a los diseñadores mejorar algunas de las características del diseño de la serie 6000, como la dependencia total de este último de los procesadores periféricos (PP), particularmente el primero (llamado PP0), para controlar el funcionamiento de todo el sistema informático, incluidas las CPU. A diferencia de la CPU 6600, la CPU del CDC 7600 podría controlar su propia operación a través de una instrucción de salto de intercambio central (XJ) que intercambiaba todos los contenidos de registro con la memoria central. De hecho, las máquinas de la serie 6000 se actualizaron con esta capacidad.
Contenido relacionado
Intel 8008
PDP-8
Mosaico (navegador web)