2015-06-27 17 views
2
  1. 第16頁,表3.1的問題: 基地場mcpuid:RV32I RV32E RV64I RV128I2關於RISC的V-特權-SPEC-V1.7

    • 什麼是 「RV32E」?
    • 是否有「E」擴展名?
  2. ECALL(第30頁)沒有提到pc的行爲。 雖然mepc(第28頁)和mbadaddr(第29頁)聲稱「mepc將指向該指令的開始處」。我認爲ECALL應該將mepc設置爲引發指令的結尾,以便ERET進入下一條指令。是對的嗎?

回答

4

由CliffordVienna回答,RV32E(「嵌入式」)是一個新的基本ISA,它使用16個寄存器,並使一些計數器寄存器可選。

我會建議實施RV32E核心,因爲它可能是在覈心尺寸限制你使用一個大身體的RV *我的代碼能力的不必要的過度優化。但如果不需要性能,而且你真的需要核心變小一些,而且核心沒有連接到無論如何將主宰區域/電源的內存層次結構,並且你願意處理工具 - 頭痛......那麼也許RV32E核心是適當的。

ECALL被視爲異常,並會根據當前特權級別將PC重定向到適當的陷阱處理程序。 MEPC將被設置爲ecall指令的當前PC。

您可以通過分析Berkeley RV64G火箭炮處理器(https://github.com/ucb-bar/rocket/blob/master/src/main/scala/csr.scala)或通過查看Spike ISA模擬器(從此處開始:https://github.com/riscv/riscv-isa-sim/blob/master/riscv/insns/scall.h)來驗證此行爲。 小心:截至2015年6月27日,關於特權規範的代碼仍處於不斷變化之中。

如果我們看一下Spike如何處理eret(例如「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)中。