演讲嘉宾 | 曾建江
回顾整理 | 廖 涛
排版校对 | 李萍萍
嘉宾简介
曾建江,亚琛工业大学博士,华为毕昇编译器首席架构师、芯片软件协同设计部部长,拥有多年编译器与芯片软件协同设计经验,负责探索先进软硬件协同设计技术、工具以及方法。
文章内容来源
第一届开放原子开源基金会OpenHarmony技术峰会——开发者工具分论坛
视频回顾
正 文 内 容
由C、C++、Java等高级语言编码的人类可读源代码需要通过编译器编译,才能够被翻译成计算机可执行的目标代码。在特定硬件平台和编程语言的双重约束条件下,应用程序的性能主要依赖于程序员编写并行代码的能力和编译器的优化能力。华为多年自研的毕昇编译器做了哪些优化工作,又如何赋能OpenHarmony开源生态呢?华为毕昇编译器首席架构师曾建江在第一届OpenHarmony技术峰会上,分享了几点思考。
01►
毕昇编译器介绍
毕昇编译器是华为自主开发的一款专注于C和C++代码构建的系统底层组件,旨在发挥自研芯片的最佳性能。在鲲鹏服务器中,毕昇编译器能够与鲲鹏芯片协同,通过编译器技术充分发挥芯片的性能。目前,毕昇编译器for鲲鹏2.4.0版本的SPEC2017性能已经比GCC9.3提升了30%(测试环境及配置见https://www.spec.org/cpu2017/results/res2021q4/cpu2017-20211012-29727.html)。经过毕昇编译器优化的超算领域HPC TOP应用的性能平均提升了10%,让用户在鲲鹏硬件平台上能够体验到更好的业务性能。此外,毕昇编译器与鲲鹏携手已在政府、运营商、气象、水利等多个国计民生行业落地商用,并持续在更多行业中拓展。今天,开发者可以方便地从鲲鹏套件中获取到最新版的毕昇编译器for鲲鹏(https://www.hikunpeng.com/zh/developer/devkit/compiler/bisheng)。
毕昇2.4.0版本与GCC的性能比较
毕昇编译器团队很早就加入到RISC-V社区的开发中,形成深度协同。目前,毕昇编译器已经基于RISC-V开发了MCU处理器,赋能穿戴智能终端,持续提升产品竞争力。此外,还积极参与OpenHarmony的生态建设工作,将MCU处理器上积累的Codesize和性能优化等编译优化技术能力赋能到OpenHarmony生态的众多其他设备上。
毕昇编译器协同RISC-V
02►
Codesize和性能优化
在RISC-V的应用当中,特别是面向MCU成本特别得敏感,而Codesize的压缩优化是节省MCU成本的有效方法之一。毕昇编译器采用了函数跳转压缩、跳转表压缩和Global Propagation增强等技术,进一步精简了编译的代码量。在函数跳转中,毕昇编译器基于RISC-V对整个跳转过程进行优化,将原先两条指令合成一条指令,每一次跳转能够节省32 Bytes的Codesize。在跳转表中,毕昇编译器采取基线地址偏移值代替绝对值的方法,保存表中相邻元素的地址差值(8 Bytes)而非元素本身(32 Bytes),从而达到压缩跳转表的目的。此外,毕昇编译器也通过全局变量传递的方法对其重复加载问题进行了优化。
在性能方面,由于函数调用涉及频繁的压栈和出栈操作,造成了不必要的性能开销。毕昇编译器采取了Shrink wrap增强技术,通过重新安排函数prologue和epilogue的位置以减少函数的栈保存操作。
毕昇编译器Shrink wrap增强
除了上述纯编译优化技术外,毕昇MCU编译器还与华为自研的RISC-V扩展指令相配合,让相关产品的软件获得领先的代码体积与性能收益。即使只使能RISC-V社区标准的IMFADC等扩展的指令,在不使用自研扩展指令的前提下,毕昇MCU编译器依旧能为开发者提供优秀的软件性能与代码体积。随着华为MCU类产品的商用交付的推进,华为和RISC-V MCU的开发者将很快就能用上毕昇MCU编译器。
03►
总结
未来,华为毕昇编译器团队将把毕昇编译器的优化技术和能力通过开源贡献到OpenHarmony社区,以此促进OpenHarmony软件生态的发展,让整个OpenHarmony生态都能够获得有竞争力的编译技术支撑。
E N D
点击下方阅读原文获取演讲PPT。
关注我们,获取更多精彩。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !