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

    文章

    3923

    浏览量

    127114
  • 移植
    +关注

    关注

    1

    文章

    377

    浏览量

    28107
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49043
  • RISC-V
    +关注

    关注

    44

    文章

    2227

    浏览量

    46000

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

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

收藏 人收藏

    评论

    相关推荐

    平头哥发布RISC-V处理器910 芯片成本降低一半

    7月25日,阿里巴巴旗下半导体公司平头哥正式发布910(XuanTie910)。据介绍,
    发表于 07-25 15:30 1189次阅读

    RISC-V生态大会深圳召开,达摩院引领RISC-V创新应用

    :达摩院院长张建锋RISC-V生态大会上致词,RISC即将迎来蝶变进入应用爆发期   从2018年起,阿里巴巴开始投入RISC-V架构,是国内最早涉足RISC-V的技术团队之一。2019年
    的头像 发表于 03-19 10:02 4355次阅读
    <b class='flag-5'>玄</b><b class='flag-5'>铁</b>RISC-V生态大会深圳召开,达摩院引领RISC-V创新应用

    转发 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

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

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

    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

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

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

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

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

    阿里平头哥将全面开放910IPCore 对ARM影响几何

    7月25日,阿里巴巴在上海举办了“2019 阿里云峰会”。本次会议,阿里巴巴详细介绍了阿里的“All in Cloud”战略,同时阿里旗下的平头哥半导体还发布了号称业界最强的高性能RISC-V处理器——
    发表于 07-26 15:58 1995次阅读

    阿里发布新型910开源芯片

    性能表现910较主流的RISC-V指令性能
    的头像 发表于 07-27 08:06 7685次阅读

    阿里发布“910”芯片!开启世界芯片历史的一大步!

    阿里终于出手!国产芯片加速抛弃ARM!阿里此时推出“910”,一方面,是希望该芯片和金庸笔下的“重剑”一样,重剑无锋、大巧不工。
    的头像 发表于 08-02 09:25 5335次阅读

    阿里旗下半导体公司发布910嵌入式处理器

    阿里巴巴旗下半导体公司平头哥今日正式发布910(XuanTie910)处理器,官方称,
    发表于 08-07 17:12 1383次阅读

    RISC-V可以支持Android 10了

    可以支持Android 10了!而千芯科技的tinyAI软件包,成为了首个支持RISC-V 安卓的AI算法生态包! tinyAI 对RISC-V的AI强力加速与部署 平头哥半导体发布的C9
    的头像 发表于 01-29 09:35 3834次阅读

    C910到底什么水平?

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