Countering the Path Explosion Problem in the Symbolic Execution of Hardware Designs
本文引入了分段组合(piecewise composition),这是一种针对硬件设计的创新符号执行技术,它利用模块化结构将路径探索任务卸载给 SMT 求解器,在直接分析 RTL Verilog 而无需网表转换的情况下,实现了 97% 的运行时缩减以及路径探索数量级级的降低。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你是一名试图在一座巨大的、充满未来感的城市中破解谜团的侦探。这座城市其实是一块计算机芯片,是一块控制着从你的手机到绕地球运行的卫星等一切事物的微小硅片。为了确保这座城市的安全,你需要检查每一条街道、每一个小巷和每一扇隐藏的门,以确保没有坏人能溜进来或破坏规则。这个科学领域被称为“硬件验证”(hardware verification),它在数字领域相当于一名安全检查员,在人们开车经过之前,确保大桥不会坍塌。
侦探们用来执行这项工作的核心工具被称为“符号执行”(symbolic execution)。符号执行并不是拿着一套特定的钥匙走过一条条街道,它更像是一张神奇的地图,让你能同时走过所有可能的街道。你用代表任何数字的“幽灵”来替换具体的数字,并观察这座城市对每种幽灵般可能性的反应。问题在于,随着城市变得越来越大、越来越复杂,街道的数量会呈爆炸式增长,以至于检查所有街道变得不再可能。这被称为“路径爆炸问题”(path explosion problem)。这就像试图用消防水龙头喝水;水(或者说,需要检查的路径数量)喷涌得太快了,导致你在找到漏水点之前就已经被淹没了。如果我们无法检查每一条路径,我们可能会错过黑客用来窃取秘密或导致系统崩溃的隐藏陷阱。
这就是论文《应对硬件设计符号执行中的路径爆炸问题》(Countering the Path Explosion Problem in the Symbolic Execution of Hardware Designs)发挥作用的地方。作者 Kaki Ryan 和 Cynthia Sturton 引入了一种聪明的策略,称为“分段组合”(piecewise composition)。他们意识到,与其试图同时走遍整座城市,不如将城市视为由一个个“街区”(或称“模块”)组成的。你可以分别探索每个街区,绘制出该单一街区内所有可能的路线,然后使用一个超级智能的计算器(称为 SMT 求解器)来计算这些独立的地图如何相互衔接。
把这想象成是在解一个巨大的拼图。旧的方法是试图将每一块碎片逐一强行放入位置,希望最终能呈现出图像。如果拼图有一百万块,你会永远在那里忙碌。新的“分段组合”方法则像是先将碎片分类成易于处理的小堆。你先解决“天空”堆,然后是“海洋”堆,最后是“树木”堆。一旦你得到了这些较小堆的解决方案,你就进行一次快速检查,看看它们是如何连接的。论文表明,这种方法不仅仅是略有帮助,它极大地减少了工作量。在对包括复杂的 CPU 和系统级芯片(SoC)在内的五种不同的开源设计进行测试时,这种方法将引擎需要探索的路径数量减少了约 92% 到 99%。
结果令人瞩目。新引擎比旧方法快了 97%。它成功地在以前难以彻底检查的设计中发现了安全漏洞和规则违规。例如,在测试一个名为 OR1200 的特定处理器内核时,该引擎发现了 30 个已知漏洞中的 27 个,而之前的工具发现的数量较少。作者强调,这不仅仅是一个理论构想;他们构建了一个能够读取用于构建这些芯片的实际代码(Verilog)并产生“反例”(counter-example)——即证明漏洞存在的特定指令集——的实用工具。
然而,论文也谨慎地指出,这并不是能瞬间解决一切的魔杖。该方法依赖于硬件采用模块化设计,即具有清晰且不会以混乱方式重叠的独立模块。如果一个设计具有某些混乱的连接(例如两个部分试图同时向同一内存写入数据的“写-写”依赖关系),该工具会停止运行并报告错误,而不是进行猜测。但对于绝大多数结构良好的硬件设计而言,这种新方法提供了一种驯服“可能性消防水龙头”的方法,使得确保我们的数字城市安全、可靠并面向未来变得更加容易。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。