Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Баула.doc
Скачиваний:
112
Добавлен:
28.05.2015
Размер:
1.82 Mб
Скачать

15.3. Уровни параллелизма.

Как мы знаем, первые компьютеры удовлетворяли почти всем принципам Фон Неймана. В этих компьютерах поток последовательно выполняемых в центральном процессоре команд обрабатывал поток данных. ЭВМ такой простой архитектуры носят в литературе сокращённое название ОКОД (Один поток Команд обрабатывает Один поток Данных – английское сокращение SISD: Single Instruction Single Data). В настоящее время компьютеры, однако, нарушают почти все принципы Фон Неймана. Дело в том, что вычислительная мощность современных компьютеров базируется как на скорости работы всех узлов ЭВМ, так и, в значительной степени, на параллельной обработке данных. В заключение нашего краткого изучения архитектуры современных ЭВМ рассмотрим классификацию способов параллельной обработки данных на компьютере.

  • Параллельное выполнения программ может производиться на одном компьютере, если он имеет несколько центральных процессоров. Как правило, в этом случае компьютер имеет и несколько периферийных процессоров (каналов). Существуют ЭВМ, у которых могут быть от нескольких десятков до нескольких сотен и даже тысяч центральных процессоров. В таких компьютерах много потоков команд одновременно обрабатывают много потоков данных, в научной литературе это обозначается сокращением МКМД (или по-английски MIMD).

  • Параллельные процессы в рамках одной программы. Программа пользователя может породить несколько параллельных процессов обработки данных, каждый такой процесс для операционой системы является самостоятельной единицей работы. Процессы одной задачи могут псевдопараллельно выполняться в мультипрограммном режиме точно так же, как и задачи независимых пользователей.

В качестве примера рассмотрим случай, когда программисту необходимо вычислить сумму значений двух функций F(x)+G(x), причём каждая из этих функций для своего вычисления требует больших затрат процессорного времени и производит много обменов данными с внешними запоминающими устройствами. В этом случае программисту выгодно распараллелить алгоритм решения задачи и породить в своей программе два параллельных вычислительных процесса, каждому из которых поручить вычисления одной из этих функций. Можно понять, что в этом случае вся программа будет посчитана за меньшее физическое время, чем при использовании одного вычислительного процесса. Действительно пока один процесс будет производить обмен данными с медленными внешними устройствами, другой процесс может продолжать выполняться на центральном процессоре, а в случае с одним процессом вся программа была бы вынуждена ждать окончания обмена с внешним устройством. Стоит заметить, что скорость счёта программы с несколькими параллельными процессами ещё больше возрастёт на компьютерах, у которых более одного центрального процессора.

Подробно параллельные процессы Вы будете изучать в следующем семестре.

  • Параллельное выполнение нескольких команд одной программы производится конвейером центрального процессора. В мощных ЭВМ центральный процессор может содержать несколько конвейеров. Например, один из конвейеров выполняет команды целочисленной арифметики, другой предназначен для обработки вещественных чисел, а третий – для всех остальных команд.

  • Параллельная обработка данных в программе производится на так называемых векторных ЭВМ. У таких ЭВМ наряду с обычными (скалярными) регистрами есть и векторные регистры, которые могут хранить и выполнять операции над векторами целых или вещественных чисел. Пусть, например, у такой ЭВМ есть регистры axv и bxv, каждый из которых может хранить вектор из 64 чисел, тогда команда векторного сложения addv axv,bxv будет производить параллельное покомпонентное сложение всех элементов таких векторов по схеме axv[i]:=axv[i]+bxv[i]. Можно сказать, что на векторных ЭВМ один поток (векторных) команд обрабатывает много потоков данных (поток векторных данных). Отсюда понятно сокращённое название ЭВМ такой архитектуры – ОКМД (по-английски SIMD).1

Параллельная обработка команд и данных позволяет значительно увеличить производительность компьютера. Необходимо сказать, что в современных компьютерах обычно реализуется сразу несколько из рассмотренных выше уровней параллелизма. Познакомится с историей развития параллельной обработки данных можно, например, по книге [15]. Заметим, однако, что, несмотря на непрерывный рост мощности компьютеров, постоянно появляются всё новые задачи, для счёта которых необходимы ещё более мощные ЭВМ. Таким образом, к сожалению, рост сложности задач опережает рост производительности компьютеров.