Какие состояния протокола MESI актуальны, если используется кеш с политикой сквозной записи?

При чтении слайдов лекции о протоколах согласованности кеша я столкнулся со следующим вопросом: Какие состояния MESI актуальны, если используется кеш с политикой сквозной записи?

Также был дан ответ: I (недействительный) и S (общий без изменений).

Я понимаю, что состояние M (Modified Exclusive) не имеет значения, поскольку кеш с политикой сквозной записи в любом случае распространяет изменения в основную память.

Состояние E (Exclusive Unmodified) не имеет значения, так как оно выдается только при исключительных пропусках чтения с заменой (и сохраняется при последующих ударах чтения).

Может кто-нибудь объяснить данный ответ?


person mike    schedule 01.08.2015    source источник


Ответы (1)


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

Что касается эксклюзивного состояния: имейте в виду, что в некотором смысле оно «сильнее», чем разделяемое состояние, поскольку в кэше WB оно гарантирует, что запись в эту строку не требует сначала получения права собственности и аннулирования других копий, и вместо этого может писать непосредственно в эту строку, не выходя из локального кеша. Другими словами, переход от E к M прост, в то время как S к M более сложен и требует сначала аннулировать все остальные копии.

С другой стороны, в кэше WT у вас уже есть гарантия, что никто другой не хранит измененную версию строки, и, что более важно, у вас нет возможности выполнять простой переход в локальном кеше (поскольку вы в любом случае придется записывать данные извне), так что на самом деле нет необходимости в эксклюзивном состоянии - вы не получите никакой выгоды от его наличия. Фактически, вы можете фактически проиграть от этого, потому что наличие состояния E вынуждает вас отправлять snoops на любое другое ядро, читающее ту же строку (переход E -> S),

Конечно, когда вы пишете что-то снаружи, вам все равно нужно аннулировать все другие копии, но вам не нужно различать E и S, чтобы сообщить вам, существуют ли они, обычно есть фильтр отслеживания или какой-либо другой список, чтобы сообщить вам какие ядра искать.

person Leeor    schedule 01.08.2015
comment
Спасибо за ответ. Исключительные состояния отбрасываются, но даже если кеш записывает изменения напрямую, чтобы правильно читать, то есть решать, когда читать из кеша или из основной памяти, различие между недопустимыми и действительными строками кеша все равно должно быть сделано - это оставляет I и S только релевантными состояниями. - person mike; 01.08.2015
comment
Я не совсем уверен, что исключительное состояние бесполезно в кэше со сквозной записью. Возможность немедленной фиксации записи может иметь некоторые преимущества. Также записи в (исключительные) попадания в кэш (удаленная аннулирование не требуется), вероятно, более распространены, чем промахи чтения, когда удаленный узел имеет данные в эксклюзивном состоянии. Кроме того, такая ошибка чтения может потребовать запроса данных из этого кеша в любом случае по причинам пропускной способности или задержки. Согласованность памяти, по-видимому, еще больше усложняет компромиссы (эксклюзивные записи могут быть агрессивно буферизированы [ч / б и задержка]). - person Paul A. Clayton; 25.01.2016