CSR 位字段

RISC-V sctrdepth CSR 寄存器详解

地址 0x15F特权级 Supervisor 模式访问 读写 / 32Supervisor AIA、定时器与间接中断 CSR

sctrdepth(0x15F)是 32 位 Supervisor CTR depth CSR,用 WARL DEPTH 字段选择 CTR buffer 深度。

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

按 bit 字段理解 sctrdepth

2 个关键字段
2:0

DEPTH

WARL

选择 CTR buffer 深度:000=16,001=32,010=64,011=128,100=256,11x 保留;实现可只支持部分值。

这个字段控制什么

  • - 选择 CTR buffer 深度:000=16,001=32,010=64,011=128,100=256,11x 保留;实现可只支持部分值。

常见取值

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

打开官方手册
31:3

WPRI

保留

未定义位按 WPRI 处理。

这个字段控制什么

  • - 未定义位按 WPRI 处理。

常见取值

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

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

sctrdepth 决定 CTR buffer 的有效 entry 数量。逻辑 entry 超出当前 depth 时读为 0 且只读。

DEPTH 是 WARL 字段,编码 000..100 分别表示 16..256 entries。
深度增加时,新可访问 entries 含有 unspecified but legal values。
官方文本预期 OS 通常只在启动时访问它,频繁访问可能增加虚拟化场景开销。

读这个 CSR 时先看什么

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

写入前的风险检查

  • - 实现可只支持部分 DEPTH 编码;写入后应读回确认实际值。
  • - VS/VU 模式访问 sctrdepth 会触发 virtual-instruction exception,除非更高优先级的 state-enable 访问限制适用。

放回真实流程里理解

1

在 OS 启动或 CTR 初始化时选择期望的 buffer 深度。

2

写入 DEPTH 后读回确认 WARL 字段接受的实际值。

3

按实际 depth 解释逻辑 CTR entries;超出 depth 的逻辑 entry 读为 0 且只读。

常见问题

sctrdepth 支持所有深度吗?

不一定。DEPTH 是 WARL 字段,具体支持值由实现决定。