Таблица 8.3. Классификация параллельных компьютерных систем по Флинну
Потоки команд |
Потоки данных |
Категория |
Примеры Классическая машина фон-Неймана |
Много |
БІМР |
Векторный суперкомпьютер, матричный |
|
процессор |
|||
Много |
МІБР |
Не существует |
|
Много |
Много |
МІМР |
Мультипроцессор, мультикомпьютер |
В основе классификации лежат понятия потоков команд и потоков данных.
Поток команд соответствует счетчику команд. Система с п процессорами имеет п счетчиков команд и, следовательно, п потоков команд. Поток данных состоит из набора операндов.
Потоки команд и данных в какой-то степени независимы, поэтому существует 4 комбинации таких потоков (см. табл. 8.3). SISD (Single Instruction stream Single Data stream — один поток команд с одним потоком данных) — это классическая последовательная компьютерная архитектура фон Неймана. Компьютер фон Неймана имеет один поток команд и один поток данных и в каждый момент времени может выполнять только одно действие. У машины, относящихся к категории SIMD (Single Instruction-stream Multiple Data-stream — один поток команд с несколькими потоками данных), имеется один блок управления, выдающий по одной команде, но при этом есть несколько АЛУ, которые могут обрабатывать несколько наборов данных одновременно. Прототип SIMD-машин — процессор ILLIAC IV (см. рис. 2.6). Хотя SIMD-машины не относятся к числу широко распространенных, в некоторых обычных компьютерах для обработки мультимедийных данных используются SIMD-команды. SSE-команды в процессорах Pentium относятся к категории SIMD-команд. В любом случае существует одна область, где идеи, почерпнутые из «мира SIMD», выходят на первый план, — это потоковые процессоры. Потоковые процессоры специально разработаны для обработки мультимедийных данных и в будущем они могут играть важную роль [107]
MISD (Multiple Instruction-stream Single Data-stream — несколько потоков команд с одним потоком данных) — довольно странная категория. Здесь несколько команд оперируют одним набором данных. Трудно сказать, существуют ли такие машины, хотя некоторые относят к категории MISD машины с конвейерами.
Последняя категория — MIMD (Multiple Instruction-stream Multiple Data-stream — несколько потоков команд с несколькими потоками данных). Здесь несколько независимых процессоров работают как часть большой системы. В эту категорию попадают большинство параллельных процессоров. И мультипроцессоры, и мультикомпьютеры — это MIMD-машины.
Мы расширили классификацию Флинна (рис. 8.18). SIMD-машины у нас распались на две подгруппы. В первую подгруппу попадают многочисленные суперкомпьютеры и другие машины, которые оперируют векторами, выполняя одну и ту же операцию над каждым элементом вектора. Во вторую подгруппу попадают машины типа ILLIAC IV, в которых главный блок управления посылает команды нескольким независимым АЛУ.
Рис. 8.18. Классификация компьютеров параллельного действия
В нашей классификации категория MIMD распалась на мультипроцессоры (машины с общей памятью) и мультикомпьютеры (машины с обменом сообщениями). Существует три типа мультипроцессоров. Они отличаются друг от друга механизмом доступа к общей памяти и называются UMA (Uniform Memory Access — однородный доступ к памяти), NUMA (Nonuniform Memory Access — неоднородный доступ к памяти) и СОМА (Cache Only Memory Access — доступ только к кэш-памяти). Такое разбиение на подкатегории имеет смысл, поскольку в больших мультипроцессорах память обычно делится на несколько модулей. В UMA-машинах каждый процессор имеет одно и то же время доступа к любому модулю памяти. Иными словами, каждое слово может быть считано из памяти с той же скоростью, что и любое другое слово. Если это технически невозможно, самые быстрые обращения замедляются, чтобы соответствовать самым медленным, поэтому программист не заметит никакой разницы. Это и значит «однородный» доступ. Такая однородность делает производительность предсказуемой, а этот фактор очень важен для создания эффективных программ.