假设您已经设计了一个完整的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的可扩展性使我们可以设计一个更广泛的目标性能点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)