Поведение: изменение процесса во время инструкции сопроцессора
Я пытаюсь понять интерфейс RoCC чипа Rocket. Пока единственным ресурсом, который я нашел, был этот тезис: Проектирование и программирование сопроцессора для архитектуры RISC-V.
Прочитав диссертацию, у меня остались вопросы, в основном:
Что происходит, когда происходит изменение процесса во время выполнения инструкции сопроцессора?
- В этом случае TLB из L1-D$ должны быть очищены, и преобразование виртуальных в физические адреса больше не будет возможно. Что произойдет, если копро попытается получить доступ к памяти?
Когда xd установлен в 0, это означает, что результат инструкции останется в регистре копро. Как ядро может быть уведомлено о завершении инструкции? На линии прерывания или есть другой механизм?
Можно ли установить rd равным x0 и пропустить задержку, вносимую ядром, в команды приоритетов из своего конвейера, для которых установлен бит wxd?
- Это всего лишь идея, чтобы иметь возможность дать сигнал от копира к ядру о том, что инструкция завершена, и она должна извлечь данные из кеша.