CSR 位字段

RISC-V mhpmevent19h CSR 寄存器详解

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

mhpmevent19h(地址 0x733)是 RV32 上 mhpmevent19 位 63:32 的高半 CSR,随 Sscofpmf 提供。

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

按 bit 字段理解 mhpmevent19h

8 个关键字段
31

OF

读写

对应 mhpmevent19[63],mhpmcounter19 溢出状态和中断禁用位。

这个字段控制什么

  • - 对应 mhpmevent19[63],mhpmcounter19 溢出状态和中断禁用位。

常见取值

Sscofpmf OF bit
0未记录溢出

mhpmcounter19 的 OF 位未置位;该位本身不禁止后续 count-overflow interrupt request 的产生。

1已记录溢出

mhpmcounter19 已发生溢出并置位 sticky OF;该位保持为 1 直到软件写入清除,同时禁止该计数器产生新的 count-overflow interrupt request。

30

MINH

读写

对应 mhpmevent19[62];置 1 时抑制 M 模式事件计数。

这个字段控制什么

  • - 对应 mhpmevent19[62];置 1 时抑制 M 模式事件计数。

常见取值

MINH mode-filter bit
0计数允许

M 模式 中的mhpmcounter19 事件计数不由该位禁止;仍受其他计数器配置、事件选择和实现支持情况约束。

1计数禁止

M 模式 中的mhpmcounter19 事件计数被禁止。

29

SINH

读写

对应 mhpmevent19[61];置 1 时抑制 S/HS 模式事件计数。

这个字段控制什么

  • - 对应 mhpmevent19[61];置 1 时抑制 S/HS 模式事件计数。

常见取值

SINH mode-filter bit
0计数允许

S/HS 模式 中的mhpmcounter19 事件计数不由该位禁止;仍受其他计数器配置、事件选择和实现支持情况约束。

1计数禁止

S/HS 模式 中的mhpmcounter19 事件计数被禁止;若相关特权模式未实现,该位为只读零。

28

UINH

读写

对应 mhpmevent19[60];置 1 时抑制 U 模式事件计数。

这个字段控制什么

  • - 对应 mhpmevent19[60];置 1 时抑制 U 模式事件计数。

常见取值

UINH mode-filter bit
0计数允许

U 模式 中的mhpmcounter19 事件计数不由该位禁止;仍受其他计数器配置、事件选择和实现支持情况约束。

1计数禁止

U 模式 中的mhpmcounter19 事件计数被禁止;若相关特权模式未实现,该位为只读零。

27

VSINH

读写

对应 mhpmevent19[59];置 1 时抑制 VS 模式事件计数。

这个字段控制什么

  • - 对应 mhpmevent19[59];置 1 时抑制 VS 模式事件计数。

常见取值

VSINH mode-filter bit
0计数允许

VS 模式 中的mhpmcounter19 事件计数不由该位禁止;仍受其他计数器配置、事件选择和实现支持情况约束。

1计数禁止

VS 模式 中的mhpmcounter19 事件计数被禁止;若相关特权模式未实现,该位为只读零。

26

VUINH

读写

对应 mhpmevent19[58];置 1 时抑制 VU 模式事件计数。

这个字段控制什么

  • - 对应 mhpmevent19[58];置 1 时抑制 VU 模式事件计数。

常见取值

VUINH mode-filter bit
0计数允许

VU 模式 中的mhpmcounter19 事件计数不由该位禁止;仍受其他计数器配置、事件选择和实现支持情况约束。

1计数禁止

VU 模式 中的mhpmcounter19 事件计数被禁止;若相关特权模式未实现,该位为只读零。

25:24

WPRI

WPRI

对应 mhpmevent19[57:56] 的保留写保留值字段。

这个字段控制什么

  • - 对应 mhpmevent19[57:56] 的保留写保留值字段。

常见取值

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

23:0

EVENT_HI

WARL

对应 mhpmevent19[55:32] 的平台定义事件选择高位。

这个字段控制什么

  • - 对应 mhpmevent19[55:32] 的平台定义事件选择高位。

常见取值

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

官方依据与检索要点

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

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

读这个 CSR 时先看什么

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

写入前的风险检查

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

放回真实流程里理解

1

在 RV32 上读取 mhpmevent19h 查看 mhpmevent19 高半状态。

2

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

3

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

常见问题

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

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

mhpmevent19h 和 mhpmevent19 应该同时写吗?

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