[论文解读] Designing a CPU model: from a pseudo-formal document to fast code
本文提出一种方法,可直接从ARMv6架构官方参考手册中的伪形式化章节,自动生成高性能、高度优化的SystemC/TLM指令集模拟器(ISS)。通过提取指令编码、行为的抽象语法树(AST)以及汇编语法,应用自动化优化,并生成支持动态翻译的ISS,该方法实现的模拟速度与手工编写的ISS相当,且在平均性能上比手工编写的ARMv5 ISS高出0.9%。
For validating low level embedded software, engineers use simulators that take the real binary as input. Like the real hardware, these full-system simulators are organized as a set of components. The main component is the CPU simulator (ISS), because it is the usual bottleneck for the simulation speed, and its development is a long and repetitive task. Previous work showed that an ISS can be generated from an Architecture Description Language (ADL). In the work reported in this paper, we generate a CPU simulator directly from the pseudo-formal descriptions of the reference manual. For each instruction, we extract the information describing its behavior, its binary encoding, and its assembly syntax. Next, after automatically applying many optimizations on the extracted information, we generate a SystemC/TLM ISS. We also generate tests for the decoder and a formal specification in Coq. Experiments show that the generated ISS is as fast and stable as our previous hand-written ISS.
研究动机与目标
- 减少嵌入式系统中手工编写ISS实现所耗费的漫长且易出错的开发时间。
- 利用处理器参考手册中的伪形式化描述(如ARMv6)实现自动代码生成。
- 生成高性能ISS,其性能可与手工优化版本相匹配或超越。
- 从同一源代码生成额外的产物,如正式的Coq规格说明和解码器单元测试。
- 通过可重用的中间表示,实现对其他ISA(如MIPS、PowerPC)的更易移植性。
提出的方法
- 使用定制工具链从ARMv6参考手册中提取伪形式化指令描述(编码表、伪代码、语法)。
- 通过行为的抽象语法树(AST)和语法及编码的结构化元数据,将提取的数据转换为标准化的中间表示。
- 对中间表示应用多种自动化优化,包括数据流分析、参数与变量追踪,以及分支预测建模(如may_branch函数)。
- 生成基于SystemC/TLM的ISS,并支持动态翻译——通过缓存已解码的指令,避免重复解码。
- 从同一中间表示生成正式的Coq规格说明和解码器单元测试。
- 通过为LLVM驱动的动态翻译和潜在汇编器生成设计后端,支持可扩展性。
实验结果
研究问题
- RQ1能否在不进行手动代码修改的前提下,仅从处理器参考手册的伪形式化部分自动生成高性能、高度优化的ISS?
- RQ2自动生成的ISS是否能达到与手工优化、手工编写的ISS相当的模拟性能?
- RQ3对中间表示进行自动化分析与转换,在ISS生成中能在多大程度上提升正确性与性能?
- RQ4同一中间表示能否支持多种输出,如正式规格说明、测试用例和优化代码?
- RQ5该方法在面对具有类似文档结构的其他指令集架构(如ARMv7)时,其可扩展性或适应性如何?
主要发现
- 生成的ARMv6 ISS实现全局平均模拟速度为92.47 Mi/s,比手工编写的ARMv5 ISS(91.60 Mi/s)快0.9%,结果在测量精度范围内。
- 在64位系统上,某些基准测试中生成的ISS性能比手工版本最高提升7.4%,表明其在现代硬件上具有更好的可移植性与性能。
- 该ISS在多个基准测试(加密、循环、排序)和编译设置(O0与O3)下表现出一致的性能,32位系统上的性能下降极小。
- 与手工编码相比,该方法显著减少了开发时间,同时保持了相当的性能与稳定性。
- 中间表示支持自动生成功能性Coq规格说明和解码器单元测试,增强了验证能力与可维护性。
- 该方法可扩展至其他ISA(如MIPS和PowerPC),若文档质量提升(如ARMv7手册),还可实现进一步优化。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。