你也许不知道,作为全球知名的芯片IP公司,Arm 有45%的工程师是软件开发人员。其中固然有部分开发人员在做底层,比如相关驱动的开发,但更多的工程师在做高层软件工作,包括软件框架、性能分析工具、展示最佳实践等等。
日前,Arm终端事业部生态系统及工程高级总监 Geraint North介绍了Arm在软件和生态系统方面的贡献。文章将分为四个方面,包括64位部署迁移,安全行业投入,软件架构优化以及安卓动态性能框架的合作。
全面转向64位
Armv9.2全面转向了64位,一直以来,Arm都在宣传64位的好处,但安卓生态经过了一个漫长的过程才完成64位迁移。10多年前Arm就进入了64位,但直到去年谷歌最新的Pixel手机才成为第一款仅支持64位的安卓机,联发科也是于2022年推出只有64位核的SoC。
64 位通过更大的寻址空间,可以实现更高的安全和性能。在SpecInt2006性能测试中,可以看到64位性能相比32位差距越来越大,这是因为一方面在硬件IP实施上更看重64位路径优化,而在软件方面,同样是关注64位的编译器和库优化。
North表示,32位应用的存在不止阻碍了Arm,更是阻碍了包括芯片供应商、OEM、操作系统等发展,其验证成本、芯片面积、操作系统库以及持续维护等都需要额外考虑32位,也正因此Arm希望可以加速64位的普及。
Google的应用商店已经完成了向64位的迁移,而中国应用商店众多,所以推广64位应用生态相对比较复杂。但如今几个应用商店中前1000名应用已经100%具有64位版本,这也是由OEM开发者的支持所致。
而接下来,Arm将会在数字电视和机顶盒市场拓展64位生态。
为终端部署安全
根据NIST发布的报告,2021年有超过20000个CVE关键漏洞和暴露,其中CWE-787越界写入,是近年来增长较快的漏洞类别,Arm也将其作为重点防御目标。
除了通过将内存打标(tag),从而追踪常见的非法内存操作的MTE之外。Arm也推出了PAC(Pointer Authentication code)和BTI(Branch Target Identification)两种安全防御措施。
通过将PAC与BTI 联合保护,攻击者很难将现有的代码片断用于不法的手段,从而减少攻击者突破沙盒后的可访问代码足迹。PAC的作用是攻击者即便找到了覆盖一个指针的方法,但是难以用它真正覆盖任何的代码,在执行完一个函数以后不会返回到错误的地方,每一个函数被调用的时候连接寄存器就会被清零。 BTI 则可以保护程序不跳转到内存的未经授权地址,从而有效阻止攻击者跳转到函数中。
在过去的三年中,Arm和 Google 开源社区合作,用 PAC 和 BTI 全面保护Chromium。2022年,Unity中也启用了PAC/BTI。
利用软件充分释放架构性能
Arm通过提供不断提升编译器的效率,从而充分发挥全新架构的性能。比如Arm最近在 LLVM 的工作都是聚焦在 SVE2 的性能之上,这是 Armv9 引入的全新的矢量架构。Arm的Fast Model可以降低流片前性能提升的工作。
SVE2 本身是包括没有预定的指令和散点结构操作的功能,因此如果要确保 SVE2 的代码生成尽可能做好,就意味着要保证 LLVM 能做矢量化的工作,同时又能确保 LLVM 能够矢量化目前它不能做到的。另外,SVE2 不会很快普及,因此在 LLVM 16 中Arm引入了函数多版本,使开发者能够更加容易确保其函数的利用和 SVE2版本都能够生成。
同时,Halide也是一种高效的面对高性能图像处理的编程语言,他使LLVM作为代码生成器,因此与 LLVM 的合作也有助于 Halide。
安卓动态性能框架的合作
安卓关键开发框架如今共有四个组成部分,包括:第一、APDF 提示 API,它能够帮助系统根据游戏中的情况提高或降低 CPU 的频率。第二、APDF 散热 API ,它为开发者提供了数字信号,告诉他们离所谓的热阀值还有多远。第三、游戏模式 API ,这是向开发者提供关于用户性能或电池偏好的一些建议。第四、游戏状态的 API,可以允许游戏告诉系统他们在做什么,以便可以调整以满足游戏的性能需求。
安卓的动态性能框架和 Unity 的 APDF ,与 Arm 的 IP 可以非常好的协调响应。目前安卓已经提供了一个一致的 API ,开发者可以针对整个安卓生态系统来进行开发,这也给Arm充分发挥的空间,可以帮合作伙伴在Arm平台上更好的利用这些API创造自己的差异化。
相关文章