Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ВС для ГОС (ПИ) / Орлов, Цилькер - Организация ЭВМ (2004)

.pdf
Скачиваний:
458
Добавлен:
25.04.2015
Размер:
9.6 Mб
Скачать

Мультипроцессорная когерентность кэш-памяти 5 1 5

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

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

Рис. 11.14, Протокол MESI —диаграмма состояний без учета однократной записи

Согласно протоколу MESI, каждая строка бывает в одном из четырех возможных состояний (в дальнейшем будем ссылаться на эти состояния с помощью букв М,Е,SиI):

-Модифицированная (М, Modified) — данные в кэш-строке, помеченной как М, были модифицированы, но измененная информация пока не переписана в основную память. Это означает, что информация, содержащаяся в рассматриваемой строке, достовернатолько в данном кэше, а в основной памяти и остальных кэшах — недостоверна.

-Эксклюзивная (Е, Exclusive) — данная строка в кэше не подвергалась изменению посредством запроса на запись, совпадает с аналогичной строкой в основной памяти, но отсутствует в любом другом локальном кэше. Иными словами, она достоверна в этом кэше и недостоверна в любом другом.

5 1 6 Глава 11. Организация памяти вычислительных систем

-Разделяемая (S, Shared) — строка в кэше совпадает с аналогичной строкой в основной памяти (данные достоверны) и может присутствовать в одном или нескольких из прочих кэшей.

-Недействителъная (I, Invalid) — кэш-строка, помеченная как недействительная, не содержит достоверных данных и становится логически недоступной.

Мультипроцессорная когерентность кэш-памяти 5 1 7

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

Предположим, что один из процессоров делает запрос на чтение из строки, которой в текущий момент нет в его локальной кэш-памяти (промах при чтении). Запрос будет широковещательно передан по шине. Если ни в одном из кэшей не нашлось копии нужной строки, то ответной реакции от контроллеров наблюдения других процессоров не последует, строка будет считана в кэш запросившего процессора из основной памяти, а копии будет присвоен статус Е. Если в каком-либо из локальных кэшей имеется искомая копия, от соответствующего контроллера слежения поступит отклик, означающий доступ к совместно используемой строке. Все копии рассматриваемой строки во всех кэшах будут переведены в состояние S, вне зависимости от того, в каком состоянии они были до этого (М, Е или S).

Когда процессор делает запрос на запись в строку, отсутствующую в его локальной кэш-памяти (промах при записи), перед загрузкой в кэш-память строка должна быть считана из основной памяти (ОП) и модифицирована. Прежде чем процессор сможет загрузить строку, он должен убедиться, что в основной памяти действительно находится достоверная версия данных, то есть что в других кэшах отсутствует модифицированная копия данной строки. Формируемая в этом случае последовательность операций носит название чтения с намерением модификации (RWITM, Read With Intent To Modify). Если в одном из кэшей обнаружилась копия нужной строки, причем в состоянии М, то процессор, обладающий этой копией, прерывает RWITM-последовательность и переписывает строку в ОП, после чего меняет состояние строки в своем кэше на I. Затем RWITM-последователь- ность возобновляется и делается повторное обращение косновной памятидля считывания обновленной строки. Окончательным состоянием строки будет М, при котором ни в ОП, ни в других кэшах нет еще одной достоверной ее копни. Если копия строки существовала в другом кэше и не имела состояния М, то такая копия аннулируется и доступ к основной памяти производится немедленно.

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

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

Проиллюстрируем этапы, когда процессор 2 пытается прочитать содержимое ячейки х" (рис. 11.16). Сперва наблюдается кэш-промах по чтению и процессор пытается обратиться к основной памяти. Процессор 1 следитза шиной, обнаруживает обращение к ячейке, копия которой есть в его кэш-памяти и находится в

5 1 8 Глава 11. Организация памяти вычислительных систем

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

Мультипроцессорная когерентность кэш-памяти 5 t 9

сор 2 получает строку, содержащую х", и загружает ее в свою кэш-память. Обе копии помечаются как S.

До сих пор рассматривалась версия протокола MESI без однократной записи. С учетом однократной записи диаграмма состояний, изображенная на рис. 11.14, немного видоизменяется. Все кэш-промахи при чтении вызывают переход в состояние S. Первое попадание при записи сопровождается переходом в состояние Е (так называемый переход однократной записи). Следующее попадание при записи влечет за собой изменение статуса строки на М.

Протоколы на основе справочника

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

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

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

Дли каждой строки общего пользования, копия которой может быть помещена в кэш-память, в справочнике выделяется одна запись, хранящая указатели на копии данной строки. Кроме того, в каждой записи выделен один бит модификации (D), показывающий, является ли копия «грязной»- (D = 1 — dirty) или «чистой»- (D=0 — clean), тоесть изменялосьлисодержимоестроки вкэш-памятипослетого, как она была туда загружена. Этот бит указывает, имеет ли право процессор производить запись в данную строку.

В настоящее время известны три способа реализации протоколов обеспечения когерентности кэш-памяти на основе справочника: полный справочник, ограниченные справочники и сцепленные справочники.

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

5 2 0 Главе 11.Организацияпамяти вычислительныхсистем

Рис. 11.17. Протокол обеспечения когерентности кэш-памяти с полным справочником

В системе из N процессоров каждая запись справочника будет содержать Nоднобитовых указателей. Если в соответствующей локальной кэш-памяти присутствует копия данных, бит-указатель устанавливается в 1, иначе — в 0. Схемас полным справочником показана на рис. 11.17. Здесь предполагается, что копия строки имеется в каждом кэше. Каждой строке придаются два индикатора состояния: бит достоверности (V, Valid) и бит владения (Р, Private). Если информация в строке корректна, ее V-бит устанавливается в 1. Единичное значение Р-бита указывает, что данному процессору предоставлено право на запись в соответствующую строку своей локальной кэш-памяти.

Предположим, что процессор 2 производит запись в ячейку х. В исходный момент процессор не получил еще разрешения на такую запись. Он формирует за- В ответ на запрос во все кэши, где есть копии строки, содержащей ячейку х, выдаетсясигналаннулированияимеющихсякопий. Каждый кэш, получившийэтотсигнал, сбрасывает бит достоверности аннулируемой строки (V-бит) в 0 и возвращает контроллеру справочника сигнал подтверждения. После приема всех сигналов подтверждения контроллер справочника устанавливает в единицу бит модификации (D-бит) соответствующей записи справочника и посылает процессору 2 сигнал, разрешающий запись в ячейку х. С этого момента процессор 2 может продолжить запись в собственную копию ячейки х, а также в основную память, если в кэше реализована схема сквозной записи.

Основные проблемы протокола полного справочника связаны с большим количеством записей. Для каждой ячейки в справочнике системы из N процессоров требуется N+ 1 бит, то есть с увеличением числа процессоров коэффициент сложности возрастает линейно. Протокол полного справочника допускает наличие в каждом локальном кэше копий всех совместно используемых ячеек. На практике такая возможность далеко не всегда остается востребованной — в каждый конкретный момент обычно актуальны лишь одна или несколько копий. В протоколе с ограниченными справочниками копии отдельной строки вправе находиться только

Мультипроцессорная когерентность кэш-памяти 5 2 1

в ограниченном числе кэшей — одновременно может быть не более чем п копий строки, при этом число указателей в записях справочника уменьшается до п (n < N). Чтобы однозначно идентифицировать кэш-память, хранящую копию, указатель вместо одного бита должен состоять из log2N биT, а общая длина указателей в каждой записи справочника вместо N бит будет равна пlog2N бит. При постоянном значении п темпы роста коэффициента сложности ограниченного справочника по мере увеличения размера системы ниже, чем в случае линейной зависимости.

Когда одновременно требуется более чем « копий, контроллер принимает решение, какие из копий сохранить, а какие аннулировать, после чего производятся соответствующие изменения в указателях записей справочника.

Метод сцепленных справочников также имеет целью сжать объем справочника. В немдля хранения записей привлекается связный список, который может быть реализован как односвязный (однонаправленный) и двусвязный (двунаправленный).

Рис. 11.18. Протоколобеспечения когерентности кэш-памяти сосцепленным справочником

В односвязном списке (рис. 11.18) каждая запись справочника содержит указатель на копию строки в одном из локальных кэшей. Копии одноименных строк

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

впроцессоре 5 нет копии ячейки х и он обращается за ней к основной памяти. Указатель в справочнике изменяется так, чтобы указывать на кэш с номером 5, а указатель в кэше 5 — таким образом, чтобы указывать на кэш 2. Для этого контроллер основной памяти наряду с затребованными данными должен передать в кэш-па- мять 5 также и указатель на кэш-память с номером 2. Лишь после того, как будет сформирована вся структура цепочки, процессор 5 получит разрешение на доступ

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

5 2 2 Глава11.Организация памяти вычислительных систем

ния. Цепочка должна обновляться и при удалении копии из какой-либо кэш-па- мяти.

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

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

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

Протокол Tang. Здесь присутствует централизованный глобальный справочник, содержащий полную копию всей информации из каталогов каждого из локальных кэшей [212]. Это приводит к проблеме узких мест, а также требует поиска соответствующих входов.

Протокол Censier. В схеме справочника Censier для указания того, какие процессоры содержат локальную копию данного блока памяти, используется битовый вектор указателей. Такой вектор имеется для каждого блока памяти. Недостатками метода является его неэффективность при большом числе процессоров, и, кроме того, для обновления строк кэша требуется доступ к основной памяти [155].

Протокол Archibald. Схема справочника Archibald — это пара замысловатых схем для иерархически организованных сетей процессоров, С детальным описанием этого протокола можно ознакомиться в [52].

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

Контрольные вопросы

1.Проанализируйте влияние особенностей ВС с общей памятью и ВС с распределенной памятью на разработку программного обеспечения. Почему эти ВС называют соответственно сильно связанными и слабо связанными?

2.Поясните идею с чередованием адресов памяти. Из каких соображений выбирается механизм распределения адресов? Как он связан склассом архитектуры ВС?

Контрольные вопросы 5 2 3

3.Дайте сравнительную характеристику однородного и неоднородного доступов кпамяти.

4.В чем заключаются преимущества архитектуры СОМА?

5.Проведите сравнительный анализ моделей с кэш-когерентным и кэш-некоге- рентным доступом к неоднородной памяти.

6.Сформулируйте достоинства и недостатки архитектуры без прямого доступа к удаленной памяти.

7.Объясните смысл распределенной и совместно используемой памяти.

8.Разработайте свой пример, иллюстрирующий проблему когерентности кэшпамяти.

9.Охарактеризуйте особенности программных способов решения проблемы когерентности, выделите их преимущества и слабые стороны.

10.Сравните методики записи в память с аннулированием и записи в память с трансляцией, акцентируя их достоинства и недостатки.

11.Дайте сравнительную характеристику методов для поддержания когерентности в мультипроцессорных системах.

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

13.Какой из протоколов наблюдения наиболее популярен? Обоснуйте причины повышенного к нему интереса.

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

Глава12

Топологии вычислительных систем

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

Топологию сети межсоединений (CMC) определяет множество узлов N объединенных множеством каналов С. Связьмеждуузламиобычнореализуется подвухточечной схеме (point-to-point). Любые два узла, связанные каналом связи, называют смежными узлами или соседями. Каждый канал Ссоединяетодин узел-источник (source node) х с одним узлом-получателем (recipient node) у, где х,

Узел-источник, служащий началом канала с, будем обозначать sc а узел-по- лучатель — второй конец канала — rс. Часто пары узлов соединяют два канала - по одному в каждом направлении. Канал с = (х, у) характеризуется шириной (wc или wxy) — числом сигнальных линий; частотой (fс или fxy) — скоростью передачи битов по каждой сигнальной линии; задержкой (tc или txy) — временем пересылки бита из узлах в узелу. Для большинства каналов задержка находится в прямой зависимости отфизическойдлинылинии связи (lс) и скорости распространения сигнала (v):lc =vtc Полоса пропускания канала bс определяется выражением bc = wfc.

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

Узел в сети может быть терминальным, то есть источником или приемником данных, коммутатором, пересылающим информацию с входного порта на выходной, или совмещать обе роли. В сетях снепосредственнымисвязями (direct networks)