GPU架构解析——NVIDIA\AMD

GPU的起源

    NVIDIA公司在1999年首次提出GPU概念,硬件T&L(Transform and Lightning)多边形转换与光源处理是GPU问世的标志。除此之外,GPU采用的核心技术还包括:立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。

    GPU的发展经历了固定渲染管线、可编程渲染管线、和统一渲染架构三个时期。

固定渲染管线

    也称为渲染流水线,传统的一条渲染管线由像素着色单元(PSU)、纹理贴图单元(TMU)、光栅化引擎(ROP)三部分组成。从功能上来讲,PSU负责像素处理,TMU负责纹理渲染,ROP完成像素的最终输出。

可编程渲染管线

    着色器替代了固定渲染管线,通过对着色器的编程,着色器可以完成以前固定管线无法实现的特效。着色器又可分为顶点着色器(Vertex Shader)和像素着色器(Pixel Shader)。通过对顶点着色器编程可以进行顶点变换、光照等;通过对像素着色器进行编程,可以控制像素颜色和纹理采样等。GPU在渲染3D图像的时候,实际上就是对顶点和像素的操作和计算,在程序中顶点信息格式为(X,Y,Z,W),像素信息为(R,G,B,A)。着色器的计算的目的就是去改变每一个像素的顶点信息和像素信息,通过大量的渲染工作构建出了一幅3D画面和各种特效。

    SIMD介绍:即单指令多数据结构,普通ALU为标量形式,一次只能处理一个Scalar数据。GPU中的ALU一般被设计为向量的形式,即每次可以处理一个4D Vector。刚好为一个顶点信息或一个像素信息,大大提升了GPU的运算效率。但一旦用SIMD结构处理标量数据,计算效率便下降为原来的1/4。为了解决上述资源浪费问题,现代GPU一般采用混合设计,例如R300采用了3D+1D的设计,并允许矢量和标量并行操作(co-issue),NV40以后的GPU又支持2D+2D和3D+1D两种模式。

统一渲染架构

    其核心思想为“将顶点着色器和像素着色器合并为一个具有完整执行能力的统一渲染单元(US)”。微软在DirectX 10中首次提出了统一渲染架构,在统一渲染架构中,指令可以直接面对ALU而非过去的特定单元。Nvidia推出了业界第一款统一渲染架构GPU——G80

Nvidia历史上的三次架构升级

GPU架构解析——NVIDIA\AMD_第1张图片

    从G80架构可以看出,该GPU包含1个仲裁资源的几何处理单元,8组与GTI相连的SM阵列,6组TA(纹理寻址单元),6组ROP(光栅化引擎)。整个架构以高速交叉总线相连。G80中将原有的4D着色器完全打散,由原来的矢量流处理器变为标量运算单元,每个ALU拥有自己的指令发射器,第一代产品拥有128个标量运算器(SP),这些处理单元可以执行1D、2D、3D、4D指令。G80属于MIMD(多指令多数据)架构。四个标量处理单元相当于以前的一个4D Vector处理单元,多出的指令发射器占用了大量的芯片面积,成为G80的软肋。

    Tick-Tock(工艺年——架构年)是英特尔提出的芯片发展模式,此发展模式也被GPU研发厂商采用。Nvidia第二次架构革新为GT200架构,本次架构升级是对G80架构的继承和提高,主要改进为:每个SM最大线程数由原来的768提升至1024,并且增加了SM的总数;每个SM的Local Memory容量从16KB提升到32KB;增加了atomic单元和SIMT特性。

Nvidia的第三次统一架构革新诞生了GF100架构。整个GPU由四组图形处理簇(GPC)组成,每个GPC拥有自己的几何处理引擎和光栅化流水线。GPC之间通过L2 Cache通信、Kernel和Thread协调以及数据共享。这些功能的引入实现了并行化分块渲染操作,同时三角形吞吐量有了300%的提升。与此同时,GR100还新增了多边形引擎(PE)、光栅引擎(RE)两个模块。PE主要负责顶点拾取、细分曲面、视角转换、属性设定、流输出等工作。RE可以说是对之前光栅化硬件单元的组合,以流水线方式执行边缘设定->光栅化->Z轴压缩的操作。

AMD历史上的三次架构升级

GPU架构解析——NVIDIA\AMD_第2张图片    

    AMD在2007年也推出了自己的第一款统一渲染架构GPU——R600。从上面的架构图可以发现,R600由一套几何处理单元,一个线程仲裁单元UTDP,流处理单元(SPU)和纹理贴图单元(TMU)与仲裁机构相连,以及与之相连的完整后端组成。个单元之间以环状总线相连(ringbus)。与G80不同,R600仍然采用SIMD架构,其拥有4个SIMD阵列,每个阵列包括16个SPU,每个SPU包含5个ALU——为5D超标量架构。

GPU架构解析——NVIDIA\AMD_第3张图片 

    R600架构中一个的SPU包含1个全功能ALU和4个非全功能ALU,在一个时钟周期内可以进行5次乘加运算,全功能ALU还可以进行sin()、cos()、log()、exp()等函数运算。

GPU架构解析——NVIDIA\AMD_第4张图片GPU架构解析——NVIDIA\AMD_第5张图片

    相比于Nvidia的三次架构升级,AMD也有三次重大技术革新。包括对应GT200的RV770以及对应于GF100的RV870。RV770在R600的基础上进行了大胆的改造。从架构图上看R600为纵向4组SIMD阵列,RV770为横向10组SIMD阵列,每组16个Shader,每个Shader 5个流处理器。RV770还放弃了沿用多年的环形总线,改为交叉总线。经历了RV707大刀阔斧的升级,AMD的第三次升级可以看做只是在RV770的基础上进行了资源的翻倍,从结构图也可以看出,RV870基本上是并排放置了两个RV770,对其架构改进这里不再赘述。


   以上博文主要参考:显卡帝教你轻松读懂GPU架构图 轻松做达人

你可能感兴趣的:(GPU架构解析——NVIDIA\AMD)