Page 349 - 《软件学报》2021年第12期
P. 349
刘畅 等:RISC-V 指令集架构研究综述 4013
partition,简称 SP)TLB 和随机填充(random-fill,简称 RF)TLB.他们使用 Rocket 开源 IP 核实现的 RISC-V 处理器
架构评估了所提出的安全 TLB.
2020 年,Sehatbakhsh 等人 [145] 提出了一种模拟电磁侧信道信号的方法 EMSim,可以使用器件架构模型对电
磁侧信道信号进行逐周期模拟,以定量分析侧信道泄露,从而为设计对侧信道攻击具有高弹性的系统打下基础.
4.3.5 安全策略总结
表 10 总结了本节提及的各类 RISC-V 系统中可用的安全策略.
Table 10 Summary of RISC-V security mechanisms
表 10 RISC-V 安全策略总结
威胁类别 防御原理 优势或能力 劣势或注意事项 相关工作
要求对供应链各个环节 [121]
供应链安全 从源头防止恶意微代码的注入 Keystone
硬件微架构 都有足够的防护,波及面广
攻击 增强微码信息或代码执行信息的 [120]
微架构安全 力度有限,难以完全防御 Microcode CPU
不透明度
保证控制流转移目标范围; 粗粒度 CFI 无法彻底保护 [126]
控制流完整性 PUFCanary
技术相对成熟 控制流;细粒度成本较高
规范内存边界,在内存布局层面 要求栈空间具有足够的 [54]
内存攻击 基于内存保护 MAC
(程序劫持) 提供保护,验证方便 隔离性
通过安全的硬件代码设计和制定 需要定制安全硬件, HyperFlow [128] ,
基于安全硬件 信息流策略;可利用硬件信息进行防 成本相对较高 Morpheus [129] ,
御,减少对软件应用运行的干扰 TrustFlow-X [130]
内存安全性约束 有效对抗 DOP 攻击 需结合辅助硬件使用 RSE [132]
Hardscope [132] ,
从硬件层面根本上保证强隔离性 需要引入额外的辅助硬件, [133]
辅助硬件 和强对抗性,简化 成本相对较高 Shakti-T ,
内存攻击 FIXER [126]
通过加密设计提供轻量级 只针对已知攻击向量,保护范 [134]
内存保护单元 MPU
但健壮的对抗方式 围有限
程序验证 理论上支持对任意内存模型的检测 并非直接的对抗手段 HMC [135]
电磁对策 有效对抗基于电磁的攻击 需结合具体威胁模型分析 对策集成 [143]
侧信道攻击 时间对策 有效对抗基于时间的攻击 需结合具体威胁模型分析 安全 TLB [144]
测试与检验 标准明确,判断准确 并非直接的对抗手段 EMSim [145] ,FCA [141]
5 RISC-V 应用场景分析
本节将列举一些利用 RISC-V 促进特定领域应用研究的案例,并对 RISC-V 在其中所能发挥的作用以及应
用要点进行简要的分析.其中,第 1 个应用 [115] 描述了一种对 RISC-V 指令集自身的扩展场景;第 2 个应用 [19] 介绍
了利用 RISC-V 实现特定领域功能的系统设计场景;第 3 个应用 [146] 研究了一种发掘 RISC-V 系统潜力、提升系
统性能的方法;第 4 个应用 [147] 围绕系统安全主题,讨论了一种利用 RISC-V 实现安全批准的实施方案.
5.1 RAE:一种远程原子扩展
5.1.1 场景描述
在图形分析、机器学习、数据驱动的科学计算等新兴的数据密集型应用的推动下,HPC 系统的结构逐渐复
杂化,大量数据集被映射到离散的节点中,以实现分布式存储和计算.这种数据分布将导致频繁的跨节点数据事
务.尤其是在全局原子操作中,跨节点的读写修改等操作包含了多个操作步骤和特定的原子性管理,导致了大量
开销.解决开销问题需要一种有效的通信方法,并结合相应的软件基础设施来实现对离散组件的集成,减少跨设
备的冗余软件例程.为此,在 2020 年,Wang 等人提出了一种 RAE 的设计 [115] ,为基于 RISC-V ISA 架构的远程原
子操作提供了内在的 ISA 级指令和架构支持,最终改善 HPC 系统的性能.
RAE 首先引入了已有的 xBGAS 扩展指令集以支持全局内存寻址功能.然后,设计了一系列原子指令,通过
xBGAS 寻址来执行远程原子操作.这些操作共有 7 类:fetch-and-add、fetch-and-xor、fetch-and-or、fetch-and-and、
fetch-and-max、fetch-and-min、compare-and-swap,每一类都包含一条远程原子操作指令和一条对应的本地原子
指令,均采用 R 型指令格式.因此,RAE 扩展共包含了 14 条 R 型原子操作指令.图 7 以 fetch-and-add 指令为例,