С протоколом MESI, хит записи также останавливает процессор, верно?

Я делаю проект, который должен реализовать двухпроцессорную систему с некоторой когерентностью кэша (для которой я выбрал MESI) в VHDL. Я просто хочу подтвердить одну вещь: попадание записи в строку общего кэша должно привести к тому, что контроллер кэша отправит сообщения о недействительности на общей шине, и в зависимости от конкуренции, он должен остановить процессор на некоторое время, верно?

Я думал об этом сценарии; Предположим, процессор делает что-то вроде этого:

for (int i = 0; i < 5; ++i)
    arr[i * 10] = 0; //just so each write is in a different cache line

Если массив полностью находится в кэше и используется совместно с другими процессорами, каждая запись будет генерировать сообщение об аннулировании, для завершения каждого из которых требуется несколько циклов; чтобы процессор продолжил выполнение, все эти сообщения об аннулировании должны быть буферизированы, а буфер не будет ограничен, поэтому при ударе по записи придется на некоторое время остановить процессор. Я прав насчет этого?

РЕДАКТИРОВАТЬ: Хотите, чтобы объяснить downvote? Какая часть этого вопроса не ясна? Или, если вы думаете, что это идиотский и ужасный вопрос, я полагаю, у вас должен быть ответ на этот вопрос?

1 ответ

Решение

Не путайте задержку с пропускной способностью. Сообщения об аннулировании будут проходить несколько циклов, но вы можете направить процесс по конвейеру. Можно построить конвейерный кэш, который может начать обработку новых сообщений о недействительности до того, как будут завершены предыдущие.

Протокол MESI не требует, чтобы все предыдущие сообщения в разные строки кэша были завершены, прежде чем новое сообщение может быть запущено.

Количество сообщений о недействительности в полете будет ограничено, пока кеш обеспечивает достаточную пропускную способность. Если вы можете сгенерировать 1 сообщение о недействительности за цикл, и для обработки каждого сообщения требуется 10 циклов, но ваш кэш также может обрабатывать 1 сообщение о недействительности за цикл, тогда будет работать до 10 сообщений о недействительности, и вашему процессору не придется останавливаться при записи хит общей линии.

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