【发布时间】:2018-05-16 06:30:54
【问题描述】:
我目前正在研究 RISC-V 规范版本 2.2 和特权架构版本 1.10。在 RISC-V 规范的第 2 章中,提到“[...] 虽然一个简单的实现可能涵盖了 8 个 SCALL/SBREAK/CSRR* 指令和一个始终捕获 [...] 的单个 SYSTEM 硬件指令”
但是,当我查看特权规范时,MRET 指令也是一条 SYSTEM 指令,需要从陷阱中返回。现在我很困惑需要多少机器级 ISA:是否可以省略所有 M 级 CSR 并为任何 SYSTEM 指令使用软件处理程序,如规范中所述?如果是这样,如何传递返回地址和陷阱原因等信息?它们是通过常规寄存器 x1-x31 完成的吗?
或者,如果我的目标是一个只有 M 级权限的简单嵌入式内核,仅实现以下 M 级 CSR 就足够了吗?
mvendorid
marchid
mimpid
mhartid
misa
mscratch
mepc
mcause
最后,这些 CSR 有多少可以省略?
【问题讨论】:
-
根据我的经验,最好是说“我什么都做”,而不是向每个客户解释,或者更糟糕的是,让竞争对手向您的客户解释您不做的事情做。但也许更了解企业社会责任的人可以提供帮助;这不是我做的事。
-
听起来像是微码的替代品,将其完全从 CPU 中移出,用于存储在内存中的指令。 (除非内存在 CPU 内部,否则它基本上是一个微码 ROM。)
标签: exception interrupt cpu-architecture riscv