CSR 位字段

RISC-V mhpmcounter26 CSR 寄存器详解

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

mhpmcounter26(地址 0xB1A)是 Machine 硬件性能监控计数器 26,对 mhpmevent26 选择的平台定义事件进行最多 64 位精度的计数。

字段映射

按 bit 字段理解 mhpmcounter26

1 个关键字段
63:0

COUNT

读写

mhpmevent26 所选平台定义事件的 Machine HPM 计数值;COUNT 是在 RV32/RV64 上最多 64 位精度的 WARL 字段。合法实现可将该计数器和 mhpmevent26 均实现为只读 0。

这个字段控制什么

  • - mhpmevent26 所选平台定义事件的 Machine HPM 计数值;COUNT 是在 RV32/RV64 上最多 64 位精度的 WARL 字段。合法实现可将该计数器和 mhpmevent26 均实现为只读 0。

常见取值

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

官方依据与检索要点

mhpmcounter26 是第 26 个 Machine HPM 计数器。它不自行定义事件含义,而是以最高 64 位精度统计 mhpmevent26 当前选择的平台定义事件。

官方 Machine HPM 机制将 mhpmcounter26 定义为最高 64 位精度的 WARL 计数器。
mhpmevent26 选择事件;事件编号是平台定义的。
RV32 上 mhpmcounter26h 提供高 32 位访问。

读这个 CSR 时先看什么

  • - mhpmcounter26 的事件来源由 mhpmevent26 决定;先核对事件选择配置。
  • - S/U 模式读取只读影子 hpmcounter26 受 mcounteren.HPM26 控制;U 模式还需 scounteren.HPM26 置位。
  • - 在 RV32 上,mhpmcounter26h 访问 mhpmcounter26 的位 63:32。

写入前的风险检查

  • - 写 mhpmcounter26 会在写指令以其他方式完成后生效,并改变当前计数值。
  • - mcountinhibit.HPM26 置位时,计数器不递增;该位只控制递增,不控制可访问性。

放回真实流程里理解

1

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

2

必要时用 mcountinhibit.HPM26 控制计数窗口。

3

读取 mhpmcounter26(RV32 同时读取 mhpmcounter26h)以获得最多 64 位精度的事件计数。

常见问题

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

不能直接从任意特权级访问 mhpmcounter26。CSR 表将它列为 Machine 读写 CSR。较低特权级访问对应的只读 hpmcounter26 视图时,S/U 模式受 mcounteren.HPM26 控制,U 模式还受 scounteren.HPM26 控制;未获许可的读取会触发非法指令异常。

mhpmcounter26 和 hpmcounter26 是什么关系?

mhpmcounter26 是 Machine 读写计数器;hpmcounter26 是对应的低特权级只读影子。S/U 模式读取受 mcounteren.HPM26 控制,U 模式还受 scounteren.HPM26 控制。