PowerVR 全新图像微架构:Furian GPU 显示的神奇之处

处理器/DSP

891人已加入

描述

图像领域发展日新月异。2012年,我们发布了第一款 PowerVR Rogue可授权GPU IP,在那之前,我们一直在研究微架构,并在2011年对其进行了展示。如今,发布PowerVR SGX的继承版已经6年时光,但它至今一直保持强劲势头。你会发现,目前Series7XT和Series8XE一直在使用其最新的版本。就性能和功能集而言,GPU可能是现代应用程序处理器中发展最快速的部分,但有个前提是,整个创建和装配过程的时间跨度非常大,尤其是要在微架构中详细地涵括某个概念时。

 

 

 

GPU没有标准的指令集架构(ISA),这使得它可以快速发展。GPU本身就可以自由实验和创新,并且在GPU中发生的变化比当今的CPU更快。这是因为它使用了更高层次的API,且随着硬件的不断更新,可扩展的驱动程序也进行了更新。尽管没有标准的ISA可以执行且驱动程序和高层次API没有安全网,GPU架构也不会受到安全威胁。

所以,当我们发布新的图像微架构Furian,即自Rogue以后的第一款新架构时,有很多人仍然觉得很熟悉。不用说,Furian仍然是基于分块的延迟渲染器(TBDR)。若您不熟悉TBDR及其工作原理,可以阅读以下两篇文章:“PowerVR 图形架构探索:tile-based渲染”及“延迟的含义”。从广义上讲,Furian仍应用了TBDR,所以您也可以跟着我们一起了解其背后神奇的工作原理。

让我们开启一趟旅程,尽情浏览Furian。我们将Furian与Rogue的背景进行对比,希望通过对比,大家可以知晓架构师和设计师所面临的挑战。至于为增强性能和效率采用的新方法,您无需费解,不过,为了改善PPA常数(功率、性能和内存占用量)的确有一套方法。要了解Furian,可以先了解微架构。我们先看看其扩展性。

 

 

可扩展性

假设您已经设计了一个完整的GPU。您可能已经开始处理几何图形、通过光栅化将其转换成像素、纹理单元、从GPU输出完成的像素至最后的屏幕上,可能使用某种统一的计算内核来进行着色。

目前,这些着色部分至少涉及顶点、像素和计算。如果我们继续深入研究,会发现,由于每个顶点、像素和计算工作项在光谱中有部分完全独立,故而计算内核至少在某种程度上具有并行性。所以,我们有一个并行且统一的着色器内核,及其他一些使用该内核处理集中图像任务的项。想象一下,若需要扩展性能,您会怎么做?

最简单的做法是将整个GPU复制一次或多次,且将一些额外的逻辑分发到每一次复制中。在基础的GPU设计中,无论资源平衡与否,如果所做的工作只是多次复制,那在一个更大的设计中,实际的工作负载总会出现不平衡。这并不是说,这不是有效的方法,实际上,Series5XT一直是遵循着这个方法。若对SGX543MP4有所耳闻,那您可能了解,它有四个完整的SGX543 GPU及一些辅助逻辑进行粘合,并作为单一的GPU呈现在系统中。

但若想扩展总体性能达到某个点,这种做法对于实际的工作负载不太适合,且会影响占用面积和功效,因为额外的比特开始闲置。相反,对于什么数值会上升且什么数值会大体保持相同,需要更加了解,因为设计时要参考性能/内存占用曲线。

这意味着,从内部将GPU组织成块,或组块,这样在单个的GPU边界内便可以相互独立地进行扩展。目前,几乎所有的GPU都是这样设计的,以此将目标设计点的效率最大化,Furian也不例外。

不过,Furian与Rogue又有所不同。Furian在结构上的调整意味着,前端(几何图形和光栅)、内核(ALU和纹理)和后端(像素输出至内存)之间的平衡并非那么严格。使用顶级内核块的微架构,我们称之为SPU,或者说可扩展处理单元。

SPU包含一个几何图形管线、一个光栅管线、一个纹理管线(TPU)、一些USC及两个后端管线(PBE)。且目前,Furian已经扩展了一个SPU。还有一些关键的比特不在SPU中,且只出现一次。通常,最引人注目的SPU便是贴图器,但就计算而言,只用在SPU层面考虑Furian。

每个SPU包含的USC数量使我们能够平衡Furian设计的计算资源以满足市场需求。正如我们在2011年发布Rogue架构并在2012年投入产品一样,我们没有发布特定的Series8XT产品配置,但其微架构支持内部资源扩展。您可能会问,这如何与7XT-generation Rogue进行区分?

Rogue的前端资源(主要是几何图形和光栅)在7XT中可以扩展至4个USC。而Furian在设计这一部分时可以使每个SPU进行扩展。同样,Rogue的后端管线是每2个USC有2个PBE。而Furian的每个SPU都含有2个PBE。关于这一点,我们可以用以下清单进行列举。

* 2-USC Rogue (7XT): 1 front-end, 1 TPU, 2 PBEs
* 2-USC Furian (8XT): 1 front-end, 1 TPU, 2 PBEs
* 4-USC Rogue (7XT): 1 front-end, 2 TPUs, 4 PBEs
* 4-USC Furian (8XT): 2 front-ends, 2 TPUs, 4 PBEs
* 6-USC Rogue (7XT): 2 front-ends, 3 TPUs, 6 PBEs
* 6-USC Furian (8XT, 2 USCs per SPU): 3 front-ends, 3 TPUs, 6 PBEs
* 6-USC Furian (8XT, 3 USCs per SPU): 2 front-ends, 2 TPUs, 4 PBEs

以上展示了Furian中SPU的设计点,其依赖USC的数量。相比Rogue,Furian的可扩展性使我们可以设计一个更广泛的目标性能点。接下来,让我们讨论USC、TPU 和PBE每块的性能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分