CSR 位字段

RISC-V mhpmcounter21 CSR 寄存器详解

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

mhpmcounter21(地址 0xB15)是 Machine 硬件性能监控计数器 21,对 mhpmevent21 选择的事件进行 64 位计数。

字段映射

按 bit 字段理解 mhpmcounter21

1 个关键字段
63:0

COUNT

读写

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

这个字段控制什么

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

常见取值

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

官方依据与检索要点

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

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

读这个 CSR 时先看什么

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

写入前的风险检查

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

放回真实流程里理解

1

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

2

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

3

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

常见问题

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

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

mhpmcounter21 和 hpmcounter21 是什么关系?

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