Протокол MESIF
Протокол MESIF — это протокол когерентности кэша и памяти , разработанный Intel для неоднородных архитектур памяти с когерентным кэшем . [1] Протокол состоит из пяти состояний: «Измененный» (M), «Исключительный» (E), «Общий» (S), «Недействительный» (I) и «Переадресованный» (F). [2]
Состояния M, E, S и I такие же, как и в протоколе MESI . Состояние F является специализированной формой состояния S и указывает, что кэш должен действовать как назначенный ответчик на любые запросы к данной строке. Протокол гарантирует, что если какой-либо кэш содержит строку в состоянии S, то не более одного (другого) кэша будет содержать ее в состоянии F.
В системе кэшей, использующей протокол MESI, запрос строки кэша, полученный несколькими кэшами, содержащими строку в состоянии S, будет обслуживаться неэффективно. Он может быть либо удовлетворен из (медленной) основной памяти, либо все общие кэши могут ответить, бомбардируя запрашивающую сторону избыточными ответами. В системе кэшей, использующей протокол MESIF, на запрос строки кэша будет отвечать только кэш, удерживающий строку в состоянии F. [3] Это позволяет запрашивающей стороне получать копию со скоростью кэш-кэш, позволяя использовать при этом минимальное количество многоадресных пакетов, насколько позволяет топология сети.
М | И | С | я | Ф | |
---|---|---|---|---|---|
М | ![]() |
![]() |
![]() |
![]() |
![]() |
И | ![]() |
![]() |
![]() |
![]() |
![]() |
С | ![]() |
![]() |
![]() |
![]() |
![]() |
я | ![]() |
![]() |
![]() |
![]() |
![]() |
Ф | ![]() |
![]() |
![]() |
![]() |
![]() |
Поскольку кэш может в одностороннем порядке отбросить (аннулировать) строку в состояниях S или F, возможно, что ни в одном кэше нет копии в состоянии F, даже если копии в состоянии S существуют. В этом случае запрос строки удовлетворяется (менее эффективно, но все же корректно) из основной памяти. Чтобы свести к минимуму вероятность того, что линия F будет отброшена из-за отсутствия интереса, самому последнему запрашивающему линию присваивается состояние F; когда кэш в состоянии F отвечает, он передает состояние F новому кэшу.
Таким образом, основное отличие от протокола MESI состоит в том, что запрос копии строки кэша на чтение всегда поступает в кэш в состоянии F. Единственный способ войти в состояние S — удовлетворить запрос на чтение из другого кэша, передав ему состояние F.
Для любой пары кэшей разрешенные состояния данной строки кэша перечислены в таблице справа. Порядок, в котором перечислены штаты, не имеет никакого значения, кроме как сделать аббревиатуру MESIF произносимой.
Существуют и другие методы удовлетворения запросов на чтение из общих кэшей при подавлении избыточных ответов, но наличие только одного назначенного ответа кэша упрощает признание недействительными всех копий при необходимости перехода в эксклюзивное состояние.
Сравнение с протоколом MOESI
[ редактировать ]Состояние F в этом протоколе не следует путать с состоянием O «Владелец» в протоколе MOESI. Хотя оба состояния идентифицируют один кэш из набора разделяющих устройств для эффективной передачи данных с использованием прямой передачи из кэша в кэш (вместо ожидания информации из основной памяти), в целях этих двух состояний существует разница.
- Строка кэша в состоянии F является чистой и может быть удалена в любой момент без предварительного уведомления.
- Строка кэша в состоянии O является «грязной» и должна быть записана обратно в память, прежде чем быть удалена.
Состояние F в протоколе MESIF — это просто способ выбрать одного из участников чистой строки кэша для ответа на запрос на чтение данных с использованием прямой передачи из кэша в кэш вместо ожидания поступления данных из основного кэша. память. Эта оптимизация имеет смысл в архитектурах, где задержка между кэшами намного меньше по сравнению с задержкой доступа к основной памяти. Здесь следует отметить ключевой момент: как и в случае с протоколом MESI, когда данные находятся в общем состоянии (один из кэшей находится в состоянии F), данные являются чистыми.
Состояние O в протоколе MOESI представляет собой оптимизацию протокола MESI, при которой требования к чистоте общих данных смягчены. Другими словами, кеши могут совместно использовать «грязные» данные, пока один из участников берет на себя ответственность за владение этими данными. Запросы на общие данные теперь будут удовлетворяться владельцем. Эта оптимизация позволяет задержать обратную запись данных, позволяя совместно использовать «грязные» данные. [4] Ключевое отличие протокола MOESI заключается в том, что, в отличие от протокола MESIF, состояние Owned не является чистым.
Можно построить протокол MOESIF.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Дэвид Кантер (28 августа 2007 г.), «Общий системный интерфейс: будущее межсоединение Intel» , Real World Tech : 5 , получено 12 августа 2012 г.
- ^ Майкл Э. Томадакис (17 марта 2011 г.). «Архитектура процессора Nehalem и платформ Nehalem-EP SMP» (PDF) . Техасский университет A&M. п. 30–34. Архивировано из оригинала (PDF) 11 августа 2014 г. Проверено 21 марта 2014 г.
- ^ США 6922756 , Хум, Герберт Х.Дж. и Гудман, Джеймс Р., « Состояние пересылки для использования в когерентности кэша в многопроцессорной системе », выдан 26 июля 2005 г., передан корпорации Intel.
- ^ Хеннесси, Дж.; Паттерсон, Д. Компьютерная архитектура: количественный подход (пятое изд.). п. 362.
В протоколе MOESI блок можно перевести из состояния «Изменено» в состояние «В собственности» в исходном кэше без записи его в память.