RVA23之后:RISC-V架构的安全与性能演进方向

RVA23之后:RISC-V架构的安全与性能演进方向

引言

RVA23规范的发布标志着RISC-V社区的又一重要里程碑。尽管它为大规模部署提供了坚实基础,但创新从未止步,未来几年我们将见证更多扩展和配置文件的推出。 upcoming innovations主要集中在几个关键领域:

  • 安全相关扩展,例如控制流完整性(CFI)。
  • 性能相关扩展,如矩阵运算扩展。
  • 规范小修订,例如RVA23.1。

本文将深入探讨这些内容,并分析Canonical及更广泛的社区对这些扩展的支持策略。

安全扩展

RISC-V拥有多种安全机制,如内存保护、内存管理和权限级别,但这些主要针对合法程序的正确运行。在恶意攻击风险日益增长的现代计算环境中,这些已显不足。幸运的是,针对此类威胁的多层防御机制正在积极开发中。其中,CFI已于2024年由RISC-V国际组织批准,其他扩展预计在2026或2027年完成批准流程。

控制流完整性(CFI)

CFI是一种轻量级可选扩展,旨在防范返回导向编程(ROP)和调用/跳转导向编程(COP/JOP)等控制流攻击。这类攻击通过改变程序执行流,跳转到代码中意外位置,利用程序二进制中的“小工具”片段执行任意代码。

CFI由两个独立扩展组成:

  • Zicfilp
  • Zicfiss

两者均用于控制程序流,防止跳转到非预期代码位置,并最大限度兼容现有RVA23硬件——若硬件未实现相关扩展,指令将被忽略。不过,在未支持Zimop操作码的预RVA23硬件上,Zicfiss指令会触发陷阱。尽管空操作指令(NOP)对性能和代码大小不理想,但这为软件快速采用(如编译器工具链)提供了灵活性,硬件可用后即可无缝工作。

其工作机制如下:

  • 第一个扩展(Zicfilp)创建着陆垫。若程序分支到非着陆垫位置,将触发陷阱,阻止攻击者跳转到非显式分支目标。
  • 第二个扩展(Zicfiss)保护函数返回。攻击者常通过覆盖栈来篡改返回地址,使程序跳转到意外位置。该扩展引入影子栈,函数调用时将返回地址同时存入常规栈和影子栈,返回时比较两者值,不匹配则触发陷阱,终止执行以阻止攻击。

RISC-V Control-Flow Integrity (CFI) – Ved Shanbhogue, Rivos & George Christou

矩阵扩展

AI/ML是近年来RISC-V增长最快的领域之一,其应用场景多样,大多依赖大量矩阵运算。不同场景(如小型IoT端点与服务器)对扩展的需求不同,RISC-V提供了三种矩阵扩展方案:集成矩阵扩展(IME)、向量矩阵扩展(VME)和附加矩阵扩展(AME)。

从Canonical视角看,更值得关注的是这些扩展对软件和工具链的影响。操作系统需感知架构状态以处理上下文切换:

  • VME与标准向量扩展类似,无需额外状态或OS级修改。
  • IME和AME更复杂,需OS修改支持。IME扩展向量寄存器文件并增加结果寄存器,AME则引入全新寄存器文件,上下文切换时OS需处理这些寄存器。

之前的文章中,我们讨论了通过sys_riscv_hwprobe() Linux系统调用检测RISC-V定制指令的方法。该函数可向应用程序返回特定扩展的支持状态,同样适用于矩阵指令。这意味着代码库可编译支持多种实现方案,运行时软件可根据实际情况选择合适实现。

配置文件更新

架构的演进是必然的。应用场景变化、新应用涌现以及硅实现复杂度的提升,都推动着RISC-V规范的更新。RISC-V国际组织通过小修订(如RVA23.1)引入可选扩展,既保持长期软件稳定性,又允许创新。这些可选扩展分为两类:

  • 开发选项
  • 扩展选项

开发选项作为预研阶段引入,旨在探索新功能可行性,而扩展选项则针对特定场景优化性能或功能。


关注微信号:智享开源 ,及时了解更新信息。

原文链接:https://ubuntu.com//blog/evolution-of-the-risc-v-isa-what-next-after-rva23

评论列表

发表评论

你必须 登录 才能发表评论.

为您推荐


请支持IMCN发展!

谁在捐赠

微信捐赠 支付宝捐赠
微信捐赠 支付宝捐赠
ta的个人站点

发表文章4669篇

关注我的头条 不要放弃,百折不挠,坚强、自信。


扫码关注公众号:智享开源

最新科技信息


归档

近期评论