riscv Sstc(Supervisor Software Timer Extension)扩展介绍

RISC-V Sstc 扩展内容总结

Sstc(Supervisor Software Timer Extension)扩展为 RISC-V 特权架构引入了 S-mode 和 VS-mode 的直接定时器中断管理机制,减少对 M-mode 的依赖。以下是其核心新增内容及修改:


一、新增 CSR 寄存器

  1. stimecmp(Supervisor Timer Compare)
    功能:64 位寄存器,用于 S-mode 定时器中断比较。当 timestimecmp 时触发 STIP 中断
    RV32 支持:通过 stimecmp(低 32 位,CSR 编号 0x14D)和 stimecmph(高 32 位,0x15D)分两次访问。
    中断行为
    ◦ STIP 中断在 mipsip 中为只读,由硬件自动设置。
    ◦ 写入 stimecmp 大于当前 time 可清除中断。

  2. vstimecmp(Virtual Supervisor Timer Compare)
    功能:用于 VS-mode(Hypervisor 扩展)的定时器比较,触发 VSTIP 中断。条件为 (time + htimedelta)vstimecmp
    RV32 支持:通过 vstimecmp(低 32 位,0x24D)和 vstimecmph(高 32 位,0x25D)分两次访问。
    中断行为:VSTIP 中断在 hip 中为只读,由硬件设置,写入 vstimecmp 大于 (time + htimedelta) 可清除。


二、对现有寄存器的修改

  1. mipmie 寄存器
    STIP/STIE 位:若 stimecmp 存在,mip.STIP 变为只读(硬件驱动),原 M-mode 写入功能失效。

  2. sipsie 寄存器
    STIP/STIE 位:直接反映 stimecmp 触发的中断状态,由硬件控制。

  3. hiphie 寄存器
    VSTIP/VSTIE 位:若 vstimecmp 存在,hip.VSTIPhvip.VSTIPvstimecmp 信号的逻辑或。


三、权限控制与访问规则

  1. mcounteren 寄存器
    TM 位:控制 S/VS-mode 对 stimecmpvstimecmp 的访问权限。若 TM=0,非 M-mode 访问会触发非法指令异常。

  2. hcounteren 寄存器
    TM 位:控制 VS-mode 对 vstimecmp 的访问权限。若 TM=0,VS-mode 访问会触发虚拟指令异常(需 mcounteren.TM=1)。


四、环境配置寄存器支持

  1. menvcfghenvcfg
    STCE 位(位 63 或 31):
    menvcfg.STCE:启用 S-mode 的 stimecmp 和 VS-mode 的 vstimecmp
    henvcfg.STCE:启用 VS-mode 的 vstimecmp
    默认行为:若 STCE=0,访问 stimecmp/vstimecmp 会触发异常,中断逻辑回退到无 Sstc 扩展的状态。

五、Hypervisor 扩展补充

  1. VS-mode 定时器中断
    • 使用 vstimecmp 比较 (time + htimedelta) 触发 VSTIP 中断。
    • Hypervisor 可通过 SBI 调用兼容旧 VS-mode 软件,同时新软件可直接操作 vstimecmp

六、关键机制与注意事项

  1. 中断清除方式
    • 写入 stimecmpvstimecmp 使其大于当前时间值以清除中断。

  2. 虚假中断处理
    • 若中断处理程序快速修改 stimecmp,可能因延迟导致虚假中断,需软件容忍。

  3. 兼容性
    • 保留 SBI 调用支持,确保旧 S/VS-mode 代码正常运行。
    • 新软件可直接操作 stimecmp/vstimecmp 提升性能。


七、总结

Sstc 扩展通过 硬件级定时器中断委托,显著降低 S/VS-mode 对 M-mode 的依赖,减少上下文切换开销。其核心新增内容包括:
专用定时器比较寄存器stimecmp/vstimecmp)。
中断状态与权限控制的硬件自动化
环境配置寄存器menvcfg/henvcfg)的启用机制。
• 对 Hypervisor 扩展的深度适配,支持虚拟化场景。

该扩展为实时系统和多任务环境提供了更高效的中断处理能力,同时保持向后兼容性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值