Параллельная обработка информации

Согласно /6/, параллельная обработка может выполняться на нескольких уровнях:

1) Уровень заданий. Несколько независимых заданий одновременно выполняются на разных процессорах, практически не взаимодействуя друг с другом. Этот уровень реализуется в ВС со множеством процессоров в многозадачном режиме.

2) Уровень программ. Части одной программы выполняются на множестве процессоров, что достигается в параллельных ВС.

3) Уровень команд. Выполнение команды разделяется на фазы, а фазы нескольких последовательных команд могут быть перекрыты за счёт конвейеризации. Этот уровень достижим в ВС с одним процессором.

4) Уровень битов. Если биты слова обрабатываются одновременно, то говорят о бит-параллельной операции, что достижимо в обычных и суперскалярных процессорах.

Варианты параллельной обработки, а также конвейерные и суперскалярнные процессоры были рассмотрены ранее (Лекция 4).

К понятию уровня параллелизма тесно примыкает понятие гранулярности. Гранулярность – это мера отношения объёма вычислений, выполненных в параллельной задаче, к объёму коммуникаций (для обмена сообщениями). В зависимости от степени гранулярности выделяют крупнозернистый, среднезернистый и мелкозернистый параллелизм.

Крупнозернистый параллелизм: каждое параллельное вычисление достаточно независимо от остальных, причём требуется относительно редкий обмен информацией между отдельными вычислениями. Единицами распараллеливания являются большие и независимые программы, включающие тысячи команд. Этот уровень параллелизма обеспечивается ОС.

Среднезернистый параллелизм: единицами распараллеливания являются отдельные процедуры, включающие в себя сотни команд. Обычно организуется как программистом, так и компилятором.

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

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

Можно выделить следующие преимущества параллельных архитектур /1/:

1) Применение мультипроцессорных архитектур – это единственный способ построения высокопроизводительных ВС. Производительность является важнейшим показателем ВС. Построив даже самый процессор для данного уровня развития вычислительной техники, можно ещё больше увеличить производительность, объединив в единую систему несколько процессоров.

2) Мультипроцессорная система является масштабируемой, т.е. модульная организация таких систем позволяет увеличивать производительность за счёт наращивания модулей и (или) совершенствования взаимосвязей между ними.

3) Мультипроцессорная система обладает большей отказоустойчивостью за счёт использования структурной избыточности. Например, при выходе какого-либо процессора из строя ВС может продолжать работу, перераспределив вычислительную работу между оставшимися процессорами.

Однако, несмотря на отмеченные преимущества многопроцессорных систем, им присущ и ряд недостатков, свойственных системам параллельной обработки /1/:

1) В параллельных системах возникают новые, ранее не известные типы ошибок: тупики (взаимные блокировки процессов), голодание (невозможность получить ресурс) и т.п.

2) Сложности понимания и анализа параллельных процессов. Мышление людей имеет последовательный характер, поскольку мысли выражаются словами.

3) Недостаточная разработанность технологии параллельного программирования, поскольку необходимо создание новых ОС, языков программирования, трансляторов, прикладных программ, наиболее полно использующих возможности параллельных архитектур.

В истории развития ВС, начиная с 70-х гг. 20 в., отмечались и рост и снижение интереса к параллельным архитектурам. С конца 90-х г. 20 в. и начала 21 в., в связи с успешными реализациями параллельных систем, параллельные архитектуры являются перспективным направлением развития ВС.

В идеальном случае система из n процессоров могла бы ускорить вычисления в n раз. Однако в реальности такого показателя достичь не удаётся по ряду причин, и прежде всего, потому что, ни одну задачу невозможно распараллелить полностью. Кроме того, на практике добиться равномерной загрузки параллельно работающих процессоров достаточно трудно. Замечено, что с ростом размерности задач доля вычислений, допускающих распараллеливание, растёт, что в целом позволяет увеличить скорость вычислений при решении задач.

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

10.2 Классификация систем параллельной обработки данных