首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Risc-V-特权-Spec-v1.7的两个问题

关于Risc-V-特权-Spec-v1.7的两个问题
EN

Stack Overflow用户
提问于 2015-06-27 17:32:08
回答 2查看 766关注 0票数 3
  1. 第16页,表3.1: mcpuid中的基字段: RV32I RV32E RV64I RV128I
代码语言:javascript
复制
- What is "RV32E"?
- Is there a "E" extension?

  1. ECALL (第30页)对pc的行为只字未提。而海保会(第28页)和mbadaddr (第29页)则声称“海保会将指示开始”。我认为ECALL应该将mepc设置为导致指令的末尾,这样ERET就会转到下一个指令。是那么回事吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)中,代理内核完成了这一任务。

票数 5
EN

Stack Overflow用户

发布于 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个寄存器,没有计数器指令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31091533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档