A卡N卡 GPU架构解析.docx

上传人:b****1 文档编号:1134573 上传时间:2022-10-17 格式:DOCX 页数:20 大小:1.25MB
下载 相关 举报
A卡N卡 GPU架构解析.docx_第1页
第1页 / 共20页
A卡N卡 GPU架构解析.docx_第2页
第2页 / 共20页
A卡N卡 GPU架构解析.docx_第3页
第3页 / 共20页
A卡N卡 GPU架构解析.docx_第4页
第4页 / 共20页
A卡N卡 GPU架构解析.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

A卡N卡 GPU架构解析.docx

《A卡N卡 GPU架构解析.docx》由会员分享,可在线阅读,更多相关《A卡N卡 GPU架构解析.docx(20页珍藏版)》请在冰豆网上搜索。

A卡N卡 GPU架构解析.docx

A卡N卡GPU架构解析

为什么A卡的流处理器要比N卡多很多

泡泡网显卡频道3月1日经常有网友问这样的问题:

“为什么ATI显卡的流处理器要比NVIDIA多那么多,而性能却差不多呢?

”这个问题往简单里说就是它们的算法不同,当然这是不负责任的说法。

往复杂里说那么三言两语就讲不清楚了,因为涉及到双方GPU的核心架构以及截然相反的设计理念。

在DX9时代,大家都是通过“(像素)管线”来衡量显卡的性能等级,而到了DX10时代,统一渲染架构的引入使得显卡不再区分“像素”和“顶点”,因此“管线”这种说法逐渐淡出了大家的视野,取而代之的是全新的“流处理器”,“流处理器”的数量直接影响显卡的性能。

从DX10到DX10.1再到DX11,转眼间显卡已经发展到了第四代,但实际上不管ATI还是NVIDIA,它们的新一代显卡都是在最早的DX10显卡架构基础上不断优化、改进、扩充而来的。

换句话说,即便是到了DX11时代,NVIDIA与ATI的性能大战依然是G80与R600架构的延续。

那么,我们就很有必要对双方的GPU图形架构进行深入研究,详细分析各自的优势与劣势,并且顺便解答网友心中的疑惑:

为什么A卡的流处理器要比N卡多很多?

管线的由来和传统矢量运算单元的弊端

●“管线”的由来——1个时钟周期4次运算

在图形处理中,最常见的像素都是由RGB(红绿蓝)三种颜色构成的,加上它们共有的信息说明(Alpha),总共是4个通道。

而顶点数据一般是由XYZW四个坐标构成,这样也是4个通道。

在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。

为了一次性处理1个完整的像素渲染或几何转换,GPU的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4次运算能力的算数逻辑运算器(ALU)。

传统像素管线/Shader示意图

数据的基本单元是Scalar(标量),就是指一个单独的值,GPU的ALU进行一次这种变量操作,被称做1D标量。

由于传统GPU的ALU在一个时钟周期可以同时执行4次这样的并行运算,所以ALU的操作被称做4DVector(矢量)操作。

SIMD架构示意图

一个矢量就是N个标量,一般来说绝大多数图形指令中N=4。

所以,GPU的ALU指令发射端只有一个,但却可以同时运算4个通道的数据,这就是SIMD(SingleInstructionMultipleData,单指令多数据流)架构。

●“管线”弊端越发明显,引入混合型设计

显然,SIMD架构能够有效提升GPU的矢量处理性能,由于顶点和像素的绝大部分运算都是4DVector,它只需要一个指令端口就能在单周期内完成4倍运算量,效率达到100%。

但是4DSIMD架构一旦遇到1D标量指令时,效率就会下降到原来的1/4,3/4的模块被完全浪费。

为了缓解这个问题,ATI和NVIDIA在进入DX9时代后相继采用混合型设计,比如R300就采用了3D+1D的架构,允许Co-issue操作(矢量指令和标量指令可以并行执行),NV40以后的GPU支持2D+2D和3D+1D两种模式,虽然很大程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上分支预测的情况,SIMD在矢量处理方面高效能的优势将会被损失殆尽。

改进的管线/Shader结构

可以这么理解,传统的1条管线里面包含了4个基本运算单元,在早期这种架构的执行效率还是很高的,因为大多数程序指令都是4D的。

但由于API和游戏复杂Shader指令的发展,4D指令所占比重开始下降,3D/2D/1D等混合指令频繁出现,所以传统的管线式架构效率越来越低!

G80的标量流处理器架构

到了DX10时代,不再区分像素单元和顶点单元,还加入了新的几何着色单元,这样GPU的Shader单元不仅要处理像素和顶点操作,还要负责几何等其它操作,混合型指令所占比重越来越大,必须放弃传统的管线式架构。

●G80的标量流处理器架构

因此,NVIDIA从G80开始架构作了变化,把原来的4D着色单元彻底打散,流处理器不再针对矢量设计,而是统统改成了标量运算单元。

每一个ALU都有自己的专属指令发射器,初代产品拥有128个这样的1D运算器,称之为流处理器。

这些流处理器可以按照动态流控制智能的执行各种4D/3D/2D/1D指令,无论什么类型的指令执行效率都能接近于100%!

G8X家族核心架构图

如此一来,对于依然占据主流的4D矢量操作来说,G80需要让1个流处理器在4个周期内才能完成,或者是调动4个流处理器在1个周期内完成,那么G80的执行效率岂不是很低?

没错,所以NVIDIA大幅提升了流处理器工作频率(两倍于核心频率),扩充了流处理器的规模(128个),这样G80的128个标量流处理器的运算能力就基本相当于传统的64个(128×2/4)4D矢量ALU。

G8X/G9X系列:

8个流处理器为一组,2x8=16个为一簇

当然这只是在处理4D指令时的情形,随着图形画面越来越复杂,1D、2D、3D指令所占比例正在逐年增多,而G80在遇到这种指令时可说是如鱼得水,与4D一样不会有任何效能损失,指令转换效率高并且对指令的适应性非常好,这样G80就将GPUShader执行效率提升到了新的境界!

MIMD架构示意图

与传统的SIMD架构不同,G80的这种标量流处理器被称为MIMD(MultipleInstructionMultipleData,多指令多数据流)架构。

G80的架构听起来很完美,但也存在不可忽视的缺点:

根据前面的分析可以得知,4个1D标量ALU和1个4D矢量ALU的运算能力是相当的,但是前者需要4个指令发射端和4个控制单元,而后者只需要1个,如此一来MIMD架构所占用的晶体管数将远大于SIMD架构!

R600的超标量流处理器架构

G80的128个1D标量ALU听起来规模很庞大,而且将4D矢量指令转换为4个1D标量指令时的效率也能达到100%,但实际上如果用相同的晶体管规模,可以设计出更加庞大的ALU运算器,这就是R600的流处理器架构。

●ATI改进传统架构,制造庞大规模的流处理器

与革命性的G80架构不同,R600身上有很多传统GPU的影子,其StreamProcessingUnits很像上代的ShaderUnits,它依然是传统的SIMD架构。

R600拥有4个SIMD阵列,每个SIMD阵列包括了16个StreamProcessingUnits,这样总共就是64个,但不能简单地认为它拥有64个流处理器,因为R600的每个Units内部包含了5个ALU:

我们来仔细看看R600的流处理器架构:

BranchExecutionUnit(分歧执行单元)就是指令发射和控制器,它获得指令包后将会安排至它管辖下5个ALU,进行流控制和条件运算。

GeneralPurposeRegisters(通用寄存器)存储输入数据、临时数值和输出数据,并不存放指令。

由于内部的5个1DALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数据流)的5D矢量架构。

但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令,完美支持Co-issue(矢量指令和标量指令并行执行),因此微观上可以将其称为5DSuperscalar超标量架构。

通过上图就可以清楚的看到,单指令多数据流的超标量架构可以执行任意组合形式的混合指令,在一个StreamProcessingUnits内部的5个ALU可以在单时钟周期内进行5次MAD(Multiply-Add,乘加)运算,其中比较“胖”的ALU除了MAD之外还能执行一些函数(SIN、COS、LOG、EXP等)运算,在特殊条件下提高运算效率!

现在我们就知道R600确实拥有64x5=320个流处理器。

R600的流处理器之所以能比G80多好几倍就是得益于SIMD架构,可以用较少的晶体管堆积出庞大规模的流处理器。

但是在指令执行效率方面,SIMD架构非常依赖于将离散指令重新打包组合的算法和效率,正所谓有得必有失。

通过前面的分析我们可以初步得出这样的结论:

G80的MIMD标量架构需要占用额外的晶体管数,在流处理器数量和理论运算能力方面比较吃亏,但却能保证超高的执行效率;而R600的SIMD超标量架构可以用较少的晶体管数获得很多的流处理器数量和理论运算能力,但执行效率方面要依具体情况而定。

G92和RV670:

核心架构没有任何变化

G80和R600都是不计成本的作品,成本高、功耗发热大,随着新工艺逐渐走向成熟,双方不约而同的推出了改良版的核心,使得新高端产品的以大规模量产,这就诞生了G92和RV670核心,这两颗GPU虽然都拥有众多诱人的新特性,但实际上核心架构方面没有任何的变化。

●G92相对于G80的改进:

1.制造工艺由90nm升级至65nm;

2.新工艺集成度更高,G92的GPU核心部分与2D输出模块(NVIO)合二为一,是单芯片设计;

3.PCI-E控制器升级支持2.0版本,带宽倍增;

4.高清视频解码引擎由VP1升级至VP2,支持MPEG2和H.264的完全硬解码,VC-1部分硬解码;

5.加入HDCP支持和HDMI输出支持;

6.显存控制器由384bit降至256bit,这是控制成本的需要。

由于显存控制器绑定光栅单元(ROP),因此G92的光栅单元只有16个,而G80是24个;

7.纹理寻址单元数量加倍,纹理采样效率提升。

在以上诸多改进之中,只有这一项才是设计到核心架构的,因此这里重点介绍:

G80的流处理器结构

G92的流处理器结构

上面两幅架构图清楚的体现出了G80和G92的差异。

NVIDIAGPU的流处理器簇和纹理单元还有一级缓存是绑定在一起的,G80的每簇内建了8个纹理过滤单元(TextureFilteringUnit)和4个纹理寻址单元(TextureAddressingUnit),总共数目就是64个TFU和32个TAU。

而G92则提升至每组内建8个TFU和8个TAU,总共64个TFU和64个TAU,也就是纹理寻址单元数量加倍。

更多的TAU可令单一周期处理更多的纹理采样操作,部分情况下纹理处理器效率提升一倍!

虽然DX9C时代反复强调高像素/纹理比例,但DX10时代引入了更多的纹理操作,并且SM4.0支持更复杂的纹理阵列,以便让物体表面拥有更丰富的细节,并且在超高分辨率下也不至于失真,但也对纹理操作提出了较高的要求,NVIDIA此举意在提升CallofJuarez、Crysis这种高精度游戏中的效率。

事实上,除了G80核心之外,G84、G86、G92、G96等所有衍生出来的小核心都改进了纹理单元设计,也就是说从8600GT开始起纹理寻址单元的数量就与纹理过滤单元相等了,只是中低端显卡的变化未能引起大家的重视。

●RV670相对于R600的改进:

1.制造工艺由80nm升级至55nm;

2.PCI-E控制器升级支持2.0版本,带宽倍增;

3.高清解码引擎由原来的Shader解码升级为UVD引擎,支持H.264和VC-1的完全硬解码;

4.显存控制器由512bit降至256bit,这是控制成本的需要,而且以R600和RV670的运算能力其实不需要太高的显存位宽;

5.支持PowerPlay节能技术,待机功耗很低;

6.API升级至DX10.1;

虽然API升级了,但实际上只不过是加入了新的ShaderModel4.1指令集而已,流处理器架构方面没有变化,甚至光栅单元和纹理单元都没有任何改动。

由于R600/RV670的架构是显存控制器并没有绑定光栅单元,虽然RV670的显存位宽减少了,但并没有造成太多的性能损失,反而由于频率的提升得以反超。

因此G

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1