El Cray-1 fue un superordenador diseñado, fabricado y comercializado 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 ochenta Cray-1, lo que lo convirtió en uno de los superordenadores más exitosos de la historia. Quizás sea más conocido por su forma única, un gabinete relativamente pequeño en forma de C con un anillo de bancos alrededor del exterior que cubre las fuentes de alimentación y el sistema de refrigeración.
El Cray-1 fue el primer superordenador que implementó con éxito el diseño de 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. Sistemas anteriores como el CDC STAR-100 y el ASC habían implementado estos conceptos, pero lo hicieron de una manera que limitaba 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. [2] Continuarían diseñando varias máquinas nuevas utilizando los mismos conceptos básicos y conservaron la corona del rendimiento hasta la década de 1990.
Entre 1968 y 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 estaba compuesto básicamente por cuatro 7600 en una caja con un modo especial adicional que les permitía funcionar en sincronía de forma SIMD .
Jim Thornton, ex 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 fuerza bruta del 8600 para el rendimiento, el STAR tomó un camino completamente diferente. El procesador principal del STAR tenía un rendimiento menor que el del 7600, pero añadía hardware e instrucciones para acelerar tareas de supercomputadoras particularmente comunes.
En 1972, la 8600 había llegado a un punto muerto; la máquina era tan increíblemente compleja que era imposible conseguir que funcionara correctamente. Incluso un solo componente defectuoso haría que la máquina dejara de funcionar. Cray acudió a William Norris , director ejecutivo de Control Data, y le dijo que era necesario un rediseño desde cero. En ese momento, la empresa atravesaba graves problemas financieros y, con la STAR también en proceso, Norris no podía invertir el dinero.
Como resultado, Cray dejó el CDC y comenzó Cray Research muy cerca del laboratorio del CDC. En el patio trasero del terreno que compró en Chippewa Falls , Cray y un grupo de ex empleados del 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 inversores dispuestos a respaldar a Cray, todo lo que se necesitaba era un diseño.
Durante cuatro años, Cray Research diseñó su primer ordenador. [3] En 1975 se anunció el Cray-1 de 80 MHz. El entusiasmo fue tan alto que estalló una guerra de ofertas por la primera máquina entre el Laboratorio Nacional Lawrence Livermore y el Laboratorio Nacional de Los Álamos , este último finalmente ganó y recibió el número de serie 001 en 1976 para una prueba de seis meses. El Centro Nacional de Investigación Atmosférica (NCAR) fue el primer cliente oficial de Cray Research en 1977, pagando 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 del NCAR fue desmantelada en 1989. [4] La empresa esperaba vender quizás una docena de las máquinas y fijó el precio de venta en consecuencia, pero finalmente se vendieron más de 80 Cray-1 de todos los tipos, con precios que iban desde los 5 millones de dólares hasta los 8 millones de dólares. La máquina convirtió a Seymour Cray en una celebridad y a su empresa en un éxito, que duró hasta el colapso de la supercomputadora a principios de los años 1990.
Basándose en una recomendación del estudio de William Perry , la NSA compró un Cray-1 para realizar investigaciones teóricas en criptoanálisis . Según Budiansky, "aunque las historias estándar de Cray Research persistirían durante décadas en afirmar que el primer cliente de la empresa fue el Laboratorio Nacional de Los Álamos, en realidad fue la NSA..." [5]
El Cray-1 de 160 MFLOPS fue reemplazado en 1982 por el Cray X-MP de 800 MFLOPS , el primer ordenador multiprocesador 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 fabricó un sucesor evolutivo de los modelos Cray-1 y X-MP de diseño más conservador con el nombre de Cray Y-MP y se lanzó en 1988.
En comparación, el procesador de un dispositivo inteligente típico de 2013, como un Google Nexus 10 o un HTC One , funciona a aproximadamente 1 GFLOPS, [6] mientras que el procesador A13 de un iPhone 11 de 2019 funciona a 154,9 GFLOPS, [7] una marca que las supercomputadoras que sucedieron al Cray-1 no alcanzarían hasta 1994 .
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 de un conjunto de un millón de números.
En computadoras simples, el programa recorrería en bucle todos los millones de números, sumando cinco, con lo que se ejecutarían un millón de instrucciones que dicen a = add 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 llevar a cabo estas operaciones.
En el STAR, las nuevas instrucciones básicamente escribían los bucles para el usuario. El usuario le decía a la máquina dónde se almacenaba la lista de números en la memoria y luego introducía una única instrucción a(1..1000000) = addv b(1..1000000), c(1..1000000)
. A primera vista, parece que el ahorro es limitado; en este caso, la máquina obtiene y decodifica solo una única instrucción en lugar de 1.000.000, lo que ahorra 1.000.000 de recuperaciones y decodificaciones, tal vez una cuarta parte del tiempo total.
Los ahorros reales no son tan obvios. Internamente, la CPU del ordenador está formada por una serie de partes independientes dedicadas a una única tarea, por ejemplo, sumar un número o buscar algo en la memoria. Normalmente, a medida que la instrucción fluye a través de la máquina, sólo una parte está activa en un momento dado. Esto significa que cada paso secuencial de todo el proceso debe completarse antes de que se pueda guardar un resultado. La adición de una secuencia de instrucciones cambia esto. En tales máquinas, la CPU "mirará hacia delante" y comenzará a buscar las instrucciones siguientes mientras la instrucción actual todavía se está procesando. En este estilo de cadena de montaje, cualquier instrucció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 utilizan esta técnica con un truco adicional. Como la disposición de los datos está en un formato conocido (un conjunto de números ordenados secuencialmente en la memoria), las secuencias de comandos se pueden ajustar para mejorar el rendimiento de las búsquedas. Al recibir una instrucción vectorial, un hardware especial configura el acceso a la memoria para las matrices y carga los datos en el procesador lo más rápido posible.
El enfoque de CDC en el STAR utilizó lo que hoy se conoce como una arquitectura de memoria-memoria . Esto se refería a la forma en que la máquina recopilaba datos. Configuró su canalización para leer y escribir en la memoria directamente. Esto permitió que el STAR usara vectores de longitud no limitada por la longitud de los registros, lo que lo hacía muy flexible. Desafortunadamente, la canalización tenía que ser muy larga para permitirle tener suficientes instrucciones en vuelo para compensar la memoria lenta. Eso significaba que la máquina incurría 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 [ cita requerida ] . El resultado fue un rendimiento en el mundo real bastante decepcionante, algo que, tal vez, podría haber sido previsto por la ley de Amdahl .
Cray estudió el fallo del STAR y aprendió de él [ cita requerida ] . Decidió que, además de un 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 ofreciendo un rendimiento superior. Además, se dio cuenta de que las cargas de trabajo se podían mejorar drásticamente en la mayoría de los casos mediante el uso de registros .
De la misma forma que las máquinas anteriores ignoraban el hecho de que la mayoría de las operaciones se aplicaban a muchos puntos de datos, el STAR ignoraba el hecho de que esos mismos puntos de datos serían operados repetidamente. Mientras que el STAR leía y procesaba la misma memoria cinco veces para aplicar cinco operaciones vectoriales a 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, este enfoque tenía limitaciones. 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 vectores 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 escribir los resultados nuevamente en la memoria. Dadas las cargas de trabajo típicas, Cray consideró que el pequeño costo en el que se incurría al tener que dividir grandes accesos secuenciales a la memoria en segmentos era un costo que bien valía la pena pagar.
Dado que la operación vectorial típica implicaría cargar un pequeño conjunto de datos en los registros vectoriales y luego ejecutar varias operaciones en él, el sistema vectorial del nuevo diseño tenía su propio pipeline independiente. Por ejemplo, las unidades de multiplicación y suma se implementaron como hardware separado, de modo que los resultados de una podían ser canalizados internamente a la siguiente, ya que la decodificación de la instrucción ya había sido procesada en el pipeline principal de la máquina. Cray se refirió a este concepto como encadenamiento , ya que permitía a los programadores "encadenar" varias instrucciones y extraer un mayor rendimiento.
En 1978, un equipo del Laboratorio Nacional de Argonne probó una variedad de cargas de trabajo típicas en un Cray-1 como parte de una propuesta para comprar uno para su uso, reemplazando su IBM 370/195 . También planearon realizar pruebas en el CDC STAR-100 y Burroughs Scientific Computer, pero dichas pruebas, si se realizaron, no se publicaron. Las pruebas se realizaron en el Cray-1 en el Centro Nacional de Investigación Atmosférica (NCAR) en Boulder, Colorado . El único otro Cray disponible en ese momento era el de Los Álamos, pero acceder a esta máquina requería autorización Q. [8]
Las pruebas se informaron de dos maneras. La primera fue una conversión mínima necesaria para que el programa se ejecutara sin errores, pero sin intentar aprovechar la vectorización de Cray. La segunda incluyó un conjunto moderado de actualizaciones del código, a menudo desenrollando bucles para que pudieran ser vectorizados. En general, las conversiones mínimas se ejecutaron aproximadamente a la misma velocidad que el 370 a aproximadamente el doble de su rendimiento (principalmente debido a un rango de exponentes más grande en Cray), pero la vectorización llevó a aumentos adicionales entre 2,5 y 10 veces. En un programa de ejemplo, que realizó una transformada rápida de Fourier interna , el rendimiento mejoró de los 47 milisegundos de IBM a 3. [8]
La nueva máquina fue el primer diseño de Cray en utilizar circuitos integrados (CI). Aunque los CI habían estado disponibles desde la década de 1960, fue solo a principios de la década de 1970 que alcanzaron el rendimiento necesario para aplicaciones de alta velocidad. El Cray-1 usó solo cuatro tipos diferentes de CI, una puerta NOR dual ECL 5-4 (una de 5 entradas y una de 4 entradas, cada una con salida diferencial), [9] otra puerta NOR MECL 10K 5-4 más lenta utilizada para la distribución de direcciones, una RAM estática (SRAM) de alta velocidad (6 ns) de 16 × 4 bits utilizada para registros y una SRAM de 1024 × 1 bit de 48 ns utilizada para la memoria principal. Estos circuitos integrados fueron suministrados por Fairchild Semiconductor y Motorola . [10] En total, el Cray-1 contenía alrededor de 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 una tras otra para enfriarlas (ver a continuación) 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 1662 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 exactamente en el momento adecuado 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 equilibradas. Esto tendía a hacer que la demanda en la fuente de alimentación fuera más constante y reducía el ruido de conmutación. La carga en la fuente de alimentación estaba tan equilibrada que Cray se jactaba 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 generaba un calor considerable, y los diseñadores de Cray dedicaron tanto esfuerzo al diseño del sistema de refrigeración como al resto del diseño mecánico. En este caso, cada placa de circuito se emparejó con una segunda, colocadas 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 alejaba hacia 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 filtraba a través de los sellos y, con el tiempo, cubría las placas con aceite hasta que se producía un cortocircuito. Se tuvieron que utilizar nuevas técnicas de soldadura para sellar correctamente los tubos.
Para obtener la máxima velocidad de la máquina, se dobló todo el chasis en forma de C. Las partes del sistema que dependían de la velocidad se colocaron en el "borde interior" del chasis, donde las longitudes de los cables eran más cortas. Esto permitió reducir el tiempo de ciclo a 12,5 ns (80 MHz), no tan rápido como los 8 ns del 8600 que había descartado, pero lo suficientemente rápido como para superar al CDC 7600 y al STAR. NCAR estimó que el rendimiento general del sistema era 4,5 veces mayor que el del CDC 7600. [11]
El Cray-1 fue construido como un sistema de 64 bits , un cambio con respecto al 7600/6600, que eran máquinas de 60 bits (también se planeó 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. [12] La memoria se distribuía en 16 bancos de memoria intercalados , cada uno con un tiempo de ciclo de 50 ns, lo que permitía leer hasta cuatro palabras por ciclo. Las configuraciones más pequeñas podían tener 0,25 o 0,5 megapalabras de memoria principal. El ancho de banda máximo de memoria agregada era de 638 Mbit/s. [12]
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 para cada uno de los almacenamientos temporales S y A, conocidos como T y B respectivamente, que no podían ser vistos por las unidades funcionales. El sistema vectorial añadía otros ocho registros vectoriales (V) de 64 elementos por 64 bits, así como una longitud vectorial (VL) y una máscara vectorial (VM). Por último, 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 estaba configurado para permitir que los registros vectoriales se alimentaran a razón de una palabra por ciclo, mientras que los registros de direcciones y escalares requerían dos ciclos. Por el contrario, el búfer de instrucciones completo de 16 palabras podía llenarse en cuatro ciclos.
El Cray-1 tenía doce unidades funcionales segmentadas. La aritmética de direcciones de 24 bits se realizaba en una unidad de suma y una unidad de multiplicación. La parte escalar del sistema constaba de una unidad de suma, una unidad lógica, una unidad de recuento de población , una unidad de recuento de ceros a la izquierda y una unidad de desplazamiento. La parte vectorial constaba de unidades de suma, lógica y de desplazamiento. Las unidades funcionales de punto flotante se compartían entre las partes escalar y vectorial, y estas constaban de unidades de suma, multiplicación y aproximación 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 la suma de coma flotante de vectores ocurriendo en paralelo, el rendimiento teórico era de 160 [13] MFLOPS. (La unidad de aproximación recíproca también podía operar en paralelo, pero no ofrecía un verdadero resultado de coma flotante: se necesitaban 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 entrada y salida . Los diseños anteriores de Cray en CDC habían incluido computadoras separadas dedicadas a esta tarea, pero esto ya no era necesario. En su lugar, 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 corrección de errores, por lo que la velocidad máxima de transferencia era de una palabra cada 100 ns, o 500 mil palabras por segundo para toda la máquina.
El modelo inicial, el Cray-1A , pesaba 10.500 libras (4.800 kg) 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 unos 115 kW de potencia; [10] la refrigeración y el almacenamiento probablemente duplicaron esta cifra. [ cita requerida ] Una minicomputadora Data General SuperNova S/200 sirvió como unidad de control de mantenimiento (MCU), que se utilizó para alimentar el sistema operativo Cray en el sistema en el momento del arranque, para supervisar la CPU durante el uso y, opcionalmente, como una computadora frontal. La mayoría, si no todos, los Cray-1A se entregaron utilizando el siguiente Data General Eclipse como MCU.
La fiabilidad del CRAY-1A era muy baja para los estándares actuales. En el Centro Europeo de Previsiones Meteorológicas a Plazo Medio , que fue uno de los primeros clientes, se informó de que el tiempo medio entre fallos de hardware era de 96 horas en 1979. [14] Seymour Cray tomó deliberadamente decisiones de diseño que sacrificaban la fiabilidad por la velocidad, pero mejoró sus diseños posteriores después de que le cuestionaran sobre este asunto. De manera similar, el sistema operativo Cray (COS) era bastante rudimentario, apenas se probaba y se actualizaba semanalmente o incluso a diario en los primeros días.
El Cray-1S , anunciado en 1979, fue 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 4096 circuitos integrados de RAM bipolares de 1 bit con un tiempo de acceso de 25 ns. [15] Las minicomputadoras Data General fueron reemplazadas opcionalmente por un diseño interno de 16 bits que funcionaba a 80 MIPS. El subsistema de E/S estaba separado de la máquina principal, conectado 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ó que el sistema de E/S se expandiera según fuera necesario. Los sistemas se pueden 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.
El Cray-1M , anunciado en 1982, reemplazó al Cray-1S. [16] Tenía un tiempo de ciclo más rápido de 12 ns y utilizaba 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 podían agregar un dispositivo de almacenamiento de estado sólido con 8 a 32 millones de palabras de RAM MOS.
En 1978, se lanzó el primer paquete de software estándar para el Cray-1, compuesto por tres productos principales:
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 supercomputadoras de la Fundación Nacional de Ciencias (para física de alta energía) representaron el segundo bloque más grande con el Sistema de Tiempo Compartido Cray (CTSS) de LLL. CTSS se escribió en un Fortran de memoria dinámica, primero llamado LRLTRAN, que se ejecutaba en CDC 7600s , renombrado CVC (pronunciado "Civic") cuando se agregó la vectorización para Cray-1. Cray Research intentó brindar soporte a estos sitios en consecuencia. Estas opciones de software tuvieron influencias en 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 más tarde) [17]
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 (no vectorizador). Este acto daría más tarde a CRI una ventaja de seis meses en la adaptación de Cray-2 a Unix en detrimento de ETA Systems , y la primera película de prueba generada por ordenador de Lucasfilm , Las aventuras de André y Wally B.
El software de aplicación suele ser clasificado ( por ejemplo , código nuclear, código criptoanalítico) o propietario ( por ejemplo, modelado de yacimientos petrolíferos). Esto se debía a que se compartía poco software entre los clientes y los clientes universitarios. Las pocas excepciones eran 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 compartía poco código.
En parte porque Cray estaba interesado en la publicidad, apoyó el desarrollo de Cray Blitz que ganó el cuarto (1983) y quinto (1986) Campeonato Mundial de Ajedrez por Computadora , así como el Campeonato Norteamericano de Ajedrez por Computadora de 1983 y 1984. El programa, Chess , que dominó en la década de 1970 se ejecutaba en supercomputadoras de Control Data Corporation.
Los Cray-1 están en exhibición en las siguientes ubicaciones:
Este objeto se exhibe en la exposición Beyond The Limits en el edificio del National Mall.