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