Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по ВС.doc
Скачиваний:
227
Добавлен:
22.03.2016
Размер:
1.1 Mб
Скачать

Наибольшее распространение получили следующие аппаратные механизмы, реализующие протокол когерентности кэш-памяти: это протоколы наблюдения и на основе справочника.

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

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

Простейший протокол сквозной записи предполагает, что запись в локальную память какого-либо процессора сопровождается записью в глобальную память, а все остальные процессоры объявляют свои копии недействительными. Недостаток – большой трафик общей шины.

Второй протокол с обратной записью несколько изменяет процедуру записи в глобальную память. Запись в нее модифицированного блока производится при соблюдении одного из условий: при удалении модифицированного блока из локальной памяти и при обращении другого процессора к своей копии этого блока. Этот протокол далек от идеального, так как процессоры не узнают об изменении блока до его записи в глобальную память. Избежать этого недостатка можно, если процессор, модифицирующий блок, получает исключительные права на него.

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

Все остальные протоколы представляют собой модификации этих трех и разработаны для различных мультипроцессорных систем.

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

Поскольку вся информация о состоятельности кэш-памятей сосредоточена в одном месте, то протокол полного справочника довольно прост. Однако недостатком такого справочника служит его размер, который пропорционален общему объему памяти. Для больших систем, состоящих из тысяч процессоров, накладные расходы на организацию справочника становятся слишком большими.

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

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

Подсистемы коммутации

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

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

Общая разделяемая шина представляет собой первый крайний случай коммуникационной сети; обмен данными между всеми ПЭ происходит с использованием этой шины (рисунок 9.х,а). Однако, поскольку результаты в ПЭ формируются одновременно, а интенсивность обменов между отдельными ПЭ во многих случаях очень высока, применение разделяемой шины может вызывать значительные потери производительности. Второй крайний случай – синхронная полносвязанная коммуникационная сеть; она связывает любой ПЭ с каждым из всех остальных отдельными каналами связи. Такая сеть, объединяющая nмодулей, требуетn(n-1) каналов связи. На рисунке 9.х,б такая сеть приведена для восьми ПЭ. При большом числе процессорных элементов такая сеть становится нереализуемой.

Рисунок 9.х. Общая разделяемая шина (а) и полносвязанная коммуникационная сеть (б)

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