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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам