Протокол MESI. Пишите с пропуском кеша. Зачем нужна выборка значений из основной памяти?

Меня интересует реализация протокола записи MESI с политикой выделения при записи. Допустим, у нас есть запрос на запись и мы получили кеш-память без других копий строки кеша. Эта диаграмма говорит о том, что следующим шагом является выбор значения из основной памяти (или кеша L2), сохранение его и пометка строки кеша как M (модифицированной). Полагаю, тогда новое значение сохраняется в блоке кэша. Вопрос в том, зачем нам нужен шаг извлечения данных из основной памяти. Почему мы не можем просто записать новое значение в первую найденную строку кэша в состоянии I (неверно) / заменить самую старую строку кэша и пометить ее как M (измененная)?

Спасибо за помощь!

1 ответ

Решение

Предположим, у вас есть 64-байтовые строки кэша, и вы пишете один байт. Вы не можете поместить "1/64 строки кэша" в кеш, так откуда же берутся оставшиеся 63 байта? Они должны исходить из основной памяти (или кеша следующего уровня).

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