摘要
RISC-V 处理器复杂度的指数级增长,对传统的硬件功能验证提出了严峻挑战。无论是定向测试(directed testing)还是约束随机仿真(constrained-random simulation),都难以高效应对现代处理器架构设计。尽管硬件模糊测试(hardware fuzzing)已成为发现深层微架构缺陷的有力替代方案,但现有的基于软件的模糊测试器受限于缓慢的 RTL 仿真速度,以及缺乏自适应引导、因而次优的变异策略,存在严重的性能瓶颈。我们提出 AdaMut-RV,一个专为 RISC-V 处理器验证优化的高吞吐、FPGA 加速模糊测试框架。与受软件束缚的方案不同,AdaMut-RV 将处理器与模糊测试器整体卸载到 FPGA 硬件上,实现了 MHz 量级的执行速度。
AdaMut-RV 的核心创新,是一个基于多臂老虎机(Multi-Armed Bandit, MAB)算法的智能变异算子调度器。我们将受 AFL 启发的变异算子归类为九个不同的类别,调度器依据实时硬件反馈,动态优先选择那些能带来最高覆盖率增益的算子。这种动态调度机制加速了处理器设计空间与关键边界情况(corner-case)逻辑的探索。初步结果表明,AdaMut-RV 显著优于当前最先进的基于软件的模糊测试器:在达到相同覆盖率目标时,它不仅实现了更高的控制和状态寄存器(CSR)覆盖率,而且收敛速度明显更快。
引言
随着 RISC-V 处理器设计日益复杂,验证其功能正确性所需的时间成本持续攀升。已有研究表明,功能验证通常占整个芯片开发周期的70% 以上[1]。将传统验证方法应用于现代复杂处理器设计时,不仅带来巨大的时间与人力开销,往往也难以有效探索处理器的深层边界情况状态空间。
尽管硬件模糊测试(如 DifuzzRTL[2]、Cascade[3])已通过覆盖率引导的测试生成成为一种高效的替代方案,但变异算子的调度仍是一个未被充分探索的瓶颈,限制了测试效能。
为解决这一问题,我们提出一种受多臂老虎机(MAB)算法启发的自适应变异调度器,它依据实时覆盖率增益动态优化算子的选择。通过将此框架部署于 FPGA 平台,我们将测试频率从 kHz 量级提升至 MHz 量级。相比软件仿真,这一显著的性能跃升大幅提升了复杂 RISC-V 设计的验证吞吐量与覆盖率可扩展性。
AdaMut-RV框架
AdaMut-RV是一个FPGA加速的硬件模糊测试框架,配备自适应变异算子调度机制。该框架自动生成测试用例并在目标处理器上执行,以获取覆盖率反馈。变异算子选择器接收观测到的覆盖率增量,通过根据近期性能数据计算权重,选择并采用表现最佳的变异算子用于下一轮迭代。这种自适应策略实现了对处理器设计空间的覆盖率驱动探索。
在执行过程中,PS端的ISA级软件模拟器运行与硬件相同的指令序列。差分检查模块比对两侧结果;任何偏差都会触发硬件快照(HW Snapshot)记录上下文日志,以供调试。该框架集成了多个关键组件:
语料库管理器(Corpus Manager)与生成器(Generator)——负责测试用例的全生命周期管理;
AFL 变异器(AFL Mutator)与MAB 选择器(MAB Selector)——负责智能变异;
配备 ISA 模拟器的检查器(Checker)——负责验证。
语料库管理器和生成器负责测试用例生命周期管理;AFL变异器和MAB选择器负责智能变异;检查器与ISA模拟器协同完成验证。
各模块间的协作交互如图一所示。下文将详述该框架的关键组成部分。
AFL变异器
AFL 变异器借助一套共九个专用变异算子,实现语料库内种子(seed)的演化。借鉴成熟的软件模糊测试方法,我们将这些AFL风格的算子改造以适配RISC-V ISA的架构约束。以比特翻转比特翻转(Bitflip)
变异为例,变异器以一定概率针对与操作码(opcode)相关的位域进行翻转。这一随机过程可能产生新颖的架构状态,或触发非法指令异常。后者虽然不可执行,却是对底层译码逻辑进行压力测试、发现细微边界情况缺陷的关键诊断手段。
MAB选择器
MAB选择器实现了一种源自多臂老虎机(MAB)框架的、精简的自适应启发式策略,同时面向生成器及一组AFL风格变异器。考虑到FPGA等硬件环境中浮点运算的计算开销,我们将传统的基于概率的选择方法改造为资源高效的架构。实现方案利用FIFO缓冲区跟踪每个“臂(arm)”在近期迭代中的经验覆盖率增益,并基于滑动平均增量确定最优策略。此外,为缓解策略饥饿(policy starvation)的可能性,采用了一种类 ε-greedy(epsilon-greedy)的探索策略,确保所有变异原语都能被周期性采样,从而保持全局搜索效能。
执行与验证子系统
该系统采用差分测试机制(Differential Testing)确保架构一致性。作为PS端的黄金参考模型(golden reference)的 ISA 软件模拟器,执行测试用例并将指令级结果流式传输至可编程逻辑(PL)端。检查器对模拟器与待测设计(DUT)进行实时比对。一旦检测到不匹配,即触发快照模块捕获并保存内部硬件状态,为后续跨平台调试和错误定位提供支持。
评估
AdaMut-RV 的实验评估采用开源的 RocketCore RISC-V 处理器作为被测设计(DUT)。在基准测试中,我们的框架与两个当前最先进的硬件模糊测试器——DifuzzRTL 和 Cascade——进行了对比。实验数据在一台配备 Intel Core i7-11700 处理器、以及搭载 Zynq UltraScale+ MPSoC 的 Fidus Sidewinder FPGA 平台的工作站上采集。初步实验结果表明,与 DifuzzRTL 和 Cascade 相比,AdaMut-RV 实现了更快的覆盖率增长与更高的整体覆盖率。更全面的实验正在进行中。
参考文献
[1] A.Akram and L. Sawalha.“ A Survey of Computer Ar-chitecture Simulation Techniques and Tools”. In: IEEE Access 7(2019), pp. 78120–78145. Doi : 10.1109/ACCESS. 2019 . 2917698.
[2] Jaewon Hur et al. “ DifuzzRTL : Diferential Fuzz Testing to Find CPU Bugs” .In: 2021 IEEE Symposium onSecurity . and Privacy (SP) . 2021,pp.1286–1303. Doi:10.1109/SP40001.2021.00103.
[3] Flavien Solt, Katharina Ceesay-Seitz, and Kaveh Razavi. "Cascade: CPU Fuzzing via Intricate Program Generation". In: 33rd USENIX Security Symposium (USENIX Security 24). Philadelphia, PA: USENIX Association, Aug. 2024, pp. 5341-5358. ISBN: 978-1-939133-44-1. URL: https://www.usenix.org/conference/usenixsecurity24/presentation/solt.
欢迎您关注开芯院公众号
▼
