Введение в архитектуру компьютеров

         

Отношение предшествования процессов


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

Впервые, по-видимому, мы услышали о параллельном программировании в 1958 г. после выхода статьи Гилла (S. Gill) "Параллельные программы". Если система имеет только одну начальную (В) и только одну конечную (F) вершину (арех), то отношения предшествования, которые возможны между процессами p1, p2, ... , pn, показаны на рис. 8.1.

Каждый граф на рис. 8.1 описывает трассу развития процесса во времени и указывает на отношение предшествования. Такие графы называют графами развития процесса.

Пример 1. Вычислить значение выражения

(a+ b) • (c + d) – (e/f)

(1)



Если точность вычисления значения выражения или другие побочные эффекты не предполагают иного порядка выполнения операций, то вычисления могут производиться параллельно.

Рис. 8.1. Граф развития процесса:

а – последовательные процессы;б – параллельные процессы;

в – последовательно-параллельные процессы

Рис. 8.2. Дерево для выражения (1)

Рис. 8.3. Граф развития процесса

для вычисления выражения (1)

Н. Вирт (1966) предложил для описания параллелизма использовать простую конструкцию and. Тогда предложения программы для вычисления выражения (1) (рис. 8.3) могут быть следующими:

begin

S1: = a + b and S2: = c + d and S4: = e/f;

S3: = S1 • S2;

S5: = S3 – S4 

end.

С логической точки зрения каждый процесс имеет собственный процессор и программу. Реально два различных процесса могут разделять одну и ту же программу или один и тот же процессор. Например, для вышеприведенной задачи два разных процесса используют одну и ту же программу "сложить (+)". Таким образом, процесс не эквивалентен программе.

В качестве упражнения полезно построить граф развития процесса для примеров 2 и 3 и решить пример 4.


Пример 2. Сортировка слиянием. Во время i-го прохода в стандартной сортировке слиянием второго порядка пары сортируемых списков длины 2i–1 сливаются в списке длины 2i. Все слияния в пределах одного прохода могут быть выполнены параллельно.

Пример 3. Умножение матриц. При выполнении умножения матриц A = B  • C, все элементы матрицы A могут быть вычислены одновременно.

Пример 4. Оценить требуемое минимальное время как функцию n для вычисления выражения a1 + a2 + ... + an , n ³ 1, в предположении, что:

*                   параллельно может быть выполнено любое число операций

сложения;

*                   каждая операция (включая выборку операндов и запись результата) занимает одну единицу времени.


Содержание раздела