CSR 位字段

RISC-V mhpmevent21h CSR 寄存器详解

地址 0x735特权级 Machine 模式访问 读写 / RV32 高半 / 32 位Machine 计数器与性能监控 CSR

mhpmevent21h(地址 0x735)是 RV32 上 mhpmevent21 位 63:32 的高半 CSR,随 Sscofpmf 提供。

位作用速览
bit 3 = 只有第 3 位;bits 12..11 = 第 12 到第 11 位
高位 MSB低位 LSB
字段映射

按 bit 字段理解 mhpmevent21h

0 个关键字段
官方依据与检索要点

mhpmevent21h 不是独立事件选择器,而是 RV32 上 mhpmevent21 的高 32 位访问窗口。它承载 Sscofpmf 的 OF 和模式过滤字段。

官方 Sscofpmf 将 mhpmevent21[63:58] 标准化为 OF 与 xINH 字段。
mhpmevent21h[31:26] 对应这些标准化高位。
具体事件选择高位仍属于平台定义事件编码的一部分。

读这个 CSR 时先看什么

  • - mhpmevent21h 是 RV32-only 高半 CSR,并且随 Sscofpmf 提供。
  • - 读取它等价于读取 mhpmevent21 的位 63:32。
  • - 若实现 Supervisor 模式,OF 位也可通过 scountovf 的对应只读影子位观察。

写入前的风险检查

  • - 保留 WPRI 位,且不要在不了解平台事件编码时修改 EVENT_HI。
  • - 写 mhpmevent21h 会改变 mhpmevent21 的高 32 位,包括 OF 和 xINH 控制。

放回真实流程里理解

1

在 RV32 上读取 mhpmevent21h 查看 mhpmevent21 高半状态。

2

按需要处理 OF 或模式过滤位。

3

结合 mhpmcounter21 读数和 scountovf 检查溢出状态。

常见问题

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

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

mhpmevent21h 和 mhpmevent21 应该同时写吗?

在 RV32 上需要按 64 位 CSR 高低半的一致性处理,避免一个路径写高半、另一个路径同时写低半造成配置不一致。