stringtranslate.com

MSI-протокол

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

Обзор

В MSI каждый блок, содержащийся внутри кэша, может иметь одно из трех возможных состояний:

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

Когда запрос на чтение поступает в кэш для блока в состоянии «M» или «S», кэш предоставляет данные. Если блок отсутствует в кэше (в состоянии «I»), он должен проверить, что блок не находится в состоянии «M» в каком-либо другом кэше. Различные архитектуры кэширования обрабатывают это по-разному. Например, архитектуры шин часто выполняют слежку , когда запрос на чтение транслируется во все кэши. Другие архитектуры включают каталоги кэша , которые имеют агентов (каталоги), которые знают, в каких кэшах в последний раз были копии определенного блока кэша. Если другой кэш имеет блок в состоянии «M», он должен записать данные обратно в резервное хранилище и перейти в состояния «S» или «I». Как только любая строка «M» записана обратно, кэш получает блок либо из резервного хранилища, либо из другого кэша с данными в состоянии «S». Затем кэш может предоставить данные запрашивающей стороне. После предоставления данных блок кэша находится в состоянии «S».

Когда запрос на запись поступает в кэш для блока в состоянии «M», кэш локально изменяет данные. Если блок находится в состоянии «S», кэш должен уведомить все другие кэши, которые могут содержать блок в состоянии «S», о том, что они должны вытеснить блок. Это уведомление может быть сделано с помощью отслеживания шины или каталога, как описано выше. Затем данные могут быть локально изменены. Если блок находится в состоянии «I», кэш должен уведомить все другие кэши, которые могут содержать блок в состояниях «S» или «M», о том, что они должны вытеснить блок. Если блок находится в другом кэше в состоянии «M», этот кэш должен либо записать данные в резервное хранилище, либо предоставить их запрашивающему кэшу. Если на этом этапе в кэше еще нет локального блока, блок считывается из резервного хранилища перед изменением в кэше. После изменения данных блок кэша находится в состоянии «M».

Для любой заданной пары кэшей разрешенные состояния заданной строки кэша следующие:

Государственная машина

Диаграмма состояний запросов процессора для протокола MSI

Запросы процессора к кэшу включают в себя:

Диаграмма состояний транзакций шины для протокола MSI

Кроме того, есть запросы со стороны автобуса. Они включают:

Переходы состояний:

Использование

Этот протокол аналогичен протоколу, используемому в машине SGI 4D. [3]

Варианты

Современные системы используют варианты протокола MSI для уменьшения объема трафика в когерентном соединении. Протокол MESI добавляет состояние «Exclusive» для уменьшения трафика, вызванного записью блоков, которые существуют только в одном кэше. Протокол MOSI добавляет состояние «Owned» для уменьшения трафика, вызванного обратной записью блоков, которые считываются другими кэшами. Протокол MOESI делает обе эти вещи.

Смотрите также

Ссылки

  1. ^ Фуксен, Р. (2010-10-01). «Как решать вопросы сертификации многоядерных платформ ИМА: Текущее состояние и потенциальные решения». 29-я конференция по цифровым авиационным системам . стр. 5.E.3–1-5.E.3-11. doi :10.1109/DASC.2010.5655461. ISBN 978-1-4244-6616-0. S2CID  16461614.
  2. ^ ab Solihin, Yan (2016). Основы параллельной многоядерной архитектуры . Серия Chapman & Hall/CRC Computational Science.
  3. ^ Су, Тэвон (декабрь 2006 г.). «ИНТЕГРАЦИЯ И ОЦЕНКА ПРОТОКОЛОВ КОГЕРЕНТНОСТИ КЭША ДЛЯ МНОГОПРОЦЕССОРНЫХ SOCS» (PDF) .