CSR 位字段

RISC-V mhpmcounter18 CSR 寄存器详解

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

mhpmcounter18(地址 0xB12)是 Machine 硬件性能监控计数器 18,对 mhpmevent18 选择的事件进行 64 位计数。

字段映射

按 bit 字段理解 mhpmcounter18

1 个关键字段
63:0

COUNT

读写

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

这个字段控制什么

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

常见取值

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

官方依据与检索要点

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

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

读这个 CSR 时先看什么

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

写入前的风险检查

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

放回真实流程里理解

1

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

2

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

3

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

常见问题

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

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

mhpmcounter18 和 hpmcounter18 是什么关系?

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