Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 3.doc
Скачиваний:
18
Добавлен:
25.03.2015
Размер:
412.67 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В односвязном списке (рис. 3.13) каждая запись справочника содержит указатель на копию строки в одном из локальных кэшей. Копии одноименных строк в разных кэшах системы образуют однонаправленную цепочку. Для этого в их тегах предусмотрено специальное поле, куда заносится указатель на кэш-память, содержащую следующую копию цепочки. В тег последней копии цепочки помещается специальный символ-ограничитель. Сцепленный справочник допус-кает цепочки длиной в N, то есть поддерживает N копий ячейки. При создании еще одной копии цепочку нужно разрушить, а вместо нее сформировать новую. Например, пусть в процессоре 5 нет копии ячейки x и он обращается за ней к основной памяти. Указатель в справочнике изменяется так, чтобы указывать на кэш с номером 5, а указатель в кэше 5 – таким образом, чтобы указывать на кэш 2. Для этого контроллер основной памяти наряду с затребованными данными дол-жен передать в кэш-память 5 также и указатель на кэш-память с номером 2. Лишь после того, как будет сформирована вся структура цепочки, процессор 5 получит разрешение на доступ к ячейке x. Если процессор производит запись в ячейку, то вниз по тракту, определяемому соответствующей цепочкой указателей, посыла-ется сигнал аннулирования. Цепочка должна обновляться и при удалении копии из какой-либо кэш-памяти.

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

Недостатками схем на основе справочника являются:

  • возникновение «заторов» в централизованном контроллере;

  • коммуникационные издержки в трактах между контроллерами локальных кэшей и центральным контроллером.

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

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

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

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

  • Протокол Archibald. Схема справочника Archibald – это пара замыслова-тых схем для иерархически организованных сетей процессоров.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]