#caching #cpu-architecture #core #cpu-cache #mesi
#кэширование #cpu-архитектура #Ядро #процессор-кэш #mesi
Вопрос:
учитывая эту прелюдию:
рассмотрим систему с 2 ядрами, P1 и P2, использующими схемы обратной записи и выделения записи.
адреса A1 и A2 отображаются в один и тот же блок кэша, но A1 не равен A2. Начальный кэш недействителен. Здесь используйте протокол MESI.
Выполняются следующие шаги:
- P1 записывает значение 10 в A1
- P1 считывает значение в A1
- P2 считывает значение в A1
- P2 записывает значение 20 в A1
- P2 записывает значение от 40 до A2
- 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