Примером может служить протокол, используемый в кэш-памяти МП i486.
В таблице 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 – диаграмма состояний.
Основные переходы.
При запросах на чтение (R):
Чтение (R1): М в М.Запрос на чтение приводит к кэш-попаданию, данные находятся в кэш-памяти и передаются в процессор.
Чтение (R2): Е в Е. Как и в предыдущем случае, запрос на чтение приводит к кэш-попаданию, данные находятся в кэш-памяти и передаются в процессор.
Чтение (R3): S в S.Запрос на чтение приводит к кэш-попаданию, данные находятся в кэш-памяти и передаются в процессор. Суммируя эти случаи, можно сказать, что, согласно принципу организации кэш-памяти, кэш-попадание при запросе на чтение не влияет на состояние кэш-памяти и не изменяет хранящуюся в памяти информацию.
Чтение (R4): I в E.Запрос на чтение приводит к кэш-промаху, данных в кэш-памяти нет. Кэш-контроллер запускает внешний цикл чтения для того, чтобы прочитать строку из памяти и заполнить строку кэш-памяти. (Строка кэш-памяти заполняется только при кэш-промахах). Адрес внешнего цикла чтения доступен контролерам всех устройств кэш-памяти. При этом возможны случаи попадания (в других кэшах в строки, в состояниях M, E или S). При отрицательных результатах просмотров производится операция заполнения кэш-строки и приWT = 0(Установлен режим обратной записи) состояние строки определяется как E. Запись производится и в строку кэш-памяти, и в строку основной памяти.
Чтение (R5): I в S.Как и в предыдущем случае, запрос на чтение приводит к кэш-промаху, данных в кэш-памяти нет. Кэш-контроллер запускает внешний цикл чтения для того, чтобы прочитать строку из памяти и заполнить строку кэш. При этом адрес внешнего цикла чтения также доступен контролерам всех кэшей. При этом возможны случаи попадания (в других кэшах в строки, в состояниях M, E или S). При любых результатах просмотров при WT = 1(режим сквозной записи) производится чтение памяти с отправкой данных в процессор, а состояние строки кэш определяется как S.
При попаданиях в режимах просмотров других кэшей в состояниях: M или E производится сохранение данных этих строк в памяти и определение их состояний, как S.
Чтение (SR1): М в S.
Чтение (SR2): E в S.
При запросах на запись (W):
Запись (W1): М в М.Запрос на запись приводит к кэш-попаданию, данные находятся в кэш-памяти и перезаписываются. Согласно протоколу MESI, это соответствует стратегии кэш-памяти с отложенной записью, поэтому на внешнюю шину не посылается запрос на выполнение цикла отложенной записи.
Запись (W2): Е в М.Как и в предыдущем случае, запрос на запись приводит к кэш-попаданию, благодаря чему перезапись кэш-строки не требуется. Кэш-контроллер перезаписывает кэш-строку и отмечает ее как модифицированную. Согласно протоколу MESI, этот случай также соответствует стратегии кэш-памяти с отложенной записью, поэтому запрос на выполнение цикла отложенной записи на внешнюю шину не посылается.
Запись (W3): S в E.Запрос на запись приводит к кэш-попаданию. Поскольку исходная строка помечена как разделяемая, она может храниться и в других кэш-блоках. Согласно протоколу MESI, разделяемые строки в кэшах других процессоров должны быть объявлены недействительными. Кэш-контроллер обновляет кеш-строку своего процессора и при WT = 0 определяет ее как E, запускает цикл записи на внешнюю шину для перевода кэш-строк других процессоров, опознавших адрес строки записи, в состояние Iи обновленияоперативной памяти.
Запись (SW3): S в I.При попаданиях в режимах просмотров других блоков кэш-памяти в состояниях Sпроизводится изменение их состояния на I.
Запись (W4): S в S.В этом случае запрос на запись тоже приводит к кэш-попаданию. Поскольку исходная строка помечена как разделяемая, она может храниться и в других блоках кэш-памяти. Согласно протоколу MESI, разделяемые строки в блоках кэш-памяти других процессоров должны быть объявлены недействительным. Кэш-контроллер обновляет кеш-строку своего процессора и при WT = 1 определяет ее как S, запускает цикл записи на внешнюю шину для перевода кэш-строк других процессоров, опознавших адрес строки записи, в состояние Iи обновленияоперативной памяти.
Запись (SW4): S в I.При попаданиях в режимах просмотров других кэшей в состояниях: Sпроизводится определение их состояний, как I.
Запись (W5): I в I. Запрос на запись приводит к кэш-промаху, данных в кэш-памяти нет. Протокол MESI не включает в себя стратегию записи с размещением. По этой причине нужный элемент данных из основной памяти пересылается в процессор, но в кэш-память не загружается. Кэш-строка остается недействительной.
Дата добавления: 2021-01-26; просмотров: 419;