§2. Основные направления развития высокопроизводительных компьютеров

Один из первых в мире компьютеров EDSAC (1949 г.) выполнял около 100 арифметических операций в секунду. Производительность самых мощных современных компьютеров составляет несколько десятков триллионов () операций в секунду. Чем же объясняется такой колоссальный рост производительности?

Несомненно, одной из причин является совершенствование элементной базы. Смена электронных ламп транзисторами, появление интегральных схем, разработка кремниевых чипов – каждое из этих событий производило революцию в компьютерной технике. Современные технологии создания чипов позволяют работать с элементами размеров порядка десятых долей микрона ( м). Регулярное уменьшение размеров чипов обеспечивает эволюционный рост тактовой частоты работы процессоров. Так, EDSAC имел время такта 2 микросекунды (сек) , а современный компьютер Hewlett-Packard V2600 выполняет один такт за 1.8 наносекунды (сек). То есть HP V2600 выполняет одну процессорную команду в 1000 раз быстрее. В то же время его производительность составляет 77 миллиардов операций в секунду, и это в семьсот миллионов раз больше, чем у EDSAC. Такой рост производительности не может объясняться только лишь изменением элементной базы.

Вторая по счету, но первая по значению причина заключается в использовании новых решений в архитектуре компьютера.

В вычислительной науке используются три термина, связанные с устройством электронно-вычислительной машины. Архитектура компьютера - это описание компонент компьютера и их взаимодействия. Организация компьютера - это описание конкретной реализации архитектуры, ее воплощения "в железе". Компьютеры CRAY, например, имеют сходную архитектуру. С точки зрения программиста, у них одинаковое число внутренних регистров, используемых для временного хранения данных, одинаковый набор машинных команд, одинаковый формат представления данных. Организация же компьютеров Cray разных моделей может существенно различаться: у них может быть разное число процессоров, разный размер оперативной памяти, разное быстродействие и т.д. Третий термин - это схема компьютера, детальное описание его электронных компонент, их соединений, устройств питания, охлаждения и других. Программисту довольно часто требуется знание архитектуры компьютера, реже его организации и никогда - схемы компьютера.

Революцию в компьютерных архитектурах произвел принцип параллельной обработки данных, воплощающий идею одновременного (параллельного) выполнения нескольких действий. Параллельная обработка данных имеет две разновидности: конвейерность и собственно параллельность.

Параллельная обработка

Если некое устройство выполняет одну операцию за единицу времени, то тысячу операций оно выполнит за тысячу единиц. Если предположить, что есть пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести единиц времени. Аналогично система из N устройств ту же работу выполнит за 1000/N единиц времени. Однако это идеальное ускорение удается получить лишь в очень специальных ситуациях, когда подзадачи полностью независимы (например, задачи перебора, взламывание паролей). Чтобы стало понятней, рассмотрим пример из жизни. Если один человек вскапывает один квадратный метр земли за две минуты, то это не означает, что двенадцать человек вскопают его за десять секунд: они будут мешать друг другу и работа только замедлится. Что же касается вычислений, то есть такие алгоритмы, которые при распараллеливании не только не дают ускорения, но даже замедляются.

Все современные микропроцессоры, будь то Pentium III или PA-8700, MIPS R14000, Е2К или Power3, используют тот или иной вид параллельной обработки. В ядре Pentium 4 на разных стадиях выполнения может одновременно находиться до 126 микроопераций. На презентациях новых чипов и в пресс-релизах корпораций это преподносится как последнее слово техники и передовой край науки, и это действительно так, если рассматривать реализацию этих принципов в миниатюрных рамках одного кристалла. Вместе с тем сами эти идеи появились очень давно. Все самые первые компьютеры (EDSAC, EDVAC, UNIVAC) имели разрядно-последовательную память, из которой слова считывались последовательно бит за битом. Первым коммерчески доступным компьютером, использующим разрядно-параллельную память и разрядно-параллельную арифметику, стал IBM 701 (1953 г.), а наибольшую популярность (продано 150 экз.) получила модель IBM 704 (1955 г.).

Конвейерная обработка

Что необходимо для сложения двух вещественных чисел, представленных в форме с плавающей запятой? Целое множество мелких операций таких, как сравнение порядков, выравнивание порядков, сложение мантисс, нормализация и т.п. Процессоры первых компьютеров выполняли все эти "микрооперации" для каждой пары аргументов последовательно одна за другой до тех пор, пока не доходили до окончательного результата, и лишь после этого переходили к обработке следующей пары слагаемых.

Идея конвейерной обработки заключается в выделении отдельных этапов выполнения общей операции, причем каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию входных данных. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени операций. Предположим, что в операции можно выделить пять микроопераций, каждая из которых выполняется за одну единицу времени. Если есть одно неделимое последовательное устройство, то 100 пар аргументов оно обработает за 500 единиц. Если каждую микрооперацию выделить в отдельный этап (или иначе говорят - ступень) конвейерного устройства, то на пятой единице времени на разной стадии обработки такого устройства будут находиться первые пять пар аргументов, а весь набор из ста пар будет обработан за 5+99=104 единицы времени - ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).

Казалось бы, конвейерную обработку можно с успехом заменить обычным параллелизмом, для чего продублировать основное устройство столько раз, сколько ступеней конвейера предполагается выделить. В самом деле, пять устройств предыдущего примера обработают 100 пар аргументов за 100 единиц времени, что быстрее времени работы конвейерного устройства! В чем же дело? Ответ прост, увеличив в пять раз число устройств, мы значительно увеличиваем как объем аппаратуры, так и ее стоимость.

Впервые конвейерный принцип выполнения команд был использован в машине ATLAS, разработанной в Манчестерском университете в 1963г. Выполнение команд разбито на 4 стадии: выборка команды, вычисление адреса операнда, выборка операнда и выполнение операции. Конвейеризация позволила уменьшить время выполнения команд с 6 мкс до 1,6 мкс. Данный компьютер оказал огромное влияние как на архитектуру ЭВМ, так и на программное обеспечение: в нем впервые использована мультипрограммная ОС, основанная на использовании виртуальной памяти и системы прерываний.