CSR 位字段

RISC-V hpmcounter29h CSR 寄存器详解

地址 0xC9D特权级 U模式访问 只读 / RV32 高半/32 位用户级计数器与性能监控 CSR

hpmcounter29h 是 Zihpm 定义的用户级只读 CSR,仅在 XLEN=32 时存在;它读取 hpmcounter29 的位 63:32。Zihpm 依赖 Zicsr,已实现计数器的数量、宽度和计数事件由平台定义。

位作用速览
bit 3 = 只有第 3 位;bits 12..11 = 第 12 到第 11 位
高位 MSB低位 LSB
字段映射

按 bit 字段理解 hpmcounter29h

0 个关键字段
官方依据与检索要点

hpmcounter29h 是 0xC9D 的 RV32 专属只读高半 CSR,读取 hpmcounter29 的位 63:32。

Zihpm 依赖 Zicsr;额外性能计数器的实现数量、宽度和事件由平台定义。
此 CSR 只在 XLEN=32 存在;XLEN>32 上访问会触发非法指令异常。
U/虚拟化环境的读取权限受 mcounteren、scounteren 和 hcounteren 的对应 HPM29 位控制。

读这个 CSR 时先看什么

  • - hpmcounter29h 仅在 XLEN=32 时存在;在 XLEN>32 上访问高半 CSR 会触发非法指令异常。
  • - Zihpm 提供最多 29 个附加性能计数器;已实现计数器的数量、宽度和事件由平台定义。访问未实现计数器可能触发非法指令异常,也可能返回常量值。
  • - 在实现 S 模式的特权架构中,U 模式读取需 mcounteren 和 scounteren 的 HPM29 位均置位;若未实现 S 模式,则由 mcounteren 控制到 U 模式的访问。V=1 时访问还受 mcounteren 和 hcounteren 控制;VU 模式还需 scounteren,对应 mcounteren 位已置位而 hcounteren 位清零时会触发虚拟指令异常。

写入前的风险检查

  • - hpmcounter29h 是只读 CSR;写入只读 CSR 会触发非法指令异常。

放回真实流程里理解

1

仅在 RV32 上读取 hpmcounter29h。

2

与 hpmcounter29 的低 32 位读取配合使用。

3

结合平台定义的计数器实现、事件配置和访问控制解释结果。