逆向工程完成后,Collabora发布了Mali-G78 GPU的Valhall指令集文档

原文链接:Mali-G78 GPU’s Valhall instruction set documentation released after reverse-engineering work 由Jean-Luc Aufranc撰写。

一直以来,Collabora公司都致力于为 Arm Mali Bifrost架构和 Midgard架构开发Panfrost 开源 GPU 驱动程序,而且他们也获得了 Arm 的官方支持

但很显然,这种支持并不包括Mali-G78 GPU 和其他 Arm Valhall Mali GPU的文档。因为我发现,Collabora对 Mali-G78 进行了大约一个月的逆向工程,而且发布了有关 Valhall 指令集的文档 ( PDF )。

Arm Mali Valhall GPU的产品矩阵
Arm Mali Valhall GPU的产品矩阵

逆向工程的其他结果包括可由程序解析的XML 架构描述,以及用作逆向工程辅助工具的 Valhall汇编器汇编器

除了 Mali-G78“Borr”GPU,这项工作也适用于其他的Valhall GPU,包括 Mali-G77 “TryM”、Mali-G57“Natt-A/B”、Mali-G68“Ottr”和适用于汽车和工业应用的Mali-G78AE“Borr-AE”。

Collabora公司Mali GPU自由驱动项目的负责人Alyssa Rosenzweig 解释说:“因为Collabora的工作是基于三星的 Galaxy S21,因为了该手机采用了三星 Exynos 2100 SoC,并配备了Mali-G78 MP14 GPU。”她指出,虽然Android 上的逆向工程工作比 Linux 上的更难,但这是目前唯一的选择。

目前,该团队正在设法使用包装库识别每一层,该包装库转储执行每个着色器,从而对新指令集进行逆向工程,并开发反汇编器。

他们也从一些公开的信息中得到了帮助,尤其是 Anandtech一篇,该文章中描述了有关 Valhall 的有用信息:

  • 基于 Warp,就像 Bifrost,但每个 Warp 有 16 个线程,而不是 Bifrost 的 4/8
  • 在指令级别与 Bifrost 同构(“操作等效”)
  • 定期编码
  • 扁平,缺少 Bifrost 条款和元组封装
  • 16KB 指令缓存,容纳 2048 条指令

获取指令集文档、汇编器和反汇编器是让 Panfrost 支持 Valhall GPU 的第一步。Alyssa 还指出,Mali G78 确实带来了指令集以外的变化。比如:明显不同的数据结构,减少了 Vulkan 驱动程序的开销。而且很幸运的是,许多数据结构可以从 Bifrost 中进行调整,而且只需要对 Mesa 驱动程序进行很少的更改就能实现。Alyssa还邀请了使用 Valhall GPU 设计 Linux设备的人员或公司与 Collabora多联系、交流,从而帮助他们获得开源 Linux 驱动程序。

查看Collabora 的帖子可以了解详情。

分享这篇文章
订阅评论
提醒
0 评论
内联反馈
查看所有评论