0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Android ART在玄铁C910上的移植和性能优化

芯片开放社区 来源:芯片开放社区 2023-11-16 09:43 次阅读

在过去的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进行执行。

dbd5a11c-83b3-11ee-939d-92fbcf53809c.png

ARTforRISC-V支持

在介绍完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分钟。

dbf018ee-83b3-11ee-939d-92fbcf53809c.png

Android12支持

2022年开始,我们又在Android 12上再一次支持了 RISC-V。有了前一次经验,在Android 12上的支持变得轻车熟路。相比于Android 10的移植工作,这一次有了新的硬件平台TH1520,同时更新了Clang编译,并采用玄铁优化的Clang15版本,也更新了Binonic。

在ART上,本次增加Nterp解释器,用于减少方法调用的链路,提高频繁方法调用场景下的性能。由于采用Clang15编译器支持了玄铁扩展指令集,因此在ART上也增加这一部分针对玄铁的特性优化。经过一系列的优化工作以后,Android 12在TH1520上在开启更多的服务的情况下,Launcher启动时间再一次得到提升,达到了47秒。

dc420320-83b3-11ee-939d-92fbcf53809c.png

社区贡献

在移植Android的过程中,我们也积极参与社区的贡献,避免大家重复造轮子。自2022年9月,我们在AOSP社区开始陆续提交相关的Porting改动。在ART上,目前贡献超过了80个Commit。特别感谢来自Google的Vladimir Mark、Ulya Trofimovich和Santiago Aboy Solanes细致的代码审查工作,完成代码review、验证以及修改,保证代码高质量合入。

dc81f52a-83b3-11ee-939d-92fbcf53809c.png

玄铁扩展指令集优化改进

在最近的优化工作中,我们在ART中增加了玄铁扩展指令的支持。玄铁扩展指令主要分为整数计算、内存读写、bit操作以及Vector v0.7指令集。基于这些指令集,ART中的优化内容包括编译器部分的优化器、指令生成器,运行时库的汇编解释器、Quick Entries等等。除了在ART采用玄铁扩展指令集进行优化以外,还在Bionic中对C库、数学库进行了优化。

dca7acb6-83b3-11ee-939d-92fbcf53809c.png

玄铁扩展指令相比于RV64GC指令集,有较大的性能收益:

CaffeineMark,对于整数部分有超过15%的性能提升,对于浮点,方法调用也有4%的提升

SCIMath2,大部分用例都有超过15%的性能提升,小部分SOR/MonteCarlo提升并不明显

其他一些编程语言上的结果也有较大的提升,最高的能达到约5倍

dcbe7e46-83b3-11ee-939d-92fbcf53809c.png

结语

RISC-V 在Android上才刚刚起步,ART上还有很多软件、硬件的优化需要继续支持。非常幸运能参与这一历史性的事情,与全球开发者共同推动Android在 RISC-V 上的适配。

希望社区里有兴趣的同学可以关注 RISC-V Android SIG以及Google RISCV64社区,共同讨论参与贡献。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125641
  • 移植
    +关注

    关注

    1

    文章

    367

    浏览量

    27854
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48617
  • RISC-V
    +关注

    关注

    41

    文章

    1901

    浏览量

    45045

原文标题:Android ART在玄铁C910上的移植和性能优化

文章出处:【微信号:芯片开放社区,微信公众号:芯片开放社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    转发 Risc-V 平头哥半导体将910移植至安卓10

    的意义。不禁用就没有竞争力虽然,平头哥的 Risc-V支持安卓对于备胎来说意义重大。但是ARM没有禁止的时候,平头哥的竞争力就非常有限了。910大致相当于A72的
    发表于 01-25 22:53

    平头哥处理器Linux新版本,5大亮点速览

    软件形成持续保障。目前 linux 支持的系列 CPU 有:64位系列 (RISC-V):C910 三发射,深度乱序,12级流水线,搭载AI向量加速引擎的高性能多核处理器32位系列
    发表于 09-01 14:46

    平头哥CPU调试系统介绍

    。GDB开源GDB软件,支持CPU体系结构,包括8系列、9系列CPU剑池CDK平头哥推出的
    发表于 09-01 14:53

    安卓对RISC-V支持的操作实战

    本帖最后由 jf_11671167 于 2021-10-9 10:28 编辑 关键词:平头哥、RISC-V架构,RISC-V操作系统,安卓,虚拟机,
    发表于 09-01 16:08

    阿里平头哥宣布开源RISC-V系列处理器

    C906、C910等4款量产处理器IP,以及基于的多操作系统的全栈软件及工具。开发者可通过平头哥Github和芯片开放社区(Open Chip Community)下载
    发表于 10-20 14:09

    1024开发者节 OCC体验系列开发板

    OCC体验系列开发板"活动,本次活动我们将不限量提供"W800无线开发套件(804)"和"CB5654智能语音开发板(
    发表于 10-26 10:57

    怎样ART-Pi H750移植TouchGFX呢

    目录在ART-Pi H750移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程ART-Pi H750
    发表于 02-22 06:01

    4款RISC-V芯片亮相

    了双核C906处理器、0.5T NPU和Smart ISP等,是业内同档产品中集成度最高的产品之一。 晶视智能COO黄群辉介绍称,平头哥基于RISC-V视觉AI领域做了大量代码
    发表于 03-08 08:16

    CPU调试系统介绍

    和 Segger 的 JLink。CPU 的调试模块:系统调试的基础 该模块允许您控制 CPU 以及读写寄存器和内存。二、CPU调试系统概述图 2.1
    发表于 03-09 07:20

    1024开发者节OCC体验系列开发板

    OCC体验系列开发板"活动,本次活动我们将不限量提供"W800无线开发套件(804)"和"CB5654智能语音开发板(
    发表于 03-09 08:02

    软硬件协同优化,平头哥斩获MLPerf四项第一

    4月7日,全球权威AI基准测试MLPerf发布最新榜单,聚焦低功耗、高能效的IoT领域Tiny v0.7榜单中,基于平头哥RISC-V C906处理器的软硬件联合
    发表于 04-08 14:47

    【新品抢鲜体验】润开鸿DAYU800体验官活动

    润开鸿DAYU800开发套件是基于平头哥曳影1520芯片,支持OpenHarmony标准系统。集成四核高性能RISC-V处理器C910,AI算力达4TOPs,支持全链路安全防护,具
    发表于 03-31 18:36

    读书分享会 | RISC-V处理器入门与实战电子书免费下载!

    、中断处理和多核架构等方面的内容。此外,本书还提供了丰富的实战案例,包括如何使用处理器构建嵌入式系统、如何进行性能优化和调试等。每个章节都包含了详细的代码示例和实验步骤,以帮助读者
    发表于 04-12 11:16

    读《RISC-V处理器入门与实战》

    。 全方位的介绍,带领我们了解RISC-V之性能强大,不再局限于一个跑马灯、Hello World工程,而是开发高大的系统级应用。未来RISC-V如果能在应用碎片化、开发效率低、软硬件适配难等问题上不断优化,相信将迎来更大的发
    发表于 09-28 11:58

    玄铁C910到底什么水平?

    C910采用了最先进的12级无序多问题超标量流水线,具有高频率、IPC和功率效率的特点。此外,它还支持硬件缓存一致性,每个集群包含1~4个内核,支持AXI4总线接口并包括一个设备一致性端口。
    的头像 发表于 03-14 15:57 2192次阅读
    玄铁<b class='flag-5'>C910</b>到底什么水平?