- What is "RV32E"?
- Is there a "E" extension?
发布于 2015-06-28 04:34:48
正如CliffordVienna所回答的那样,RV32E ("embedded")是一个新的基本ISA,它使用16个寄存器,并使一些计数器寄存器可选。
我不建议实现RV32E内核,因为这可能是不必要的过度优化,限制了您使用大量RV*I代码的能力。但是如果不需要性能,而且你真的需要一个稍微小一点的核心,并且核心没有连接到一个可以支配区域/电源的内存层次结构,那么你就愿意处理工具链问题.那么也许RV32E内核是合适的。
ECALL被视为异常,并将根据当前权限级别将PC重定向到适当的陷阱处理程序。MEPC将被设置为ecall指令的当前PC。
您可以通过分析伯克利RV64G火箭处理器(https://github.com/ucb-bar/rocket/blob/master/src/main/scala/csr.scala),或者查看Spike模拟器(从这里开始:https://github.com/riscv/riscv-isa-sim/blob/master/riscv/insns/scall.h)来验证这种行为。谨慎:截至2015年6月27日,的代码在特权规范方面仍处于不断变化之中。
例如,如果我们看看斯派克如何处理埃雷特("sret":https://github.com/riscv/riscv-isa-sim/blob/master/riscv/insns/sret.h),我们就得小心一点。PC被设置为"mepc",但它是陷阱处理程序的工作,将PC提前4,我们可以看到,例如,在这里的一些处理程序函数(https://github.com/riscv/riscv-pk/blob/master/pk/handlers.c)中,代理内核完成了这一任务。
发布于 2015-06-27 18:10:53
RV32E (嵌入式)规范的草案可以在这里找到(通过isa-dev邮件列表):
https://lists.riscv.org/lists/arc/isa-dev/2015-06/msg00022/rv32e.pdf
它是带有16个寄存器的RV32I,而不是32个寄存器,没有计数器指令。
https://stackoverflow.com/questions/31091533
复制相似问题