本文采用知识共享 署名-非商业性使用-禁止演绎 4.0 国际协议授权(CC BY-NC-ND 4.0),转载请注明出处。
I. Preface
上次更完,又是数月,抓住年尾更一篇。本文简要介绍系统设计早期,ESL仿真验证及设计空间探索相关技术。芯片或硬件系统设计过程涉及ESL->功能层->架构层->RTL->门级->晶体管,其中,
- 功能层:定义软件系统和硬件系统的功能切分
- 架构层:定义软件接口ISA架构和芯片微架构
- ESL:在目标软硬件系统可用之前,使用高级语言(如SystemC)开发指令集模拟器、硬件模拟器、外设等虚拟硬件模块, 构建虚拟目标系统,从而,在系统设计早期做系统级仿真,进行指令集架构设计与寻优、硬件微架构设计与寻优、固件/驱动开发、操作系统适配、应用软件开发、软件性能调优等,本文主要介绍ISA架构与硬件微架构设计寻优方法。图1所示ESL结构简图,即选择合适的测试基准程序集、经过工具链编译映射到目标指令集、IA模型(ISS)直接执行指令序列或逐条指令在硬件模拟器(CA模型)执行。
- Benchmark:测试基准一般包含计算密集型、存储密集型、IO密集型及数据密集型等基准类型,不同类型芯片需选择不同类型基准或混合使用不同类型基准组合进行性能或覆盖分析,图2为ARM CPU设计过程中,在不同设计阶段使用的不同测试基准。
- 微架构设计空间探索:上篇博客曾介绍,微架构设计一般有专家经验法、模型仿真法及最近出现的AI寻优法,不同方法适用于不同类型、不同规模、不同复杂度的芯片设计,图3为Intel在Tick-Tock时期,微架构升级带来的PPA变化。
Fig-1. ESL Workflow
Fig-2. ARM Benchmarks
Fig-3. Intel Tick-Tock
II. Basics
2.1 架构分析五要素
图4为系统架构分析的主要内容,本文仅介绍其中的动态仿真方法,若有需要,其他内容另起新篇。
Fig-4. Computer Architecture Evaluation Ingredient
2.2 动态仿真方法
图5罗列了一些常用的动态仿真方法,不同仿真方法呈现不同特征,
- 开发周期:指仿真模型及仿真器等相关工具的开发周期
- 估计周期:指场景建模、仿真、性能分析等时间开销
- 估计精度:指软件仿真模型与真实硬件执行的差异
- 覆盖率:指对整个硬件架构设计空间的遍历能力
Fig-5. Dynamic Simulation Methods
III. Simulation methods
3.1 Functional simulation(FS)
- 定义:在host上将benchmark编译为由目标ISA构建的可执行程序进行仿真
- 目标:架构探索包括功能仿真与性能仿真,FS一般仅功能仿真
- 特征:
- 对于稳定ISA,IA一般具有较长生命周期,可应用于代码密度分析、兼容性分析、结构扩展等
- 对于自定义ISA,编译器后端根据ISA动态变化生成优化指令序列是难点问题,需配合CA联合使用
- 参考工具
- SimpleScalar sim-safe及sim-fast
- Spike RISC-V ISS
Fig-6. Functional Simulation
3.2 Instrumentation
- 定义:在host上将benchmark编译为host可直接或间接识别的可执行程序进行仿真
- 目标:功能仿真
- 特征:相比FS,变相进行了硬件加速
- 参考工具
- Apple Rosseta 1:2006年,MAC从PowerPC切换Intel x86
- Apple Rosseta 2:2020年,MAC从Intel x86切换Mx ARM
- Atom-like,EEL,Shade
Fig-7. Instrumentation
3.3 Full-system simulation(FSS)
- 定义:全系统ISS模拟主板功能,同时支持应用层benchmark及os层系统调用仿真
- 目标:仿真功能
- 特征
- 增加os层仿真,对DB/web/email等os重依赖的服务器芯片设计至关重要
- 相较于FS,FSS可以对多核线程调度、中断、IO、Bootloader等近硬件特征仿真
- 参考工具
- 开源(CPU):QEMU,GEM5
- 商用(CPU):AMD SimNow,Intel Simics,WindRiver Simics
- 开源(GPU):AccelSim(功耗估计模型:AccelWattch),GPGPU-sim
Fig-8. Full-system Simulation
3.4 Trace-driven simulation(TDS)
- 定义:User/os benchmark通过功能仿真器或工具链生成目标ISA的执行日志,使用CA model逐条仿真分析
- 目标:性能仿真,根据CA model完整度可分为组件仿真(如cache命中率仿真)及全架构仿真
- 特征
- 组件级仿真,性能仿真结果通常不完备,但可通过相对比较进行组件级算法或结构的快速仿真,如分支预测
- 全架构仿真,对于某些处理器,traces无法反应硬件真实执行情况,如OOO处理器,traces没有mispredicted信息
- 全架构仿真,traces是静态的,无法反应动态信息,如多核多线程的调度及交互
Fig-9. Trace-driven Simulation
3.5 Execution-driven simulation(EDS)
- 定义:FS与TS相结合的动态仿真
- 目标:功能仿真与性能仿真
- 特征
- EDS动态生成traces文件,规避了TDS的静态问题,但仿真效率低
- 根据FS与TS之间的关系,EDS可进一步分成integrated/timing-directed/functional-first/timing-first四种类型
- 参考工具
- GEM5,SST,SimpleScalar,PTLSim,MARSS
Fig-10. Execution-driven Simulation
IV. Application
IA/CA除了用于ISA架构与微架构的设计及空间探索,很多公司还基于二者开发了混合虚拟平台(HVP)用于自动驾驶芯片、车载芯片、AI芯片等对软件系统开发周期敏感的芯片,加速软件开发,如SNPS Virtualizer,Cadence Helium Virtual与Hybrid Studio,以及ADI,ARM,NXP等自建的VP。图12中,Virtual Prototyping指令集模拟层(IA model)与硬件模拟层(CA model),而Hybrid Prototyping指硬件系统由软件模拟器和硬件加速器混合构成。
Fig-11. Hybrid and Virtual Prototyping