快捷搜索:

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

智东西(公众号:zhidxcom)
文 | 轩窗

智东西4月25日报道,两周前华为年度第一款旗舰机P30,同时宣布将操作系统升级为EMUI9.1。在发布会上,华为推出了方舟编译器和超级文件系统EROFS两大创新亮点。由于发布会时间限制,当时华为仅仅用两页PPT粗略地介绍了这两项技术作用。据华为方面表示,自发布会后,华为软件OpenLab团队的电话几乎要被打爆了,很多开发者都想要了解方舟编译器更多的信息。

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

▲华为CBG软件部总裁 王成录

今天,智东西与少数媒体参与了华为EMUI软件沟通会,会上华为CBG软件部总裁王成录详细介绍了方舟编译器和超级文件系统EROFS两项技术的原理以及研发背后的细节,以及EMUI未来的主攻方向。

一、什么是方舟编译器?

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

分享会一开始,王成录博士先介绍了EMUI演进过程以及近几年来,华为在系统软件上针对用户使用中的痛点问题进行的有针对性的优化。比如EMUI5.0主要解决安卓系统卡顿问题,EMUI8.2上线了GPU Turbo主攻游戏性能受限问题,EMUI9.0上线了Link Turbo主攻网络覆盖不均问题,EMUI9.1则上线了方舟编译器和超级文件系统EROFS,针对安卓流畅度不足问题。

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

当前安卓平台的绝大多数应用是使用Java写的,但在底层,最终真正能让计算机“听懂”并执行的其实是机器语言,也就是由0和1组成的二进制代码。所以,这中间必须存在着由高级语言到机器语言的转化。

一般来说有两种办法:

(1)引入一个中间层,其工作的方式是,理解一句Java语句就将其翻译为机器码,让硬件执行一下,称之为解释执行。这种方式对代码不加筛选,执行效率非常低。

(2)直接把高级语言翻译成机器语言。这又有两种方式:一是在程序运行之前,把高级语言编译为机器语言,称之为 AOT(Ahead of time)编译;二是,在程序运行后,实时地把高级语言编译为机器语言并执行,称之为 JIT(Just in time) 编译。

在安卓5.0之前,安卓采用的是解释执行 + JIT 的方式执行高级语言代码,属于边解释边执行模式,但效率非常低。随后安卓版本不断迭代,在安卓6.0 阶段推出了虚拟机 ART。

目前安卓采用的就是解释执行 +  JIT + AOT 的综合模式。

那么,编译器又是什么呢?编译器就是将计算机高级编程语言转化为机器可执行的机器语言的工具,也就是直接转化为二进制代码。可以说是一步到位的编译。

用方舟编译器做出来的APK,下载到手机上直接就是机器语言,也就是二进制代码,机器直接就可以运行,不需要再做编译了,这是方舟编译器最本质的技术突破。

编译器的研发难不难?编译器开发是需要长期大量研发积累,王成录博士也坦言需要“板凳要坐十年冷”。同时,开发编译器需要研发人员既精通高级语言,对各种框架等非常熟悉,又要对机器语言了如指掌,对研究人员要求非常高。谷歌生态建立了这么久,其规模非常庞大,其上的框架和、应用等非常多,想要重新做一个适配谷歌生态的编译器,工作量可想而知,是非常巨大的。

华为王成录:解密方舟编译器和EMUI未来四大演进方向!

华为是如何作出方舟编译器呢?据王博士介绍,华为在编译器研发上的积累,可以追溯到2009年,华为海思研发起步时,当时吸引了第一批海内外研究人员加入,创建了编译组。2013年,华为自研并推出了用于基站的编译器HCC,这也是华为编译器框架构想的正式提出,也是方舟编译器的前身。

2014年,Fred Chow( 周志德)加入华为并担任华为编译器技术首席科学家,建立了方舟编译器的主架构。2015年华为推出自研编程语言CM,2016年成立编译器与编程语言实验室,2019年华为正式推出方舟编译器。前前后后共计十年时间,经过了几百位研究人员的努力,投入的资金也有几亿美元了。

您可能还会对下面的文章感兴趣: