CSR 位字段

RISC-V minstretcfgh CSR 寄存器详解

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

minstretcfgh(地址 0x722)是 RV32 上 minstretcfg 位 63:32 的 Machine 高半 CSR。

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

按 bit 字段理解 minstretcfgh

7 个关键字段
31

ZERO

只读 0

对应 minstretcfg[63],Smcntrpmf 定义为保留 0。

这个字段控制什么

  • - 对应 minstretcfg[63],Smcntrpmf 定义为保留 0。

常见取值

minstretcfgh.ZERO
0只读零

该位对应 Sscofpmf OF 位置,但 Smcntrpmf 规定 cycle/instret 配置中的该位为只读 0;软件不应写 1 或依赖 1 的含义。

30

MINH

读写

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

这个字段控制什么

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

常见取值

MINH mode-filter bit
0计数允许

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

1计数禁止

M 模式 中的instret 计数被禁止。

29

SINH

读写

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

这个字段控制什么

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

常见取值

SINH mode-filter bit
0计数允许

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

1计数禁止

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

28

UINH

读写

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

这个字段控制什么

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

常见取值

UINH mode-filter bit
0计数允许

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

1计数禁止

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

27

VSINH

读写

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

这个字段控制什么

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

常见取值

VSINH mode-filter bit
0计数允许

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

1计数禁止

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

26

VUINH

读写

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

这个字段控制什么

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

常见取值

VUINH mode-filter bit
0计数允许

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

1计数禁止

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

25:0

WPRI

WPRI

对应低 64 位寄存器中的保留写保留值字段。

这个字段控制什么

  • - 对应低 64 位寄存器中的保留写保留值字段。

常见取值

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

官方依据与检索要点

minstretcfgh 是 RV32 上访问 minstretcfg 位 63:32 的高半 CSR,主要承载 Smcntrpmf 的模式过滤控制位。

官方 Smcntrpmf 规定 minstretcfg 是 64 位寄存器,RV32 通过 minstretcfgh 访问高 32 位。
minstretcfgh[30:26] 对应 minstretcfg[62:58] 的 MINH/SINH/UINH/VSINH/VUINH。
WPRI 位写入时必须保留原值。

读这个 CSR 时先看什么

  • - minstretcfgh 是 RV32-only 高半 CSR;XLEN=64 时不应作为独立 CSR 使用。
  • - 读取它等价于读取 minstretcfg 的位 63:32。
  • - 相关特权模式未实现时,对应 xINH 位为只读 0。

写入前的风险检查

  • - 只写需要修改的高半 xINH 位,并保留 WPRI 位。
  • - 写 minstretcfgh 会改变 minstretcfg 的高 32 位;避免与完整 minstretcfg 写入路径冲突。

放回真实流程里理解

1

在 RV32 上读取 minstretcfgh 获得 minstretcfg 的高半配置。

2

调整需要的 xINH 位。

3

结合 minstret 计数结果验证过滤策略。

常见问题

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

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

minstretcfgh 在 RV64 上存在吗?

不作为独立高半 CSR 使用。RV64 通过 minstretcfg 直接访问完整 64 位配置。