Этот вопрос не относится ни к какой реализации ЦП, но приветствуются ответы на конкретные процессоры.Обработка ошибок перевода MMU в потоке команд - что происходит с MMU?
В настоящее время я реализую полный процессор с поддержкой MMU, и возникла простая проблема.
Итак, представьте ситуацию, когда простое пропущение TLB происходит из-за потока команд (или кэша команд). Это вызовет пропуски TLB. Теперь, если PTE не найден, будет инициировано какое-то исключение, например «Ошибка перевода страницы». Пока что проблем нет.
Теперь для вызова обработчика ошибок поток команд (или кеш) должен получить код обработчика исключений. Для этого ему нужно будет снова искать соответствующую запись PTE в TLB и, в конечном счете, другую столовую прогулку.
Представьте, что запись PTE не найдена. Можно было бы ожидать, что какой-нибудь другой обработчик исключений будет вызван.
Теперь, в этом последнем обработчике исключений, поскольку сам обработчик не может быть найден или действителен, блокируется ли MMU до того, как обработчик будет извлечен и исполнен (таким образом, обход каждого из MMU, включая отображение Phys-Virt), или есть ли другой способ (не фатальный), чтобы справиться с этой ситуацией?
Alvie
Мой вопрос на самом деле связан с оборудованием, а не с программным обеспечением. Так что, если мы не сможем правильно обработать неисправность, единственным вариантом является полный сброс. Мне было интересно, можно ли отключить MMU для конкретного сценария, чтобы этого не произошло. Например, может быть сопоставлен (жесткий) с кодом прошивки. –