CSR 位字段
RISC-V hpmcounter29h CSR 寄存器详解
地址 0xC9D特权级 U模式访问 只读 / RV32 高半/32 位用户级计数器与性能监控 CSR
hpmcounter29h 是 Zihpm 定义的用户级只读 CSR,仅在 XLEN=32 时存在;它读取 hpmcounter29 的位 63:32。Zihpm 依赖 Zicsr,已实现计数器的数量、宽度和计数事件由平台定义。
字段映射
按 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
结合平台定义的计数器实现、事件配置和访问控制解释结果。