CSR 位字段

RISC-V mcycleh CSR 寄存器详解

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

mcycleh(地址 0xB80)仅在 RV32 上提供 mcycle 的位 63:32;它不是独立计数器。

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

按 bit 字段理解 mcycleh

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

mcycleh 是仅 RV32 存在的 mcycle 高半访问窗口:它读写同一 64 位周期计数器的位 63:32,而不是独立计数器。

CSR 表将 0xB80 列为仅 RV32 的 Machine 读写 mcycle 高 32 位。
RV32 读写 mcycleh 只访问 mcycle 的位 63:32;RV64 上该 CSR 不存在。

读这个 CSR 时先看什么

  • - mcycleh 仅在 RV32 上存在;RV32 读取 mcycle 得到位 31:0,读取 mcycleh 得到位 63:32。
  • - 读取正在递增的 64 位计数器时,用高-低-高稳定读取序列避免跨低半进位混合两个值。

写入前的风险检查

  • - 写 mcycleh 只改变对应 mcycle 的位 63:32,并在写指令以其他方式完成后生效。
  • - 不要把它当成独立计数器;RV64 上此 CSR 不存在。

放回真实流程里理解

1

在 RV32 上先读 mcycleh,再读 mcycle,再读 mcycleh。

2

若两次高半不同则重试;相同则两半组成同一个 64 位 mcycle 值。

常见问题

mcycleh 是独立计数器吗?

不是。它仅在 RV32 上访问同一 mcycle 计数器的位 63:32;mcycle 访问位 31:0。

如何在 RV32 上稳定读取 mcycle?

读取高半、低半、再读高半;若两次高半不同则重试,避免低半进位期间组合不一致的值。