A卡-N卡 GPU架构解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为什么A卡的流处理器要比N卡多很多
页脚内容1
从DX10到DX10.1再到DX11,转眼间显卡已经发展到了第四代,但实际上不管ATI还是NVIDIA,它们的新一代显卡都是在最早的DX10显卡架构基础上不断优化、改进、扩充而来的。换句话说,即便是到了DX11时代,NVIDIA与ATI的性能大战依然是G80与R600架构的延续。
那么,我们就很有必要对双方的GPU图形架构进行深入研究,详细分析各自的优势与劣势,并且顺便解答网友心中的疑惑:为什么A卡的流处理器要比N卡多很多?
管线的由来和传统矢量运算单元的弊端
页脚内容2
● “管线”的由来——1个时钟周期4次运算
在图形处理中,最常见的像素都是由RGB(红绿蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的算数逻辑运算器(ALU)。
传统像素管线/Shader示意图
数据的基本单元是Scalar(标量),就是指一个单独的值,GPU的ALU进行一次这种变量操作,被称做1D标量。由于传统GPU的ALU在一个时钟周期可以同时执行4次这样的并行运算,所以ALU的操作被称做4D Vector(矢量)操作。
页脚内容3
SIMD架构示意图
一个矢量就是N个标量,一般来说绝大多数图形指令中N=4。所以,GPU的ALU指令发射端只有一个,但却可以同时运算4个通道的数据,这就是SIMD(Single Instruction Multiple Data,单指令多数据流)架构。
● “管线”弊端越发明显,引入混合型设计
显然,SIMD架构能够有效提升GPU的矢量处理性能,由于顶点和像素的绝大部分运算都是4D Vector,它只需要一个指令端口就能在单周期内完成4倍运算量,效率达到100%。但是4D SIMD架构一旦遇到1D标量指令时,效率就会下降到原来的1/4,3/4的模块被完全浪费。为了缓解这个问题,ATI和NVIDIA 在进入DX9时代后相继采用混合型设计,比如R300就采用了3D+1D的架构,允许Co-issue操作(矢量指令和标量指令可以并行执行),NV40以后的GPU支持2D+2D和3D+1D两种模式,虽然很大程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上分支预测的情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。
页脚内容4
改进的管线/Shader结构
可以这么理解,传统的1条管线里面包含了4个基本运算单元,在早期这种架构的执行效率还是很高的,因为大多数程序指令都是4D的。但由于API和游戏复杂Shader指令的发展,4D指令所占比重开始下降,3D/2D/1D等混合指令频繁出现,所以传统的管线式架构效率越来越低!
G80的标量流处理器架构
到了DX10时代,不再区分像素单元和顶点单元,还加入了新的几何着色单元,这样GPU的Shader单元不仅要处理像素和顶点操作,还要负责几何等其它操作,混合型指令所占比重越来越大,必须放弃传统的管线式架构。
●G80的标量流处理器架构
因此,NVIDIA从G80开始架构作了变化,把原来的4D着色单元彻底打散,流处理器不再针对矢量设计,而是统统改成了标量运算单元。每一个ALU都有自己的专属指令发射器,初代产品拥有128个这样的
页脚内容5
1D运算器,称之为流处理器。这些流处理器可以按照动态流控制智能的执行各种4D/3D/2D/1D指令,无论什么类型的指令执行效率都能接近于100%!
G8X家族核心架构图
如此一来,对于依然占据主流的4D矢量操作来说,G80需要让1个流处理器在4个周期内才能完成,或者是调动4个流处理器在1个周期内完成,那么G80的执行效率岂不是很低?没错,所以NVIDIA大幅提升了流处理器工作频率(两倍于核心频率),扩充了流处理器的规模(128个),这样G80的128个标量流处理器的运算能力就基本相当于传统的64个(128×2/4)4D矢量ALU。
页脚内容6
G8X/G9X系列:8个流处理器为一组,2x8=16个为一簇
当然这只是在处理4D指令时的情形,随着图形画面越来越复杂,1D、2D、3D指令所占比例正在逐年增多,而G80在遇到这种指令时可说是如鱼得水,与4D一样不会有任何效能损失,指令转换效率高并且对指令的适应性非常好,这样G80就将GPU Shader执行效率提升到了新的境界!
页脚内容7
MIMD架构示意图
与传统的SIMD架构不同,G80的这种标量流处理器被称为MIMD(Multiple Instruction Multiple Data,多指令多数据流)架构。G80的架构听起来很完美,但也存在不可忽视的缺点:根据前面的分析可以得知,4个1D标量ALU和1个4D矢量ALU的运算能力是相当的,但是前者需要4个指令发射端和4个控制单元,而后者只需要1个,如此一来MIMD架构所占用的晶体管数将远大于SIMD架构!
R600的超标量流处理器架构
G80的128个1D标量ALU听起来规模很庞大,而且将4D矢量指令转换为4个1D标量指令时的效率也能达到100%,但实际上如果用相同的晶体管规模,可以设计出更加庞大的ALU运算器,这就是R600的流处理器架构。
●ATI改进传统架构,制造庞大规模的流处理器
页脚内容8
与革命性的G80架构不同,R600身上有很多传统GPU的影子,其Stream Processing Units很像上代的Shader Units,它依然是传统的SIMD架构。
R600拥有4个SIMD阵列,每个SIMD阵列包括了16个Stream Processing Units,这样总共就是64个,但不能简单地认为它拥有64个流处理器,因为R600的每个Units内部包含了5个ALU:
页脚内容9