co-design 深度剖析 gem5,以及 gem5 和 llvm 的深度融合
DSA 时代,如何快速设计出一款特定领域的 SoC,完成复杂的软件栈开发和硬件验证,并快速推向市场,是各类 AI 芯片公司追求的目标,也是目前大家遇到的最大挑战。
复杂 SoC 芯片设计面临几大问题:1. 如何在设计初期,定量的评估 SoC 各个模块的参数,ISA 定制化等,让加速器可以高效运行的情况下,最大程度节省 SoC 的面积和功耗;2. 复杂 SoC 的软件栈研发是一个大工程,目前市场上并没有什么通用的建模工具,来帮助 SoC 设计者快速搭建虚拟模型,虚拟模型除了可以用来 做定性/定量分析之外,还可以大幅加快 SoC 上的软件开发,调优,以及连续整合测试,发布等;3. 由于异构 SoC 大多应用在人工智能领域,如果使用传统的基于 CPU 的仿真器来仿真异构 SoC 上面的加速器负载,结果必然是仿真速度非常不理想,影响开发进度;4. 由于 FPGA 单颗芯片的 LUT 有限,单颗 FPGA 芯片无法放下整个 SoC 的时候,虽然可以将 SoC 按模块切割到多块 FPGA 板子上进行仿真,但是这又会带来其他问题,比如编译速度以及仿真速度远远比不上单块 FPGA。
以上列举的一些常见问题其实归根结底是时间以及成本的问题。当前需要寻找新的方案来降低各芯片公司的研发成本,加速产品研发速率。我们兆松科技成立的目标之一,就是为了帮助大家解决这些难题。
今天,我们给大家带来的是兆松科技研发的工具箱中的一款工具:zemu/zvboard – A co-design platform.
zemu 是我们目前正在研发的一款仿真器工具,zemu 选择使用当前在计算机体系结构研究中最受欢迎的仿真器之一的 gem5 作为基石,与当前编译器中的王者 llvm 完成一个深度融合,极大的简化了开发流程,降低了开发难度,从而大大的加快了开发速度。众所周知,gem5 快速建模的特性绝对是一流的,同时他还有着 cycle accurate 仿真以及功耗仿真的底子,这对于 SoC 的性能评估无疑是十分必要的。其次,gem5 还提供了十分方便的接口,简化了实现 co-design 和 co-simulation 的难度。而 zemu 正是在这样一个强大的基础之上进行了进一步的优化使之更加贴合当前需求。不过由于对 zemu 的定位需要其有高度自由的可配置性 (至少要能支持所有同构/异构 SoC 模型的搭建),如果同时需要及其苛刻的精确度的话,用户在使用时需要配置大量的参数,假如全都使用文本操作,则极有可能会造成多数用户体验的下降,而我们的 zvboard 工具正是为了解决快速建模的问题。
zvboard 是一款图形界面的 ESL(Electronic System Level design) 工具,为了提高使用体验和建模速度,我们使用可拖拽图形化的界面,提供丰富的 C /Verilog/Chisel model 的 IP,方便使用者不使用任何编程语言,就可以快速搭建起一个 SoC 的虚拟模型。Zemu 可以对模型进行快速或者时钟精准的仿真 (使用时钟精准模型可以方便硬件设计工程师进行硬件设计初期的定量评估,使用快速模型可以帮助软件开发工程师在硬件还没有成型时进行软件开发)。
接下来我们将沿着这个方向继续前进,进一步加快 zemu 的仿真速度(比如使用 CPU 多线程,GPU 加速某些模块的仿真),提高仿真精度,持续改进 zvboard 的用户体验,逐步在 zemu 当中实现全自动生成可综合的 SoCRTL 以及 C/C++ 编程接口的功能。
文后 B 站视频和 PPT 是兆松团队的雷依钒参加 OSDT 2021 所分享的关于 zemu(gem5) 的详细内容。