在過去的3年里,我們在玄鐵C910上分別移植了Android 10和Android 12,在ART上我們也做了一些更加深入的優化。在今年 RISC-V 美國峰會上,我們介紹了在ART上移植和優化過程和最近進展,在本文中也將分享這些工作。
在進入ART優化工作介紹前,先簡單看一下ART是什么。在Android中,所有的程序都是基于java來編寫的,Android SDK會把java字節碼轉換成dex字節碼。那么Android中的程序都離不開dex虛擬機。在Lolipop采用的是dalvikvm,而從Lolipop開始,ART替代了dalvikvm。
ART的執行的過程概述
相比于dalvikvm,ART在最開始的時候(Lolipop),引入全新的執行模式AHead-Of-Time(AOT)。應用程序在安裝過程中,其.dex字節碼會被編譯成machine code,應用程序會以machine code的方式執行,大大提高了程序的執行效率。
純AOT的方式會使程序的安裝過程變得非常長,因此在Android N的時候,引入新的JIT執行流程。在JIT執行模式下,應用程序的dex字節碼(cold)會先通過解釋器(interpreter)進行解釋執行,當發現其中的方法是熱點方法(hot)時,ART的JIT編譯器就會開始工作,將熱點方法編譯成machine code。在后續調用到該熱點方法時,將會采用machine code進行執行。
在介紹完ART在Android上的基礎工作原理后,再來回顧一下玄鐵團隊在兩個Android版本上的支持情況。
Android10支持
2020年的時候,我們就開始了在Android 10上支持 RISC-V 的工作。前期工作主要包括內核和驅動程序的準備,Clang編譯器和build系統的支持,Bionic庫支持,Shell啟動支持。
在此基礎上,ART先實現了JNI calling Convention和一些Runtime接口的支持,可以在20分鐘左右能啟動到Launcher界面。我們先后在ART上采用RV64GC指令集增加了Mterp匯編解釋器以及JIT/AOT編譯器,基于這兩個編譯器的優化,極大提高了Launcher啟動時間,分別提高到10分鐘和1分鐘。
Android12支持
2022年開始,我們又在Android 12上再一次支持了 RISC-V。有了前一次經驗,在Android 12上的支持變得輕車熟路。相比于Android 10的移植工作,這一次有了新的硬件平臺TH1520,同時更新了Clang編譯,并采用玄鐵優化的Clang15版本,也更新了Binonic。
在ART上,本次增加Nterp解釋器,用于減少方法調用的鏈路,提高頻繁方法調用場景下的性能。由于采用Clang15編譯器支持了玄鐵擴展指令集,因此在ART上也增加這一部分針對玄鐵的特性優化。經過一系列的優化工作以后,Android 12在TH1520上在開啟更多的服務的情況下,Launcher啟動時間再一次得到提升,達到了47秒。
社區貢獻
在移植Android的過程中,我們也積極參與社區的貢獻,避免大家重復造輪子。自2022年9月,我們在AOSP社區開始陸續提交相關的Porting改動。在ART上,目前貢獻超過了80個Commit。特別感謝來自Google的Vladimir Mark、Ulya Trofimovich和Santiago Aboy Solanes細致的代碼審查工作,完成代碼review、驗證以及修改,保證代碼高質量合入。
玄鐵擴展指令集優化改進
在最近的優化工作中,我們在ART中增加了玄鐵擴展指令的支持。玄鐵擴展指令主要分為整數計算、內存讀寫、bit操作以及Vector v0.7指令集。基于這些指令集,ART中的優化內容包括編譯器部分的優化器、指令生成器,運行時庫的匯編解釋器、Quick Entries等等。除了在ART采用玄鐵擴展指令集進行優化以外,還在Bionic中對C庫、數學庫進行了優化。
玄鐵擴展指令相比于RV64GC指令集,有較大的性能收益:
CaffeineMark,對于整數部分有超過15%的性能提升,對于浮點,方法調用也有4%的提升
SCIMath2,大部分用例都有超過15%的性能提升,小部分SOR/MonteCarlo提升并不明顯
其他一些編程語言上的結果也有較大的提升,最高的能達到約5倍
結語
RISC-V 在Android上才剛剛起步,ART上還有很多軟件、硬件的優化需要繼續支持。非常幸運能參與這一歷史性的事情,與全球開發者共同推動Android在 RISC-V 上的適配。
希望社區里有興趣的同學可以關注 RISC-V Android SIG以及Google RISCV64社區,共同討論參與貢獻。
審核編輯:湯梓紅
-
Android
+關注
關注
12文章
3945瀏覽量
127919 -
移植
+關注
關注
1文章
383瀏覽量
28192 -
編譯器
+關注
關注
1文章
1642瀏覽量
49283 -
RISC-V
+關注
關注
45文章
2322瀏覽量
46585
原文標題:Android ART在玄鐵C910上的移植和性能優化
文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論