移动图形技术大跨越 ARM全新片上架构和新GPU一览
2021-08-11张平
张平
在上一期的文章中,我们介绍了ARM Cortex-X2、Cortex-A710和Cortex-A510三款全新微架构,它们的出现进一步推高了移动计算CPU的性能上限。而在本次发布会上,除了新的CPU架构之外,ARM还发布了全新的GPU架构以及片上架构。在本文中,我们就来一起了解—下这些内容。
在上一期的文章中,我们曾经提到ARM发布了CPU、GPU和相关片上架构等内容。由于篇幅所限,上一期只介绍了最重要的CPU架构。实际上,片上架构同样很关键,诸如big.LITTLE、DynamIQ以及互联总线都得依靠片上架构实现。因此,本期我们先来了解片上架构的内容,再来进一步了解全新的ARM GPU架构。
更大宽带、更强性能:全新的ARM DSU—110L3和互联架构设计
移动SoC是一个复杂的综合体,它包含了CPU、GPU、系统级的L3以及大量互联部件、其他相关模块等。因此在本次更新中,ARM也直接将L3和互联设计一并进行了换代,以更好地适应全新的架构。ARM DSU-110 L3:带宽猛增
ARM DSU-110包含了全新的集群和L3架构,这是继ARM在之前发布DynamIQ之后,推出的有关L3和集群的新设计方案,其中包含了操作方式的重大变化等内容。
ARM宣称新的DSU-110扩展性极为出色,可以针对大屏幕设备和较小的移动设备进行伸缩设计,从ARM给出的例子可以看到,DSU-110即可以搭配Cortex-X2这样的大核心组成高性能产品,也可以配合Cortex-A710组成中等核心产品,还可以和Cortex-A510-起实现面积、功耗最小化,整体配置非常灵活。此外,DSU-1 10的整个架构经过了重写,能够以更高的效率为处理器核心提供更佳的性能,其中最重要的一点就是L3的带宽在使用了DSU-110之后提升至前代产品的5倍。
性能方面,ARM提到在DSU-110架构下,ARM处理器最高可以配置16MB L3缓存,并且相比前代产品在性能提升的情况下还可以降低系统功耗,实现处理器性能功耗比的提升。在多核能力方面,DSU-110目前最多可以支持8个高性能的Cortex-X2核心。这里有一个比较有意思的想法,那就是如果一个处理器拥有8个Cortex-X2内核,再搭配16MB L3缓存,其部分性能是否足以和目前的中高端筆记本电脑相媲美?另外,带宽方面除了前文提到的5倍提升之外,ARM还特别说明DSU-110的L3缓存也额外提升了针对单个核心的带宽,尤其是DSU-110可以支持的数据带宽比目前新CPU微架构所需的带宽更宽,不过ARM没有披露具体数据。这说明未来L3的带宽不再是困扰ARM处理器的性能因素了。
在内部结构方面,之前ARM从未公布过相关信息,但是在DSU-110上,ARM给出了一些内部结构示意图。根据示意图显示,ARM考虑到面向未来和可伸缩性,因此选择重做了DSU-110的内部架构,整体结构主要包括以片区为单位的L3缓存、监听过滤器以及控制逻辑单元。细节方面,DSU-110内部实现了基于地址的区块控制,此时多个请求可以并行访问不同的缓存片区并且同时读取,以大幅度增加带宽。现在,每个片区最多支持64个事务同时操作,这扩大了整个区域的读取能力。
此外,DSU-110的内部总线架构采用了环形总线架构,每个环负责4个缓存片区,因此8个缓存片区总计使用了2个环,除了缓存片区外的所有单元可以通过站点环形总线挂接。每个单独的环可以任意选择一个方向传输数据。ARM宣称这样可以得到最优化的延迟和带宽,最终的延迟数据和上一代DSU相似。
从性能方面来看,DSU-110在带宽和并行性方面的增加非常令人满意,不过这一切还需要配合新的CPU架构才有效果。究竟新的CPU架构配合DSU-110能够带来怎样的性能提升,还得实际测试才能明确。
再来说说安全部分。DSU-110支持MTE功能,也就是内存标记扩展( Memory Tagging Extension)。这个功能本刊之前介绍过,其主要用途是增强内存的安全性。DSU-110加速模块的ACP功能单元提升了带宽,系统MMU也支持增强的虚拟化和安全特性优化。外部连接方面,可扩展的总线接口支持最多4个主总线接口,每个都是256bit位宽,支持更新的AMBACHI协议,这意味着设计人员有可能实现1024bit的系统内存双向位宽。如果搭配2GHz频率的话,那么总读取写入带宽或许将高达256G B/s,这是目前一些高端笔记本电脑都无法实现的带宽方案。另外,外围端口方面,新的设计也带来了一致性支持和更高的带宽支持,可以用于接驳系统其他部分,也可以帮助优化DRAM的访问路径。
DSU-110带来了电源效率的大幅度改进,和当前的DSU相比,最高可以降低75%的功耗。其节约的途径主要包括加入了新的电源管理状态,并且频率和微架构的改进能降低25%功率泄漏,同时提供2倍带宽。最重要的是,新的电源模式允许L3和逻辑部分在某种情况下实现关闭以节约电能,比如屏幕关闭、用户不再操作的时候,或者较低强度的工作负载下,也能够关闭部分单元。
请注意,在这里比较的都是相对条件,DSU的有源动态功率会随着带宽增加而线性增加。举例来说,如果你希望实现5倍的带宽,那么功耗也肯定会增加至原来的5倍——这是系统功耗以及下一代SoC在繁重内存工作负载下功耗行为预测的一个重要因素。
总的来说,ARM将DSU-110描述为Armv9的主干显然是合理的。DSU-110增加的带宽能显著提升CPU的单线程和多线程性能,尤其是16MB L3的方案,使得ARM的产品可能出现在高端笔记本电脑上,当然希望它也有同样优秀的高性能功耗比表现。
Cl-700和Nl-700:缓存一致性增强
再来看看片上互联系统的更新。ARM上一代类似片上互联系统的是2015年发布的CCI-500,当时的片上系统没有缓存一致性的需求。虽然从GPU角度来说这是不可思议的,但是从CPU角度来说又是完全合理的。因此之前缓存一致性主要是用于CPU的每个核心之间,那么在SoC层级,缓存一致性就不那么重要了。
但是随着技术发展,目前SoC上出现了各种各样的功能模块,比如NPU、DSP以及更多希望和GPU实现缓存一致性并使用相关数据的模块。ARM也正是看到這个变化,决定更新片上互联系统。
先来看CI-700。ARM宣称CI-700是专门为AAA级别游戏、120Hz帧率和HDR视频等要求较高的计算所需而设计,它基于最新的架构互联,支持MTE、内存分区和监控(MPAM)、AMBA CHI(和DSU-致)等,可以实现快速配置并且全面支持Cortex-A系列微架构。功能方面,新的CI-700支持企业级AMBA CHI技术,全相干设计,支持系统级缓存和侦听滤波器,这样的设计可以带来更好的性能、更低的功耗,并且还可以增加CPU集群内缓存的容量、实现CPU间集群和加速器的IO-致性等。目前CI-700支持DSU集群从1个扩展至最多8个,支持最多8个内存控制器。
继续看a-700的网络拓扑结构。这部分和我们在CMN IP中看到的内容非常相似,因为CI-700主要也是由点、交叉点和“XP”部分组成。值得一提的是CI-700的XP单元,XP单元可以连接更多的端口,也可以配置为真实网格的唯-XP,或者本质上能够配置为lxl的网络。最大的话,CI-700可以实现4x3的网格配置。
缓存方面,CI-700支持1-8个SLC片区配置方案,每个片区最多4MB,总计32MB,此外还包括侦听过滤器的SRAM缓存。其中每个片区对应覆盖8MB地址空间,一般来说,ARM建议对网格客户端的底层私有缓存进行1.5-2倍的覆盖。此外,SLC缓存也可以用作带宽放大器使用,这样可以减少系统对外部存储器或者内存的依赖,从而降低系统功耗。在这里,ARM依旧强调了对MTE技术的支持,允许这一代IP跨CPU、DSU和新缓存一致性的互联。
除了CI-700外,NI-700也是本次发布的重要功能之一。NI-700通过可扩展和高度可配置的设计、数据传输分组化的设计,带来了SoC上的NoC部分高达30%的布线数量降低。并且可以支持多个时钟和多个电源.全面支持新的ARM AMBA安全特性等。
总的来看,CI-700和NI-700的改进,使得ARM在新的架构和技术下能够实现更快、更大且支持缓存一致性和安全特性的内部互联,这极大地方便了厂商开发更高性能且拥有更多特性的SoC。相比CPU架构的升级,NI-700和CI-700的升级在实际应用中的意义可能更大一些。
持续提升性能:全新ARM Mali—G710、Mail—G610、Mail—G510和Mali—G310 GPU
介绍完有关ARM在系统L3缓存以及互联设计方面的更新后,我们继续来看有关GPU方面的更新内容。
此次ARM-口气发布了四款GPU,型号分别是Mali—G710 Mali-G610、Mali-G510和Mali-G3先值得注意的是这些GPU的型号它们全部从之前的两位数命名更改为三位数。比如之前的产占型号为Mali-G78,后续型号按道理应该是 “Mali-G79”,但是新的产品变成了 Mali-G710。ARM在这一代产品中形成了“7、6、5、3”这样从高到低的产品阵容,以应对不同市场的需求。其中,“6”系列产品是新出现的,它采用了和“7”系列产品相同的核心微架构,但是核心数量较少,这个细分型号的出现是ARM为了帮助合作伙伴更好地将旗舰型号和高级型号区分开的设定,同时也有助于消费者清晰地辨别产品的定位。其他产品上,Mali-G510是2019年Mali-G57的继承型号,Mali-G310则是Mali-G31的全面改进版本。上述所有的GPU都采用了新的Valhall微架构。有关Valhall微架构的内容,本刊在之前的文章中做过详细的介绍,大家可以翻看之前的文章进行回顾了解。
Mali-G710:性能提升最高20%
首先来看定位顶级的Mali-G710,ARM给出的数据是,Mali-G710能够带来最高20%的性能提升,20%的功耗降低以及最多35%机器学习性能的提升。
从宏观架构来看,Mali-G710和之前的Mali-G77、Mali-G78是基本相同的。其主要特点是Valh all架构,波前阵列从之前的8改为16,支持双数据执行引擎架构,与此相应的是在Mali-G78中我们看到了每核心32FMA。另外它还支持指令动态调度、API等内容。
ARM给出了Mali-G710渲染核心的结构简图。相比之前的Mali-G78,Mali-G710的真正变化在于,渲染核心内部增加了第二个执行引擎,这使得Mali-G710每个渲染核心的计算性能得到翻倍。从某种意义上来说,ARM正在重复之前我们在上一代Mali架构比如Mali-G76中看到的事情,Mali-G76的单个渲染核心拥有3个执行引擎。除此之外,ARM还给出了一些细节数据,比如执行引擎和纹理单元部分经过重新设计后,每周期的吞吐量为8个单位;加载和存储缓存、Varying unit以及信息总线部分经过优化后,每周期的吞吐量为8个单位;其余包括管理单元部分、区块处理单元部分则采用了更大的单位区块设计,其吞吐量提升至4个单位。
纹理单元部分是ARM这次变化的重点之一。新的纹理单元每个时钟能够处理8个双线性纹理元素,性能达到上代产品的2倍,并且ARM重新优化了整个纹理单元的设计,以提高面积效率。结合性能的提升和面积的缩减,新的纹理单元带来了高达50%的性能密度优势。
ARM给出了有关Mali-G710的执行单元结构简图。从整体结构来看的话,Mali-G710依1日是分为前端、处理单元和信息块( Message Block)三个部分。其中前端包括波前相关的状态、排序、16KB指令缓存、divergence等功能模块。处理单元方面包括指令拾取、RF单元、Arg muxing、FMA、CVT、SFU等功能和计算模块。信息块部分则是信息RX管线和信息PX管线等。好在ARM将Mali-G710和上一代Mali-G78进行了对比,从对比图可以看出,新的M ali-G710采用了4个并行宽度4的前端执行单元来替代上代1个并行宽度1 6的前端执行单元,这样做不会改变GPU的吞吐量,但是会提高执行的灵活性,从而提升效能。
总体而言,新的设计使得GPU每个内核在每个时钟周期内的FMA能力翻信,同时执行引擎部分也带来了20%的能耗比降低,这非常可观。
另外,Mali-G710的另一个亮点是使用了“命令流前端(CommandStream Frontend,简称为CSF)“替换了之前的“作业管理器(JobManager)”。新的CSF负责处理调度和处理绘制调用,它引入了一个性质未公开的新CPU和一个新的固件层。此外,CSF通过提供一个非常轻量级的提交路径来减少驱动程序的开销,同时也提高了系统CPU的效率,还可以使得复杂的图形工作负载更为灵活和可扩展。CSF还有助于简化对API的状态继承和二级缓冲区功能的支持,以及简化对时间敏感的应用的处理流程。另外,同步事件也从这类改进中受益,并且降低了延迟。
新加入的固件现在可以和硬件层紧密耦合,处理来自主机的请求,命令缓冲区的通知等操作,减少了部分开销,甚至允许通过额外的指令来模拟硬件中尚不存在的API功能。
在硬件设计方面,ARM宣称新的CSF是全面重新设计过的,能够实现当前最新的功能,还允许相关计算任务提交到其他GPU单元。ARM宣称在使用了新的CSF后,每秒可以多调用500多万次,显著提高了效能。
最后来看整个Mali-G710在技术方面的改进总览。M ali-G710的改进包括:全新的CSF、可伸缩的硬件架构、可配置的渲染核心数量( 7-16个)、可配置的L2区块数量(2-4个,每个区块可选256KB或者512KB)、支持ACE功能(128b或者256b)、系统缓存支持PBHA( Page-Based HardwareAttributes,硬件页面属性)功能等。从上述改进可以看出,ARM在本代产品上的目标是改进和API开销相关的弱点,不过实际应用中具体表现如何还有待测试。但是从本代20%的能效比、性能的提升来看,其表现还是可以接受的,只是并没有改变整个移动GPU市场的竞争格局罢了。
另外,Mali-G610的微架构和Mali-G710-样,但是核心数量低于7个,因此本文就不再赘述了。
Mali-G510和Mali-G310:总有一款适合你
M ali-G 510的上代产品是Mali-G57,和它相比,Mali-G510在可比条件下,性能最高提升可达100%、能耗最多可以节约22%,机器学习性能最多提升100%。ARM给出了相关M ali-G510的技术总览,其中包括L2区块数量最多可以配置为4(每个L2区块可选128KB或者256KB)、支持ACE(可配置为128b或者256b)、支持AFRC、支持lObit和YUV8等。
ARM还给出了Mali-G510的渲染核心简图。可以看出,M ali-G510依1日拥有2个执行单元,每个单元都支持并行宽度16的波前数据,不过其中一个可以配置为1簇或者2簇设计,另一个则是固定2簇设计,这样一来,整个执行单元可以再48 FMA每周期或者64 FMA每周期之间进行选择,进一步节约片上面积和晶体管数量。一般来说,此类GPU的用户普遍具有一些标准配置和特定用例,可以使用最低限度的配置来满足这些需求,因此ARM给出了在区域面积上最小配置的方案。
从更高层级来看,Mali-G510可以选择2个内核或者6个内核的配置方案。除了上文描述的执行单元部分可以选择48 FMA或64 FMA每周期以外,纹理单元部分也可以配置每周期4或者8个单位的吞吐量设计,另外在写回和Varying unit口B分,每周期均可配置4个单位吞吐量的方案。
在具体产品配置方面,ARM强调M ali-G510拥有10种配置可以满足几乎所有的需求。ARM特别指出,CSF口B分、区块部分可以根据面积和性能进行优化,渲染核心可以选2个到6个,内存部分也可以根据需求进行改进。最终形成了10个配置方案,其FMA单元可以覆盖96-384个广阔区间。并且,不同的配置在FPS、功耗、面积、和能耗上都有不同的取舍,这需要厂商根据自己的需求来进行配置了。
最后来看Mali-G310。它采用了新的Valhall架构,上代产品使用的是Bifrost架构,因此在架构层面,M ali-G310实现了飞跃。Mali-G310的架构图显示,由于定位较低,因此Mali-G310的渲染核心中的2个執行单元都变成了可选1个或者2个簇的配置方案,因此FMA每周期可以执行16-64个操作,具体来说是16、32、48或者64。写回单元每周期可以配置4个单位吞吐量、纹理单元则是每周期2-8个单位吞吐量可选,Varying unit则是2-4个单位吞吐量可选。
在配置方案方面,ARM也给出了5个不同的配置方案,以满足不同类型用户的需求。ARM认为Mali-G310可以使用的范围包括入门级智能手机、机顶盒、数字电视等场合,其最大的特点在于性能和效率的灵活,比如5个配置方案可选、较小的面积等。
性能提升,市场有待观察
在这里我们就基本了解完了有关下一代Mali GPU的信息。从ARM发布的信息来看,新一代Mali GPU在高端市场方面性能提升最高可达20%,这看起来是一个比较令人兴奋的数字,但是实际上Mali GPU的高端市场正在逐渐损失。比如Mali之前最大的客户华为已经无法使用Mali相关授权,三星也宣布下一代移动GPU选择AMD的RDNA 2架构,高通则自有GPU架构,剩余可能对ARM GPU有兴趣的厂商也就只有联发科了,考虑到联发科在高端移动SoC方面并不占有市场强势地位,因此ARM的顶级Mali GPU能出现在哪些中高端手机上?市场表现到底如何?还有待观察。
出现这样的原因很大可能还是ARM在移动GPU上无法提供更好的性能或者更出色的性能功耗比,考虑到目前高端SoC市场竞争是如此的激烈,苹果显然占据龙头地位,高通的GPU性能表现也可圈可点,ARM在这里是存在一定的失误的。最主要原因就是ARM试图用一个微架构来迎合几乎从最低端到最高端这样如此广泛的市场,这使得ARM目前的表现是要么顾及高端丢了低端,要么在低端市场表现很好但是高端市场却又表现一般,难以平衡。
好在ARM在M ali-G510和M ali-G310上的表现应该足够出色。ARM宣称2020年出货了10亿颗GPU,其中占据了DTV市场的80%,智能手机市场的50%,接下来,ARM还将凭借Mali-G510和Mali-G310继续扩大自己在细分市场的份额,这也是一种不错的发展路径吧。