Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / 3_управление процессами.doc
Скачиваний:
77
Добавлен:
20.06.2014
Размер:
1.59 Mб
Скачать

3.3.4.2. Архитектура мультипроцессоров

Мультипроцессор с общей памятью представляет собой компьютерную систему, в которой два или более процессоров делят общий доступ к оперативной памяти. Программа, работающая на любом из ЦП, видит обычное виртуальное адресное пространство. Необычность состоит в том, что один ЦП может записать слово в ОП, а затем, считав, получить другое значение, так как другой ЦП его изменил. Каждый ЦП может адресоваться ко всей памяти. По характеру доступа к памяти различают UMA- мультипроцессоры (UniformMemoryAccess), у которых каждое слово данных может быть считано с одинаковой скоростью, иNUMA-мультипроцессоры (Non-Uniform– неоднородный доступ к памяти), которые не обладают этим свойством.

В основе простой архитектуры мультипроцессора лежит идея общей шины. Несколько ЦП и модулей памяти одновременно используют одну и ту же шину для общения друг с другом. Когда ЦП хочет прочитать слово в памяти, он вначале проверяет, свободна ли шина. Если шина свободна, ЦП выставляет на неё адрес нужного ему слова, подает несколько управляющих сигналов и ждет, пока память не выставит нужное слово на шину данных. Если шина занята, ЦП ждет, пока она не освободится. Такая система будет работать для небольшого количества ЦП. При 32 или 64 ЦП шина будет все время занята, производительность системы будет полностью ограничена пропускной способностью шины. Решение проблемы – добавить каждому ЦП кэш. Кэш может располагаться внутри микросхемы ЦП или рядом с ЦП, на процессорной плате. Обращений к шине будет меньше.

Другая архитектура – координатный коммутатор – специальная схема соединения nпроцессоров иkмодулей памяти (рис. 15). На каждом пересечении горизонтальной (входной) и вертикальной (выходной) линий располагается координатный переключатель – небольшой переключатель, который может быть разомкнут или замкнут. На рис. 15 изображены три пары одновременно замкнутых переключателя, что позволяет соединить одновременно пары {ЦП, модуль памяти}: {010, 000}, {110, 010}, {101, 110}. Число комбинаций в данном примере равно числу вариантов расположения на шахматной доске восьми ладей так, чтобы они не били друг друга. Координатный коммутатор представляет собой неблокирующую сеть, т.е. ни один ЦП не получает отказа соединения по причине занятости переключателя, если модуль памяти свободен; не требуется планирования доступа к памяти. Недостаток: число переключателей пропорционально квадрату от числа ЦП. При 1000 ЦП и 1000 модулях памяти понадобится миллион переключателей.

Рис. 15. Схема координатного коммутатора

Другая архитектура мультипроцессоров базируется на простых коммутаторах 22.

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

Для мультипроцессоров UMAс общей шиной предел – несколько десятков ЦП, а мультипроцессоры с координатными коммутаторами или коммутаторной сетью требуют много дорого аппаратного обеспечения.

Мультипроцессоры NUMAпредоставляют единое адресное пространство для всех ЦП, но доступ к локальной памяти у них быстрее, чем к удалённым модулям. Если доступ к удалённой памяти не является скрытым (кэширование не применяется) система называетсяNC-NUMA(NoCachingNUMA). При наличии когерентных кэш-модулей система называется СС-NUMA(Cache-CoherentNUMA) – системаNUMAс когерентным кешированием. Популярный подход при построении больших мультипроцессоровCC-NUMA– каталоговый мультипроцессор. Идея состоит в поддержании БД, содержащей информацию о том, где располагается каждая строка кеша и о ее состоянии. При обращении к строке кеша БД получает запрос на поиск этой строки и выдает ее состояние ("чистая" или "грязная"). Так как запросы этой БД направляются по каждой команде процессора, обращающейся к памяти, эта база должна храниться в крайне быстром аппаратном устройстве, способном выдавать ответ за долю цикла шины.