Особенности многопроцессорных систем


Существуют 4 основных метода кратных вычислений и наиболее значимыми для нас являются те методы, которые обеспечивают эффективность больше 1. В предыдущих темах мы рассмотрели всевозможные применения конвейерной обработки данных. Сейчас настала очередь рассмотрения особенностей реализации параллельной обработки данных:

1. реализация параллелизма на крупноблочном уровне. Крупноблочный уровень – это уровень, когда мы рассматриваем многопроцессорную систему в терминах «процесс» и «ресурс», «программа» и «процессор». «Процесс» и «ресурс» пришли из теории операционных систем, а «программа» и «процессор» из нашего подхода, когда мы не рассматриваем особенности организации ПО, а только лишь аппаратные и программные средства, то есть на крупноблочном уровне.

2. Реализуется как распараллеливание в пространстве так и во времени. Далее очень важно понять к какому классу относятся такого рода системы: многопроцессорные системы относятся к классу «множественный поток команд и множественный поток данных». Причем бывают как синхронные, так и асинхронные. Синхронная система для всех процессоров существует единая некая такая система синхронизации или система тактовых сигналов, в асинхронных системах этого нет.

3. Для эффективности работы такой системы задача должна быть декомпозирована на независимые ветви. Мы с вами на среднеблочном уровне рассматривали информационный граф, так вот на крупноблочном уровне мы должны уже декомпозировать задачу на независимые ветви. Вот предположим есть какой-то информационный граф. Анализируя этот граф, в том числе и компилятор, сразу же может решить, что эта задача декомпозируется на 2 независимые подзадачи, которые запускаются в одно и тоже время и которые должны завершиться в одно и тоже время, чтобы сформировать заключительный результат. Вершинами этого информационного графа является некие акты обработки данных. То есть наш граф можно представить в другом виде, что у нас имеются 2 независимые параллельные задачи. В свою очередь каждая из этих задач может быть также декомпозирована на несколько подзадач, в данном случае есть 2 параллельные задачи, можно выделить несколько последовательных подзадач, каждая из которых имеет 2 параллельные подзадачи. Здесь стоит проблема декомпозиции задачи на независимые ветви. Эта декомпозиция нужна по той простой причине, что если мы будем решать одну цельную задачу, то нам требуется 1 процесс, а хотелось бы эту задачу решить за меньшее время. Не декомпозируя задачу на независимые ветви или части мы не сможем использовать остальные процессы, а просто решать 5 задач, которые абсолютно независимы не всегда представляется возможным. С другой стороны эти 5 независимых задач, которые решаются, например, вами на многопроцессорной СОД могут представлять единую задачу. Такой параллелизм называется вертикальным. В отличие от горизонтального, когда 1 операция, выполняющаяся в каждом узле имеет несколько независимых наборов данных. Этой декомпозицией занимается проектировщик программных средств или обработки данных. Как правило на крупноблочном уровне этим занимается программист, а на мелкоблочном этим занимается компилятор. То есть мы должны точно указать какие задачи, подзадачи, ветви могут выполняться параллельно и независимо, а уже результат работы компилятора может быть разделение каждого из этого узла на независимые части(иногда этим занимается программист).

4. Необходимо обеспечить синхронизацию процессов обработки данных. То есть необходимо уметь склеивать независимые ветви в единый информационный граф. Мы здесь говорим о процессах потому что, как правило, реализацию совмещения независимых ветвей берет на себя ОС. В этом случае используются такие термины как «процесс» и «ресурс».

Загрузка...