CSR 位字段

RISC-V mhpmcounter25 CSR 寄存器详解

地址 0xB19特权级 Machine 模式访问 读写 / 64 位Machine 计数器与性能监控 CSR

mhpmcounter25(地址 0xB19)是 Machine 硬件性能监控计数器 25,对 mhpmevent25 选择的事件进行 64 位计数。

字段映射

按 bit 字段理解 mhpmcounter25

1 个关键字段
63:0

COUNT

读写

mhpmevent25 所选事件的 64 位 Machine HPM 计数值;未实现计数器可固定读 0。

这个字段控制什么

  • - mhpmevent25 所选事件的 64 位 Machine HPM 计数值;未实现计数器可固定读 0。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

官方依据与检索要点

mhpmcounter25 是第 25 个 Machine HPM 计数器。它不自行定义事件含义,而是统计 mhpmevent25 当前选择的平台定义事件。

官方 Machine HPM 机制提供 mhpmcounter25 作为可写 Machine 计数器。
mhpmevent25 选择事件;事件编号是平台定义的。
RV32 上 mhpmcounter25h 提供高 32 位访问。

读这个 CSR 时先看什么

  • - mhpmcounter25 的事件来源由 mhpmevent25 决定;先核对事件选择配置。
  • - 低特权级影子 hpmcounter25 的可访问性受 mcounteren/scounteren 或相关委托机制控制。
  • - 在 RV32 上,mhpmcounter25h 访问 mhpmcounter25 的位 63:32。

写入前的风险检查

  • - 写 mhpmcounter25 会改变性能计数器当前值,通常只应在初始化、采样重置或溢出处理时进行。
  • - 停止计数应使用 mcountinhibit.HPM25 或事件/模式过滤机制,而不是误写未知事件编码。
  • - 多 hart 或平台共享实现细节需以目标实现文档为准。

放回真实流程里理解

1

配置 mhpmevent25 选择要统计的平台定义事件。

2

必要时用 mcountinhibit.HPM25 或 xINH 位控制计数窗口。

3

读取 mhpmcounter25(RV32 同时读取 mhpmcounter25h)获得 64 位事件计数。

常见问题

mhpmcounter25 可以在任意特权级访问吗?

不能。官方 CSR 表把 mhpmcounter25 列为 Machine 模式 CSR;低特权级软件只有在相关标准扩展提供明确的委托或权限机制时才可访问对应状态;权限不足或未实现时直接 CSR 访问会触发非法指令异常。

mhpmcounter25 和 hpmcounter25 是什么关系?

mhpmcounter25 是 Machine 可读写视图;hpmcounter25 是低特权级可见的对应计数器视图,是否可读由 counteren 或委托机制控制。