показан простой пример, иллюстрирующий эту проблему, где
А и
В –
кэшированные копии элементов
А и
В в основной памяти. Когерентное
(адекватное) состояние кэша и основной памяти, когда
А =
А &
В =
B,
изображено на рис. 6.2,
а. Во втором случае (рис. 6.2,
б) предполагается
использование
кэш-памяти
с
обратной
записью,
когда
ЦП
записывает
значение
550
в
ячейку
А.
В
результате
А
содержит
новое
значение,
а в основной памяти осталось старое значение – 100. При попытке вы-
вода
Аиз
памяти будет получено
старое
значение.
В
третьем
случае
(рис.
6.2,
в)
подсистема
ввода/вывода
вводит
в ячейку памяти
В новое значение 440, а в кэш-памяти осталось старое
значение
В.
ЦП
ЦП
ЦП
а б в
Кэш
А
B
Память
АBВвод/вывод
Кэш
А
B
Память
АBВвод/вывод
Кэш
А
B
Память
АBВвод/вывод
Рис. 6.2. Кэш и память когерентны: A = A & B = B (a), кэш и память некогерентны: A ≠ A(б), кэш и память некогерентны: В ≠ В(в)
Обычно в малых мультипроцессорах (с небольшим количеством про- цессоров) используется аппаратный механизм, называемый протоколом когерентности кэш-памяти, позволяющий решить эту проблему.
Основное преимущество SMP – относительная простота про- граммирования. В ситуации, когда все процессоры имеют одинаково быстрый доступ к общей памяти, вопрос о том, какой из процессоров
какие вычисления будет выполнять, не столь принципиален, и значи-
тельная часть вычислительных алгоритмов, разработанных для после-
довательных компьютеров, может быть ускорена с помощью распарал-
леливающих и векторизирующих
трансляторов.
Архитектура SMP стала своего рода стандартом для всех совре-
менных многопроцессорных
серверов.
-
Слабосвязанные многопроцессорные системы
Существует
несколько
способов
построения
крупномасштабных
систем
с
распределённой
памятью.
-
Многомашинные системы. В таких системах отдельные ком- пьютеры объединяются либо с помощью сетевых средств, либо с помо- щью общей внешней памяти (обычно – дисковые накопители большой емкости).
-
Системы с массовым параллелизмом МРР (Massively Parallel Processor). Идея построения систем этого класса тривиальна: берутся серийные микропроцессоры, снабжаются каждый своей локальной па- мятью, соединяются посредством некоторой коммуникационной среды, например сетью.
Системы
с
массовым
параллелизмом
могут
содержать
десятки,
сотни и тысячи процессоров, объединённых коммутационными сетями
самой различной формы – от простейшей двумерной решетки до гипер-
куба. Достоинства такой архитектуры: во-первых, она использует стан-
дартные
микропроцессоры;
во-вторых,
если
требуется
высокая
тера-
флопсная производительность, то можно добавить в систему необходи-
мое количество процессоров; в-третьих, если ограничены финансы или
заранее известна требуемая вычислительная мощность, то легко подо-
брать
оптимальную
конфигурацию.
Однако есть и решающий «минус», сводящий многие «плюсы» на
нет. Дело в том, что межпроцессорное взаимодействие в компьютерах
этого класса идет намного медленнее, чем происходит локальная обра-
ботка данных самими процессорами. Именно поэтому написать эффек-
тивную программу для таких компьютеров очень сложно, а для некото-
рых алгоритмов
иногда просто невозможно.
-
Кластерные системы. Данное направление, строго говоря, не является самостоятельным, а, скорее, представляет собой комбинацию из архитектур SMP и МРР. Из нескольких стандартных микропроцессо- ров и общей для них памяти формируется вычислительный узел (обыч-
но по архитектуре SMP). Для достижения требуемой вычислительной
мощности
узлы
объединяются
высокоскоростными
каналами.
Эффективность распараллеливания процессов во многих случаях
сильно зависит от топологии соединения процессорных узлов. Идеаль-
ной является топология, в которой любой узел мог бы напрямую свя-
заться с любым другим узлом. Однако в кластерных системах это тех-
нически трудно реализуемо. Обычно процессорные узлы в современных
кластерных
системах
образуют
или
двумерную
решетку,
или
гиперкуб.
Для синхронизации параллельно выполняющихся в узлах процес-
сов необходим обмен сообщениями, которые должны доходить из лю-