согласованность кэша — не уверен, как это работает

#caching #cpu-architecture #core #cpu-cache #mesi

#кэширование #cpu-архитектура #Ядро #процессор-кэш #mesi

Вопрос:

учитывая эту прелюдию:

рассмотрим систему с 2 ядрами, P1 и P2, использующими схемы обратной записи и выделения записи.

адреса A1 и A2 отображаются в один и тот же блок кэша, но A1 не равен A2. Начальный кэш недействителен. Здесь используйте протокол MESI.

Выполняются следующие шаги:

  1. P1 записывает значение 10 в A1
  2. P1 считывает значение в A1
  3. P2 считывает значение в A1
  4. P2 записывает значение 20 в A1
  5. P2 записывает значение от 40 до A2
  6. P1 считывает значение в A1

Мне интересно, почему на шаге 1 это действие записи P1 в A1 считается «эксклюзивным»? Я бы подумал, что это будет «изменено», учитывая, что мы пишем по адресу?

Этот пример взят из этого источника http://people.eecs.berkeley.edu /~pattrsn/252F96/Лекция18.pdf

Вот таблица конечных состояний: таблица кэша

Может кто-нибудь объяснить, почему шаги 1 и 4 считаются «эксклюзивными» и не изменяются? Спасибо!

Комментарии:

1. Да, я бы ожидал изменения, когда P1 записывает в A1. Возможно, они просто объединяют Modified с Exclusive, поскольку Modified по-прежнему подразумевает исключительное владение.

2. @PeterCordes хорошо, спасибо! никогда не думал, что измененные будут объединены с эксклюзивными ~ спасибо, что напомнили об этом 🙂

3. Я имею в виду, это возможно, но это все равно кажется ошибкой, особенно в формальной терминологии, когда в назначении конкретно указано MESI, а не MSI. (И кэш с обратной записью, поэтому он определенно должен поддерживать загрязнение или нет.)

4. Однако используется не MESI, а «Базовый протокол», определенный на слайдах 19-22. В базовом протоколе нет состояния M.

5. @HadiBrais О! спасибо, что заметили это! Полностью пропустил это, я предположил, что это MESI. Итак, если бы это был MESI, то это было бы похоже на то, что упомянул Питер, и состояние было бы изменено, когда P1 записывает в A1