近日Google負責Android平臺編程語言的Lars Bergstrom和負責低級操作系統的Greg Simon在開源博客撰文分享Google在推進Android在RISC-V指令集架構上運行的最新成果。目前Google不僅接受補丁還開始在Android中成熟地支持 RISC-V。文章表示,當前針對Android Runtime(ART)的優化仍在進行中。
今年中國峰會上玄鐵團隊也分享了在ART上的一些工作和社區進展,邀請技術專家夏立方帶來在ART上的技術分享。11月7日在北美峰會上玄鐵團隊也將帶來最新ART優化工作進展,敬請關注。
RISC-V 在Android上的進展
回顧玄鐵安卓的技術開發之旅,從2021年開始在 RISC-V 上移植Android 10,到現在即將迎來首款基于Android 的 RISC-V 產品,參與了 RISC-V 的重要時刻。
2021年04月 先后移植了Android 10和Android 12版本
2021年08月 在 RISC-V 基金會成立了Android SIG
2021年09月 開始在谷歌的AOSP主線上提交patch
2022年12月 在XuanTie TH1520測試板上就跑通了CTS和VTS,并在美國峰會上做了技術分享和demo展示
2023年01月 Google宣布AOSP會以“Tier-1”級別支持 RISC-V
2023年07月 玄鐵生態伙伴發布支持AOSP主線的開發板
2024年 基于Android on RISC-V 的產品原型即將面世
ART
ART是Android的framework,是非常核心的一個組件。很多應用的運行,都離不開ART虛擬。
ART的組成部分是解釋器、GC、Runtime還有Dex JNI的編譯器,以及匯編器。除了這些以外,基于ART還有一些其他的工具,類比于我們的傳統的GCC,它有dex2oat工具用來編譯dex字節碼,生成OAT文件,oatdump用來反匯編OAT文件。
在 RISC-V 上,我們需要porting的工作包括:解釋器、Runtime、Dex Compiler、JNI Compiler和宏匯編器。
優化工作
玄鐵在ART上做的一些優化工作,主要是集中在Compiler以及Runtime的部分。在Compiler部分,我們的優化主要實現了八十多個intrinsics接口,同時增加了一部分指令的優化。在Code Generator里,實現了90+ instruction visitor。Micro Assemble主要是針對 RISC-V 指令集的支持,目前支持IMAFD的標準指令集以及玄鐵擴展指令集。
在Runtime里面的話,我們實現了一個新的解釋器Nterp,是Android 12里新引入的一個解釋器。我們還對一些Quick Entries的匯編實現采用玄鐵擴展指令集進行重寫優化。除了ART,我們還在bionic中做了優化,主要是集中在C庫和數學庫,在C庫中,采用Vector指令集對memcpy,memset,memcmp,strcpy,strcmp等基礎函數進行重寫優化。而數學庫則采用了llvm編譯器對builtin函數進行優化。
玄鐵擴展指令集優化收益
在過去的一年里,除了升級Android10到Android12以外,我們花費了很大的精力在使用采用玄鐵擴展集對ART進行優化。可以從以下的幾個benchmark對比數據看到玄鐵擴展指令集帶來的收益(數據截至2023年10月)。
首先是Android Java虛擬機一個比較早的跑分工具Caffinemark,可以看到玄鐵擴展指令集對于整數計算、循環都有15%以上的收益,對于其他幾項也都是正向的收益。
第二個是關于數學函數的一個benchmark,SCIMath2。在這個benchmark上有15%以上的提升。
最后一部分是ART自帶的一些benchmark,以及一些面向編程語言benchmark,在這些benchmark上也有正向的提升。對于JObjectBenchmark提升尤其明顯,接近5倍的提升。
ART主線Upstream工作分享
玄鐵團隊在ART主線上的支持工作
去年的九月份開始AOSP主線支持 RISC-V 的編譯,之后我們陸續在今年三月支持了純C++的解釋器支持;五月份在Google團隊的支持下支持了Nterp解釋器;六月份完成對匯編器的支持。目前的工作主要是集中編譯器和反匯編。
截至目前為止,玄鐵團隊貢獻了超過七十多個的commit。
ART未來支持計劃
在過去的一段時間里,我們參與社區合作,社區已完成:
Dex編譯器中的CodeGen,反匯編工作
Micro assembler中的Zb*擴展
QuickEntries的實現
目前正在進行的是實現Dex Compiler中的Intrinsics。在后續的工作計劃中,主要集中在兩個部分:
Vector 1.0的支持
持續性的性能分析和優化工作
我們希望有更多的開發者可以加入,參與對ART的貢獻。
審核編輯:黃飛
-
Android
+關注
關注
12文章
3941瀏覽量
127724 -
編程語言
+關注
關注
10文章
1949瀏覽量
34893 -
編譯器
+關注
關注
1文章
1642瀏覽量
49229 -
RISC-V
+關注
關注
45文章
2320瀏覽量
46360
原文標題:玄鐵團隊的 RISC-V 安卓開發之旅
文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論