从今年4月份,在HUAWEIP30系列国内发布会上提出方舟编译器的概念以来,这项据称华为投入十年之久的技术浮出水面已经接近半年。随着相关披露越来越多,我们也可以更清晰和完整地看待这一艘“方舟”。
“方舟”一词,乍一听似乎有着浓浓的“救世”意味。或许是因为那些古老的人类文明都发源于江河流域之中,使得很多民族都有着关于洪水灭世的传说,而不同民族也有应对洪水的不同方式。如果说治水的概念意味着人与自然间坚忍不拔的持久抗衡,那么方舟的概念则意味着重新建立秩序的渴望——携带上生命之种,去塑造一个新的世界。
今天我们想讨论的问题,就是方舟编译器是否也可以像诺亚方舟一样,在技术世界中建立起新的秩序?
滴水:发现方舟
在故事的开始,我们首先要看看这艘意在重建秩序的方舟究竟是如何建成。
在最近于北京举办的首场方舟编译器开源技术沙龙中,方舟编译器架构师完整的介绍了方舟编译器的来时路。
虽然方舟编译器在近年以来才进入大众视野,但实际上华为第一个编译团队成立于年,至今已经有十年之久。当然,编译团队刚刚成立时并不是为了解决安卓问题,而是发觉了无线基站领域因对于性能要求高,高效代码只能手写汇编的问题。通过数字信号处理芯片(DSP)后端编译器的推出,让DSP可以更好地发挥信号接收、转换功能。
就在这样不断发现并解决问题的过程中,华为的编译团队累积了大量人才和解决方案经验。其中就包括并行计算等行业专业领域的高级编译工具软件Open64的创世鼻祖FredChow等编译器专家。
在华为编译团队开始习惯通过代码编译对软件系统进行优化提升时,这种方法论自然会被应用到更广阔的地方。到了年,华为智能手机业务的增长规模十分可观,同时也有越来越多人发现了安卓机制的痛点。
我们知道安卓是应用Java语言开发的,但编程者所使用的编程语言想要变成安卓执行机器语言,还需要中间一层虚拟机进行翻译,而虚拟机在执行翻译工作时又会应用多种模式。如同在河流两岸建立起一座迷宫当做桥梁,想要渡河就必须在其中绕来绕去,在这一整个复杂的过程中就会浪费大量CPU和内存资源,成为了安卓系统卡顿缓慢的终极原因。
在华为编译团队内部,专家们还一度研究究竟是对虚拟机模式进行优化,还是另起炉灶做一套能够执行Java的一套运行环境和编译器。直到FredChow用一篇论文终结了讨论。
FredChow在论文中讨论了究竟什么样中间表示(IR)是更优越的,对于IR的