2015-08-01 1 views
3

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

Ответ был также Дано: I (Invalid) и S (Shared) Пескоцементы.

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

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

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

ответ

2

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

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

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

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

+0

Thx для ответа. Исключительные состояния отбрасываются, но даже если кеш пишет через изменения напрямую, чтобы правильно читать, т. Е. Решать, когда читать из кеша или из основной памяти, должно быть сделано различие между недействительными и действительными строками кэша - это оставляет ** I ** и ** S ** как только соответствующие состояния. – mike

+0

Я не совсем уверен, что исключительное состояние бесполезно в кэше для записи. Возможность немедленного совершения записей может иметь некоторые преимущества. Также записывает (исключительные) кеш-запросы (удаленные недействительности не требуются), вероятно, более распространены, чем прочтения прочтений, когда удаленный узел имеет данные в исключительном состоянии. Кроме того, такой прочтённый промах может потребоваться запросить данные из этого кеша в любом случае по причинам пропускной способности или латентности. Консистенция памяти, похоже, еще больше усложнит компромиссы (эксклюзивные записи могут быть буферизованы агрессивно [b/w & latency]). –

Смежные вопросы