Организация когерентности системы кэш-памяти в многопроцессорных системах с общей оперативной памятью. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Организация когерентности системы кэш-памяти в многопроцессорных системах с общей оперативной памятью.



Наибольшая эффективность использования кэш-памяти достигается при использовании обратной записи.

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

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

1. Протоколы на основе справочника (directory based). Информация о состоянии блока физической памяти содержится только в одном месте, называемом справочником (физически справочник может быть распределен по узлам системы).

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

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

Имеется множество протоколов наблюдения для реализации когерентности локальных блоков кэш-памяти.

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

Это самый простой протокол наблюдения. На практике обычно используются более сложные протоколы.

Для примера рассмотрим протокол когерентности, разработанный для систем кэш-памяти для многопроцессорных систем на основе МП IA-486.

Это один из вариантов протокола MESI (Modified, Exclusive, Shared, Invalid).

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

Варианты протоколов MESI. Протокол MESI приписывает каждой кэш-строке одно из четырех состояний, которые контролируются двумя битами MESI. Аббревиатура MESI означает Modified (модифицированная), Exclusive (эксклюзивная), Shared (разделяемая), Invalid (недействительная). Эти четыре термина определяют четыре возможных состояния кэш-строки. Состояние кэш-строки может быть изменено:

· процессором (посредством операций чтения, записи или внутренней проверки),

· внешними логическими устройствами, например, другими процессорами или контроллером кэш-памяти L2 (посредством внешней проверки).

Характеристики основных состояний строк:

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

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

Разделяемая (S): разделяемая кэш-строка может храниться в нескольких кэш-устройствах системы; она, как показывает название S, используется совместно несколькими кэш-устройствами. Запросы на чтение в разделяемую кэш-строку всегда выполняются через кэш-память. Запросы на запись к разделяемой кэш-строке всегда переключаются на внешнюю шину данных независимо от стратегии кэш-памяти (сквозная запись или отложенная запись); поэтому кэш-строки в других кэш-модулях объявляются недействительными. Эта операция производится в цикле внешней проверки с использованием адреса, выдаваемого при выполнении цикла шины. При этом содержимое основной памяти также обновляется. Операция записи в локальную кэш-память обновляет только ее содержимое, которое недействительным не объявляется.

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

Протокол MESI имеет множество вариантов, в зависимости от особенностей реализации многопроцессорных систем и режимов работы.

Здесь рассматриваются только два варианта протоколов MESI.

Вариант 1. Вариант протокола MESI со сквозной записью без размещения.

Вариант характеризуется:

· использованием сигнала переключения режима записи – МТ (Значение МТ=0 соответствует режиму обратной (задержанной) записи, а значение МТ=1 – режиму сквозной записи без размещения;

· использованием при записи в оперативную память только форматов данных в 32 бита (двойное слово).

Примером может служить протокол, используемый в кэш-памяти МП i 486.

В таблице 3 перечисляются состояния MESI и их свойства.

 

Таблица 3. Четыре состояния MESI

Состояние MESI Кэш-строка действительна? Значения в памяти Есть копия в кэш-памяти другого узла Запрос на запись обращается к 1)
М да недействительны нет кэш-памяти
E да действительны нет кэш-памяти
S да действительны возможно кэш/подсистема памяти
I нет неизвестно возможно подсистема памяти

1) подсистема памяти – это основная память или кэш L2

 

Состояние строки кэш используется, во-первых, для определения процессором ВМ возможности локального, без выхода на шину, доступа к данным в кэш-памяти, а во-вторых, – для управления механизмом когерентности.

Для управления режимом работы механизма когерентности используется бит WT, единичное состояние которого задает режим сквозной (write-through) записи, а состояние 0 – режим обратной (write-back) записи в кэш-память. Но действие бита WT=1, являетсяне прямым, а реализуемым через запрет на использование состояний E и M, в которых всегда используется обратная запись. Для строк в состояниях I используется сквозная запись без размещения, в состояниях S – с размещением (с модификацией строки в кэш памяти).

При исполнении команд чтения и записи состояние строки кэш-памяти, к которой выполняется доступ, определяется таблицей 4.

 

Таблица 4 Переходы состояний кэш памяти

Исх. состояние строки Состояние после чтения Состояние после записи
I Если WT=0, тогда Е, иначе S; Обновление строки путем ее чтения из основной памяти Сквозная запись в основную память; I
S S Сквозная запись в основную память; Если WT = 0 тогда Е, иначе S
Е Е М задержанная (обратная) запись
М М М задержанная (обратная) запись

 

Промах чтения в кэш-памяти заставляет вызвать строку из основной памяти с размещением в кэш и сопоставить ей состояние Е или S, в зависимости от значения бита WT. Кэш-память заполняется только при промахах чтения.

При WT=0 (режим обратной записи) состояние строки кэш определяется как E.

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

При WT=1 (режим сквозной записи) состояние кэш-строки определяется как S, но по сути оно могла бы определиться как Е.

Дальнейшие операции записи и чтения при WT=1 оставляют кэш-строку в состоянии S, для которого определена только сквозная запись.

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

почтительным.

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

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

На рисунке 7.9 показана соответствующая диаграмма переходов.

 

Обозначения: R№ – Изменение состояния строк при операциях чтения. W№ – Изменение состояния строк при операциях записи. SR№ – Изменение состояния строк кэшей других процессоров при чтении (Операции просмотров при чтении). SW№ – Изменение состояния строк кэшей других процессоров при записи (Операции просмотров при записи).

Рис. 7.9. Протокол MESI – диаграмма состояний.

 

Основные переходы.



Поделиться:


Последнее изменение этой страницы: 2021-04-04; просмотров: 128; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.17.20 (0.011 с.)