CSR 位字段

RISC-V srmcfg CSR 寄存器详解

地址 0x181特权级 Supervisor 模式访问 读写 / SXLENSupervisor 地址转换与内存保护 CSR

srmcfg(0x181)是 Ssqosid 的 Supervisor Resource Management Configuration CSR,用 WARL RCID 和 MCID 字段配置资源控制与监控标识。

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

按 bit 字段理解 srmcfg

1 个关键字段
SXLEN-1:0

RCID_MCID

WARL

包含 Resource Control ID(RCID)和 Monitoring Counter ID(MCID)WARL 字段;具体位宽按 Ssqosid 图表和实现支持解释。

这个字段控制什么

  • - 包含 Resource Control ID(RCID)和 Monitoring Counter ID(MCID)WARL 字段;具体位宽按 Ssqosid 图表和实现支持解释。

常见取值

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

打开官方手册
官方依据与检索要点

srmcfg 为 hart 的共享资源请求配置 RCID 和 MCID。RCID 用于资源分配控制,MCID 用于资源使用监控。

官方 Ssqosid 文本定义 srmcfg 为 SXLEN 位读写寄存器。
RCID 和 MCID 均为 WARL 字段,具体可用宽度由实现/平台决定。
默认情况下 srmcfg 中的 RCID/MCID 适用于该 hart 上所有特权级的软件执行。

读这个 CSR 时先看什么

  • - 先确认当前 hart 实现 srmcfg 所属扩展;未实现或权限不足的 CSR 访问会触发非法指令异常。
  • - 结合地址 0x181、最低访问特权级和官方访问类判断软件是否可以直接访问。
  • - 读取保留、WPRI、WARL 或 WLRL 字段时不要假设固定值,应按官方规范和实现返回值解释。

写入前的风险检查

  • - RCID 和 MCID 都是 WARL;写入后应读回确认实现接受的合法值。
  • - 若 Smstateen 与 Ssqosid 同时实现,mstateen0.SRMCFG=0 会阻止低于 M 模式的 srmcfg 访问。
  • - V=1 时访问 srmcfg 会触发 virtual-instruction exception(除非相关 state-enable 限制先适用)。

放回真实流程里理解

1

根据平台资源控制/监控策略选择 RCID 和 MCID。

2

写入 srmcfg 后读回,确认 WARL 字段接受的合法 RCID/MCID 值。

3

在虚拟化或 state-enable 场景中,先确认 mstateen0.SRMCFG 等访问控制允许当前上下文使用该 CSR。

常见问题

srmcfg 是页表或 PMP CSR 吗?

不是。它是 Ssqosid 资源管理/QoS 标识 CSR,不控制地址转换或 PMP 区域。