Так, поданным компании Ford, для выполнения crash-тестов, при которых реальные автомобили разбиваются о бетонную стену с одновременным замером необходимых параметров, со съемкой и последующей обработкой результатов, ей понадобилось бы от 10 до 150 прототипов для каждой новой модели. При этом общие затраты составили бы от 4 до 60 миллионов долларов. Использование суперкомпьютеров позволило сократить число прототипов на одну треть.
Известной фирме DuPont суперкомпьютеры помогли синтезировать материал, заменяющий хпорофлюорокарбон. Нужно было найти материал, имеющий те же положительные качества: невоспламеняемость, стойкость к коррозии и низкую токсичность, но без вредного воздействия на озоновый слой Земли. За одну неделю были проведены необходимые расчеты на суперкомпьютере с общими затратами около 5 тысяч долларов. По оценкам специалистов DuPont, использование традиционных экспериментальных методов исследований потребовало бы 50 тысяч долларов и около трех месяцев работы — и это без учета времени, необходимого на синтез и очистку требуемого количества вещества.
Итак, мы видим, что без суперкомпьютеров сегодня действительно не обойтись. Осталось прояснить еще один вопрос: почему они считают так быстро? Это может быть связано, во-первых, с развитием элементной базы и, во-вторых, с использованием новых решений в архитектуре компьютеров.
Попробуем разобраться, какой из этих факторов оказывается решающим для достижения рекордной производительности. Обратимся к известным историческим фактам. На одном из первых компьютеров мира EDSAC, появившемся в 1949 году в Кембридже и имевшем время такта 2 микросекунды (2∙10-6 секунды), можно было выполнить 2
Что же получается? За полвека производительность компьютеров выросла более чем в семьсот миллионов раз. При этом выигрыш в быстродействии, связанный с уменьшением времени такта с 2 микросекунд до 1,8 наносекунды, составляет лишь около 1000 раз. Откуда же взялось остальное? Ответ очевиден — за счет использования новых решений в архитектуре компьютеров. Основное место среди них занимает принцип параллельной обработки данных, воплощающий идею одновременного (параллельного) выполнения нескольких действий.
Различают два способа параллельной обработки: собственно параллельную и конвейерную. Оба способа интуитивно абсолютно понятны, поэтому сделаем лишь небольшие пояснения.
Параллельная обработка
Предположим для простоты, что некое устройство выполняет одну операцию за один такт. В этом случае тысячу операций такое устройство выполнит за тысячу тактов. Если имеется пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести тактов. Аналогично система из
Кстати, пионером в параллельной обработке потоков данных был академик А. А. Самарский, выполнявший в начале 50-х годов расчеты, необходимые для моделирования ядерных взрывов. Самарский решил эту задачу методом сеток, посадив несколько десятков барышень с арифмометрами за столы (узлы сетки). Барышни передавали данные одна другой просто на словах и откладывали необходимые цифры на арифмометрах. Таким образом, в частности, была рассчитана эволюция взрывной волны. Работы было много, барышни уставали, а Александр Андреевич ходил между ними и подбадривал. Так создали, можно сказать, первую параллельную систему. Хотя расчеты водородной бомбы провели мастерски, точность их оказалась очень низкой, потому что узлов в используемой сетке было мало, а время счета получалось слишком большим.