имитация кеша и ошибки страниц

Надеюсь, это не дубликат.

Вопрос по симуляции кеша и виртуальной памяти:

  • предположим, блокирующий кеш (блокирующий кеш — это кеш, который ожидает завершения передачи из памяти в кеш перед доставкой данных в ЦП)

Что произойдет, если:

  • ЦП запрашивает инструкцию, которой нет в кэше инструкций (есть промах)
  • кэш инструкций запрашивает данные в MMU/память
  • MMU сообщает об ошибке страницы
  • ЦП получает прерывание от MMU, которое предупреждает об ошибке страницы.
  • ЦП переходит к аппаратному адресу, содержащему код для обработки ошибки страницы.
  • этап выборки инструкций запрашивает первую инструкцию (из обработки ошибок страницы) для кэширования

Теперь мой вопрос: как кеш будет доставлять код обработки ошибок страницы в ЦП, если он ожидает, пока основная память доставит другие данные (тот, который вызвал ошибку страницы)?

Я придумал такое решение: улучшить мой кеш, чтобы и процессор, и кеш получали сигнал ошибки страницы; Кэш сохраняет свое состояние, получает и доставляет код обработки ошибок страниц в ЦП, а затем восстанавливает свои предыдущие состояния.

Это то, что я придумал, но является ли это правильным/действительным и эффективным способом?


person hdhzero    schedule 25.09.2013    source источник


Ответы (1)


ЦП и кеш не ждут недостающих данных.

Как правило, ошибка страницы генерирует какое-то прерывание для ЦП, приостанавливая исходный поток инструкций. Когда обработчик ошибки страницы возвращается, исходный поток инструкций возобновляется, начиная с инструкции, которой не было в кэше в первый раз.

person Mark Sherred    schedule 02.10.2013