特权模式与控制状态寄存器
处理器模式
昆明湖 V2R2 支持 RISC-V 特权架构手册规定的以下 6 种特权模式。
| 名称 | 缩写 | PRV | V |
|---|---|---|---|
| 机器模式(Machine mode) | M | 3 | 0 |
| 监管模式(Supervisor mode) | HS/S | 1 | 0 |
| 用户模式(User mode) | U | 0 | 0 |
| 虚拟监管模式(Virtual supervisor mode) | VS | 1 | 1 |
| 虚拟用户模式(Virtual user mode) | VU | 0 | 1 |
| 调试模式(Debug mode) | D |
昆明湖 V2R2 初始化时处在 M 模式。对于一般场景,各模式权限高低为 M > S > U;对于虚拟化场景,各模式权限高低为 M > HS > VS > VU。
机器模式
机器模式(Machine mode,M 模式)由机器级 ISA 规定,具有最高的权限。M 模式通常用于机器固件,具有以下特性:
- M 模式下可以访问全部的 M、S、H、VS、U CSR,但不可访问部分调试模式 CSR。
- M 模式通常以物理地址取指、访存,不进行虚拟地址翻译,但以下情况除外:
mstatus.MPRV = 1 时,加载(Load)和存储(Store)操作按 MPP 字段指定的模式进行虚拟地址翻译。- 使用 HLV、HLVX、HSV 等虚拟机加载存储指令时,按照
hstatus字段的 SPVP 字段指定的虚拟模式(VS 或 VU)进行两阶段地址翻译。 - M 模式取指、访存通常不进行 PMP 检查,默认情况下具有权限,但以下情况除外:
- 加载、存储操作按照上述条件以其他特权模式执行时,按照其特权模式进行 PMP 检查。
- 某个 PMP 项被锁定时,取指、访存操作均需检查此 PMP 项权限。
监管模式
监管模式(Supervisor mode,S 模式)由监管级 ISA 规定,虚拟化扩展将之扩充为为虚拟机管理扩展的监管模式(Hypervisor-extended supervisor mode,HS 模式)。S/HS 模式通常用于操作系统和虚拟机管理程序,其具有以下特性:
- S/HS 模式下可访问 S、H、VS、U CSR,不可访问 M CSR 和调试模式 CSR。
- S 模式的取指、访存通常需要根据 satp 寄存器进行虚拟地址翻译,但以下情况除外:
- 使用 HLV、HLVX、HSV 等虚拟机加载存储指令时,按照
hstatus.SPVP 字段指定的虚拟模式(VS 或 VU)进行两阶段地址翻译。 - S 模式总是需要进行 PMP 检查。
- S 模式不可执行 M 模式特权指令。
用户模式
用户模式(User mode,U 模式)具有以下特性:
- U 模式仅可访问非特权 CSR,主要包括浮点、向量和非特权计数器 CSR。
- U 模式的取指、访存通常需要根据 satp 寄存器进行虚拟地址翻译,但以下情况除外:
- 当
hstatus.HU = 1 时,使用 HLV、HLVX、HSV 等虚拟机加载存储指令时,按照hstatus.SPVP 字段指定的虚拟模式(VS 或 VU)进行两阶段地址翻译。 - U 模式总是需要进行 PMP 检查。
- U 模式通常不可执行特权指令,部分情况下存在例外。
虚拟监管模式
虚拟监管模式(Virtual supervisor mode,VS 模式)由虚拟化扩展引入,具有以下特性:
- VS 模式下可访问 S、U CSR,但不可访问 M、H、VS CSR。
- VS 模式下访问特定的 S 模式寄存器,会被重定向到对应的 VS 寄存器。
- VS 模式下的取指、访存通常需要根据 hgatp、vsatp 寄存器进行两阶段地址翻译。
- VS 模式总是需要进行 PMP 检查。
- VS 模式不可执行 M 模式特权指令,亦不可执行 H 特权指令。
虚拟用户模式
虚拟用户模式(Virtual user mode,VU 模式)由虚拟化扩展引入,具有以下特性:
- VU 模式仅可访问非特权 CSR,主要包括浮点、向量和非特权计数器 CSR。
- VU 模式下的取指、访存通常需要根据 hgatp、vsatp 寄存器进行两阶段地址翻译。
- VU 模式总是需要进行 PMP 检查。
- VU 模式通常不可执行特权指令。
调试模式
调试模式(Debug mode,Debug 模式)由调试扩展(Debug 扩展)引入,其特性和细节请参考 调试。
控制和状态寄存器(Control and Status Registers)
我们将以权限的不同对控制和状态寄存器(CSRs)进行分组介绍。
用户模式可读写的 CSRs
昆明湖 V2R2 中实现的权限为用户模式可读写(URW)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| fflags | U | 0x001 | 浮点异常累积状态寄存器 | 非特权浮点 |
| frm | U | 0x002 | 浮点动态舍入模式寄存器 | 非特权浮点 |
| fcsr | U | 0x003 | 浮点控制和状态寄存器 | 非特权浮点 |
| vstart | U | 0x008 | 向量起始位置寄存器 | 非特权向量 |
| vxsat | U | 0x009 | 定点溢出标志位寄存器 | 非特权向量 |
| vxrm | U | 0x00A | 定点舍入模式寄存器 | 非特权向量 |
| vcsr | U | 0x00F | 向量控制和状态寄存器 | 非特权向量 |
| vl | U | 0xC20 | 向量长度寄存器 | 非特权向量 |
| vtype | U | 0xC21 | 向量数据类型寄存器 | 非特权向量 |
| vlenb | U | 0xC22 | 向量寄存器字节数寄存器 | 非特权向量 |
用户模式只读的 CSRs
昆明湖 V2R2 中实现的权限为用户模式只读(URO)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| cycle | U | 0xC00 | 用户模式周期计数器 | 用户模式计数器 |
| time | U | 0xC01 | 用户模式时间计数器 | 用户模式计数器 |
| instret | U | 0xC02 | 用户模式退休指令计数器 | 用户模式计数器 |
| hpmcounter3 | U | 0xC03 | 用户模式计数器3 | 用户模式计数器 |
| ... | ... | ... | ... | ... |
| hpmcounter31 | U | 0xC1F | 用户模式计数器31 | 用户模式计数器 |
监管模式可读写的 CSRs
昆明湖 V2R2 中实现的权限为监管模式可读写(SRW)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| sstatus | S | 0x100 | 监管模式处理器状态寄存器 | 监管陷入设置 |
| sie | S | 0x104 | 监管模式中断使能控制寄存器 | 监管陷入设置 |
| stvec | S | 0x105 | 监管模式陷入向量基址寄存器 | 监管陷入设置 |
| scounteren | S | 0x106 | 监管模式计数器使能控制寄存器 | 监管陷入设置 |
| senvcfg | S | 0x10A | 监管模式环境配置寄存器 | 监管环境配置 |
| sscratch | S | 0x140 | 监管模式陷入临时数据备份寄存器 | 监管陷入处理 |
| sepc | S | 0x141 | 监管模式陷入保留程序计数器 | 监管陷入处理 |
| scause | S | 0x142 | 监管模式陷入事件原因寄存器 | 监管陷入处理 |
| stval | S | 0x143 | 监管模式陷入事件向量寄存器 | 监管陷入处理 |
| sip | S | 0x144 | 监管模式陷入事件等待状态寄存器 | 监管陷入处理 |
| stimecmp | S | 0x14D | 监管模式计时器中断比较值寄存器 | 监管陷入设置 |
| siselect | S | 0x150 | 监管模式间接寄存器选择信号寄存器 | 监管间接访问寄存器 |
| sireg | S | 0x151 | 监管模式间接寄存器别名寄存器 | 监管间接访问寄存器 |
| stopei | S | 0x15C | 监管模式顶部外部中断寄存器 | 监管中断 |
| satp | S | 0x180 | 监管模式虚拟地址转换和保护寄存器 | 监管保护和转换 |
| scontext | S/Debug | 0x5A8 | 监管模式上下文寄存器 | 调试寄存器 |
| sbpctl | S | 0x5C0 | 推测状态分支预测控制寄存器 | 推测状态分支预测控制 |
| spfctl | S | 0x5C1 | 推测状态预取控制寄存器 | 推测状态分支预测控制 |
| slvpredctl | S | 0x5C2 | 推测状态LOAD违例预测控制寄存器 | 推测状态分支预测控制 |
| smblockctl | S | 0x5C3 | 推测状态内存阻塞控制寄存器 | 推测状态分支预测控制 |
| srnctl | S | 0x5C4 | 推测状态运行时控制寄存器 | 推测状态运行时控制 |
监管模式只读的 CSRs
昆明湖 V2R2 中实现的权限为监管模式只读(SRO)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| stopi | S | 0xDB0 | 监管模式顶层中断 | 监管中断 |
虚拟监管模式可读写的 CSRs
昆明湖 V2R2 中实现的权限为虚拟监管模式可读写(HRW)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| vsstatus | VS | 0x200 | 虚拟监管模式处理器状态寄存器 | 虚拟监管 |
| vsie | VS | 0x204 | 虚拟监管模式中断使能控制寄存器 | 虚拟监管 |
| vstvec | VS | 0x205 | 虚拟监管模式陷入向量基址寄存器 | 虚拟监管 |
| vsscratch | VS | 0x240 | 虚拟监管模式陷入临时数据备份寄存器 | 虚拟监管 |
| vsepc | VS | 0x241 | 虚拟监管模式陷入保留程序计数器 | 虚拟监管 |
| vscause | VS | 0x242 | 虚拟监管模式陷入事件原因寄存器 | 虚拟监管 |
| vstval | VS | 0x243 | 虚拟监管模式陷入事件向量寄存器 | 虚拟监管 |
| vsip | VS | 0x244 | 虚拟监管模式陷入事件等待状态寄存器 | 虚拟监管 |
| vstimecmp | VS | 0x24D | 虚拟监管模式计时器中断比较值寄存器 | 虚拟监管 |
| vsiselect | VS | 0x250 | 虚拟监管模式间接寄存器选择信号寄存器 | 虚拟监管间接访问寄存器 |
| vsireg | VS | 0x251 | 虚拟监管模式间接寄存器别名寄存器 | 虚拟监管间接访问寄存器 |
| vstopei | VS | 0x25C | 虚拟监管模式顶部外部中断寄存器 | 虚拟监管中断 |
| vsatp | VS | 0x280 | 虚拟监管模式虚拟地址转换和保护寄存器 | 虚拟监管 |
| hstatus | HS | 0x600 | 虚拟机模式处理器状态寄存器 | 虚拟机陷入设置 |
| hedeleg | HS | 0x602 | 虚拟机模式陷入降级控制寄存器 | 虚拟机陷入设置 |
| hideleg | HS | 0x603 | 虚拟机模式中断降级控制寄存器 | 虚拟机陷入设置 |
| hie | HS | 0x604 | 虚拟机模式中断使能寄存器 | 虚拟机陷入设置 |
| htimedelta | HS | 0x605 | 虚拟机模式虚拟化计时器 | 虚拟机计时器 |
| hcounteren | HS | 0x606 | 虚拟机模式计数器使能寄存器 | 虚拟机陷入设置 |
| hgeie | HS | 0x607 | 虚拟机模式客户机外部中断启用寄存器 | 虚拟机陷入设置 |
| hvien | HS | 0x608 | 虚拟机模式虚拟中断使能寄存器 | 虚拟机陷入设置 |
| hvictl | HS | 0x609 | 虚拟机模式虚拟中断控制寄存器 | 虚拟机陷入设置 |
| henvcfg | HS | 0x60A | 虚拟机模式环境配置寄存器 | 虚拟机配置 |
| htval | HS | 0x643 | 虚拟机模式陷入事件向量寄存器 | 虚拟机陷入处理 |
| hip | HS | 0x644 | 虚拟机模式陷入事件等待状态寄存器 | 虚拟机陷入处理 |
| hvip | HS | 0x645 | 虚拟机模式虚拟中断挂起寄存器 | 虚拟机陷入处理 |
| hviprio1 | HS | 0x646 | 虚拟机模式VS-Level中断优先级寄存器1 | 虚拟机陷入处理 |
| hviprio2 | HS | 0x647 | 虚拟机模式VS-Level中断优先级寄存器2 | 虚拟机陷入处理 |
| htinst | HS | 0x64A | 虚拟机模式陷入指令寄存器 | 虚拟机陷入处理 |
| hgatp | HS | 0x680 | 虚拟机模式客户地址转换和保护寄存器 | 虚拟机保护和转换 |
| hcontext | HS/Debug | 0x6A8 | 虚拟机模式上下文寄存器 | 调试寄存器 |
虚拟监管模式只读的 CSRs
昆明湖 V2R2 中实现的权限为虚拟监管模式只读(HRO)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| hgeip | HS | 0xE12 | 虚拟机模式客户机外部中断挂起寄存器 | 虚拟机陷入处理 |
| vstopi | VS | 0xEB0 | 虚拟监管模式顶层中断 | 虚拟监管级中断 |
机器模式可读写的 CSRs
昆明湖 V2R2 中实现的权限为机器模式可读写(MRW)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| mstatus | M | 0x300 | 机器模式处理器状态寄存器 | 机器陷入设置 |
| misa | M | 0x301 | 机器模式处理器指令集寄存器 | 机器陷入设置 |
| medeleg | M | 0x302 | 机器模式陷入降级控制寄存器 | 机器陷入设置 |
| mideleg | M | 0x303 | 机器模式中断降级控制寄存器 | 机器陷入设置 |
| mie | M | 0x304 | 机器模式中断使能寄存器 | 机器陷入设置 |
| mtvec | M | 0x305 | 机器模式陷入向量基址寄存器 | 机器陷入设置 |
| mcounteren | M | 0x306 | 机器模式计数器使能寄存器 | 机器陷入设置 |
| mvien | M | 0x308 | 机器模式虚拟中断使能寄存器 | 机器陷入设置 |
| mvip | M | 0x309 | 机器模式虚拟中断挂起寄存器 | 机器陷入设置 |
| menvcfg | M | 0x30A | 机器模式环境配置寄存器 | 机器配置 |
| mstateen0 | M | 0x30C | 机器模式状态使能寄存器 | 机器状态使能扩展 |
| mcountinhibit | M | 0x320 | 机器模式计数禁止寄存器 | 机器计数器配置 |
| mhpmevent3 | M | 0x323 | 机器模式性能监测事件选择寄存器3 | 机器计数器配置 |
| ... | ... | ... | ... | ... |
| mhpmevent31 | M | 0x33F | 机器模式性能监测事件选择寄存器31 | 机器计数器配置 |
| mscratch | M | 0x340 | 机器模式陷入临时数据备份寄存器 | 机器陷入处理 |
| mepc | M | 0x341 | 机器模式陷入保留程序计数器 | 机器陷入处理 |
| mcause | M | 0x342 | 机器模式陷入事件原因寄存器 | 机器陷入处理 |
| mtval | M | 0x343 | 机器模式陷入事件向量寄存器 | 机器陷入处理 |
| mip | M | 0x344 | 机器模式陷入事件等待状态寄存器 | 机器陷入处理 |
| mtinst | M | 0x34A | 机器模式陷入指令寄存器 | 机器陷入处理 |
| mtval2 | M | 0x34B | 机器模式陷入事件向量寄存器2 | 机器陷入处理 |
| miselect | M | 0x350 | 机器模式间接寄存器选择信号寄存器 | 机器间接访问寄存器 |
| mireg | M | 0x351 | 机器模式间接寄存器别名寄存器 | 机器间接访问寄存器 |
| mtopei | M | 0x35C | 机器模式顶部外部中断寄存器 | 机器中断 |
| pmpcfg0 | M | 0x3A0 | 物理内存保护配置寄存器0 | 机器内存保护 |
| pmpcfg2 | M | 0x3A2 | 物理内存保护配置寄存器2 | 机器内存保护 |
| ... | ... | ... | ... | ... |
| pmpcfg14 | M | 0x3AE | 物理内存保护配置寄存器14 | 机器内存保护 |
| pmpaddr0 | M | 0x3B0 | 物理内存保护基址寄存器0 | 机器内存保护 |
| ... | ... | ... | ... | ... |
| pmpaddr63 | M | 0x3EF | 物理内存保护基址寄存器63 | 机器内存保护 |
| mnscratch | M | 0x740 | 机器模式不可屏蔽中断临时数据备份寄存器 | 机器不可屏蔽中断处理 |
| mnepc | M | 0x741 | 机器模式不可屏蔽中断保留程序计数器 | 机器不可屏蔽中断处理 |
| mncause | M | 0x742 | 机器模式不可屏蔽中断事件原因寄存器 | 机器不可屏蔽中断处理 |
| mnstatus | M | 0x744 | 机器模式不可屏蔽处理器状态寄存器 | 机器不可屏蔽中断处理 |
| mseccfg | M | 0x747 | 机器模式安全配置寄存器 | 机器配置 |
| tselect | M/Debug | 0x7A0 | Debug/Trace 触发器选择寄存器 | 调试寄存器 |
| tdata1 | M/Debug | 0x7A1 | 第一个 Debug/Trace 触发器数据寄存器 | 调试寄存器 |
| tdata2 | M/Debug | 0x7A2 | 第二个 Debug/Trace 触发器数据寄存器 | 调试寄存器 |
| tdata3 | M/Debug | 0x7A3 | 第三个 Debug/Trace 触发器数据寄存器 | 调试寄存器 |
| tinfo | M/Debug | 0x7A4 | Debug/Trace 触发器信息寄存器 | 调试寄存器 |
| tcontrol | M/Debug | 0x7A2 | 机器模式触发器使能寄存器 | 调试寄存器 |
| mcontext | M/Debug | 0x7A3 | 机器模式上下文寄存器 | 调试寄存器 |
| pmacfg0 | M | 0x7C0 | PMA配置寄存器0 | PMA配置 |
| pmacfg2 | M | 0x7C2 | PMA配置寄存器2 | PMA配置 |
| pmaaddr0 | M | 0x7C8 | PMA地址寄存器0 | PMA地址 |
| ... | ... | ... | ... | ... |
| pmaaddr15 | M | 0x7D7 | PMA地址寄存器15 | PMA地址 |
| mcycle | M | 0xB00 | 机器模式周期计数器 | 机器计数器 |
| minstret | M | 0xB02 | 机器模式退役指令计数器 | 机器计数器 |
| mhpmcounter3 | M | 0xB03 | 机器模式性能监测计数器3 | 机器计数器 |
| ... | ... | ... | ... | ... |
| mhpmcounter31 | M | 0xB1F | 机器模式性能监测计数器31 | 机器计数器 |
| mcorepwr | M | 0xBC0 | 机器模式处理器核功耗控制寄存器 | 机器功耗控制 |
机器模式只读的 CSRs
昆明湖 V2R2 中实现的权限为机器模式只读(MRO)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| mvendorid | M | 0xF11 | 供应商编号寄存器 | 机器信息 |
| marchid | M | 0xF12 | 架构编号寄存器 | 机器信息 |
| mimpid | M | 0xF13 | 机器模式硬件实现编号寄存器 | 机器信息 |
| mhartid | M | 0xF14 | 机器模式逻辑内核编号寄存器 | 机器信息 |
| mconfigptr | M | 0xF15 | 配置数据结构指针 | 机器信息 |
| mtopi | M | 0xFB0 | 机器模式顶层中断 | 机器陷入设置 |
调试模式可读写的 CSRs
昆明湖 V2R2 中实现的权限为调试模式可读写(DRW)的 RISC-V 的 CSRs 如下表所示:
| 名称 | 特权级 | 编号 | 描述 | 组别 |
|---|---|---|---|---|
| dcsr | Debug | 0x7B0 | 调试模式控制与状态寄存器 | 调试模式寄存器 |
| dpc | Debug | 0x7B1 | 调试模式程序计数器 | 调试模式寄存器 |
| dscratch0 | Debug | 0x7B2 | 调试模式暂存寄存器0 | 调试模式寄存器 |
| dscratch1 | Debug | 0x7B3 | 调试模式暂存寄存器1 | 调试模式寄存器 |
自定义 CSRs(Custom CSRs)
在上述实现的控制状态寄存器表中可以发现, 昆明湖 V2R2 扩展了 RISC-V 的 CSRs,实现了一些 RISC-V 手册中未定义的 CSR,下面将对这些 CSR 进行介绍。
sbpctl
sbpctl 的地址为 0x5C0,其初始化值为下表的默认值,其每一 bit 的功能如下表所示
| 位 | 功能 | 默认值 |
|---|---|---|
| 0 | UBTB_ENABLE 设1代表开启uftb | 1 |
| 1 | BTB_ENABLE 设1代表开启主ftb | 1 |
| 2 | BIM_ENABLE 设1代表开启bim预测器1 | 1 |
| 3 | TAGE_ENABLE 设1代表开启TAGE预测器 | 1 |
| 4 | SC_ENABLE 设1代表开启SC预测器 | 1 |
| 5 | RAS_ENABLE 设1代表开启RAS预测器 | 1 |
| 6 | LOOP_ENABLE 设1代表开启loop预测器2 | 1 |
| 7-31 | WARL | 0 |
spfctl
spfctl 的地址为 0x5C1,其初始化值为下表的默认值 ,其每一 bit 的功能如下表所示:
| 位 | 功能 | 默认值 |
|---|---|---|
| 0 | 控制 L1 指令预取器的开关:设 1 代表开启预取 | 1 |
| 1 | 控制 L2 预取器的开关,包括 L1 预取器直接发到 L2 缓存的预取,V/PBOP,TP:设 1 代表开启预取 | 1 |
| 2 | 控制 L1 预取器的开关,包括 Stream,Stride,SMS:设 1 代表开启预取 | 1 |
| 3 | 控制 SMS 预取器是否在 hit 时也接受训练:设 1 代表 hit 也会接受训练,设 0 代表只有 miss 才会训练 | 0 |
| 4 | 控制 SMS 预取器的 agt 表的预取开关:设 1 代表开启 agt 表预取 | 1 |
| 5 | 控制 SMS 预取器的 pht 表的预取开关:设 1 代表开启 pht 表预取 | 1 |
| 6-9 | 控制 SMS 预取器的 active page 的预取激活阈值 | 12 |
| 10-15 | 控制 SMS 预取器的 active page 的预取跨度 | 30 |
| 16 | 控制 L1 预取器中的 Stream, Stride 的开关:设为 1 代表开启该预取 | 1 |
| 17 | 控制 L2 预取器是否只对发下来的 store L1 miss 的请求做训练:设 1 代表是 | 0 |
| 18 | 控制 L2 预取器中的 L1 预取器直接发到 L2 缓存的预取的开关:设 1 代表开启该预取 | 1 |
| 19 | 控制 L2 预取器中的 PBOP 的开关:设 1 代表开启该预取 | 1 |
| 20 | 控制 L2 预取器中的 VBOP 的开关:设 1 代表开启该预取 | 1 |
| 21 | 控制 L2 预取器中的 TP 的开关:设 1 代表开启该预取 | 1 |
| 22-31 | 控制 L2 预取器中的 V/PBOP 的请求滞后更新的延迟:设为 0 则采用系统默认值(当前是300),设为非 0 则采用该延迟 | 0 |
| 高位 | 保留位 | 0 |
slvpredctl
slvpredctl 的地址为 0x5C2,其初始化值为下表的默认值 ,其每一 bit 的功能如下表所示
| 位 | 功能 | 默认值 |
|---|---|---|
| 0 | 控制访存违例预测器是否禁用,设 1 代表禁用 | 0 |
| 1 | 控制访存违例预测器是否禁止 load 指令推测执行,设 1 代表禁止 | 0 |
| 2 | 控制访存违例预测器是否会阻塞 store 指令,设 1 代表会阻塞 | 0 |
| 4-8 | 访存违例预测器的 reset 间隔,设该位域的值为 x,则间隔为 2^(10+x) | 6 |
| 其余位 | 目前其余位无功能 | 0 |
smblockctl
smblockctl 的地址为 0x5C3,其初始化值为下表的默认值 ,其每一 bit 的功能如下表所示
| 位 | 功能 | 默认值 |
|---|---|---|
| 0-3 | 控制 sbuffer 的 flush 阈值 | 7 |
| 4 | 控制是否开启 ld-ld 违例检查,设 1 代表开启 | 1 |
| 5 | 控制是否开启 soft prefetch,设 1 代表开启 | 1 |
| 6 | 控制是否上报 cache 发生的 ecc 错误,设 1 代表开启 | 1 |
| 7 | 控制是否支持 uncache 的 outstanding 访问,设 1 代表开启 | 0 |
| 其余位 | 目前其余位无功能 | 0 |
srnctl
srnctl 的地址为 0x5C4,其初始化值为下表的默认值 ,其每一 bit 的功能如下表所示
| 位 | 功能 | 默认值 |
|---|---|---|
| 0 | fusion decoder是否开启,1开启 | 1 |
| 1 | speculative virtual address inv 是否开启 | 1 |
| 2 | wfi 指令是否开启 | 1 |
| 其余位 | 目前其余位无功能 | 0 |
mcorepwr
mcorepwr 的地址为 0xBC0,其初始化值为下表的默认值,其每一 bit 的功能如下表所示:
| 位 | 功能 | 默认值 |
|---|---|---|
| 0 | 控制是否允许处理器核发起 power-down 请求,设 1 代表允许 | 0 |
| 1 | 控制是否开启 ROB commit stuck 超时检查并在超时时上报 critical error,设 1 代表开启,设 0 代表关闭 | 0 |
| 其余位 | 目前其余位无功能 | 0 |