Развитие суперкомпьютеров
Суперкомпьютеры : прошлое, настоящее и будущее
Впервые термин "суперЭВМ" был использован в начале 60-х годов, когда группа специалистов Иллинойского университета (США) под руководством доктора Д. Слотника предложила идею реализации первой в мире параллельной вычислительной системы. Проект, получивший название SOLOMON, базировался на принципе векторной обработки, который был сформулирован еще Дж. фон Нейманом, и концепции матричной параллельной архитектуры, предложенной С. Унгером в начале 50-х годов.
Дело в том, что большинство суперкомпьютеров демонстрирует поражающую воображение производительность благодаря именно этому (векторному) виду параллелизма. Любой программист, разрабатывая программы на привычных языках высокого уровня, наверняка неоднократно сталкивался с так называемыми циклами DO. Но мало кто задумывался, какой потенциал увеличения производительности заключается в этих часто используемых операторах. Известный специалист в области систем программирования Д.Кнут показал, что циклы DO занимают менее 4% кода программ на языке FORTRAN, но требуют более половины счетного времени задачи.
Идея векторной обработки циклов такого рода заключается в том, что в систему команд компьютера вводится векторная операция, которая работает со всеми элементами векторов-операндов. При этом реализуются сразу две возможности ускорения вычислений: во-первых, сокращается число выполняемых процессором команд объектного кода, поскольку отпадает необходимость в пересчете индексов и организации условного перехода и, во-вторых, все операции сложения элементов векторов-операндов могут быть выполнены одновременно в силу параллелизма обработки.
Важно отметить еще одну особенность векторной обработки, связанную с количеством элементарных операций цикла : чем больше параллельных операций входит в векторизуемый цикл, тем ощутимее выигрыш в скорости выполнения вычислений, так как сокращается доля непроизводительных временных затрат на выборку, дешифрацию и запуск на исполнение векторной команды.
Первой суперЭВМ, использующей преимущества векторной обработки, была ILLIAC IV (SIMD архитектура). В начале 60-х годов группа все того же Слотника, объединенная в Центр передовых вычислительных технологий при Иллинойском университете, приступила к практической реализации проекта векторной суперЭВМ с матричной структурой. Изготовление машины взяла на себя фирма Burroughs Corp. Техническая сторона проекта до сих пор поражает своей масштабностью : система должна была состоять из четырех квадрантов, каждый из которых включал в себя 64 процессорных элемента (ПЭ) и 64 модуля памяти, объединенных коммутатором на базе сети типа гиперкуб. Все ПЭ квадранта обрабатывают векторную инструкцию, которую им направляет процессор команд, причем каждый выполняет одну элементарную операцию вектора, данные для которой сохраняются в связанном с этим ПЭ модуле памяти. Таким образом, один квадрант ILLIAC IV способен одновременно обработать 64 элемента вектора, а вся система из четырех квадрантов - 256 элементов. В 1972 г. первая система ILLIAC IV была установлена в исследовательском центре NASA в Эймсе. Результаты ее эксплуатации в этой организации получили неоднозначную оценку. С одной стороны, использование суперкомпьютера позволило решить ряд сложнейших задач аэродинамики, с которыми не могли справиться другие ЭВМ. Даже самая скоростная ЭВМ для научных исследований того времени - Control Data CDC 7600, которую, к слову сказать, проектировал "патриарх суперЭВМ" Сеймур Крей , могла обеспечить производительность не более 5 MFLOPS, тогда как ILLIAC IV демонстрировала среднюю производительность примерно в 20 MFLOPS. С другой стороны, ILLIAC IV так и не была доведена до полной конфигурации из 256 ПЭ; практически разработчики ограничились лишь одним квадрантом. Причинами явились не столько технические сложности в наращивании числа процессорных элементов системы, сколько проблемы, связанные с программированием обмена данными между процессорными элементами через коммутатор модулей памяти. Все попытки решить эту задачу с помощью системного программного обеспечения потерпели неудачу, в результате каждое приложение требовало ручного программирования передач коммутатора, что и породило неудовлетворительные отзывы пользователей.
Если бы разработчикам ILLIAC IV удалось преодолеть проблемы программирования матрицы процессорных элементов, то, вероятно, развитие вычислительной техники пошло бы совершенно другим путем и сегодня доминировали бы компьютеры с матричной архитектурой. Однако ни в 60-х годах, ни позднее удовлетворительное и универсальное решение двух таких принципиальных проблем, как программирование параллельной работы нескольких сотен процессоров и при этом обеспечение минимума затрат счетного времени на обмен данными между ними, так и не было найдено. Потребовалось еще примерно 15 лет усилий различных фирм по реализации суперЭВМ с матричной архитектурой, чтобы поставить окончательный диагноз: компьютеры данного типа не в состоянии удовлетворить широкий круг пользователей и имеют весьма ограниченную область применения, часто в рамках одного или нескольких видов задач.
По мере освоения средств сверхскоростной обработки данных разрыв между совершенствованием методов векторизации программ, т.е. автоматического преобразования в процессе компиляции последовательных языковых конструкций в векторную форму, и чрезвычайной сложностью программирования коммутации и распределения данных между процессорными элементами привел к достаточно жесткой реакции пользователей в отношении матричных суперЭВМ - широкому кругу программистов требовалась более простая и "прозрачная" архитектура векторной обработки с возможностью использования стандартных языков высокого уровня типа FORTRAN. Решение было найдено в конце 60-х годов, когда фирма Control Data, с которой в то время сотрудничал Крей, представила машину STAR-100, основанную на векторно-конвейерном принципе обработки данных. Отличие векторно-конвейерной технологии от архитектуры матричных ЭВМ заключается в том, что вместо множества процессорных элементов, выполняющих одну и ту же команду над разными элементами вектора, применяется единственный конвейер операций, принцип действия которого полностью соответствует классическому конвейеру автомобильных заводов Форда. Даже такая архаичная по современным понятиям суперЭВМ, как STAR-100, показала предельную производительность на уровне 50 MFLOPS. При этом существенно, что векторно-конвейерные суперЭВМ значительно дешевле своих матричных "родственников". К примеру, разработка и производство ILLIAC IV обошлись в 40 млн. долл. при расходах на эксплуатацию порядка 2 млн. долл. в год, тогда как рыночная стоимость первых суперкомпьютеров фирм CRAY и Control Data находилась в пределах 10 - 15 млн. долл., в зависимости от объема памяти, состава периферийных устройств и других особенностей конфигурации системы.
Второй существенной особенностью векторно-конвейерной архитектуры является то, что конвейер операций имеет всего один вход, по которому поступают операнды, и один выход результата, тогда как в матричных системах существует множество входов по данным в процессорные элементы и множество выходов из них. Другими словами, в компьютерах с конвейерной обработкой данные всех параллельно исполняемых операций выбираются и записываются в единую память, в связи с чем отпадает необходимость в коммутаторе процессорных элементов, ставшем камнем преткновения при проектировании матричных суперЭВМ.
Следующий удар по позициям суперЭВМ с матричной архитектурой нанесли две машины фирмы Control Data Corp. - CYBER-203 и CYBER-205. Пиковая производительность первой составила 100, а второй - уже 400 MFLOPS.
CRAY-1 совершает переворот Векторно-конвейерный суперкомпьютер STAR-100 и машины серии CYBER- 200, образно говоря, явились только "нокдауном" для матричной архитектуры. Нокаутирующий удар был нанесен в 1974 г., когда Крей, к тому времени покинувший корпорацию CDC и основавший собственную фирму Cray Research, объявил о выпуске CRAY-1 - векторно-конвейерной суперЭВМ, ставшей эпохальным событием в мире вычислительной техники. Эта малогабаритная машина (ее высота немного превосходит средний человеческий рост, а занимаемая процессором площадь чуть больше 2,5 кв.м), имела производительность 160 MFLOPS и емкость оперативной памяти 64 Мбайт. После непродолжительной пробной эксплуатации в Лос-Аламосской лаборатории, где новинка получила самые высокие отзывы программистов и математиков, Cray Research наладила серийный выпуск машин CRAY-1, которые активно раскупались в США. Любопытно, что администрация США в должной степени оценила стратегическую ценность CRAY-1 и контролировала поставки этого компьютера даже в дружественные государства. Появление CRAY-1 вызвало интерес не только у пользователей, нуждающихся в средствах сверхскоростной обработки данных, но и у специалистов по архитектуре суперкомпьютеров. Для многих неожиданным (а для разработчиков CYBER-205 даже неприятным) стал тот факт, что с большинством задач маленький компьютер CRAY-1 справлялся быстрее, чем значительно превосходящий его по габаритам и пиковой производительности CYBER-205. Так, при тестировании на пакете решения линейных уравнений LINPACK Джек Донгарра из Национальной лаборатории в Аргонне оценил производительность CRAY-1S в пределах 12 - 23 MFLOPS в зависимости от способа программирования, тогда как CYBER-205 показал производительность лишь 8,4 MFLOPS. Объяснение нашлось, как только вспомнили о законе Амдала (G.Amdahl), который известный архитектор системы IBM/360 сформулировал в 1967 г. в виде следующего постулата: "Производительность вычислительной системы определяется самым медленным ее компонентом". Применительно к векторным суперЭВМ парадокс Амдала преломляется следующим образом. Любая задача, выполняемая в суперЭВМ, состоит из двух взаимосвязанных частей - векторных команд, сгенерированных компилятором при векторизации исходной программы, и скалярных операций, которые компилятор не сумел перевести в векторную форму. Если представить себе суперкомпьютер, который умеет одинаково быстро производить скалярные и векторные операции, то парадокс Амдала "не срабатывает" и такая система с равной скоростью будет выполнять задачи любой степени векторизации. Но само собой, что скалярная обработка занимает больше времени, плюс ко всему CRAY-1 при цикле 12,5 нс обладает большим быстродействием скалярной обработки по сравнению с компьютером CYBER-205, у которого цикл равен 20 нс.
Существует еще одна причина, по которой CRAY-1 превосходит CYBER-205 по скорости решения большинства прикладных задач. Впервые в практике сверхскоростной обработки данных, а возможно, и вообще в вычислительной технике CRAY-1 был разработан как компьютер с полностью законченной архитектурой "регистр-регистр". Все операции обработки данных, которые выполняет центральный процессор этой машины, выбирают операнды и записывают результаты вычислений, используя не оперативную память, как это было сделано в CYBER-205 и более ранних суперкомпьютерах, а специально предназначенные для этой цели программно-адресуемые регистры. Для реализации этой архитектуры в CRAY-1 было введено принципиальное новшество - векторные регистры, которые адресовались командами центрального процессора подобно обычным регистрам данных, но могли запомнить до 64 элементов вектора каждый при 64- разрядном формате отдельных элементов. Естественно, что по сравнению с CYBER-205 каждая отдельная векторная команда в CRAY-1 выполнялась быстрее, поскольку операции типа "регистр-регистр" отличаются от операций типа "память-память" меньшими временными затратами на чтение операндов и запись результата. Однако решающие преимущества CRAY-1 перед суперЭВМ CDC и матричными суперкомпьютерами определяются не столько лучшей сбалансированностью показателей производительности, сколько простотой и удобством эксплуатации, а также высоким качеством системного программного обеспечения. При разработке своей первой суперЭВМ Крей принял во внимание то важное обстоятельство, что большинство существующих пакетов прикладных программ написано на языках последовательного типа, чаще всего на языке FORTRAN. Поэтому в состав программного обеспечения CRAY-1 был включен интеллектуальный FORTRAN-компилятор CFT, способный обнаруживать параллелизм в программах последовательного действия и преобразовывать их в векторизованный код. Естественно, что при таком подходе все имеющееся у пользователя программное обеспечение с незначительными доработками может быть перенесено на суперЭВМ.
Кроме векторизации циклических конструкций, в компиляторе CFT суперкомпьютера CRAY-1 было введено еще одно принципиальное новшество - автоматический поиск в исходной программе и построение многоконвейерных цепочек. Суть его заключается в следующем: если в программе встречаются две связанные векторные операции (т.е. результат первой служит операндом второй), то в отличие от случая связанных скалярных операций, когда выполнение второй операции начинается только после завершения предыдущей, обе векторные команды могут обрабатываться практически параллельно, что удваивает производительность системы.
В целом CRAY-1 продемонстрировал то, как надо сочетать простоту и эффективность технических решений в области аппаратного и программного обеспечения суперкомпьютера с простотой и удобством его использования и, в первую очередь программирования в привычной для большинства разработчиков среде "классических" последовательных языков типа FORTRAN.
Спустя некоторое время, специалисты из Fujitsu, Hitachi и Nippon Electric (NEC) в короткие сроки сумели выдать настоящий ответ Крею из шести моделей суперЭВМ, мало уступающих CRAY-1 по основным характеристикам, а кое в чем и превосходящих свой американский прототип.
Дело в том, что в начале 70-х годов Япония включилась в гонку суперкомпьютеров, объявив о начале государственной программы создания ЭВМ сверхвысокой производительности. В качестве основных исполнителей этой программы были выбраны три ведущие компьютерные фирмы Японии. Корпорация NEC образовала совместное предприятие с Honeywell под названием Honeywell-NEC Supercomputers (HNS), а фирма Fujitsu сумела заключить соглашение с Джином Амдалом, который к тому времени ушел из IBM и основал собственную компанию Amdahl Corp. Плодом этого союза стала машина AMDAHL V/6, открывшая эру компьютеров на больших интегральных схемах и заставившая всерьез поволноваться руководство IBM, когда выяснилось, что эксплуатационные характеристики AMDAHL V/6 не оставляют серьезных шансов на победу ни одному из компьютеров IBM того времени. Обладая технологией и опытом разработки ЭВМ на БИС, которых американцы в ту пору не имели, так как CYBER-200 и CRAY-1 были разработаны на микросхемах средней степени интеграции, японские фирмы пошли в наступление на фронте суперкомпьютеров.
В начале 80-х годов свет увидели сразу три семейства суперЭВМ японского производства, причем каждый суперкомпьютер из Страны Восходящего Солнца имел свою архитектурную изюминку. Во-первых, во всех японских суперЭВМ по сравнению с CRAY-1 было увеличено число скалярных и векторных регистров (например, NEC SX располагает 256 скалярными и 256 векторными регистрами против восьми регистров обоих типов в CRAY-1). За счет этого удалось снизить нагрузку на оперативную память системы, а также, что значительно существеннее, получить большие возможности для эффективной векторизации программ. Еще одно интересное новшество ввели разработчики суперЭВМ семейства NEC SX, объединив векторную архитектуру "регистр-регистр" с принципом многоконвейерной обработки, ранее реализованном в суперкомпьютерах STAR-100, CYBER-203 и CYBER-205 фирмы Control Data.
Правда, здесь следует отметить следующее : во-первых, многоконвейерная обработка требует установки дополнительных модулей, что увеличивает стоимость центрального процессора, во-вторых, исполнение одной векторной команды на нескольких параллельных конвейерах приводит к возрастанию доли непроизводительных временных затрат на запуск команды, подготовку