华为方舟编译器将开源,方舟编译器能做什么?

分享到:

在P30系列手机上海发布会上,余承东公布了华为在系统方面两项研发成果——超级文件系统EROFS和华为方舟编译器。在会上,余承东称,采用EROFS的系统能让随机读性能提高20%,系统空间节省14%;而应用方舟编译器后,系统操作流畅度提高了24%以上。

Android系统长时间使用之后便会卡顿,这一问题一直被用户诟病。华为所发布的两项技术便是朝着解决该问题去的。华为方面称,在当天方舟编译器发布之后,华为OpenLab(开放实验室)的电话就被打爆了,许多开发者都想了解方舟编译器更多信息。

事实上,不仅是开发者对该技术感兴趣,部分极客用户同样十分关注Android系统的流畅度能否因此得到提升。

超级文件系统EROFS是什么?

在Android系统底层,传统的文件系统是EXT4(Fourth extended filesystem,第四代扩展文件系统),原本适合机械硬盘,它支持系统双向读写。在压缩过程中,文件块是定长输入,磁盘块变长输出。好比3吨的串号文件交给2吨的货车运输,其中1吨只能交给下一辆车,但读取时则必须把两辆车合起来才能工作,直接导致读取效率降低。

在系统长时间使用之后,会残留许多数据碎片。随着碎片垃圾增多,对于系统运行的影响就会变大。EXT4对于碎片垃圾的清理能力上较弱,因此会出现时间长之后手机卡顿的情况。

事实上,Google也做过相应的努力,曾经推出过SquashFS,一套供Linux核心使用的GPL开源只读压缩文件系统。但后来应用到系统上之后效果差强人意,最终撤掉了。

华为CBG软件部总裁王成录在最近一次交流会上表示,EMUI 9.1所采用的文件系统EROFS(Extendable Read-Only File System,可扩展的只读文件系统)便是旨在解决系统分区文件储存与管理问题。其核心在于通过文件系统的只读属性,保证系统分区一直保持初始化的文件,除了系统更新之外,禁止被写入其它东西。以此保护了系统的安全性。

在压缩算法上,EROFS的文件块是变长输入,磁盘块定长输出。若还按照货车运输的例子来打比方,就是压缩3吨的文件交给3吨的货车,每一辆货车都满载出发。但事实上,EROFS采用了fixed-sized output文件压缩算法,压缩后的物理块大小为固定值(4k),每一个数据包都是4k。

华为称,EROFS的专利压缩算法几乎不存在无效读取,其随机读性能平均能提升20%,且系统空间相比 EXT4节省2GB(P30 Pro 128GB为目标对象)。升级包大小下降约5%-10%,升级时间缩短了约20%。

“EROFS文件系统已经开源了,Linux下一个4.19版本就会用这个文件系统。”王成录博士说道,“业界内用Linux新内核版本的厂家都可能用到这个文件系统。这也是国内厂商第一次贡献完整的文件系统到Linux主线版本。”

方舟编译器能做什么?

首先我们要知道,所有机器程序都有自己的语言,和全世界讲的语种类似。编译器便是把编程人员开发的高级语言程序,翻译成机器可识别的指令,翻译的效率将直接影响机器执行指令的效率。

“由于Android的开放性,上层应用没有强制规则。比如Android的第三方应用市场非常多;Android的安装方式也非常多,通过邮件都可以安装。带来的(不稳定性)问题比较多。所以Android用户要真正能够获得好的体验,手机厂家只把手机做好是不够的。”王成录博士说起了目前Android软件生态的问题。

由于这个生态无法像iOS生态那样高度标准化,因此软件存在各种编译方式,甚至是层次不齐的软件质量。方舟编译器的意义在于通过手机厂家和生态的合作,把用户软件体验做好。

方舟编译器所采用的翻译方法,与此前的编译器有所不同。

现有的Android系统是在手机环境中进行编译,通过ART虚拟机(Android Runtime)一边翻译一边执行,这会造成资源占用过多,进而影响到程序执行的效率。

方舟编译器则能让开发者在开发过程中直接把多种高级语言编译为机器可识别的指令,然后打包成APK,手机在安装程序之后便可直接识别并运行程序。从而提高软件的运行效率。

王成录博士介绍说,方舟编译器总共有4个技术亮点:

1、首个多语言联合优化编译器,可消除跨语言调用开销;
2、程序运行无需依赖虚拟机,内存回收机制高效;
3、可针对不同应用灵活优化;
4、开发者学习和使用成本低。

其中第二点对于用户来说,系统的运行改善是直观的。由于没有了ART虚拟机占用系统资源,且不用虚拟机编译过程,程序的运行效率将会得到提高。同时,由于方舟编译器在编译时为程序配备了及时回收的内存处理机制,相较于之前系统需要全局暂停才能回收资源的方式,系统在运行的流畅度上得到了提升。

余承东曾在P30系列发布会上表示,新浪微博极速版在应用方舟编译器之后,操作流畅度提升了60%以上。

不过显然通过华为一家厂商是做不到全部软件的覆盖的。王成录博士表示:“实际上这件事情,只靠华为一家不可能实现,我们非常希望Android阵营所有合作伙伴大家一起努力。这次方舟编译器我们承诺要跟业界开源最核心的原因,是希望大家从各自场景各自平台去应用,让Android手机体验越来越好。”

什么时候能用上?

目前EROFS文件系统已经随着EMUI 9.1系统面世,华为P30系列手机已经搭载该文件系统。

事实上,华为对Android系统底层的改动,3年前就有所体现了。不过那时候针对的是Android系统的用户分区,而EROFS文件系统针对的是系统分区。

2016年华为P9从EXT4变成了F2FS文件系统。“F2FS本身是为Flash闪存专门定制的文件系统。经过多轮的技术验证,我们最终把F2FS用在EMUI 5.0上,发现上手机的碎片减少了非常多,对系统的流畅性贡献很大。”王成录博士说道,“后来Google将F2FS吸收到了社区,Google的手机(Nexus系列)也采用了这个系统。”

由于方舟编译器需要各方开发者的共同努力,用户想要体验到方舟编译器所做的软件,还需要耐心等待。华为表示在P30系列发布会上宣布开源之后,今年将会在11月份的绿盟开发者大会上开源完整的方舟编译器代码。

不过在此之前,华为在编译器上已经准备了10年。据华为方面透露,2009年华为创建了编译组,同年海思的第一颗麒麟芯片诞生,随后在2013年正式提出编译器框架构想。此后经历了多名技术人才的引进,到今年才得以开源方舟编译器。王成录感慨道:“编译器真的是一个‘板凳要坐十年冷’的工程。”

 

了解更多:

访问STM32中文官网STM32中文社区

STM32中文资料、 STM32参考设计ST MCU技术培训STM32开发板活动

STM32单片机微信:
 

 

继续阅读
智能家电市场落地提速,海尔美的小米华为等谁能抢到头筹?

刚落幕的ces2020展会上智能家居的商业化落地正在加速。亚马逊、苹果、谷歌和Zigbee联盟已经罕见联手,制定智能家居统一标准,智能家居市场火爆还会远么?

华为进行新一轮组织架构调整,新增Cloud&AI第四大BG

华为近日对组织架构进行了新一轮调整,Cloud & AI成为继运营商BG、企业BG、消费者BG外,华为的第四大BG。此前,“Cloud & AI产品与服务”和“智能汽车解决方案”在华为组织架构中属于BU部门,但层级与BG并列,同属华为的一级部门。华为在2018年年底将公有云、私有云、AI、大数据、计算、存储、IoT 等与IT强相关的产业重组为“计算与云”产业群,并在此基础上组建了“Cloud & AI产品与服务”,而在2019年的一季度,华为又将IoT、私有云团队合入Cloud BU。

面对华为VR Glass,3Glasses X1如何突围?

经常会遇到这样的疑问,相对于海外,国内的科技巨头似乎对于VR、AR并不是特别热情。只是这个现状在2019年发生了一些变化。

华为开启新一轮组织架构调整:这一部门升级为华为第四大BG

1月14日,华为开启新一轮组织架构调整。华为内部的人事任命文件显示多个业务部门负责人调整。其中,侯金龙担任Cloud&AI BG总裁;彭中阳任企业BG总裁,原来企业BG总裁阎力大调任B类国家管理部总裁;吴伟涛任公司总干部部副部长,刘宏云增任东南亚地区部总裁。

HDC.Cloud预沟通会,华为为何向开发者提供ICT“黑土地”?

1月8日,华为在北京举行了华为开发者大会2020(Cloud)媒体预沟通会,华为技术有限公司高级副总裁、Cloud & AI产品与服务 CTO张顺茂称,“华为计算产业的战略是,着力打造“一云两翼、双引擎”的产业布局,构筑开放的产业生态。要想构建计算产业生态,开发者是重中之重。开发者不仅是计算产业生态的灵魂,也是企业持续发展和不断创新的动力引擎,更是推动人类和世界进步最伟大的力量之一。