Протокол MESI понимает переходы состояний
На диаграмме перехода состояний, показанной ниже для протокола MESI Иллинойса, почему существует сигнал сброса при переходе из состояния S в состояние I и сигнал сброса при переходе из состояния E в состояние I при наблюдении сигнала BusRdX. Разве содержимое кэша для процессоров в этих состояниях не будет таким же, как содержимое в основной памяти? Если да, то какой смысл этим кешам утверждать, что я сбрасываю их данные? Кроме того, в чем именно разница между Flush и Flush'. Просто во Flush 'данные передаются одним кешем?
Схема перехода:
1 ответ
Разве содержимое кэша для процессоров в этих состояниях не будет таким же, как содержимое в основной памяти?
Это зависит от политики записи.
Если используется политика сквозной записи и все изменения записываются непосредственно в основную память, вы правы.
Но это не так для обратной записи. Возможен переход состояния из M в S посредством чтения с помощью snoop (или в связи с вашей диаграммой: BusRd, то есть запрос чтения из шины без намерения изменить), в этот момент кэш не соответствует основной памяти, поэтому содержимое должно быть записано обратно в основную память, если кеш недействителен.
Кроме того, в чем именно разница между Flush и Flush?
Я полагаю, у вас есть диаграмма из Википедии; есть обновленная версия, на которую я ссылался выше, которая не делает этого различия.