Cray-1
La Cray-1 fue una supercomputadora diseñada, fabricada y comercializada por Cray Research. Anunciado en 1975, el primer sistema Cray-1 se instaló en el Laboratorio Nacional de Los Álamos en 1976. Finalmente, se vendieron 80 Cray-1, lo que la convirtió en una de las supercomputadoras más exitosas de la historia. Quizás sea mejor conocido por su forma única, un gabinete en forma de C relativamente pequeño con un anillo de bancos alrededor del exterior que cubre las fuentes de alimentación y el sistema de enfriamiento.
Cray-1 fue la primera supercomputadora en implementar con éxito el diseño del procesador vectorial. Estos sistemas mejoran el rendimiento de las operaciones matemáticas al organizar la memoria y los registros para realizar rápidamente una sola operación en un gran conjunto de datos. Los sistemas anteriores, como el CDC STAR-100 y el ASC, habían implementado estos conceptos, pero lo hicieron de una manera que limitó seriamente su rendimiento. El Cray-1 abordó estos problemas y produjo una máquina que funcionaba varias veces más rápido que cualquier diseño similar.
El arquitecto del Cray-1 fue Seymour Cray; el ingeniero jefe fue el cofundador de Cray Research, Lester Davis. Continuarían diseñando varias máquinas nuevas utilizando los mismos conceptos básicos y conservaron la corona de rendimiento hasta la década de 1990.
Historia
De 1968 a 1972, Seymour Cray de Control Data Corporation (CDC) trabajó en el CDC 8600, el sucesor de sus diseños anteriores CDC 6600 y CDC 7600. El 8600 se componía esencialmente de cuatro 7600 en una caja con un modo especial adicional que les permitía operar paso a paso en modo SIMD.
Jim Thornton, antiguo socio de ingeniería de Cray en diseños anteriores, había iniciado un proyecto más radical conocido como CDC STAR-100. A diferencia del enfoque de rendimiento de fuerza bruta del 8600, el STAR tomó una ruta completamente diferente. El procesador principal de STAR tenía un rendimiento más bajo que el 7600, pero agregó hardware e instrucciones para acelerar tareas de supercomputadora particularmente comunes.
Para 1972, el 8600 había llegado a un callejón sin salida; la máquina era tan increíblemente compleja que era imposible hacer que funcionara correctamente. Incluso un solo componente defectuoso haría que la máquina no funcionara. Cray se dirigió a William Norris, director ejecutivo de Control Data, y le dijo que se necesitaba un rediseño desde cero. En ese momento, la compañía estaba en serios problemas financieros, y con STAR también en camino, Norris no podía invertir el dinero.
Como resultado, Cray dejó los CDC y comenzó Cray Research muy cerca del laboratorio de los CDC. En el patio trasero del terreno que compró en Chippewa Falls, Cray y un grupo de ex empleados de CDC comenzaron a buscar ideas. Al principio, el concepto de construir otra supercomputadora parecía imposible, pero después de que el director de tecnología de Cray Research viajara a Wall Street y encontrara una lista de inversionistas dispuestos a respaldar a Cray, todo lo que se necesitaba era un diseño.
Durante cuatro años, Cray Research diseñó su primera computadora. En 1975 se anunció el Cray-1 de 80 MHz. El entusiasmo fue tan grande que estalló una guerra de ofertas por la primera máquina entre el Laboratorio Nacional Lawrence Livermore y el Laboratorio Nacional de Los Alamos, este último finalmente ganó y recibió el número de serie 001 en 1976 para una prueba de seis meses. El Centro Nacional de Investigaciones Atmosféricas (NCAR) fue el primer cliente oficial de Cray Research en 1977 y pagó 8,86 millones de dólares (7,9 millones de dólares más 1 millón de dólares por los discos) por el número de serie 3. La máquina NCAR se desmanteló en 1989. La empresa esperaba vender tal vez una docena de máquinas y fijar el precio de venta en consecuencia, pero finalmente se vendieron más de 80 Cray-1 de todo tipo, con un precio de $ 5 millones a $ 8 millones. La máquina convirtió a Seymour Cray en una celebridad y a su compañía en un éxito, que duró hasta la caída de la supercomputadora a principios de la década de 1990.
Según una recomendación del estudio de William Perry, la NSA compró un Cray-1 para la investigación teórica en criptoanálisis. Según Budiansky, "Aunque las historias estándar de Cray Research persistirían durante décadas al afirmar que el primer cliente de la compañía fue el Laboratorio Nacional de Los Álamos, de hecho fue la NSA..."
La Cray-1 de 160 MFLOPS fue reemplazada en 1982 por la Cray X-MP de 800 MFLOPS, la primera computadora de procesamiento múltiple Cray. En 1985, el muy avanzado Cray-2, capaz de alcanzar un rendimiento máximo de 1,9 GFLOPS, sucedió a los dos primeros modelos, pero tuvo un éxito comercial algo limitado debido a ciertos problemas para producir un rendimiento sostenido en aplicaciones del mundo real. Por lo tanto, se creó un sucesor evolutivo de diseño más conservador de los modelos Cray-1 y X-MP con el nombre de Cray Y-MP y se lanzó en 1988.
En comparación, el procesador en un dispositivo inteligente típico de 2013, como Google Nexus 10 o HTC One, funciona a aproximadamente 1 GFLOPS, mientras que el procesador A13 en un iPhone 11 de 2020 funciona a 154,9 GFLOPS, una marca que superan a las supercomputadoras. Cray-1 no llegaría hasta 1994.
Antecedentes
Las cargas de trabajo científicas típicas consisten en leer grandes conjuntos de datos, transformarlos de alguna manera y luego volver a escribirlos. Normalmente, las transformaciones que se aplican son idénticas en todos los puntos de datos del conjunto. Por ejemplo, el programa podría sumar 5 a cada número en un conjunto de un millón de números.
En las computadoras tradicionales, el programa recorrería todos los millones de números, sumando cinco, ejecutando así un millón de instrucciones que dicen a = sumar b, c
. Internamente la computadora resuelve esta instrucción en varios pasos. Primero lee la instrucción de la memoria y la decodifica, luego recopila cualquier información adicional que necesite, en este caso los números b y c, y finalmente ejecuta la operación y almacena los resultados. El resultado final es que la computadora requiere decenas o cientos de millones de ciclos para realizar estas operaciones.
Máquinas vectoriales
En STAR, las nuevas instrucciones esencialmente escribieron los bucles para el usuario. El usuario le dijo a la máquina en qué lugar de la memoria se almacenaba la lista de números, luego introdujo una sola instrucción a(1..1000000) = addv b(1..1000000), c(1..1000000). A primera vista, parece que los ahorros son limitados; en este caso, la máquina obtiene y decodifica solo una instrucción en lugar de 1 000 000, lo que ahorra 1 000 000 de búsquedas y decodificaciones, quizás una cuarta parte del tiempo total.
Los ahorros reales no son tan obvios. Internamente, la CPU de la computadora se construye a partir de una serie de partes separadas dedicadas a una sola tarea, por ejemplo, agregar un número o recuperar de la memoria. Normalmente, a medida que la instrucción fluye a través de la máquina, solo una parte está activa en un momento dado. Esto significa que cada paso secuencial del proceso completo debe completarse antes de que se pueda guardar un resultado. La adición de una canalización de instrucciones cambia esto. En tales máquinas, la CPU "mirará hacia adelante" y comience a obtener instrucciones posteriores mientras la instrucción actual aún se está procesando. En este estilo de línea de ensamblaje, cualquier instrucción aún requiere el mismo tiempo para completarse, pero tan pronto como termina de ejecutarse, la siguiente instrucción está justo detrás de ella, con la mayoría de los pasos necesarios para su ejecución ya completados.
Los procesadores vectoriales usan esta técnica con un truco adicional. Debido a que el diseño de los datos tiene un formato conocido, un conjunto de números ordenados secuencialmente en la memoria, las canalizaciones se pueden ajustar para mejorar el rendimiento de las búsquedas. Al recibir una instrucción de vector, un hardware especial configura el acceso a la memoria para las matrices y mete los datos en el procesador lo más rápido posible.
El enfoque de los CDC en STAR usó lo que hoy se conoce como arquitectura memoria-memoria. Esto se refería a la forma en que la máquina recopilaba datos. Configuró su tubería para leer y escribir en la memoria directamente. Esto permitió que STAR usara vectores de longitud no limitada por la longitud de los registros, haciéndolo altamente flexible. Desafortunadamente, la tubería tenía que ser muy larga para permitirle tener suficientes instrucciones en vuelo para compensar la memoria lenta. Eso significó que la máquina incurrió en un alto costo al cambiar de procesar vectores a realizar operaciones en operandos no vectoriales. Además, el bajo rendimiento escalar de la máquina significaba que después de que se había producido el cambio y la máquina estaba ejecutando instrucciones escalares, el rendimiento era bastante pobre. El resultado fue un rendimiento bastante decepcionante en el mundo real, algo que quizás podría haber sido pronosticado por la ley de Amdahl.
El enfoque de Cray
Cray estudió el fallo del STAR y aprendió de él. Decidió que, además del procesamiento vectorial rápido, su diseño también requeriría un excelente rendimiento escalar general. De esa manera, cuando la máquina cambiara de modo, seguiría brindando un rendimiento superior. Además, notó que las cargas de trabajo podrían mejorarse drásticamente en la mayoría de los casos mediante el uso de registros.
Así como las máquinas anteriores habían ignorado el hecho de que la mayoría de las operaciones se aplicaban a muchos puntos de datos, STAR ignoró el hecho de que esos mismos puntos de datos se operarían repetidamente. Mientras que STAR leería y procesaría la misma memoria cinco veces para aplicar cinco operaciones vectoriales en un conjunto de datos, sería mucho más rápido leer los datos en los registros de la CPU una vez y luego aplicar las cinco operaciones. Sin embargo, hubo limitaciones con este enfoque. Los registros eran significativamente más caros en términos de circuitos, por lo que solo se podía proporcionar un número limitado. Esto implicaba que el diseño de Cray tendría menos flexibilidad en términos de tamaños de vectores. En lugar de leer un vector de cualquier tamaño varias veces como en el STAR, el Cray-1 tendría que leer solo una parte del vector a la vez, pero luego podría ejecutar varias operaciones en esos datos antes de volver a escribir los resultados en la memoria. Dadas las cargas de trabajo típicas, Cray sintió que el pequeño costo incurrido al tener que dividir grandes accesos de memoria secuencial en segmentos era un costo que valía la pena pagar.
Dado que la operación de vector típica implicaría cargar un pequeño conjunto de datos en los registros de vector y luego ejecutar varias operaciones en él, el sistema de vector del nuevo diseño tenía su propia canalización separada. Por ejemplo, las unidades de multiplicación y suma se implementaron como hardware separado, por lo que los resultados de uno podrían canalizarse internamente al siguiente, la decodificación de instrucciones ya se había manejado en el canal principal de la máquina. Cray se refirió a este concepto como encadenamiento, ya que permitía a los programadores "encadenarse" varias instrucciones y extraer un mayor rendimiento.
Descripción
La nueva máquina fue el primer diseño de Cray en utilizar circuitos integrados (CI). Aunque los circuitos integrados habían estado disponibles desde la década de 1960, solo a principios de la década de 1970 alcanzaron el rendimiento necesario para aplicaciones de alta velocidad. El Cray-1 usó solo cuatro tipos de IC diferentes, una puerta ECL dual 5-4 NOR (una de 5 entradas y una de 4 entradas, cada una con salida diferencial), otra puerta MECL 10K 5-4 NOR más lenta utilizada para fanout de dirección, una RAM estática (SRAM) de alta velocidad (6 ns) de 16 × 4 bits utilizada para registros y una SRAM de 48 ns de 1024 × 1 bit utilizada para la memoria principal. Estos circuitos integrados fueron suministrados por Fairchild Semiconductor y Motorola. En total, el Cray-1 contenía unas 200.000 puertas.
Los circuitos integrados se montaron en grandes placas de circuito impreso de cinco capas, con hasta 144 circuitos integrados por placa. Luego, las placas se montaron espalda con espalda para enfriar (ver más abajo) y se colocaron en veinticuatro bastidores de 28 pulgadas de alto (710 mm) que contenían 72 placas dobles. El módulo típico (unidad de procesamiento distinta) requería una o dos placas. En total, la máquina contenía 1.662 módulos en 113 variedades.
Cada cable entre los módulos era un par trenzado, cortado a una longitud específica para garantizar que las señales llegaran en el momento preciso y minimizar la reflexión eléctrica. Cada señal producida por el circuito ECL era un par diferencial, por lo que las señales estaban balanceadas. Esto tendía a hacer más constante la demanda de la fuente de alimentación y reducir el ruido de conmutación. La carga de la fuente de alimentación estaba tan uniformemente equilibrada que Cray se jactó de que la fuente de alimentación no estaba regulada. Para la fuente de alimentación, todo el sistema informático parecía una simple resistencia.
El circuito ECL de alto rendimiento generó un calor considerable, y los diseñadores de Cray se esforzaron tanto en el diseño del sistema de refrigeración como en el resto del diseño mecánico. En este caso, cada placa de circuito se emparejó con una segunda, colocada espalda con espalda con una lámina de cobre entre ellas. La lámina de cobre conducía el calor a los bordes de la jaula, donde el freón líquido que circulaba por tuberías de acero inoxidable lo llevaba a la unidad de refrigeración situada debajo de la máquina. El primer Cray-1 se retrasó seis meses debido a problemas en el sistema de refrigeración; El lubricante que normalmente se mezcla con el freón para mantener el compresor en funcionamiento se filtraría a través de los sellos y, finalmente, cubriría las placas con aceite hasta que se produjera un cortocircuito. Se tuvieron que utilizar nuevas técnicas de soldadura para sellar adecuadamente la tubería.
Para obtener la máxima velocidad de la máquina, todo el chasis se dobló en forma de C grande. Las partes del sistema que dependen de la velocidad se colocaron en el "borde interior" del chasis, donde las longitudes de los cables eran más cortas. Esto permitió que el tiempo de ciclo se redujera a 12,5 ns (80 MHz), no tan rápido como el 8 ns 8600 al que había renunciado, pero lo suficientemente rápido como para vencer a CDC 7600 y STAR. NCAR estimó que el rendimiento general del sistema era 4,5 veces mayor que el del CDC 7600.
El Cray-1 se construyó como un sistema de 64 bits, a diferencia del 7600/6600, que eran máquinas de 60 bits (también se planificó un cambio para el 8600). El direccionamiento era de 24 bits, con un máximo de 1.048.576 palabras de 64 bits (1 megapalabra) de memoria principal, donde cada palabra también tenía ocho bits de paridad para un total de 72 bits por palabra. Había 64 bits de datos y ocho bits de control. La memoria se distribuyó en 16 bancos de memoria intercalados, cada uno con un tiempo de ciclo de 50 ns, lo que permitió leer hasta cuatro palabras por ciclo. Las configuraciones más pequeñas podrían tener 0,25 o 0,5 megapalabras de memoria principal. El ancho de banda de memoria agregado máximo fue de 638 Mbit/s.
El conjunto de registros principal constaba de ocho registros escalares (S) de 64 bits y ocho registros de direcciones (A) de 24 bits. Estos estaban respaldados por un conjunto de sesenta y cuatro registros cada uno para almacenamiento temporal S y A conocidos como T y B respectivamente, que no podían ser vistos por las unidades funcionales. El sistema vectorial agregó otros ocho registros vectoriales (V) de 64 elementos por 64 bits, así como una longitud vectorial (VL) y una máscara vectorial (VM). Finalmente, el sistema también incluía un registro de reloj en tiempo real de 64 bits y cuatro búferes de instrucciones de 64 bits que contenían sesenta y cuatro instrucciones de 16 bits cada uno. El hardware se configuró para permitir que los registros vectoriales se alimentaran con una palabra por ciclo, mientras que los registros de direcciones y escalares requerían dos ciclos. Por el contrario, todo el búfer de instrucciones de 16 palabras podría llenarse en cuatro ciclos.
El Cray-1 tenía doce unidades funcionales canalizadas. La aritmética de direcciones de 24 bits se realizó en una unidad de suma y una unidad de multiplicación. La parte escalar del sistema constaba de una unidad de adición, una unidad lógica, un conteo de población, una unidad de conteo de cero inicial y una unidad de desplazamiento. La parte del vector constaba de unidades de adición, lógica y desplazamiento. Las unidades funcionales de coma flotante se compartían entre las porciones escalar y vectorial, y estas consistían en unidades de aproximación de suma, multiplicación y recíproca.
El sistema tenía un paralelismo limitado. Podía emitir una instrucción por ciclo de reloj, para un rendimiento teórico de 80 MIPS, pero con la multiplicación y suma de vectores de coma flotante en paralelo, el rendimiento teórico era de 160 MFLOPS. (La unidad de aproximación recíproca también podría operar en paralelo, pero no entregó un verdadero resultado de coma flotante: se necesitaron dos multiplicaciones adicionales para lograr una división completa).
Dado que la máquina fue diseñada para operar con grandes conjuntos de datos, el diseño también dedicó una cantidad considerable de circuitos a la E/S. Los diseños anteriores de Cray en CDC habían incluido computadoras separadas dedicadas a esta tarea, pero ya no eran necesarias. En cambio, el Cray-1 incluía cuatro controladores de seis canales, cada uno de los cuales tenía acceso a la memoria principal una vez cada cuatro ciclos. Los canales tenían 16 bits de ancho e incluían tres bits de control y cuatro bits para la corrección de errores, por lo que la velocidad máxima de transferencia era de una palabra por 100 ns, o 500 000 palabras por segundo para toda la máquina.
El modelo inicial, el Cray-1A, pesaba 5,5 toneladas incluyendo el sistema de refrigeración Freon. Configurada con 1 millón de palabras de memoria principal, la máquina y sus fuentes de alimentación consumían alrededor de 115 kW de potencia; la refrigeración y el almacenamiento probablemente más que duplicaron esta cifra. Una minicomputadora Data General SuperNova S/200 sirvió como unidad de control de mantenimiento (MCU), que se usó para alimentar el sistema operativo Cray en el sistema en el momento del arranque, para monitorear la CPU durante el uso y, opcionalmente, como una computadora frontal. La mayoría, si no todos, los Cray-1A se entregaron utilizando el Data General Eclipse de seguimiento como MCU.
Cray-1S
El Cray-1S, anunciado en 1979, era un Cray-1 mejorado que admitía una memoria principal más grande de 1, 2 o 4 millones de palabras. La memoria principal más grande fue posible gracias al uso de circuitos integrados de RAM bipolares de 4096 x 1 bit con un tiempo de acceso de 25 ns. Las minicomputadoras de Data General se reemplazaron opcionalmente con un diseño interno de 16 bits que funcionaba a 80 MIPS. El subsistema de E/S se separó de la máquina principal y se conectó al sistema principal a través de un canal de control de 6 Mbit/s y un canal de datos de alta velocidad de 100 Mbit/s. Esta separación hizo que el 1S pareciera dos "medios Crays" separados por unos pocos pies, lo que permitió expandir el sistema de E/S según fuera necesario. Los sistemas se podían comprar en una variedad de configuraciones desde el S/500 sin E/S y 0,5 millones de palabras de memoria hasta el S/4400 con cuatro procesadores de E/S y 4 millones de palabras de memoria.
Cray-1M
El Cray-1M, anunciado en 1982, reemplazó al Cray-1S. Tenía un tiempo de ciclo más rápido de 12 ns y usaba RAM MOS menos costosa en la memoria principal. El 1M se suministró en solo tres versiones, el M/1200 con 1 millón de palabras en 8 bancos, o el M/2200 y M/4200 con 2 o 4 millones de palabras en 16 bancos. Todas estas máquinas incluían dos, tres o cuatro procesadores de E/S, y el sistema agregó un segundo canal de datos de alta velocidad opcional. Los usuarios pueden agregar un dispositivo de almacenamiento de estado sólido con 8 a 32 millones de palabras de MOS RAM.
Software
En 1978 se lanzó el primer paquete de software estándar para el Cray-1, que constaba de tres productos principales:
- Cray Operating System (COS) (más máquinas ejecutarían UNICOS, el sabor UNIX de Cray)
- Cray Assembly Language (CAL)
- Cray FORTRAN (CFT), el primer compilador vectorizador automático de Fortran
Los sitios financiados por el Departamento de Energía de los Estados Unidos del Laboratorio Nacional Lawrence Livermore, el Laboratorio Científico de Los Álamos, los Laboratorios Nacionales Sandia y los centros de supercomputación de la Fundación Nacional de Ciencias (para física de alta energía) representaron el segundo bloque más grande con LLL's Sistema de tiempo compartido de Cray (CTSS). CTSS se escribió en una memoria dinámica Fortran, primero llamada LRLTRAN, que se ejecutaba en CDC 7600s, rebautizada como CVC (pronunciado "Civic") cuando se agregó la vectorización para el Cray-1. Cray Research intentó respaldar estos sitios en consecuencia. Estas opciones de software influyeron en las minisupercomputadoras posteriores, también conocidas como "crayettes".
NCAR tiene su propio sistema operativo (NCAROS).
La Agencia de Seguridad Nacional desarrolló su propio sistema operativo (Folklore) y lenguaje (IMP con puertos de Cray Pascal y C y Fortran 90 posteriores)
Las bibliotecas comenzaron con las propias ofertas de Cray Research y Netlib.
Existían otros sistemas operativos, pero la mayoría de los lenguajes tendían a ser Fortran o basados en Fortran. Bell Laboratories, como prueba tanto del concepto de portabilidad como del diseño de circuitos, trasladó el primer compilador de C a su Cray-1 (sin vectorización). Este acto le daría más tarde a CRI una ventaja de seis meses en el puerto Cray-2 Unix a ETA Systems' detrimento, y la primera película de prueba generada por computadora de Lucasfilm, Las aventuras de André & Wally B..
El software de aplicación generalmente tiende a ser clasificado (por ejemplo, código nuclear, código criptoanalítico) o propietario (por ejemplo, modelado de yacimientos de petróleo). Esto se debió a que se compartió poco software entre los clientes y los clientes universitarios. Las pocas excepciones fueron los programas climatológicos y meteorológicos hasta que la NSF respondió al proyecto japonés de sistemas informáticos de quinta generación y creó sus centros de supercomputación. Incluso entonces, se compartió poco código.
En parte porque Cray estaba interesado en la publicidad, apoyaron el desarrollo de Cray Blitz, que ganó el cuarto (1983) y el quinto (1986) campeonato mundial de ajedrez informático, así como el campeonato norteamericano de ajedrez informático de 1983 y 1984. El programa Chess, que dominó en la década de 1970, se ejecutó en las supercomputadoras de Control Data Corporation.
Museos
Los Cray-1 se exhiben en los siguientes lugares:
- Bradbury Science Museum en Los Álamos, Nuevo México
- Chippewa Falls Museum of Industry and Technology in Chippewa Falls, Wisconsin
- Las oficinas de Cray Inc. en Cray Plaza en St. Paul, Minnesota
- Museo de Historia Informática en Montaña View, California
- Computer Museum of America, Roswell, Georgia, US
- DigiBarn Computer Museum
- Deutsches Museum in Munich
- ETH Zurich - Eidgenössische Technische Hochschule Zürich, Suiza
- Computadoras: Museo + Laboratorios en Seattle, Washington
- National Center for Atmospheric Research in Boulder, Colorado
- National Air and Space Museum in Washington, D.C.
- Musée Bolo in Lausanne, Switzerland
- The National Museum of Computing at Bletchley Park
- Museo de Ciencias en Londres
- Swedish National Museum of Science and Technology in Stockholm, Sweden
- Computer Museum of America in Roswell, Georgia tiene cuatro Cray-1s, además de otros ordenadores Cray