Проблемы параллельных вычислений. Часть 1.

Как указывалось выше, важнейшей проблемой развития современной архитектуры, в особенности суперЭВМ и ЭВМ средней производительности, является проблема параллельных вычислений. В архитектуре «Эльбрус» сделан важнейший шаг в этом направлении — реализована многопроцессорная обработка, включающая 10 процессоров. Однако обстоятельства требуют дальнейшего повышения параллельности, в том числе и внутри каждого процессора.

Проблема параллельных вычислений давно является предметом постоянных забот разработчиков архитектур, в особенности суперЭВМ. Она заключается в необходимости создания такой параллельной структуры, которая хоть в какой-то степени была бы адекватна решаемым задачам и допускала достаточно эффективное их программирование. На ранней стадии развития казалось, что наиболее простым решением проблемы могут быть специализированные векторные вычисления. Действительно векторные вычисления дают очень большой коэффициент распараллеливания, они легки в реализации и т. д. Поэтому в прошлом (60—70-е годы) было много экспериментальных проектов чисто векторных машин. Ни один из этих проектов не привел к коммерческой машине. Результатом этих проектов стало понимание того, что проблема параллельности значительно сложнее.

Основу практически любой задачи, даже самой векторной, все-таки составляют скалярные вычисления. Поэтому, чтобы по-настоящему решить проблему параллельности, следует решать задачу распараллеливания скалярных вычислений.

В определенном смысле справедливым является следующее несколько парадоксальное утверждение: «Успех любого векторного проекта зависит от того, насколько эффективно в нем реализованы скалярные вычисления». Это хорошо осознавал С. Крей — автор первого по-настоящему коммерческого проекта, включающего в себя векторные вычисления. После появления машины Cray-1 он писал, что ее успех связан в основном с тем, что на момент выпуска она была самой быстрой скалярной машиной. Заслуга С. Крея заключается именно в том, что он первый определил правильное соотношение между скалярными и векторными вычислениями: основой является скалярная обработка, обработка векторов является ее хорошим дополнением.

Интересно в этом смысле сравнение наиболее успешных быстродействующих машин: Cyber-205 фирмы CDC, машин фирмы Cray Research и машин фирмы FPS. Здесь они приведены в последовательности всевозрастающего внимания к скалярным вычислениям. Машина Cyber-205 кроме обычного последовательного скалярного процессора содержит фактически независимый векторный процессор. Все векторные операции выполняются в режиме память-память, т. е. какой размер ни имели бы массивы-источники и массив-результат, они располагаются в памяти и обрабатываются единой операцией последовательно элемент за элементом. Есть возможность «сцепить» не более двух операций, так что результат одной из них поступает на вход другой, но при этом сцепленная пара должна выглядеть с точки зрения обращения в память как одна операция, т. е. иметь в сумме не более двух массивов-источников и не более одного массива-результата.