在过去的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文章
3923浏览量
127114 -
移植
+关注
关注
1文章
377浏览量
28107 -
编译器
+关注
关注
1文章
1618浏览量
49043 -
RISC-V
+关注
关注
44文章
2227浏览量
46000
原文标题:Android ART在玄铁C910上的移植和性能优化
文章出处:【微信号:芯片开放社区,微信公众号:芯片开放社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论