MCPLive > 杂志文章 > Mali GPU Midgard架构预览(上)

Mali GPU Midgard架构预览(上)

2014-08-26李少华《微型计算机》2014年8月上

深入底层—Midgard架构分析

在分析Midgard的架构时,本文将从一个比较高的视角来观察它。下文给出了Midgard的着色器核心架构,尽管名称上被称之为“着色器”,但是实际上其中的内容非常丰富:“着色器”在本文中包含的内容不仅仅是一个普通着色器中所包含的“三管线(tri-pipe)”设计,还包含了三角形Setup模块、光栅化模块、Z轴消隐模块、ROP单元、tiling模块以及专门为通用计算和“三管线”而设计的一些线程控制模块。

Open GL ES 3.1在之前的会议上曾经被提出过来,并明确说明不会支持曲面细分、几何着色器。
Open GL ES 3.1在之前的会议上曾经被提出过来,并明确说明不会支持曲面细分、几何着色器。

一个Midgard的着色器,实际产品诸如Mali-T760,由于要充分考虑设计上的可扩展性,因此即使这个着色器包含了一个GPU的绝大部分内容,但是它依旧不能算作一个完整的GPU—因为部分周边部件并没有被放置在目前所介绍的着色器中。ARM设计了一个可扩展的、带有绝大部分功能的着色器,同时给出了一系列的共享硬件,厂商可以根据需要选择不同数量的着色器搭配共享模块,终获得合适的GPU方案。Midgard支持从1个到16个“着色器”的设计方案,这也是强悍的Mali-T760MP16的来源。

Midgard的共享部分主要是一些管理模块,比如任务调度管理器等,其次是L2高速缓存、可以访问内存或者CPU缓存的内存控制器,后还有系统总线AMBA 4 ACE-Lite。对于强悍的Mali-T760MP16而言,ARM的设计方案中配置了一个任务管理单元和内存控制器,而为了满足16个核心的计算资源需求,ARM设计了两组L2高速缓存和总线接口。

ARM一直在规划有关通用计算的内容。
ARM一直在规划有关通用计算的内容。

Android Extension Pack中加入了大量目前的安卓系统无法支持的新技术。
Android Extension Pack中加入了大量目前的安卓系统无法支持的新技术。

说完了外围和全局设计,下面来看看核心本身,尤其是重要的三管线设计。这个模块是整个GPU计算的核心,它由多个ALU单元、读/写单元和纹理单元组成。虽然很多的GPU设计基础部分都需要这三个模块,但是ALU可变设计着实非常少见—在不同型号的GPU上,ARM在相同的架构中使用了不同的ALU。

这句话听起来有点拗口。举例来说,在Mali-T760上,每个“三管线”包含了2个ALU,这也是Midgard中常见的配置。此外,Midgard也拥有每个“三管线”中包含1个ALU和4个ALU的方案,前者比如Mali-T720,后者比如Mali-T678,此外还有Mali T628和Mali-T760一样都是每个“三管线”内含2个ALU。当然,在不同的“三管线”中使用不同数量的ALU带来了一些连锁效应,ARM调整了ALU和纹理单元、读/写单元之间的比率以获得相应的性能。比如Mali-T678,每个着色器采用4 ALU设计,因此这颗GPU的内部指标和其它的产品都有所不同,在纹理单元上为了配合增多的ALU也相应增加了。实际上ARM在Midgard上尝试了多种不同的配置方案,终确定了在Mali-T760上使用每“三管线”2个ALU、以及在定位低端的Mali-T720上使用每“三管线”1个ALU的方案,并进一步优化了这样的设计。Midgard的设计使得GPU的每一个计算管道在任何情况下都有自己独立的线程,这和目前比较常见的超标量架构有明显不同,常见的超标量架构的一些附加计算单元可以在一个线程中用于执行进一步的无阻塞指令,而Midgard的设计可能会消除一些瓶颈效应从而带来效率的提升。

Midgard的基本架构示意图。
Midgard的基本架构示意图。

在看完了有关ALU的内容,下面来分析一下纹理单元。Midgard的纹理单元可以在一个时钟周期中处理一次双线性计算,或者在两个时钟周期内完成一次三线性计算。需要注意的是,这里分析的是内容是基于Mali-T760的ROP单元和纹理单元比例,另外,在任何情况下Midgard中的纹理单元和像素单元的比例都是1∶1。接下来的内容在图表中没有画出来,也就是曲面细分单元。要知道Mali-T760宣称支持Direct3D 11.1,但是为什么在架构中没有硬件的曲面细分模块呢?这并非遗漏或者ARM在吹牛,这是Midgard的一个独特设计。Midgard可以执行曲面细分,但是它没有使用固定的功能来完成几何创建的过程。Midgard使用了着色器硬件的部分来执行曲面细分,不仅仅是在Hull和域着色器阶段,实际的几何生成过程也发生在着色器中。这和之前我们看到的几乎所有的硬件都完全不同,因为迄今为止还没有出现不使用专门的曲面细分硬件但同时又完成曲面细分功能的产品出现,Midgard首个这样设计的方案。

Midgard的核心流水线示意图。
Midgard的核心流水线示意图。

传统的曲面细分过程需要硬件执行操作,但是Midgard没有这部分内容,这令人感到疑惑。
传统的曲面细分过程需要硬件执行操作,但是Midgard没有这部分内容,这令人感到疑惑。

ARM的消息指出,之所以这样设计,是因为他们考察了有限的晶体管使用、芯片体积以及专用曲面细分单元的优势后,终决定的方案。事实证明,Midgard的着色器引擎可以以较高的比率完成曲面细分多边形处理,这意味着Midgard不需要专门的曲面细分单元,也意味着Midgard几乎不存在曲面细分瓶颈,因为Midgard的每个着色器都是曲面细分的处理模块。在节约了空间后,ARM还可以将有限的芯片面积用于增加着色器数量从而有效提高性能。

Midgard的扩展能力非常强悍,可以支持多16个着色器核心扩展。
Midgard的扩展能力非常强悍,可以支持多16个着色器核心扩展。

由于目前还没有实际产品可以看到,因此终这个方案是否有效也只有ARM才能知道了。只有他们实际掌握了有关Midgard GPU曲面细分的性能的细节信息,但这样的设计已经使得Midgard变得极不寻常。另外需要考虑的一点是这样设计的能耗成本,我们暂时没有理由怀疑ARM这样设计所带来的空间或性能上的优势,但以通常的角度来说,一个专职的硬件模块会比通用性强的硬件模块有更好的性能表现乃至功耗比,这也是为什么我们看到有这么多的SoC GPU和桌面GPU比较相似的原因。

小结

在使用了令人诧异的硬件设计后,显然还有另外一个问题需要考虑,那就是实际性能。Midgard的“着色器曲面细分”设计是否能获得相应的性能呢?是否比使用传统硬件曲面细分要更出色呢?电能消耗是否划算呢?这一切目前还都是未知数,但仅从硬件上看已经值得我们期待。

不过,由于篇幅的问题,本文上期的内容就到这里,我们向大家介绍了Midgard的一些基本情况。而在下一期,我们还将带来Midgard有关区块贴图、流水线架构、计算架构、性能分析以及和其它厂商同世代产品对比的相关内容,敬请期待!

分享到:

用户评论

用户名:

密码: