4月25日,華為EMUI媒體沙龍?jiān)诒本┱匍_,華為消費(fèi)者BG軟件部總裁王成錄博士向參會(huì)媒體詳細(xì)介紹了華為EMUI 9.1系統(tǒng)。EMUI 9.1通過(guò)華為方舟編譯器和EROFS超級(jí)文件系統(tǒng)兩大技術(shù)創(chuàng)新,結(jié)合開放生態(tài)共同助力用戶體驗(yàn)的提升。
EMUI的前世今生
從2012年EMUI1.0的合一桌面,到2016年EMUI5.0的“天生快,一生快”,到2018年EMUI8.2的GPU Turbo,再到EMUI9.0的Link Turbo,以及目前最新的EMUI9.1超級(jí)文件系統(tǒng)和華為方舟編譯器,EMUI在不斷的創(chuàng)新發(fā)展中做到了反哺整個(gè)安卓產(chǎn)業(yè),不斷輸出優(yōu)秀成果。EMUI一路走來(lái),一直致力于提升用戶體驗(yàn),用戶體驗(yàn)永遠(yuǎn)是華為思考一切問(wèn)題的出發(fā)點(diǎn)。目前EMUI服務(wù)著全球216個(gè)國(guó)家和地區(qū),日活躍用戶到達(dá)4.7億。
華為方舟編譯器是什么?
編譯器是連接人類世界與機(jī)器世界的一座橋梁,起著翻譯官的重要作用。簡(jiǎn)言之編譯器就是把編程人員開發(fā)的高級(jí)語(yǔ)言程序,翻譯成機(jī)器可執(zhí)行的機(jī)器指令,這就是編譯器。而要想把編譯器做好,既要懂原來(lái)的高級(jí)語(yǔ)言,又要懂所看到的硬件平臺(tái)。必須對(duì)整個(gè)機(jī)器的CPU、GPU所有的指令要熟悉,又對(duì)目標(biāo)語(yǔ)言要非常熟悉。就像一個(gè)翻譯官,把中文翻譯成英文,至少要對(duì)中文英文都非常理解。
十年磨一劍的技術(shù)積累
華為從2009年就開始創(chuàng)建編譯組,源于在研發(fā)海思芯片以后,需要有自己的編譯器才能真正發(fā)揮芯片的能力;2013年,華為推出了自研編譯器HCC; 2014年,F(xiàn)red Chow等諸多編譯器領(lǐng)域的資深專家加入華為,搭建了華為編譯器的主架構(gòu);2016年,有了成功的實(shí)踐經(jīng)驗(yàn)以后,華為2012年實(shí)驗(yàn)室成立了編譯器與編程語(yǔ)言實(shí)驗(yàn)室;2019年,經(jīng)過(guò)十年的積累沉淀,終于推出了華為方舟編譯器這個(gè)“板凳要坐十年冷”的復(fù)雜工程。
華為方舟編譯器的四大技術(shù)亮點(diǎn)
第一,多語(yǔ)言聯(lián)合編譯和跨語(yǔ)言調(diào)用開銷是影響Android性能開銷的最核心原因之一,目前Android應(yīng)用市場(chǎng)里面Top級(jí)別的APP 95%以上都是由多種開發(fā)語(yǔ)言來(lái)實(shí)現(xiàn)的。舉例說(shuō)明,這些APP的邏輯部分是Java代碼,但是為了增強(qiáng)app應(yīng)用的安全性、可靠性、兼容性,開發(fā)者會(huì)用效率更高的C語(yǔ)言寫庫(kù),供Java來(lái)調(diào)用。直接導(dǎo)致的結(jié)果是應(yīng)用真正運(yùn)行起來(lái)的時(shí)候,一定會(huì)有Java和C語(yǔ)言之間調(diào)用問(wèn)題,就會(huì)形成額外的性能開銷。而方舟編譯器在不同語(yǔ)言代碼的開發(fā)環(huán)境中,就編譯成一套可執(zhí)行文件,在運(yùn)行環(huán)境中高效執(zhí)行。
第二,Android從誕生那天起,就選擇了Java這個(gè)成熟的語(yǔ)言,Java語(yǔ)言有跨平臺(tái)、分布式,安全性高等諸多優(yōu)勢(shì)。但是隨之應(yīng)運(yùn)而生的還有Java語(yǔ)言開發(fā)包中的重要組成--虛擬機(jī),無(wú)論是什么樣的硬件,Java語(yǔ)言都不需要管,統(tǒng)統(tǒng)抽象成Java的運(yùn)行環(huán)境,因此可以跨平臺(tái)操作。這個(gè)又帶來(lái)另外一個(gè)問(wèn)題,任何機(jī)器只要把應(yīng)用裝上就會(huì)分配好虛擬機(jī),占用額外的系統(tǒng)資源。今天的Android應(yīng)用市場(chǎng)中的APP,實(shí)際上都是DEX碼的文件,消費(fèi)者從應(yīng)用市場(chǎng)下載APP以后,真正解釋成機(jī)器指令和執(zhí)行文件是在手機(jī)上的虛擬機(jī)里做的,因此對(duì)系統(tǒng)資源要求高。安卓自身的編譯技術(shù)在不斷的發(fā)展,但始終需要在運(yùn)行中依賴虛擬機(jī)來(lái)進(jìn)行動(dòng)態(tài)編譯和解釋執(zhí)行,對(duì)系統(tǒng)資源消耗較大。
而方舟編譯器在開發(fā)環(huán)境中就可以完成全部代碼的編譯,無(wú)論業(yè)務(wù)邏輯是Java寫的還是C語(yǔ)言寫的,不需要再次編譯,手機(jī)安裝應(yīng)用程序后無(wú)需依賴虛擬機(jī)資源,即可全速運(yùn)行程序,帶來(lái)效率上的極大提升,消除了影響性能的虛擬機(jī)機(jī)制。EMUI 9.1僅僅對(duì)系統(tǒng)組件System Server應(yīng)用了華為方舟編譯器后,就帶來(lái)了系統(tǒng)操作流暢度提升24%,系統(tǒng)響應(yīng)性能提升44%的收益。華為方舟編譯器提供了全新的系統(tǒng)及應(yīng)用的編譯和運(yùn)行機(jī)制,從動(dòng)態(tài)編譯變?yōu)殪o態(tài)編譯,就是直接將高級(jí)語(yǔ)言直接編譯成機(jī)器碼,消除了虛擬機(jī)動(dòng)態(tài)編譯的額外開銷,實(shí)現(xiàn)了開發(fā)和運(yùn)行效率的兼容并舉。
內(nèi)存回收機(jī)制是另一個(gè)方舟編譯器的重大技術(shù)突破。Android系統(tǒng)在全局回收內(nèi)存資源時(shí),需要暫停應(yīng)用等待回收完成,這是產(chǎn)生隨機(jī)卡頓的重要原因。而在方舟編譯器里,在編譯時(shí)為程序配備了及時(shí)回收的內(nèi)存處理機(jī)制,即在程序執(zhí)行過(guò)程當(dāng)中同步實(shí)時(shí)處理回收。所以方舟編譯器的垃圾回收及時(shí)又徹底,并且不需要停止進(jìn)程。
第三,編譯器和翻譯語(yǔ)言的原理是一樣的,單獨(dú)直譯出詞句并不是難點(diǎn),難得是要翻譯的又快又好。比如把英文“What happens in Vegas, stays in Vegas”翻譯成中文,最簡(jiǎn)單的直譯是“在拉斯維加斯發(fā)生的一切,就留在拉斯維加斯”;好一些的譯文是“事情過(guò)去了就過(guò)去了,追悔無(wú)益”;而優(yōu)秀的譯文則是“勿念過(guò)往,活在當(dāng)下”。方舟編譯器通過(guò)了大量的優(yōu)化和調(diào)整,一方面對(duì)Java語(yǔ)言深入了解后再細(xì)致重建,另一方面對(duì)機(jī)器指令順序結(jié)構(gòu)理解要求非常清晰,這兩方面的匹配度越高,編譯器效率越高。一個(gè)好的編譯器,開發(fā)者一行代碼都不需要修改,性能能提升10%到20%。
方舟編譯器跟現(xiàn)有的Android非常不一樣,能做到更加靈活更加深入的優(yōu)化,給應(yīng)用開發(fā)者帶來(lái)了更大的優(yōu)化應(yīng)用的機(jī)會(huì)。現(xiàn)有的Android編譯大部分代碼在虛擬機(jī)環(huán)境運(yùn)行,虛擬機(jī)的創(chuàng)建來(lái)自于同一套“模板”,但不同應(yīng)用的優(yōu)化訴求不一樣,因而難以作深度的優(yōu)化,方舟編譯器則是每個(gè)應(yīng)用編譯優(yōu)化方案自己來(lái)定,分別形成不同應(yīng)用優(yōu)化后的機(jī)器碼,每一個(gè)應(yīng)用開發(fā)者都有了把自己的應(yīng)用做的更好的機(jī)會(huì),不再受限于Android虛擬機(jī)的限制。
第四,方舟編譯器從多年前決定做的那一刻起,就立下了上層業(yè)務(wù)代碼不需要改動(dòng),開發(fā)者只通過(guò)華為方舟編譯器做可以重新編譯的目標(biāo)。現(xiàn)在開發(fā)者不論用Java語(yǔ)言去開發(fā)新的APP,還是自己寫的C語(yǔ)言庫(kù),這兩種方式都不需要變,從而大大降低了開發(fā)者學(xué)習(xí)和使用成本。
EROFS超級(jí)文件系統(tǒng)
EROFS超級(jí)文件系統(tǒng)是伴隨著存儲(chǔ)介質(zhì)的發(fā)展一步一步走過(guò)來(lái),存儲(chǔ)介質(zhì)不斷的演進(jìn),讓這個(gè)文件系統(tǒng)不斷的跟著演進(jìn),數(shù)據(jù)在這個(gè)存儲(chǔ)介質(zhì)上存儲(chǔ)讀取更好更安全更快。2016年搭載EMUI 5.0的華為Mate 9,首次在業(yè)界規(guī)模商用F2FS文件系統(tǒng),替代了傳統(tǒng)的EXT4文件系統(tǒng),令用戶分區(qū)的文件讀寫流暢度提升20%。EROFS超級(jí)文件系統(tǒng)通過(guò)高效的壓縮算法加持,帶來(lái)隨機(jī)讀性能提升,EROFS的做法是保證每次壓縮一塊,正好是一個(gè)固定大小的存儲(chǔ)塊(即壓縮后的文件和存儲(chǔ)的最小單元邊界一致),這樣幾乎沒(méi)有浪費(fèi),不僅性能提升隨機(jī)讀性能的20%,ROM空間還節(jié)約了2GB。以華為P30 Pro 128G為例,系統(tǒng)初始空間相比Ext4節(jié)省2GB,相當(dāng)于用戶可以多存1000張照片或500首歌曲。
超級(jí)文件系統(tǒng)天然只讀設(shè)計(jì),系統(tǒng)分區(qū)不可被三方改寫,因?yàn)橐坏┫到y(tǒng)區(qū)被寫就意味著系統(tǒng)被攻破了,所有運(yùn)行管理保證它的正確性,所以不能被改寫意味著更安全。Ext4是一個(gè)讀寫雙向的文件系統(tǒng),為了防止讀寫系統(tǒng)區(qū),要加兩把鎖才能鎖住。這兩把鎖加上,這個(gè)機(jī)制就變得更復(fù)雜了,EROFS只讀系統(tǒng)天生沒(méi)有這個(gè)問(wèn)題更加安全,在這種情況下想把系統(tǒng)區(qū)攻破則是難上加難。
打造開放生態(tài),共享智慧體驗(yàn)
通過(guò)Huawei HiAI構(gòu)建移動(dòng)AI開放平臺(tái),華為把AI所有能力開放給第三方,使能現(xiàn)在的應(yīng)用更豐富更強(qiáng)大。Huawei HiAI開放能力不斷增強(qiáng),支持算子數(shù)量增加至147算子,API上線數(shù)量增加33個(gè)API,接入原子化服務(wù)超3200項(xiàng)。已經(jīng)有很多合作伙伴利用HiAI開放平臺(tái)給消費(fèi)者提供了很多創(chuàng)新體驗(yàn),比如storysign利用HiAI的API能力幫助殘障人士進(jìn)行無(wú)障礙的閱讀。通過(guò)開放的全球生態(tài)系統(tǒng),以及1400+生態(tài)合作伙伴和560000+的開發(fā)者,用戶將會(huì)獲得更多更豐富的智慧場(chǎng)景體驗(yàn)。
推進(jìn)方舟編譯器的開源,讓更多用戶享受應(yīng)用流暢體驗(yàn)。繼華為P30系列發(fā)布會(huì)方舟編譯器開源后,將在2019年8月的華為終端開發(fā)者大會(huì)宣布方舟編譯框架代碼開源,后續(xù)會(huì)在2019年11月的綠盟開發(fā)者大會(huì)實(shí)現(xiàn)完整方舟編譯器代碼開源。
Link Turbo的發(fā)展讓聯(lián)接更多樣。Link Turbo通過(guò)優(yōu)化手機(jī)網(wǎng)絡(luò)的連接,讓整個(gè)生態(tài)串聯(lián)起來(lái)。服務(wù)器端裝載SDK以后就享受到網(wǎng)絡(luò)的多路合并,無(wú)論是WIFI還是LTE都能連接起來(lái),保證網(wǎng)絡(luò)足夠的帶寬和實(shí)時(shí)性。EMUI9.1帶來(lái)了以用戶為中心的全場(chǎng)景體驗(yàn),覆蓋方方面面的日常生活場(chǎng)景。例如HUAWEI HiCar帶來(lái)手機(jī)車鑰匙,跑步機(jī)數(shù)據(jù)同步,與PC一碰分享等多設(shè)備之間的互聯(lián)體驗(yàn)。未來(lái)EMUI將著眼更多無(wú)縫的全場(chǎng)景用戶體驗(yàn),視頻、音頻、圖像等各種信息和指令都可以在PC、電視、平板等智能設(shè)備中無(wú)縫流轉(zhuǎn),用戶獲得更加豐富優(yōu)質(zhì)的體驗(yàn)。