從滴水到怒海:方舟編譯器如何影響技術(shù)世界?

原標(biāo)題:從滴水到怒海:方舟編譯器如何影響技術(shù)世界?

從今年4月份,在HUAWEI P30系列國內(nèi)發(fā)布會上提出方舟編譯器的概念以來,這項據(jù)稱華為投入十年之久的技術(shù)浮出水面已經(jīng)接近半年。隨著相關(guān)披露越來越多,我們也可以更清晰和完整地看待這一艘“方舟”。

“方舟”一詞,乍一聽似乎有著濃濃的“救世”意味?;蛟S是因為那些古老的人類文明都發(fā)源于江河流域之中,使得很多民族都有著關(guān)于洪水滅世的傳說,而不同民族也有應(yīng)對洪水的不同方式。如果說治水的概念意味著人與自然間堅忍不拔的持久抗衡,那么方舟的概念則意味著重新建立秩序的渴望——攜帶上生命之種,去塑造一個新的世界。

今天我們想討論的問題,就是方舟編譯器是否也可以像諾亞方舟一樣,在技術(shù)世界中建立起新的秩序?

滴水:發(fā)現(xiàn)方舟

在故事的開始,我們首先要看看這艘意在重建秩序的方舟究竟是如何建成。

在最近于北京舉辦的首場方舟編譯器開源技術(shù)沙龍中,方舟編譯器架構(gòu)師完整的介紹了方舟編譯器的來時路。

雖然方舟編譯器在近年以來才進(jìn)入大眾視野,但實際上華為第一個編譯團(tuán)隊成立于2009年,至今已經(jīng)有十年之久。當(dāng)然,編譯團(tuán)隊剛剛成立時并不是為了解決安卓問題,而是發(fā)覺了無線基站領(lǐng)域因?qū)τ谛阅芤蟾?,高效代碼只能手寫匯編的問題。通過數(shù)字信號處理芯片(DSP)后端編譯器的推出,讓DSP可以更好地發(fā)揮信號接收、轉(zhuǎn)換功能。

就在這樣不斷發(fā)現(xiàn)并解決問題的過程中,華為的編譯團(tuán)隊累積了大量人才和解決方案經(jīng)驗。其中就包括并行計算等行業(yè)專業(yè)領(lǐng)域的高級編譯工具軟件Open64的創(chuàng)世鼻祖Fred Chow等編譯器專家。

在華為編譯團(tuán)隊開始習(xí)慣通過代碼編譯對軟件系統(tǒng)進(jìn)行優(yōu)化提升時,這種方法論自然會被應(yīng)用到更廣闊的地方。到了2016年,華為智能手機(jī)業(yè)務(wù)的增長規(guī)模十分可觀,同時也有越來越多人發(fā)現(xiàn)了安卓機(jī)制的痛點。

我們知道安卓是應(yīng)用Java語言開發(fā)的,但編程者所使用的編程語言想要變成安卓執(zhí)行機(jī)器語言,還需要中間一層虛擬機(jī)進(jìn)行翻譯,而虛擬機(jī)在執(zhí)行翻譯工作時又會應(yīng)用多種模式。如同在河流兩岸建立起一座迷宮當(dāng)做橋梁,想要渡河就必須在其中繞來繞去,在這一整個復(fù)雜的過程中就會浪費大量CPU和內(nèi)存資源,成為了安卓系統(tǒng)卡頓緩慢的終極原因。

在華為編譯團(tuán)隊內(nèi)部,專家們還一度研究究竟是對虛擬機(jī)模式進(jìn)行優(yōu)化,還是另起爐灶做一套能夠執(zhí)行Java的一套運行環(huán)境和編譯器。直到Fred Chow用一篇論文終結(jié)了討論。

Fred Chow在論文中討論了究竟什么樣中間表示(IR)是更優(yōu)越的,對于IR的關(guān)注,讓方舟團(tuán)隊意識到,是否可以有一種統(tǒng)一的IR,既支持多種語言的表示,又能支持后端多種芯片代碼指定生成?

最終歷經(jīng)三年的時間,方舟編譯器降臨世間,其將Java/C/C++等混合代碼一次編譯成機(jī)器碼直接越過編譯器在終端運行的革命性理念,徹底告別了編譯器造成的資源消耗,對安卓系統(tǒng)的運行效率進(jìn)行了極大的提升。

至此方舟建成,才有了重建秩序的底氣。

路標(biāo):方舟開源的技術(shù)貢獻(xiàn)與技術(shù)使命

如果對華為有所了解的讀者一定知道,華為對于安卓系統(tǒng)的深度優(yōu)化其實由來已久,例如在EMUI 5.0版本中,華為就已經(jīng)通過更換安卓原生的文件系統(tǒng)來解決安卓碎片化文件冗余的問題。但方舟編譯器之所以被賦予重建技術(shù)世界秩序的希望,是因為它的意義遠(yuǎn)不止提升安卓系統(tǒng)運行效率?;蛘哒f,幫助安卓應(yīng)用加速,只是方舟編譯器幫助開發(fā)者在華為平臺上展現(xiàn)出的第一重價值。

而第二重“方舟價值”,來自于一個自方舟編譯器出現(xiàn)伊始就不斷被提及的詞匯——開源。這意味著方舟編譯器想要承載的不僅僅是一家手機(jī)廠商的軟件能力承載,而是一片更廣闊的天地。從這一次開源技術(shù)沙龍中,我們也能找到一些方舟編譯器前行的“路標(biāo)”。

例如多語言聯(lián)合優(yōu)化。目前方舟編譯器能夠支持Java/C/C++等等高級語言的轉(zhuǎn)換,但當(dāng)前移動編程后端+前端應(yīng)用語言豐富程度極高,盡可能提高編程語言支持范圍,才能讓方舟編譯器更好的發(fā)揮作用并且賦能更廣闊的開發(fā)者群體。

還有多硬件平臺支持。在華為開始啟用全場景智慧化策略后,意味著全場景下的高效編程問題急需被提上日程。實際上不僅僅是華為,隨著AIoT技術(shù)的發(fā)展,大量硬件設(shè)備的智慧化、硬件終端之間的密集聯(lián)結(jié)都已經(jīng)成為了必然趨勢。這時通過方舟編譯器的開源,可以幫助這些硬件建立起更高效完備的底層軟件體系。方舟編譯器的輕量級運行模式,也正在和多硬件平臺支持形成配合。方舟編譯器的架構(gòu)師提到,如今的方舟編譯器在運行時僅僅有6萬行代碼。這種輕量級的運行模式意味著方舟編譯器對于硬件性能的要求更低,適用性更強。尤其面對一些成本有限或形態(tài)大小要求苛刻的硬件時,方舟編譯器的輕量模式就可以發(fā)揮優(yōu)勢。

當(dāng)然最重要的還有方舟編譯器帶來的全新軟硬件協(xié)同方式。相比以往一個中間層面對一切硬件芯片平臺的方式,方舟編譯器提出了一個“軟硬件聯(lián)合優(yōu)化”的概念。既是產(chǎn)生能夠更好的運行在不同類型芯片平臺上的機(jī)器代碼,充分利用向量化指令、GPU資源等等生成指令在新平臺進(jìn)行更好的優(yōu)化。一種全新模式確立如同打開了游戲的新關(guān)卡,讓玩家們可以在一個新的領(lǐng)域中探索寶藏,尤其是芯片行業(yè)自此也可以參與其中,從軟硬聯(lián)合優(yōu)化角度去提升芯片在終端上的最終表現(xiàn)。

從上述方向中我們可以看到,方舟編譯器的目標(biāo)遠(yuǎn)不止于安卓軟件的優(yōu)化,而是對整個基礎(chǔ)軟件世界提供技術(shù)理念方面的創(chuàng)新貢獻(xiàn)。而開源則是這艘方舟的風(fēng)帆,幫助其更好在行駛在技術(shù)世界擴(kuò)散理念。

怒海:未來在開源的彼端

在2010年,考古隊在土耳其東部的阿勒山發(fā)現(xiàn)了一艘船只的殘骸。經(jīng)檢測這些殘骸的年代可以追溯至4800年前,即《創(chuàng)世紀(jì)》中所描述的諾亞方舟的存在時期。雖然沒人能證明這些殘骸就是傳聞中拯救人類命運的“方舟”。但這一切說明在4800年前,確實有一艘船只穿越洪海、駛向彼岸。

那么對于方舟編譯器來說,行進(jìn)了技術(shù)之海、揚起了開源之帆后,究竟會駛向一個怎樣的彼岸?

毫無疑問,在開源策略之下,方舟編譯器不斷累積合作伙伴和應(yīng)用場景,其技術(shù)價值將呈現(xiàn)出滾雪球式的指數(shù)級增長。但這一增長過程也如同怒海爭鋒,一定是在不斷遇到新問題的過程中,通過攻克難題來實現(xiàn)的。如果將目光放得更長遠(yuǎn)一些,總覽中國與全球軟件產(chǎn)業(yè)發(fā)展,我們可以從翻滾的波濤中看到三個趨勢。

第一, 中國基礎(chǔ)軟件產(chǎn)業(yè)的基礎(chǔ)設(shè)施重塑。

安卓系統(tǒng)對于中國基礎(chǔ)軟件產(chǎn)業(yè)影響之深,相信人人有目共睹。其弊病帶來的影響也不僅存在于手機(jī)之中,也包括大量其他硬件,甚至也養(yǎng)成了我們的思維模式,讓我們在編程、設(shè)計架構(gòu)時都已經(jīng)習(xí)慣了虛擬機(jī)的存在。通過開源和編譯器底層技術(shù)構(gòu)建,方舟編譯器給中國基礎(chǔ)軟件產(chǎn)業(yè)帶來的是一種徹底的翻新,從產(chǎn)品本身到設(shè)計邏輯。由此帶來的效率提升,也絕不止一兩款產(chǎn)品或幾家企業(yè),而是關(guān)乎到整個產(chǎn)業(yè)。

第二, 對全球安卓生態(tài)造成底層震蕩。

前文中我們已經(jīng)反復(fù)提及方舟編譯器為安卓系統(tǒng)帶來的歷史性革新,在安卓系統(tǒng)運行效率獲得前所未有的提升后發(fā)生的故事,才更加值得我們關(guān)注。例如改善系統(tǒng)沉疴后對于安卓體系硬件性能的聚變式釋放,將會讓用戶體驗得以極大的提升。尤其對于那些無力進(jìn)行底層軟件革新的廠商來說,同樣也能通過方舟編譯器的開源模式享受到紅利。如此以來蘋果與安卓兩大陣營的競爭天平,顯然也會產(chǎn)生進(jìn)一步的傾斜。這一切與全球安卓生態(tài)中的每一份子都息息相關(guān)。

第三, 方舟編譯器與鴻蒙的組合牌。

最后不能遺忘的,是華為的操作系統(tǒng)鴻蒙OS。自從方舟編譯器和鴻蒙OS的陸續(xù)推出,我們已經(jīng)見識到了華為渴望整體重構(gòu)軟件世界的遠(yuǎn)大目標(biāo)。在這一目標(biāo)實現(xiàn)過程中,編譯器和操作系統(tǒng)的技術(shù)路徑打通顯然是一種必然的舉措。方舟編譯器此時指向的種種方向,從軟硬件聯(lián)合優(yōu)化到多硬件平臺支持,顯然會幫鴻蒙OS打造出一個更先進(jìn)高效的底層體系。雙方打出的組合牌,或許將會對中國軟件產(chǎn)業(yè)造成更大的撼動。

在方舟編譯器御浪而行的過程中,技術(shù)世界的新秩序似乎就在從開源到未來的航路上逐漸建立起來了。但不同的是,方舟編譯器不是為了逃離一個“舊世界”遠(yuǎn)航,而是像大航海時代的每一位海員一樣,憑借著人類本性中對于創(chuàng)新與探索的源動力,去往每一個未知的地方,點亮技術(shù)世界的每一片版圖。

《創(chuàng)世紀(jì)》對于方舟到達(dá)新世界的形容是:“地存之時、稼穡寒暑、冬夏晝夜、永不間絕?!焙瓦@4800年以來的每一個航行故事一樣,我們總能抵達(dá)一片更美好的彼岸。

在科技發(fā)展的航路上,我們永遠(yuǎn)在渴望下一個彼岸,永遠(yuǎn)在寫下新的“創(chuàng)世紀(jì)”。

極客網(wǎng)企業(yè)會員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2019-09-12
從滴水到怒海:方舟編譯器如何影響技術(shù)世界?
到了2016年,華為智能手機(jī)業(yè)務(wù)的增長規(guī)模十分可觀,同時也有越來越多人發(fā)現(xiàn)了安卓機(jī)制的痛點。

長按掃碼 閱讀全文