Cray -1 был суперкомпьютером , разработанным, изготовленным и продаваемым Cray Research . Анонсированная в 1975 году, первая система Cray-1 была установлена в Лос-Аламосской национальной лаборатории в 1976 году. В конечном итоге было продано восемьдесят Cray-1, что сделало его одним из самых успешных суперкомпьютеров в истории. Он, пожалуй, наиболее известен своей уникальной формой: сравнительно небольшим С-образным шкафом с кольцом скамеек вокруг внешней стороны, закрывающим блоки питания и систему охлаждения.
Cray-1 был первым суперкомпьютером, успешно реализовавшим конструкцию векторного процессора . Эти системы повышают производительность математических операций, организуя память и регистры для быстрого выполнения одной операции с большим набором данных. Предыдущие системы, такие как CDC STAR-100 и ASC, реализовали эти концепции, но сделали это таким образом, что это серьезно ограничило их производительность. Cray-1 решил эти проблемы и создал машину, которая работала в несколько раз быстрее, чем любая подобная конструкция.
Архитектором Cray-1 был Сеймур Крэй ; главным инженером — соучредитель Cray Research Лестер Дэвис. [2] Они продолжили проектировать несколько новых машин, используя те же базовые концепции, и удерживали лидерство в производительности до 1990-х годов.
С 1968 по 1972 год Сеймур Крэй из Control Data Corporation (CDC) работал над CDC 8600 , преемником его более ранних проектов CDC 6600 и CDC 7600. 8600 по сути состоял из четырех 7600 в корпусе с дополнительным специальным режимом, который позволял им работать синхронно в режиме SIMD .
Джим Торнтон, бывший инженерный партнер Cray по более ранним разработкам, начал более радикальный проект, известный как CDC STAR-100 . В отличие от подхода 8600 к производительности с помощью грубой силы, STAR пошел совершенно другим путем. Основной процессор STAR имел более низкую производительность, чем 7600, но добавил аппаратное обеспечение и инструкции для ускорения особенно распространенных задач суперкомпьютера.
К 1972 году 8600 зашла в тупик; машина была настолько невероятно сложной, что было невозможно заставить ее работать должным образом. Даже один неисправный компонент делал машину неработоспособной. Крей обратился к Уильяму Норрису , генеральному директору Control Data, сказав, что необходимо перепроектирование с нуля. В то время компания испытывала серьезные финансовые затруднения, а поскольку STAR также был на подходе, Норрис не мог инвестировать деньги.
В результате Крэй покинул CDC и основал Cray Research совсем рядом с лабораторией CDC. На заднем дворе земли, которую он купил в Чиппева-Фолс , Крэй и группа бывших сотрудников CDC начали искать идеи. Сначала концепция создания еще одного суперкомпьютера казалась невозможной, но после того, как главный технический директор Cray Research отправился на Уолл-стрит и нашел ряд инвесторов, готовых поддержать Cray, все, что было нужно, — это проект.
В течение четырех лет Cray Research разрабатывала свой первый компьютер. [3] В 1975 году был анонсирован 80-мегагерцовый Cray-1. Ажиотаж был настолько велик, что между Национальной лабораторией Лоуренса в Ливерморе и Национальной лабораторией Лос-Аламоса разгорелась настоящая война за первую машину , последняя в конечном итоге победила и получила серийный номер 001 в 1976 году на шестимесячное испытание. Национальный центр атмосферных исследований (NCAR) стал первым официальным клиентом Cray Research в 1977 году, заплатив 8,86 млн долларов США (7,9 млн долларов плюс 1 млн долларов за диски) за серийный номер 3. Машина NCAR была выведена из эксплуатации в 1989 году. [4] Компания рассчитывала продать, возможно, дюжину машин и установила соответствующую цену продажи, но в конечном итоге было продано более 80 Cray-1 всех типов по цене от 5 до 8 миллионов долларов. Эта машина сделала Сеймура Крея знаменитостью, а его компанию — успешной, просуществовавшей до краха суперкомпьютера в начале 1990-х годов.
На основе рекомендации исследования Уильяма Перри , АНБ приобрело Cray-1 для теоретических исследований в области криптоанализа . По словам Будянски, «Хотя стандартные истории Cray Research десятилетиями будут утверждать, что первым клиентом компании была Лос-Аламосская национальная лаборатория, на самом деле это было АНБ...» [5]
За 160 MFLOPS Cray-1 в 1982 году последовал 800 MFLOPS Cray X-MP , первый многопроцессорный компьютер Cray. В 1985 году очень продвинутый Cray-2 , способный достигать пиковой производительности 1,9 GFLOPS, пришел на смену первым двум моделям, но имел несколько ограниченный коммерческий успех из-за определенных проблем с обеспечением устойчивой производительности в реальных приложениях. Поэтому был создан более консервативно спроектированный эволюционный преемник моделей Cray-1 и X-MP под названием Cray Y-MP , выпущенный в 1988 году.
Для сравнения, процессор в типичном смарт-устройстве 2013 года, таком как Google Nexus 10 или HTC One , имеет производительность около 1 ГФЛОПС [6], в то время как процессор A13 в iPhone 11 2019 года имеет производительность 154,9 ГФЛОПС [7] — показатель, которого суперкомпьютеры, пришедшие на смену Cray-1, достигли только в 1994 году .
Типичные научные рабочие нагрузки состоят из чтения больших наборов данных, их преобразования каким-либо образом и последующего обратного вывода. Обычно применяемые преобразования идентичны для всех точек данных в наборе. Например, программа может добавлять 5 к каждому числу в наборе из миллиона чисел.
В простых компьютерах программа будет проходить по всем миллионам чисел, добавляя пять, тем самым выполняя миллион инструкций, говоря a = add b, c
. Внутри себя компьютер решает эту инструкцию в несколько шагов. Сначала он считывает инструкцию из памяти и декодирует ее, затем он собирает любую дополнительную информацию, которая ему нужна, в данном случае числа b и c, а затем, наконец, запускает операцию и сохраняет результаты. Конечный результат заключается в том, что компьютеру требуются десятки или сотни миллионов циклов для выполнения этих операций.
В STAR новые инструкции по сути писали циклы для пользователя. Пользователь сообщал машине, где в памяти хранится список чисел, а затем вводил одну инструкцию a(1..1000000) = addv b(1..1000000), c(1..1000000)
. На первый взгляд кажется, что экономия ограничена; в этом случае машина извлекает и декодирует только одну инструкцию вместо 1 000 000, тем самым экономя 1 000 000 извлечений и декодирований, возможно, четверть общего времени.
Реальная экономия не столь очевидна. Внутренне ЦП компьютера состоит из ряда отдельных частей, предназначенных для одной задачи, например, добавления числа или извлечения из памяти. Обычно, когда инструкция проходит через машину, в любой момент времени активна только одна часть. Это означает, что каждый последовательный шаг всего процесса должен быть завершен, прежде чем результат может быть сохранен. Добавление конвейера инструкций меняет это. В таких машинах ЦП будет «смотреть вперед» и начинать извлекать последующие инструкции, пока текущая инструкция все еще обрабатывается. В этом стиле конвейера любая инструкция все еще требует столько же времени для выполнения, но как только она завершает выполнение, следующая инструкция следует сразу за ней, причем большинство шагов, необходимых для ее выполнения, уже выполнены.
Векторные процессоры используют эту технику с одним дополнительным трюком. Поскольку структура данных находится в известном формате — наборе чисел, расположенных последовательно в памяти — конвейеры можно настраивать для повышения производительности выборок. При получении векторной инструкции специальное оборудование устанавливает доступ к памяти для массивов и максимально быстро вставляет данные в процессор.
Подход CDC в STAR использовал то, что сегодня известно как архитектура память-память . Это относилось к способу, которым машина собирала данные. Она настраивала свой конвейер для прямого чтения и записи в память. Это позволяло STAR использовать векторы, длина которых не ограничивалась длиной регистров, что делало его очень гибким. К сожалению, конвейер должен был быть очень длинным, чтобы иметь достаточно инструкций в полете, чтобы компенсировать медленную память. Это означало, что машина несла высокие затраты при переключении с обработки векторов на выполнение операций с не векторными операндами. Кроме того, низкая скалярная производительность машины означала, что после того, как переключение произошло, и машина начала выполнять скалярные инструкции, производительность была довольно низкой [ необходима цитата ] . Результатом была довольно разочаровывающая реальная производительность, что, возможно, можно было бы предсказать с помощью закона Амдаля .
Крей изучил неудачу STAR и извлек из нее урок [ требуется цитата ] . Он решил, что в дополнение к быстрой векторной обработке его проект также потребует превосходной всесторонней скалярной производительности. Таким образом, когда машина переключала режимы, она все равно обеспечивала превосходную производительность. Кроме того, он заметил, что рабочие нагрузки можно было бы значительно улучшить в большинстве случаев за счет использования регистров .
Так же, как более ранние машины игнорировали тот факт, что большинство операций применялись ко многим точкам данных, STAR игнорировал тот факт, что те же самые точки данных будут многократно обрабатываться. В то время как STAR считывал и обрабатывал одну и ту же память пять раз, чтобы применить пять векторных операций к набору данных, было бы гораздо быстрее считать данные в регистры ЦП один раз, а затем применить пять операций. Однако у этого подхода были ограничения. Регистры были значительно дороже с точки зрения схемы, поэтому можно было предоставить только ограниченное количество. Это означало, что конструкция Cray будет иметь меньшую гибкость с точки зрения размеров векторов. Вместо того, чтобы считывать вектор любого размера несколько раз, как в STAR, Cray-1 должен был бы считывать только часть вектора за раз, но затем он мог бы выполнять несколько операций с этими данными перед записью результатов обратно в память. Учитывая типичные рабочие нагрузки, Cray посчитал, что небольшие затраты, понесенные из-за необходимости разбивать большие последовательные доступы к памяти на сегменты, были затратами, которые стоили того.
Поскольку типичная векторная операция включала бы загрузку небольшого набора данных в векторные регистры и последующее выполнение нескольких операций над ними, векторная система новой конструкции имела свой собственный отдельный конвейер. Например, блоки умножения и сложения были реализованы как отдельные аппаратные средства, поэтому результаты одного могли быть внутренне переданы в следующий, декодирование инструкций уже было обработано в главном конвейере машины. Крей назвал эту концепцию цепочкой , поскольку она позволяла программистам «связывать вместе» несколько инструкций и извлекать более высокую производительность.
В 1978 году группа из Аргоннской национальной лаборатории протестировала ряд типичных рабочих нагрузок на Cray-1 в рамках предложения о покупке одного для их использования, заменив их IBM 370/195 . Они также планировали провести тестирование на CDC STAR-100 и Burroughs Scientific Computer, но такие тесты, если они проводились, не были опубликованы. Тесты проводились на Cray-1 в Национальном центре атмосферных исследований (NCAR) в Боулдере, штат Колорадо . Единственным другим доступным Cray в то время был тот, что в Лос-Аламосе, но доступ к этой машине требовал разрешения Q. [8]
Тесты были представлены двумя способами. Первый — это минимальное преобразование, необходимое для того, чтобы программа работала без ошибок, но не пытающееся воспользоваться преимуществами векторизации Cray. Второй включал умеренный набор обновлений кода, часто раскручивающих циклы, чтобы их можно было векторизовать. В целом, минимальные преобразования выполнялись примерно с той же скоростью, что и 370, примерно в 2 раза быстрее его производительности (в основном из-за большего диапазона экспоненты на Cray), но векторизация привела к дальнейшему увеличению от 2,5 до 10 раз. В одном примере программы, которая выполняла внутреннее быстрое преобразование Фурье , производительность улучшилась с 47 миллисекунд IBM до 3. [8]
Новая машина была первой разработкой Cray, в которой использовались интегральные схемы (ИС). Хотя ИС были доступны с 1960-х годов, только в начале 1970-х годов они достигли производительности, необходимой для высокоскоростных приложений. Cray-1 использовал только четыре различных типа ИС, двойной вентиль ECL 5-4 NOR (один с 5 входами и один с 4 входами, каждый с дифференциальным выходом), [9] еще один более медленный вентиль MECL 10K 5-4 NOR, используемый для разветвления адреса , 16×4-битное высокоскоростное (6 нс) статическое ОЗУ (SRAM), используемое для регистров, и 1024×1-битное 48 нс SRAM, используемое для основной памяти. Эти интегральные схемы поставлялись Fairchild Semiconductor и Motorola . [10] В целом, Cray-1 содержал около 200 000 вентилей.
Микросхемы монтировались на больших пятислойных печатных платах , до 144 микросхем на плату. Затем платы монтировались спина к спине для охлаждения (см. ниже) и помещались в двадцать четыре стойки высотой 28 дюймов (710 мм), содержащие 72 двойные платы. Типичный модуль (отдельный процессорный блок) требовал одну или две платы. Всего машина содержала 1662 модуля в 113 вариантах.
Каждый кабель между модулями представлял собой витую пару , обрезанную до определенной длины, чтобы гарантировать поступление сигналов точно в нужное время и минимизировать электрическое отражение. Каждый сигнал, вырабатываемый схемой ECL, представлял собой дифференциальную пару, поэтому сигналы были сбалансированы. Это, как правило, делало спрос на источник питания более постоянным и уменьшало шум переключения. Нагрузка на источник питания была настолько равномерно сбалансирована, что Крей хвастался, что источник питания не регулировался. Для источника питания вся компьютерная система выглядела как простой резистор.
Высокопроизводительная схема ECL генерировала значительное количество тепла, и конструкторы Cray потратили столько же усилий на проектирование системы охлаждения, сколько и на остальную механическую конструкцию. В этом случае каждая печатная плата была соединена со второй, размещенной спина к спине с листом меди между ними. Медный лист проводил тепло к краям клетки, где жидкий фреон, текущий по трубам из нержавеющей стали, отводил его в охлаждающее устройство под машиной. Первый Cray-1 был отложен на шесть месяцев из-за проблем в системе охлаждения; смазка, которая обычно смешивается с фреоном для поддержания работы компрессора, просачивалась через уплотнения и в конечном итоге покрывала платы маслом, пока они не замыкались. Для надлежащей герметизации трубок пришлось использовать новые методы сварки.
Чтобы вывести машину на максимальную скорость, весь корпус был изогнут в большую С-образную форму. Скоростно-зависимые части системы были размещены на «внутреннем крае» корпуса, где длина проводов была короче. Это позволило сократить время цикла до 12,5 нс (80 МГц), не так быстро, как 8 нс 8600, от которого он отказался, но достаточно быстро, чтобы превзойти CDC 7600 и STAR. NCAR подсчитал, что общая пропускная способность системы была в 4,5 раза выше, чем у CDC 7600. [11]
Cray-1 был построен как 64-битная система, в отличие от 7600/6600, которые были 60-битными машинами (изменение также планировалось для 8600). Адресация была 24-битной, с максимумом 1 048 576 64-битных слов (1 мегаслово) основной памяти, где каждое слово также имело восемь бит четности, что в общей сложности составляло 72 бита на слово. [12] Память была распределена по 16 чередующимся банкам памяти, каждый с циклом 50 нс, что позволяло считывать до четырех слов за цикл. Меньшие конфигурации могли иметь 0,25 или 0,5 мегаслов основной памяти. Максимальная совокупная пропускная способность памяти составляла 638 Мбит/с. [12]
Основной набор регистров состоял из восьми 64-битных скалярных (S) регистров и восьми 24-битных адресных (A) регистров. Они были подкреплены набором из шестидесяти четырех регистров каждый для временного хранения S и A, известных как T и B соответственно, которые не могли быть видны функциональным блокам. Векторная система добавила еще восемь 64-элементных 64-битных векторных (V) регистров, а также векторную длину (VL) и векторную маску (VM). Наконец, система также включала 64-битный регистр часов реального времени и четыре 64-битных буфера инструкций, которые содержали шестьдесят четыре 16-битных инструкции каждый. Аппаратное обеспечение было настроено так, чтобы позволить векторным регистрам подавать одно слово за цикл, в то время как адресные и скалярные регистры требовали двух циклов. Напротив, весь 16-словный буфер инструкций мог быть заполнен за четыре цикла.
Cray-1 имел двенадцать конвейерных функциональных блоков. 24-битная адресная арифметика выполнялась в блоке сложения и блоке умножения. Скалярная часть системы состояла из блока сложения, логического блока, подсчета населения , блока подсчета ведущих нулей и блока сдвига. Векторная часть состояла из блоков сложения, логических и сдвиговых блоков. Функциональные блоки с плавающей точкой были общими для скалярной и векторной частей, и они состояли из блоков сложения, умножения и обратного приближения.
Система имела ограниченный параллелизм. Она могла выдавать одну инструкцию за такт, что давало теоретическую производительность 80 MIPS , но при параллельном умножении и сложении векторов с плавающей точкой теоретическая производительность составляла 160 [13] MFLOPS. (Блок обратного приближения также мог работать параллельно, но не давал истинного результата с плавающей точкой — для полного деления требовалось два дополнительных умножения.)
Поскольку машина была разработана для работы с большими наборами данных, конструкция также выделила значительную часть схем для ввода-вывода . Ранние проекты Cray в CDC включали отдельные компьютеры, предназначенные для этой задачи, но в этом больше не было необходимости. Вместо этого Cray-1 включал четыре шестиканальных контроллера, каждый из которых получал доступ к основной памяти один раз каждые четыре цикла. Каналы были шириной 16 бит и включали три управляющих бита и четыре бита для исправления ошибок, поэтому максимальная скорость передачи составляла одно слово за 100 нс или 500 тысяч слов в секунду для всей машины.
Первоначальная модель Cray-1A весила 10 500 фунтов (4800 кг), включая систему охлаждения фреоном. Машина и ее блоки питания, оснащенные 1 миллионом слов основной памяти, потребляли около 115 кВт мощности; [10] охлаждение и хранение, вероятно, более чем удвоили эту цифру. [ необходима цитата ] Миникомпьютер Data General SuperNova S/200 служил в качестве блока управления обслуживанием (MCU), который использовался для загрузки операционной системы Cray в систему во время загрузки, для мониторинга ЦП во время использования и, опционально, в качестве компьютера интерфейса. Большинство, если не все, Cray-1A поставлялись с использованием последующего Data General Eclipse в качестве MCU.
Надежность CRAY-1A была очень низкой по сегодняшним меркам. В Европейском центре среднесрочных прогнозов погоды , который был одним из первых клиентов, среднее время между аппаратными сбоями было сообщено в 96 часов в 1979 году. [14] Сеймур Крэй намеренно принимал проектные решения, которые приносили надежность в жертву скорости, но улучшил свои более поздние разработки после того, как его спросили по этому поводу. Аналогично, операционная система Cray (COS) была довольно примитивной, едва тестировалась и обновлялась еженедельно или даже ежедневно в первые дни.
Cray -1S , анонсированный в 1979 году, был улучшенным Cray-1, который поддерживал большую основную память в 1, 2 или 4 миллиона слов. Большая основная память стала возможной благодаря использованию 4096 x 1-битных биполярных ИС ОЗУ со временем доступа 25 нс. [15] Миникомпьютеры Data General опционально заменялись на собственную 16-битную конструкцию, работающую на скорости 80 MIPS. Подсистема ввода-вывода была отделена от основной машины, подключенной к основной системе через канал управления 6 Мбит/с и высокоскоростной канал данных 100 Мбит/с. Такое разделение делало 1S похожим на два «половинных Cray», разделенных несколькими футами, что позволяло расширять систему ввода-вывода по мере необходимости. Системы можно было приобрести в различных конфигурациях: от S/500 без ввода-вывода и с 0,5 миллиона слов памяти до S/4400 с четырьмя процессорами ввода-вывода и 4 миллионами слов памяти.
Cray -1M , анонсированный в 1982 году, заменил Cray-1S. [16] Он имел более быстрое время цикла 12 нс и использовал менее дорогую MOS RAM в основной памяти. 1M поставлялся только в трех версиях: M/1200 с 1 миллионом слов в 8 банках или M/2200 и M/4200 с 2 или 4 миллионами слов в 16 банках. Все эти машины включали два, три или четыре процессора ввода-вывода, а система добавляла дополнительный второй высокоскоростной канал данных. Пользователи могли добавить твердотельное запоминающее устройство с 8–32 миллионами слов MOS RAM.
В 1978 году был выпущен первый стандартный пакет программного обеспечения для Cray-1, состоящий из трех основных продуктов:
Министерство энергетики США финансировало сайты из Национальной лаборатории Лоуренса в Ливерморе , Научной лаборатории Лос-Аламоса , Национальных лабораторий Сандия и суперкомпьютерных центров Национального научного фонда (для физики высоких энергий) и представляло второй по величине блок с системой разделения времени Cray (CTSS) LLL. CTSS была написана на динамической памяти Fortran, сначала названной LRLTRAN, которая работала на CDC 7600 , переименованной в CVC (произносится как «Civic»), когда была добавлена векторизация для Cray-1. Cray Research попыталась поддержать эти сайты соответствующим образом. Эти программные решения оказали влияние на более поздние минисуперкомпьютеры , также известные как «crayettes».
NCAR имеет собственную операционную систему (NCAROS).
Агентство национальной безопасности разработало собственную операционную систему (Folklore) и язык (IMP с портами Cray Pascal и C, а позже и Fortran 90) [17]
Библиотеки начинались с собственных предложений Cray Research и Netlib .
Существовали и другие операционные системы, но большинство языков, как правило, были Фортраном или основанными на Фортране. Bell Laboratories , в качестве доказательства как концепции переносимости, так и схемотехнического решения, перенесла первый компилятор C на свой Cray-1 (не векторизующий). Этот акт позже дал CRI шестимесячную фору на порт Cray-2 Unix в ущерб ETA Systems , и первый тестовый фильм Lucasfilm , сгенерированный компьютером, «Приключения Андре и Уолли Б.» .
Прикладное программное обеспечение обычно бывает либо засекреченным ( например, ядерный код, криптоаналитический код), либо проприетарным ( например, моделирование нефтяных резервуаров). Это было связано с тем, что мало программного обеспечения было общим для клиентов и университетских клиентов. Немногими исключениями были климатологические и метеорологические программы, пока NSF не отреагировал на японский проект пятого поколения компьютерных систем и не создал свои суперкомпьютерные центры. Даже тогда мало кода было общим.
Отчасти потому, что Cray были заинтересованы в рекламе, они поддержали разработку Cray Blitz , которая выиграла четвертый (1983) и пятый (1986) чемпионат мира по компьютерным шахматам , а также чемпионат Северной Америки по компьютерным шахматам 1983 и 1984 годов . Программа Chess , которая доминировала в 1970-х годах, работала на суперкомпьютерах Control Data Corporation.
Cray-1 экспонируются в следующих местах:
объект экспонируется на выставке Beyond The Limits в здании Национальной аллеи.