Протокол MSI - MSI protocol

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

Обзор

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

  • Modified: Блок был изменен в тайник. В этом случае данные в кэше несовместимы с резервным хранилищем (например, объем памяти ). Кэш с блоком в состоянии «M» отвечает за запись блока в резервное хранилище, когда он вытесняется.
  • Shared: этот блок не изменен и существует в состоянии только для чтения по крайней мере в одном кэше. Кэш может удалить данные, не записывая их в резервное хранилище.
  • яnvalid: этот блок либо отсутствует в текущем кэше, либо был признан недействительным по запросу шины, и должен быть получен из памяти или другого тайник если блок должен храниться в этом кэше.[1]

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

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

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

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

M S я
MКрасный XNКрасный XNЗеленая галочкаY
SКрасный XNЗеленая галочкаYЗеленая галочкаY
яЗеленая галочкаYЗеленая галочкаYЗеленая галочкаY

Государственный аппарат

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

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

  • PrRd: запрос процессора на чтение блока кэша.
  • PrWr: запрос процессора на запись блока кэша.
Диаграмма состояний шинных транзакций для протокола MSI.

Вдобавок есть запросы со стороны шины. Они включают:

  • BusRd: когда в кеш-памяти процессора происходит промах при чтении, он отправляет запрос BusRd по шине и ожидает получить взамен блок кеша.
  • BusRdX: когда в кэш процессора происходит промах при записи, он отправляет запрос BusRdX по шине, который возвращает блок кэша и делает недействительным блок в кешах других процессоров.
  • BusUpgr: при попадании записи в кэш процессора он отправляет запрос BusUpgr на шину, чтобы сделать блок в кэше других процессоров недействительным.
  • Flush: запрос, который указывает, что весь блок кеша записывается обратно в память.[2]

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

  • Недействительным:
    • На PrRd выдается BusRd, и состояние изменяется на Общий.
    • На PrWr выдается BusRdX и состояние изменяется на Изменено.
    • На BusRd, BusRdX или BusUpgr остается недопустимый блок Недействительным.
  • Общий:
    • На PrRd блок остается в Общий штат.
    • На PrWr выдается BusUpgr и состояние изменяется на Изменено.
    • На BusRd блок остается в Общий штат.
    • На BusRdX или BusUpgr блок переходит в Недействительным.
  • Изменено:
    • На PrRd или PrWr блок остается в Изменено штат.
    • На BusRd блок кэша сбрасывается на шину, и состояние изменяется на Общий.
    • На BusRdX блок кэша сбрасывается на шину, и состояние изменяется на Недействительным.[2]
    • BusUpgr невозможен. Обратите внимание, что, находясь в Изменено состояние в одном конкретном процессоре, блок кеша должен находиться в Недействительным состояние во всех других процессорах, поскольку Изменено состояние допускается ни в одном процессоре или только в одном процессоре. Это эффективно исключает возможность наличия BusUpgr на шине, что потребует, чтобы этот блок находился в Общий состояние в одном из процессоров, который, как видно выше, выдает PrWr.

Применение

Этот протокол похож на тот, который используется в SGI 4D машина.[3]

Варианты

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

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

использованная литература

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