Если все процессоры имеют равный доступ ко всем модулям памяти и всем УВВ, и каждый процессор взаимозаменяем с любым другим процессором, такая многопроцессорная система называется симметричной многопроцессорной системой (англ.: Symmetric Multiprocessor, SMP). В данной лекции мы будем говорить именно о таких системах.
Несмотря на наличие общей памяти, работа многопроцессорных систем всё равно сложна. Несколько процессоров могут пытаться считать слово из памяти, а в это же время несколько других процессоров пытаются записать то же самое слово. При этом сеть межсоединений может доставлять пакеты от разных процессоров к одному и тому же модулю памяти или процессору не в том порядке, в котором они были посланы. К этому всему добавляется дублирование памяти. Если не принять специальных мер, то такая ЭВМ с точки зрения программиста и пользователя будет вести себя абсолютно непредсказуемым образом.
Специальные меры сводятся к реализации так называемых моделей согласованности. Модель согласованности — это такой набор правил для программного и аппаратного обеспечения, что при выполнении правил программным обеспечением, ему гарантируется получение результата, правилами предусмотренного.
Разработано множество моделей согласованности.
Предположим, что первый процессор посылает пакет, который должен записать значение в некоторое слово памяти. После этого второй процессор посылает пакет для записи значения в то же самое слово. Спустя некоторое время после второго события, третий процессор посылает пакет, запрашивающий значение того же самого слова, и получает значение . Следует ли после этого владельцу весьма дорогостоящей ЭВМ искать изготовителя, чтобы выразить ему своё неудовольствие? Это зависит от модели согласованности, указанной в техническом описании ЭВМ.
Это — самая простая модель. При любой операции чтения из памяти возвращается значение, запрос на запись которого был послан последним. Данная модель наиболее удобна для программистов, но практически нереализуема в больших системах. Для её воплощения ЭВМ должна обладать следующими свойствами:
— иметь один модуль памяти, обслуживающий запросы в порядке очереди;
— не должно быть дублирования памяти;
— не должно быть упреждающей выборки;
— сеть межсоединений должна работать с модулем памяти по принципу коммутации каналов.
При выполнении всех этих требований повышение производительности за счёт увеличения количества процессоров будет практически полностью нейтрализоваться временем операций с памятью.
Здесь при наличии нескольких запросов на чтение и запись в ОЗУ аппаратное обеспечение определяет порядок обработки запросов по собственному усмотрению, но все процессоры наблюдают одну и ту же последовательность запросов.
Рассмотрим пример. Пусть первый процессор посылает запрос на запись в некоторое слово памяти значения 100, а второй — на запись туда же значения 200. Третий и четвёртый процессоры по два раза запрашивают значение того же самого слова из памяти. В результате, даже при отсутствии дублирования и упреждающей выборки, то есть при наличии одного экземпляра слова, могут получаться различные варианты, в частности:
W1100
W2200
R3=200
R3=200
R4=200
R4=200
W1100
R3=100
W2200
R3=200
R4=200
R4=200
W2200
R4=200
W1100
R3=100
R4=100
R4=100
Чего не может получиться при наличии одного экземпляра слова — это ситуации, когда третий процессор получит последовательность значений 100, 200, а четвёртый — 200, 100 или наоборот. Действительно, если какой-то процессор получил последовательность значений 100, 200, это значит что операция W1100 завершилась ранее операции W2200, что противоречит тому, что другой процессор получил последовательность 200, 100.
Согласованность по последовательности полезна, но она требует:
— отсутствия дублирования памяти,
— отсутствия упреждающей выборки.
И то, и другое ограничивает производительность системы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.