0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

方舟編譯器開源核心代碼的揭示

電子工程師 ? 來源:郭婷 ? 作者:網(wǎng)絡(luò)整理 ? 2019-09-04 10:05 ? 次閱讀

于無聲處起驚雷!華為官方8月31日正式將方舟編譯器對外開源。

8月31日,華為方舟編譯器開源網(wǎng)站上線,開發(fā)者可以通過華為云與開源中國代碼托管網(wǎng)址獲得相關(guān)和文檔,以便參考學(xué)習(xí)、了解方舟編譯器的架構(gòu)和代碼??梢哉f,對于全球終端用戶、開發(fā)者以及應(yīng)用廠商而言,“方舟”開源都有著非凡的意義。

方舟編譯器的作用是什么?從華為終端CEO余承東的表述來理解,方舟編譯器能改善應(yīng)用運行效率,從原先的邊解釋邊執(zhí)行轉(zhuǎn)變?yōu)槿虣C器碼高效運行程序。

那么開源的意義又是什么?在懂懂看來,此舉既是誠邀廣大開發(fā)者共同“攜手”,也是向應(yīng)用廠商發(fā)出提升手機用戶體驗的要求,目的很簡單——共同打造共贏的生態(tài)系統(tǒng)。如果沒有開發(fā)者和應(yīng)用廠商的協(xié)力,沒有整個行業(yè)參與者對其持續(xù)地重構(gòu)和優(yōu)化,一個生態(tài)系統(tǒng)很難打造出來,也很難形成龐大的用戶群體,更難以形成一個從手機到萬物互聯(lián)全面滲透和覆蓋的生態(tài)系統(tǒng)。

No.1十年磨一劍 方舟開源謀定后動

2009年華為成立編譯組,方舟編譯器雛形誕生,至今其研發(fā)已經(jīng)走過了十年歷程,堪稱十年磨一劍。

從華為公布的相關(guān)信息來看,方舟編譯器并不僅僅是從高級語言到機器碼進行了“萬能翻譯”,而是成為一個編譯運行系統(tǒng)。這個編譯系統(tǒng)不僅實現(xiàn)了詞法分析、語法分析、代碼生成等功能,更在IR設(shè)計和算法優(yōu)化方面進行了深入地嘗試。

方舟編譯器首先解決了Java程序編譯的兩個難題:JNI調(diào)用的開銷巨大,動態(tài)特性導(dǎo)致全程序優(yōu)化難以實施。通過將不同語言通過統(tǒng)一IR表示、統(tǒng)一優(yōu)化算法,將不同語言間的“翻譯”開銷盡可能減少,手機安裝App應(yīng)用后可更快地運行程序,同時以輕量化的運行時降低傳統(tǒng)虛擬機的開銷,實現(xiàn)效率的提升。

其次,方舟編譯器針對Java代碼效率提升,嘗試了在開發(fā)者環(huán)境中進行高度編譯優(yōu)化的方法,相當(dāng)于是用空間換性能,讓編譯器不再被手機的硬件和系統(tǒng)能力制約,同時也通過編譯優(yōu)化能力增強為代碼優(yōu)化提供了更多的可能性。

最后,方舟編譯器在Java上實現(xiàn)了基于引用計數(shù)的內(nèi)存管理方法,結(jié)合自身機制的優(yōu)化+開發(fā)者的聯(lián)動,有望實現(xiàn)應(yīng)用在運行過程中內(nèi)存隨用隨收,沒有了虛擬機“集中回收”這個動作,減少了運行時給應(yīng)用帶來的卡頓。

如今,很多人已經(jīng)離不開手機上的各種應(yīng)用,而更加順暢的體驗,自然意味著新的行業(yè)發(fā)展機遇,更是新的商業(yè)規(guī)則的建立。

我們可以從8月31日啟動開源這一舉措可以看出,方舟編譯器所謀不凡。

眾所周知,軟件的開源,目的就是讓開發(fā)者和第三方廠商一同參與進來,這樣源碼才會在不斷地重構(gòu)和優(yōu)化中激活、升華。

方舟編譯器的特點正在被業(yè)界所了解,而通過開源社區(qū),開發(fā)者和廠商將進一步推動相關(guān)技術(shù)和應(yīng)用的進步,華為更可以從開源社區(qū)的重要玩家逐漸走向開源的領(lǐng)跑者。

從方舟編譯器開源后的相關(guān)舉措,可以看出“重要玩家”背后滿滿的誠意。

首先,本次方舟編譯器開源直接開放了編譯器最核心的代碼,揭開了其技術(shù)核心特征。對編譯器愛好者來說,可以一探華為方舟背后的設(shè)計思路。

其次,此次開放的框架代碼搭配了編譯器等其他二進制組件,實現(xiàn)Java程序到aarch64匯編指令的編譯過程。因此開發(fā)者可以基于開源代碼+二進制,編譯構(gòu)建出編譯器工具鏈。社區(qū)參與者可以通過框架源碼學(xué)習(xí)方舟編譯器的編譯器中間表達(IR)及基本的中端編譯框架,進而參與到對編譯器中端優(yōu)化的工作中。另外,開發(fā)者還可以通過代碼托管平臺參與社區(qū)貢獻,并在此平臺上反饋相關(guān)問題和需求。

這些舉措看似平淡無奇,但是仔細觀察,可以發(fā)現(xiàn)諸多開源舉措的背后,也彰顯出了華為對于自身技術(shù)的自信態(tài)度,更可以看到華為打造手機生態(tài)圈、吸引全球技術(shù)人員和企業(yè)參與的使命感。

這種自信,既來自與華為對手機行業(yè)的前瞻性思考,也來自其對未來IoT尤其是智能生活領(lǐng)域的籌謀。之所以這么說,是因為方舟編譯器此次開源,不能孤立地視為是一個手機編譯系統(tǒng)的開源,其背后還有圍繞華為EMUI不斷迭代升級所推動的極致用戶體驗,以及全場景智慧生活的戰(zhàn)略。

No.2無生態(tài)不開源 Show me the code

從EMUI升級到5.0時,華為就將手機卡頓這一安卓系統(tǒng)的行業(yè)性難題作為重要課題。在EMUI5.0發(fā)布時,華為承諾手機系統(tǒng)“18個月持久流暢”;在EMUI8.2版又推出了“很嚇人的技術(shù)”——GPU Turbo,主要作用是提升手機性能的同時降低了功耗。

在EMUI9.0時華為推出了Link Turbo全網(wǎng)絡(luò)聚合技術(shù),聚焦單一網(wǎng)絡(luò)下網(wǎng)速的大幅提升;到了今年年初升級到EMUI9.1時,兩大革命性創(chuàng)新——EROFS超級文件系統(tǒng)和方舟編譯器才正式“曝光”,而華為發(fā)力安卓系統(tǒng)底層性能優(yōu)化能力的實力也為外界所認知;直至8月初EMUI10發(fā)布,EMUI的使命已經(jīng)成為“開啟全場景智慧生活的鑰匙”。

顯然,這些隨著EMUI不斷迭代而出現(xiàn)的黑科技,是華為多年來持續(xù)不斷投入巨資研發(fā)(每年超過營收10%)的結(jié)果。同時,華為并沒有獨享其樂,而是希望通過開放、合作和共贏,打造一個開放式創(chuàng)新的生態(tài)氛圍。

軟件生態(tài)建設(shè)的難度,無疑比OS本身的研發(fā)更大。此前倪光南院士就公開表示,操作系統(tǒng)這類軟件的市場競爭不能依靠性價比,而是要依靠生態(tài)體系。因為有生態(tài),才能有應(yīng)用,才能形成良性循環(huán)。而開源,無疑正式建立健康、可持續(xù)發(fā)展的生態(tài)體系的基礎(chǔ)。

從此次方舟編譯器的開源,可以看出華為從開源領(lǐng)域的積極參與者變?yōu)橹鲃右I(lǐng)者的決心,只有以更加積極的姿態(tài)引領(lǐng)行業(yè),才能為用戶帶來更好的體驗,打造共贏的生態(tài)。

不少網(wǎng)友在關(guān)注方舟編譯器的同時,也在關(guān)注鴻蒙系統(tǒng)的進展。

在國際環(huán)境變幻莫測的局勢下,這種關(guān)注自然在情理之中。無論是網(wǎng)友熱議的方舟編譯器,還是未來的鴻蒙系統(tǒng),都有可能在開源方式的驅(qū)動下從不同維度打造出一個更具有競爭力的生態(tài)體系。

當(dāng)然,目前方舟編譯器的開源還只是萬里長征的一小步,而外界已經(jīng)有聲音在“方舟”初露鋒芒時,就猜測其會先讓安卓“加速“,之后則是為鴻蒙打下“地基”。在這里我們不做過多揣度,但是不妨橫向分析一下其他手機企業(yè)在自主系統(tǒng)方面的得失。

過去近十年里,在安卓逐步壯大的同時,業(yè)界也在嘗試打造新系統(tǒng)。除了業(yè)界熟知的微軟WP,也有一些略為不起眼的例子。2012,諾基亞在MeeGo的基礎(chǔ)上開始研發(fā)旗魚系統(tǒng),期望將塞班和旗魚作為挑戰(zhàn)安卓的抓手,但是僅不到一年半的時間,諾基亞就停了系統(tǒng)更新。

同樣在這一年年初,Tizen系統(tǒng)最初版本發(fā)布時,作為發(fā)起者的三星電子、英特爾以及兩大Linux開源社區(qū)無不對其給予了厚望。但是如今外界已經(jīng)看不到搭載Tizen的三星手機產(chǎn)品,只能在三星智能電視上窺見其真容。

而在國內(nèi)市場,阿里也曾在2014年以5.9億美元投資魅族手機,旗下阿里云OS成為后者魅藍系列的搭載系統(tǒng)。但是到了2017年后,隨著魅族市場份額的下滑,合作也無疾而終。

對于這些手機行業(yè)知名品牌的相關(guān)案例,外界有著無數(shù)的分析和評論。但在懂懂看來,沒有能夠形成強大的軟件生態(tài)系統(tǒng),是失利的主要原因。

沒有廣大的應(yīng)用軟件開發(fā)商、開發(fā)者和跨界合作伙伴共同融入到生態(tài)體系中,自然也就得不到用戶的認可,而缺少用戶,自然也就無法引起各方的持續(xù)投入。

回到方舟編譯器,自然不能孤立地去看待此次開源的意義,而是要放在華為整個萬物互聯(lián)和全場景智慧生活的戰(zhàn)略中,才能看出更深層次的內(nèi)涵。從這個意義來看,如今華為誠邀各方合作伙伴和應(yīng)用開發(fā)者一起匯聚的“方舟朋友圈”,既是方舟編譯器的朋友,更是全場景智慧生活領(lǐng)域的朋友。

當(dāng)然,從朋友圈到有福共享的朋友利益共同體,要經(jīng)歷的挑戰(zhàn)自然難以想象。方舟編譯器能以十年磨一劍,未來的“朋友圈”或更要做好長途跋涉的準(zhǔn)備。

至少從目前來看,華為在開源一事上的決心和信心都彰顯無遺。華為目前在全球具有重大國際影響力的開源社區(qū)中,擁有十多個董事席位,以及200多個TSC、PTL、Core Committer席位。同時,作為Linux基金會白金成員,華為對Linux kernel累計貢獻6800+補丁,在5.1 Release版本中排名超過谷歌、IBM等國際廠商,是TOP 5中唯一的亞洲廠商。

對于“方舟”,做遠比說要更為重要。正如用Linux之父托瓦茲的那句名言:Talk is cheap,Show me the code!在智能手機市場,在IoT時代,只有開放代碼,開放資源,開放利益,才能建立真正意義上的共贏生態(tài)。

結(jié)束語

對于普通用戶而言,方舟是什么并不重要,只要經(jīng)過編譯的App下載后用著流暢,就是真的舒適。而對于開發(fā)者和應(yīng)用軟件企業(yè)來說,能夠軟件開發(fā)一鍵打包,全部自動適配,開發(fā)人員省時省力才是硬道理。雖然就本次開源的部分看方舟編譯器還有許多不夠成熟完備之處,但以華為的技術(shù)實力,相信未來一定會逐漸完善起來。

未來,如果主流的App都能與方舟編譯器適配,用戶、應(yīng)用廠商和開發(fā)者各方都能感到“穩(wěn)了”,這事兒才真的算是“穩(wěn)了”。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 手機
    +關(guān)注

    關(guān)注

    34

    文章

    6792

    瀏覽量

    156697
  • 華為
    +關(guān)注

    關(guān)注

    215

    文章

    34128

    瀏覽量

    249478
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48896
  • 方舟編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    171
收藏 人收藏

    評論

    相關(guān)推薦

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個方面的原因: 一、代碼的不完整性 IDA反編譯生成的代碼可能缺少原始源
    的頭像 發(fā)表于 09-02 10:55 ?219次閱讀

    AI編譯器技術(shù)剖析

    隨著人工智能技術(shù)的飛速發(fā)展,AI編譯器作為一種新興的編譯技術(shù)逐漸進入人們的視野。AI編譯器不僅具備傳統(tǒng)編譯器的功能,如將高級語言編寫的源代碼
    的頭像 發(fā)表于 07-17 18:28 ?1211次閱讀

    人工智能編譯器與傳統(tǒng)編譯器的區(qū)別

    人工智能編譯器(AI編譯器)與傳統(tǒng)編譯器在多個方面存在顯著的差異。這些差異主要體現(xiàn)在設(shè)計目標(biāo)、功能特性、優(yōu)化策略、適用范圍以及技術(shù)復(fù)雜性等方面。以下是對兩者區(qū)別的詳細探討,旨在全面解析其內(nèi)在差異。
    的頭像 發(fā)表于 07-17 18:19 ?1265次閱讀

    Meta發(fā)布基于Code Llama的LLM編譯器

    近日,科技巨頭Meta在其X平臺上正式宣布推出了一款革命性的LLM編譯器,這一模型家族基于Meta Code Llama構(gòu)建,并融合了先進的代碼優(yōu)化和編譯器功能。LLM編譯器的推出,標(biāo)
    的頭像 發(fā)表于 06-29 17:54 ?1310次閱讀

    SEGGER編譯器優(yōu)化和安全技術(shù)介紹 支持最新C和C++語言

    代碼生成,SEGGER編譯器生成非常小的代碼,非常適合內(nèi)存受限的環(huán)境,而不會犧牲執(zhí)行速度。 2)?速度優(yōu)化:在最高優(yōu)化級別,SEGGER編譯器生成盡可能快的
    的頭像 發(fā)表于 06-04 15:31 ?1168次閱讀
    SEGGER<b class='flag-5'>編譯器</b>優(yōu)化和安全技術(shù)介紹 支持最新C和C++語言

    QT開發(fā)學(xué)習(xí)筆記1(安裝交叉編譯器

    QT安裝交叉編譯器
    的頭像 發(fā)表于 02-18 10:02 ?688次閱讀
    QT開發(fā)學(xué)習(xí)筆記1(安裝交叉<b class='flag-5'>編譯器</b>)

    求助,如何將C++代碼從GNU移植到Tasking編譯器

    需要解決的障礙。 我懇請你幫助我們解決這個問題。 問題 :當(dāng)前代碼是使用 GNU 編譯器編譯的,代碼按定義運行。 但是,我們希望讓它在 Aurix TC399 開發(fā)套件上運行。 在
    發(fā)表于 01-31 07:29

    ADuCM355硬件參考手冊——Keli編譯

    在 Arm Compiler 5 和 Arm Compiler for Embedded(以前稱為 Arm Compiler 6)之間,底層技術(shù)發(fā)生了重大變化,從專有編譯器 armcc 轉(zhuǎn)變?yōu)榛?b class='flag-5'>開源 LLVM/Clang 的編譯器
    的頭像 發(fā)表于 01-12 09:35 ?1069次閱讀
    ADuCM355硬件參考手冊——Keli<b class='flag-5'>編譯</b>版

    Triton編譯器的原理和性能

    Triton是一種用于編寫高效自定義深度學(xué)習(xí)原語的語言和編譯器。Triton的目的是提供一個開源環(huán)境,以比CUDA更高的生產(chǎn)力編寫快速代碼,但也比其他現(xiàn)有DSL具有更大的靈活性。Triton已被采用
    的頭像 發(fā)表于 12-16 11:22 ?2219次閱讀
    Triton<b class='flag-5'>編譯器</b>的原理和性能

    TVM編譯器的整體架構(gòu)和基本方法

    生成的開源編譯器框架,雖然在我們自己的加速IP上無法直接拿過來用,但是其中的很多方法和思想還是很值得借鑒的。TVM最大的特點是基于圖和算符結(jié)構(gòu)來優(yōu)化指令生成,最大化硬件執(zhí)行效率。其中使用了很多方法來改善
    的頭像 發(fā)表于 11-30 09:36 ?1863次閱讀
    TVM<b class='flag-5'>編譯器</b>的整體架構(gòu)和基本方法

    編譯器的優(yōu)化選項

    一個程序首先要保證正確性,在保證正確性的基礎(chǔ)上,性能也是一個重要的考量。要編寫高性能的程序,第一,必須選擇合適的算法和數(shù)據(jù)結(jié)構(gòu);第二,應(yīng)該編寫編譯器能夠有效優(yōu)化以轉(zhuǎn)換成高效可執(zhí)行代碼的源代碼,要做到
    的頭像 發(fā)表于 11-24 15:37 ?753次閱讀
    <b class='flag-5'>編譯器</b>的優(yōu)化選項

    嵌入式j(luò)avascript編譯器的設(shè)計與實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《嵌入式j(luò)avascript編譯器的設(shè)計與實現(xiàn).pdf》資料免費下載
    發(fā)表于 10-30 11:29 ?0次下載
    嵌入式j(luò)avascript<b class='flag-5'>編譯器</b>的設(shè)計與實現(xiàn)

    新版編譯器的設(shè)計思路和優(yōu)化方法

    小程序編譯器在小程序開發(fā)、預(yù)覽、發(fā)布各個階段都需要使用,因此編譯器性能會直接影響到開發(fā)者開發(fā)效率,也會影響到開發(fā)者工具的使用體驗。 由于舊版的編譯器(基于 webpack4)在構(gòu)建大型項目時會很慢,內(nèi)存占用也高,一直被開發(fā)者吐槽
    發(fā)表于 10-13 11:21 ?256次閱讀
    新版<b class='flag-5'>編譯器</b>的設(shè)計思路和優(yōu)化方法

    嵌入式開發(fā)中的C語言編譯器設(shè)置

    編譯器的語義檢查很弱小,甚至還會“掩蓋”錯誤?,F(xiàn)代的編譯器設(shè)計是件浩瀚的工程,為了讓編譯器設(shè)計簡單一些,目前幾乎所有編譯器的語義檢查都比較弱小。為了獲得更快的執(zhí)行效率,C語言被設(shè)計的足
    發(fā)表于 10-11 12:43 ?574次閱讀

    OpenHarmony 的js引擎用的是方舟編譯器

    OpenHarmony 的js引擎用的是方舟編譯器嗎?方舟編譯器不是用來編譯嗎?
    發(fā)表于 10-09 09:32