Jump to content

протокол MOSI

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

Обзор состояний

[ редактировать ]

Ниже приведены разрешенные состояния данной строки кэша:

Модифицированный (M) — только один кэш имеет действительную копию блока, и значение, вероятно, будет отличаться от значения в основной памяти. Оно имеет почти то же значение, что и «грязное» состояние в кэше обратной записи, за исключением того, что измененное состояние также подразумевает эксклюзивное владение этим блоком. Грязное состояние просто означает, что значение блока отличается от значения в основной памяти, тогда как измененное подразумевает, что значение отличается от значения в основной памяти и что оно кэшируется только в одном месте.

Принадлежащий (O) — несколько кэшей могут содержать самое последнее и правильное значение блока, а значение в основной памяти может быть правильным или неверным. В каждый момент времени только один кэш может иметь собственное состояние блока. Все остальные кэши с тем же блоком должны находиться в общем состоянии. [1]

Общий (S) — блок кэша действителен, может использоваться несколькими кэшами и может иметь или не иметь то же значение, что и основная память. Другие процессоры могут читать отсюда, но не имеют прав на запись.

Недействительный (I) — блок кэша недействителен.

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

М ТО С я 
М  Красный ХН Красный ХН Красный ХН Зеленая галочкаИ
ТО  Красный ХН Красный ХН Зеленая галочкаИ Зеленая галочкаИ
С  Красный ХН Зеленая галочкаИ Зеленая галочкаИ Зеленая галочкаИ
я  Зеленая галочкаИ Зеленая галочкаИ Зеленая галочкаИ Зеленая галочкаИ

Операции

[ редактировать ]
Конечный автомат, показывающий транзакции процессора для протокола MOSI.

В протоколе MOSI каждый кеш имеет следующие запросы:

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

Транзакции процессора

[ редактировать ]

Если рассматривать случай транзакций процессора, то когда блок находится в состоянии Invalid (I) , либо блок кэша никогда не извлекался из памяти, либо он был признан недействительным. Когда происходит чтение процессора ( PrRd ), состояние меняется с недействительного (I) на совместно используемое (S), тем самым генерируя чтение шины ( BusRd ). При этом, если это запрос на запись процессора ( PrWr ), то состояние блока меняется на измененное (M) вместе с отслеженным запросом на запись ( BusRdX ).

Как только блок находится в состоянии «Владеет» (O) , чтение процессора (PrRd) не генерирует никакого отслеживаемого сигнала, и блок остается в том же состоянии. Принимая во внимание, что запрос на запись от процессора (PrWr) приводит к изменению состояния блока с принадлежащего (O) на измененный (M) вместе с генерацией отслеживаемого запроса на запись ( BusUpgr ). [3]

Когда блок находится в состоянии «Изменено» (M) , ни запрос процессора на чтение (PrRd), ни запрос процессора на запись (PrWr) не генерирует отслеживаемый сигнал, поскольку блок уже указывает, что самое последнее и правильное значение находится только в этом кэше. Следовательно, он не меняет состояние и остается в измененном (М) состоянии.

Конечный автомат, показывающий отслеживаемые транзакции шины для протокола MOSI.

Пока блок находится в состоянии Shared (S) и имеется запрос на чтение процессора (PrRd), поскольку значение блока кэша одинаково во всех остальных процессорах и в основной памяти, сигнал шины не генерируется после чтение процессора (PrRd). Запрос на запись в шину (BusUpgr) генерируется при наличии запроса процессора на запись (PrWr) в блок в общем состоянии (S), поскольку блок кэша больше не действителен во всех других кэшах и состояние блока изменяется. от общего (S) к модифицируемому (M).

Автобусные транзакции

[ редактировать ]

Учитывая поведение конечного автомата при отслеживании транзакций шины, если блок кэша находится в состоянии Invalid (I) , то никакой отслеживаемый запрос шины никоим образом не повлияет на блок, поэтому даже если это чтение по шине (BusRd) или по шине запрос на запись от процессора, имеющего или не имеющего блок (BusRdX или BusUpgr) , блок остается в том же недопустимом (I) состоянии и не генерирует никаких дальнейших действий.

Когда блок кэша находится в состоянии «Общий доступ» (S) и происходит отслеживаемая транзакция чтения шины (BusRd), блок остается в том же состоянии и больше не генерирует транзакции, поскольку все блоки кэша имеют одинаковое значение, включая основную память. и он только читается, а не записывается. Если имеется отслеживаемый запрос на запись (BusRdX или BusUpgr), то состояние блока меняется с общего (S) на недействительный (I), поскольку значение блока было изменено в одном из других блоков кэша и во всех остальных копиях. теперь должен быть признан недействительным.

Как только блок кэша находится в состоянии «Изменено» (M) и поступает запрос на чтение шины (BusRd), блок сбрасывает (Flush) измененные данные и меняет состояние на «Принадлежит» (O), тем самым делая его единственным владельцем этого блока. конкретный блок кэша. В то же время, когда он находится в модифицированном (M) состоянии, никогда не будет запроса на запись в шину (BusUpgr) от другого процессора, поскольку у него нет блока кэша. При запросе записи от другого процессора, у которого нет блока (BusRdX), блок меняет свое состояние на недействительный (I), поскольку другой процессор записывает в блок и, следовательно, становится владельцем этого блока.

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

Находясь в состоянии «Владелец» (O) и имеется отслеживаемый запрос на чтение (BusRd), блок остается в том же состоянии, одновременно сбрасывая (Flush) данные для чтения из него другим процессором. При отслеживаемом запросе на запись (BusRdX) блок меняет состояние на недействительное (I), а также сбрасывает (Flush) данные, когда в него записывает другой процессор, тем самым теряя право собственности на этот блок. Всякий раз, когда другой процессор пытается получить доступ к этому блоку, вместо обращения к памяти для доступа к нему процессор берет его из другого кэша, в котором этот блок уже находится в принадлежащем ему состоянии (O). При использовании BusUpgr он просто меняет состояние с владельца (O) на недействительный (I). [3]

Сравнение с протоколом MSI

[ редактировать ]

Очевидная разница между протоколом MSI и протоколом MOSI, также известным как протокол Беркли. [4] — это наличие дополнительного состояния (принадлежащего) в MOSI в дополнение к модифицированному (M) состоянию.

В протоколе MSI всякий раз, когда возникает запрос на промах чтения для блока, находящегося в измененном (M) состоянии, он записывается обратно в основную память, одновременно меняя статус блока на общий (S). Но в случае протокола MOSI, где у нас есть дополнительное состояние (владелец), всякий раз, когда другой процессор запрашивает операцию чтения, блок переходит из измененного состояния в принадлежащее (O) состояние и, таким образом, сохраняет грязный блок кэша, тем самым удаляя необходимость немедленной записи в основную память.

Эта отсрочка может сэкономить трафик шины и запись в основную память в определенных последовательностях транзакций. Рассмотрим, например, если для процессора 1 кэш равен M, тогда процессор 2 читает из него, а затем процессор 1 снова записывает в него. В MSI переход MS процессора 1 от чтения приводит к одной записи в память, а затем переход SM приводит к BusUpgr. В MOSI переход MO не генерирует трафик, а переход OM также генерирует один BusUpgr, как и раньше. Таким образом, MOSI распределила первоначальную обратную запись в память и связанный с ней трафик шины, что и сделала бы MSI.

Сравнение с протоколом MESI

[ редактировать ]

Оба МЭСИ (также известные как Иллинойс) [4] и протоколы MOSI являются расширениями протокола MSI для улучшения различных функций. MOSI фокусируется на сокращении обратной записи, а MESI пытается уменьшить количество транзакций шины, необходимых после запроса на чтение и запись от другого процессора. Исключительное состояние (E) в протоколе MESI подразумевает, что блок кэша действителен, чист (то же значение, что и в основной памяти) и кэшируется только в одном кэше, тогда как состояние владения (O) в протоколе MOSI подразумевает, что блок кэша действителен. , потенциально грязный, доступный для записи и может присутствовать более чем в одном кеше (все кеши имеют одно и то же значение).

  1. ^ Сорин, Дэниел; Хилл, Марк; Вуд, Дэвид (2011). Учебник по согласованности памяти и согласованности кэша . Морган и Клейпул. стр. 119–122. ISBN  9781608455645 .
  2. ^ Солихин, Ян (2016). Основы параллельной многоядерной архитектуры . RC Press, Taylor & Francisco Group. ISBN  9781482211184 .
  3. ^ Перейти обратно: а б «Оценка протоколов когерентности кэша на основе отслеживания» (PDF) .
  4. ^ Перейти обратно: а б Ян, К.; Бхуян, Л.Н.; Лю, Б.-К. (1989). «Анализ и сравнение протоколов когерентности кэша для мультипроцессора с коммутацией пакетов». Транзакции IEEE на компьютерах . 38 (8): 1143–1153. дои : 10.1109/12.30868 .

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4a9f6047e3f1bd1846e91991ed1c2b8a__1679878920
URL1:https://arc.ask3.ru/arc/aa/4a/8a/4a9f6047e3f1bd1846e91991ed1c2b8a.html
Заголовок, (Title) документа по адресу, URL1:
MOSI protocol - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)