“Android 目前不再支持 RISC-V 了?”
近日,Google 高级软件工程师 Matthias Männich 的一个举措引发不少的争议。根据领英资料显示,该名软件工程师领导着 Android 系统团队并负责 Android 的 Linux 内核分支。
事情的起因是他向 AOSP(Android Open Source Project,Android 开源项目)提交了一系列补丁,其中“删除了 ACK 对 risc64 的支持”,如今在 AOSP 跟踪器上描述指出“对 RISC64 GKI 内核的支持已经停止”,删除了 RISC-V 内核支持、RISC-V 内核构建支持和 RISC-V 模拟器支持。
面对 Google 的做法,一时之间,传言甚嚣,甚至不少人直接将此举解读为「Google 已经决定停止参与 RISC-V 的游戏」。
ACK 不再支持 RISC-V
首先,我们不妨先了解一下 ACK、GKI 等名词。
过往,Android 设备制造商通常会根据其硬件和软件需求对 Linux 内核进行定制。这种定制化可能导致一些问题,例如设备之间的兼容性差异、内核安全漏洞等。
为了解决这些问题,Google 创建了 ACK(Android Common Kernel,Android 通用内核)项目,旨在提供一个统一的、可扩展的 Linux 内核版本,用于支持 Android 设备的开发和生产。ACK 项目的目标是减少 Android 设备制造商在内核方面的定制工作,提高设备的稳定性、性能和安全性。
根据 Google 官方的解释,ACK 是所有 Android 产品内核的基础,也为 AOSP 提供了一个统一的内核基础。供应商内核和设备内核位于 ACK 的下游。简单来看,ACK 是 Google 上游 Linux 内核的分支,但是添加了 Android 特定的附加内容,但尚未合并到主线或长期支持(LTS)内核中。ACK 有多个分支,包括 android-mainline,它是主要的开发分支。
进而论及 GKI(通用内核映像),是 Google 为了解决碎片化问题而推出的项目,通过统一核心内核并将 SoC 和板级支持从核心内核移至可加载模块中,解决了内核碎片化问题。GKI 内核为内核模块提供了稳定的内核模块接口 (KMI),因此模块和内核可以独立进行更新。
每个经过认证的 Android 设备都会搭载基于这些 GKI 分支之一的内核,因为谷歌目前不会认证搭载主线 Linux 内核构建的 Android 设备。
4 月 26 日,Google 高级软件工程师 Matthias Männich 在 AOSP 项目中提交了一个关于“移除 ACK 对 risc64 的支持”的补丁。
5 月 1 日,该补丁审核流程通过,成功合并了 android15-6.6 和 android-mainline 分支。
对此,外媒 AndroidAnthority 报道称,由于这些补丁删除了对 RISC-V 内核支持、RISC-V 内核构建支持和 RISC-V 模拟器支持,因此任何希望现在就编译 RISC-V 版本的 Android 公司都需要创建和维护自己的 Linux 分支,并打上必要的 ACK 和 RISC-V 补丁。
鉴于 Google 目前只认证使用 ACK 分支构建的 GKI 内核的 Android 版本,这意味着我们可能不会很快在 RISC-V 硬件上看到经过认证的 Android 版本。
Google 对 RISC-V 支持的历史
事实上近几年来,随着开源浪潮的到来以及 RISC-V 生态的发展,RISC-V 从嵌入式和微控制器领域逐步走向高性能领域,如今 PC、汽车、数据中心、AI 等高性能领域成为 RISC-V 的重要机会市场。
随之而来的是,业界不少科技公司加大了对 RISC-V 的投入,国内有阿里巴巴、腾讯等,国外包括 Google、Intel、高通在内的也纷纷入局。
就 Google 而言,其首次在 2022 年透露正在接受 RISC-V 补丁。
2023 年 10 月,Google 在博客上发文表示,“Android 是一个开源操作系统,可以免费移植到许多设备和架构。因此,它支持许多不同的设备类型和 CPU 架构。我们很高兴能够在该列表中添加一个新的——RISC-V。”
对此,时任 Google Android 工程总监 Lars Bergstrom 在 2023 年举行的 RISC-V 峰会上也表示,Google 想要让 RISC-V 成为 Android 的 T1 级支持架构——即其地位与 ARM 处理器处于同一水平。这一表态显示 Google 对 RISC-V 开源指令集架构的支持有了巨大转变。
与此同时,去年年底,芯片制造商高通宣布正与 Google 合作开发一款基于 RISC-V 的可穿戴芯片组,该芯片组将在谷歌基于 Android 的 Wear OS 平台上运行。一旦发布,这些 Wear OS 智能手表将成为第一款运行 Google 认证的 Android 版本的商业 RISC-V 硬件。不过,为了实现这一目标,谷歌必须投入大量工程资源,让 Android 及其底层 Linux 内核分支能够在 RISC-V 硬件上启动。Google 已经完成了在 Android 中启用 RISC-V 支持的大部分工作,但仍有大量工作要做。
此举将带来什么样的影响?
目前尚不清楚“删除了 ACK 对 risc64 的支持”会对 RISC-V 融入 Android 生态系统产生什么样的影响。
不过,The Register 评价道,毕竟目前还没有 RISC-V 智能手机诞生,这不会让手机制造商的日子变得艰难,但很难认为 GKI 支持被取消有利于开源 CPU 架构的采用。Android 仍然通过 AOSP 接受 RISC-V 补丁。
同时,外媒 AndroidAnthority 分享了一份来自 Google 发言人的回应:
Android 将继续支持 RISC-V。由于迭代速度很快,我们还没有准备好为所有供应商提供单一支持的映像。
我们已经从 Android Generic Kernel Image(GKI)中移除了支持 RISC-V 的相关补丁。
虽然该公司的声明没有详细说明这一决定背后的理由,但至少可以确定 Google 在 Android 中对 RISC-V 支持并未被完全取消。尽管如此,该声明还是暗示了这样一个事实:在 Android 为 RISC-V 做好准备之前,仍有大量工作需要完成。即使准备就绪,Google 仍需要重做工作以在内核中添加 RISC-V 支持。
至少, Google 的决定可能意味着我们可能需要等待比预期更长的时间才能看到运行在 RISC-V 芯片上的商业 Android 设备。
引发热议
对于 Google 此举,也引发了不少用户的热议,有网友评论道,「支持额外的架构并不是免费的,在开发人员大量裁员的时代,成本很重要。」事实也确实如此,不久之前,Google 突然解雇了整个 Python 基础团队,同时 Flutter 等团队也稍有波及。
此外,也有人猜测,或由于国际竞争环境日趋复杂,Google 此举受到了政府政策的影响,旨在减缓中国芯片制造的增长。
还有 Twitter 用户认为,“对于嵌入行业来说,Google 此举会增加 BOM 成本,因为 RISC-V 处理器比 ARM 处理器贵很多。从长远来看,这将使 ARM 处理器变得更加昂贵。另一个问题是 RIAC-V 版本分叉被卡住,安全补丁可能会延迟。”
就在众人猜测之际,在 RISC-V 邮件列表中,一位名为 enh 的 Google 工程师也分享了一则内部消息,其表示:
事实是:
* 我们在 AOSP 中支持 Android/riscv64 的工作没有任何变化
* 我们暂时停止了 ACK/GKI 版本的构建
* 在有正式的 GKI 内核之前,我们正在努力过渡到由我们这些开发 Android/riscv64 的工作人员维护的内核
* ......但不幸的是,在我们的修改准备就绪之前,GKI 的修改就已经发布了
请注意,“non-GKI”内核在所有意图和目的上仍将是 ACK/GKI 内核(目的是让 Android/riscv64 设备使用 GKI 内核),但由于维护一个正式的 GKI 内核成本较高,我们暂时去掉了贴纸。
来源:https://lists.riscv.org/g/sig-android/message/389
整体而言,当前的 Google 认为值得在 Android 中大力支持 RISC-V,但并不认为它已经准备好迎接黄金时期。
来源:
https://www.androidauthority.com/android-drop-risc-v-kernel-3438330/
https://news.ycombinator.com/item?id=40206729
https://www.theregister.com/2024/05/01/riscv_support_android_pulled/