- •Уровни параллелизма
- •К понятию уровня параллелизма тесно примыкает понятие гранулярности.
- •Параллелизм уровня задания
- •Параллелизм уровня команд.
- •Метрики параллельных вычислений.
- •Misd – множественный поток команд и одиночный поток данных
- •Simd – одиночный поток команд и множественный поток данных.
- •Память с чередованием адресов.
- •Модели архитектур распределенной памяти.
- •Мультипроцессорная когерентность кэш – памяти.
- •Программные способы
- •Аппаратные способы решения проблемы некогерентности
- •Совместно используемая кэш – память.
- •Некэшируеые данные.
- •Протоколы на основе справочника
- •Топологии вс.
- •Метрики сетевых соединений.
- •Функции маршрутизации данных
Параллелизм уровня задания
Параллелизм уровня заданий возможен между независимыми заданиями или их фазами. Основным средством реализации параллелизма на уровне заданий служат многопроцессорные и многомашинные вычислительные системы, в которых задания распределяются по отдельным процессорам или машинам. Однако, если трактовать каждое задание, как совокупность независимых задач, реализация данного уровня возможна и в рамках однопроцессорной ВС. В этом случае несколько заданий могут одновременно находиться в одной памяти ВС, при условии, что в каждый момент выполняется только одно из них. Когда выполняемое задание требует ввода- вывода, такая операция запускается , а до ее завершения остальные ресурсы ВС передаются другому заданию. По завершении ввода – вывода ресурсы ВС возвращаются заданию, инициировавшему эту операцию. Здесь параллелизм обеспечивается за счет того, что центральный процессор и система вводе - вывода работает одновременно, обслуживая разные задания.
Параллелизм уровня программ.
О параллелизме на уровне программ имеет смысл говорить в двух случаях. Во первых, когда в программе могут быть выделены независимые участки , которые допустимо выполнять параллельно. Примером такого параллелизма может служить программа робота. Пусть имеется робот, запрограммированный на обнаружение электрических розеток, когда уровень напряжения в его аккумуляторах падает. Когда робот находит одну из розеток, он включается в нее на подзарядку. В процесс вовлечены три подсистемы робота- зрение, манипуляция и движение. Каждая подсистема управляется своим процессором, то есть подсистемы при выполнении разных действий способны работать параллельно.
Задача |
Зрение |
манипуляция |
Движение |
Поиск розетки |
+ |
|
+ |
Движ. К розетке |
+ |
|
+ |
Подкл. К розетке |
+ |
+ |
|
Подсистемы достаточно независимы при ведущей роли системы зрения. Возможен также и центральный процессор – мозг. Это пример параллелизма программ в котором разные задачи выполняются одновременно для достижения общей цели.
Второй тип параллелизма программ возможен в пределах отдельного программного цикла, если в нем отдельные итерации не зависят друг от друга. Программный параллелизм может быть реализован за счет большого количества процессоров или множества функциональных блоков. В качестве примера рассмотрим следующий фрагмент кода:
For I:=1toN do A(i) + C(і)
Все суммы независимы, то есть вычисление В+С не зависит от других аналогичных сумм для любых і . Это означает, что вычисления могут производиться в любой последовательности и в вычислительной системе с N процессорами все суммы могут быть вычислены одновременно.
Общая форма параллелизма на уровне программ проистекает из разбиения программируемых данных на подмножества. Это разделение называют декомпозицией области , а параллелизм , возникающий при этом, носит название параллелизм данных. Подмножества данных назначаются разным вычислительным процессам, и называется этот процесс распределением данных . Процессоры выделяются отдельным процессам либо по инициативе программы, либо в процессе работы операционной системы. На каждом процессоре может выполняться более чем один процесс.
