Согласованность кэша - протокол MESI
Может ли быть случай в кеше, использующем протокол MESI (с включенной инклюзивностью l1 и l2), где l2 может отправлять недопустимую инструкцию в уже недопустимую строку в l1.
2 ответа
Вы имеете в виду "запрос на недействительность"?
Я думаю, что если L2 не фильтрует свои запросы в соответствии с тем, что он знает о L1, он может просто всегда отправлять INVD на L1 каждый раз, когда высвобождает строку. Не знаю, правдоподобно ли это для реального дизайна. (Выселение из L2 может быть вызвано предварительной загрузкой HW или SW в L2, а не в ответ на обратную запись L1.)
Или, если ядро ЦП может сделать недействительной строку в L1 в то же время, когда L2 отправляет недействительную информацию, INVD может прибыть в L1 после того, как она уже сделала недействительной строку.
Может быть сценарий, когда L2 просто не знает, есть ли у L1 линия, потому что L1 разрешено молча отбросить ее.
На самом деле, если L2 является включающим, вряд ли есть какая-либо причина тратить полосу пропускания при удалении неизмененной линии из L1 (удаление емкости), потому что у L2 уже есть копия, и изменений нет. Следовательно, вероятно, что многие линии в L2 все еще существуют там после того, как их выселили из L1. Изгнание из L2, когда оно, наконец, прибудет (позже, так как оно больше), должно будет отослать ответный сигнал, чтобы обеспечить инклюзивность, потому что он не может быть уверен, находится ли линия в L1 или нет.