CSR 位字段

RISC-V mhpmcounter30 CSR 寄存器详解

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

mhpmcounter30(地址 0xB1E)是 Machine 硬件性能监控计数器 30,对 mhpmevent30 选择的事件进行 64 位计数。

字段映射

按 bit 字段理解 mhpmcounter30

1 个关键字段
63:0

COUNT

读写

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

这个字段控制什么

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

常见取值

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

官方依据与检索要点

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

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

读这个 CSR 时先看什么

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

写入前的风险检查

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

放回真实流程里理解

1

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

2

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

3

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

常见问题

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

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

mhpmcounter30 和 hpmcounter30 是什么关系?

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