3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 5636|回复: 17
打印 上一主题 下一主题

[新闻] 流处理器缘何差6倍!A/N GPU架构解析

[复制链接]

32

主题

3460

帖子

8357

积分

游戏精英

Rank: 8Rank: 8

贡献度
1316
金元
30929
积分
8357
精华
0
注册时间
2008-1-11
跳转到指定楼层
主题
发表于 2010-3-2 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
泡泡网

      经常有网友问这样的问题:“为什么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的操作被称做4D Vector(矢量)操作。

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在矢量处理方面高效能的优势将会被损失殆尽。

改进的管线/Shader结构
    可以这么理解,传统的1条管线里面包含了4个基本运算单元,在早期这种架构的执行效率还是很高的,因为大多数程序指令都是4D的。但由于API和游戏复杂Shader指令的发展,4D指令所占比重开始下降,3D/2D/1D等混合指令频繁出现,所以传统的管线式架构效率越来越低!

    到了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就将GPU Shader执行效率提升到了新的境界!

MIMD架构示意图
    与传统的SIMD架构不同,G80的这种标量流处理器被称为MIMD(Multiple Instruction Multiple Data,多指令多数据流)架构。G80的架构听起来很完美,但也存在不可忽视的缺点:根据前面的分析可以得知,4个1D标量ALU和1个4D矢量ALU的运算能力是相当的,但是前者需要4个指令发射端和4个控制单元,而后者只需要1个,如此一来MIMD架构所占用的晶体管数将远大于SIMD架构!

    G80的128个1D标量ALU听起来规模很庞大,而且将4D矢量指令转换为4个1D标量指令时的效率也能达到100%,但实际上如果用相同的晶体管规模,可以设计出更加庞大的ALU运算器,这就是R600的流处理器架构。
● ATI改进传统架构,制造庞大规模的流处理器
    与革命性的G80架构不同,R600身上有很多传统GPU的影子,其Stream Processing Units很像上代的Shader Units,它依然是传统的SIMD架构。

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

    我们来仔细看看R600的流处理器架构:Branch Execution Unit(分歧执行单元)就是指令发射和控制器,它获得指令包后将会安排至它管辖下5个ALU,进行流控制和条件运算。General Purpose Registers(通用寄存器)存储输入数据、临时数值和输出数据,并不存放指令。
    由于内部的5个1D ALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数据流)的5D矢量架构。但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令,完美支持Co-issue(矢量指令和标量指令并行执行),因此微观上可以将其称为5D Superscalar超标量架构。

    通过上图就可以清楚的看到,单指令多数据流的超标量架构可以执行任意组合形式的混合指令,在一个Stream Processing Units内部的5个ALU可以在单时钟周期内进行5次MAD(Multiply-Add,乘加)运算,其中比较“胖”的ALU除了MAD之外还能执行一些函数(SIN、COS、LOG、EXP等)运算,在特殊条件下提高运算效率!
    现在我们就知道R600确实拥有64x5=320个流处理器。R600的流处理器之所以能比G80多好几倍就是得益于SIMD架构,可以用较少的晶体管堆积出庞大规模的流处理器。但是在指令执行效率方面,SIMD架构非常依赖于将离散指令重新打包组合的算法和效率,正所谓有得必有失。
    通过前面的分析我们可以初步得出这样的结论:G80的MIMD标量架构需要占用额外的晶体管数,在流处理器数量和理论运算能力方面比较吃亏,但却能保证超高的执行效率;而R600的SIMD超标量架构可以用较少的晶体管数获得很多的流处理器数量和理论运算能力,但执行效率方面要依具体情况而定。

    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的差异。NVIDIA GPU的流处理器簇和纹理单元还有一级缓存是绑定在一起的,G80的每簇内建了8个纹理过滤单元(Texture Filtering Unit)和4个纹理寻址单元(Texture Addressing Unit),总共数目就是64个TFU和32个TAU。而G92则提升至每组内建8个TFU和8个TAU,总共64个TFU和64个TAU,也就是纹理寻址单元数量加倍。
    更多的TAU可令单一周期处理更多的纹理采样操作,部分情况下纹理处理器效率提升一倍!虽然DX9C时代反复强调高像素/纹理比例,但DX10时代引入了更多的纹理操作,并且SM4.0支持更复杂的纹理阵列,以便让物体表面拥有更丰富的细节,并且在超高分辨率下也不至于失真,但也对纹理操作提出了较高的要求,NVIDIA此举意在提升Call of Juarez、Crysis这种高精度游戏中的效率。
[
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-5-13 04:37 , Processed in 0.036671 second(s), 18 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表