显卡帝手把手教你读懂gpu架构图_第1页
显卡帝手把手教你读懂gpu架构图_第2页
显卡帝手把手教你读懂gpu架构图_第3页
显卡帝手把手教你读懂gpu架构图_第4页
显卡帝手把手教你读懂gpu架构图_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GPU 架构“征途之旅”即日起航 显卡 GPU 架构之争永远是 DIY 玩家最津津乐道的话题之一,而对于众多普通玩家来说 经常也就看看热闹而已。大多数玩家在购买显卡的时候其实想的是这款显卡是否可以满足 我实际生活娱乐中的应用要求,而不大会很深入的关注 GPU 的架构设计。不过,如果你想 成为一个资深 DIY 玩家,想与众多 DIY 高手“高谈阔论”GPU 架构设计方面的话题的时候, 那么你首先且必须弄明白显卡 GPU 架构设计的基本思想和基本原理,而读懂 GPU 架构图正 是这万里长征的第一步。 显卡帝手把手教你读懂 GPU 架构图 通过本次 GPU 架构图的“征途之旅”,网友朋友将会和显卡帝共同来探讨和解密如下 问题: 一、顶点、像素、着色器是什么; 二、SIMD 与 MIMD 的架构区别; 三、A/N 在统一渲染架构革新中的三次交锋情况如何; 四、为什么提出并行架构设计; 五、A/N 两家在 GPU 架构设计的特点及其异同点是什么。 以上目录也正是本文的大致行文思路,显卡帝希望能够通过循序渐进的分析与解读让 众多玩家能够对 GPU 架构设计有个初步的认识,并且能够在读完本文之后能对 GPU 架构图 进行独立认知与分析的基本能力,这将是本人莫大的欣慰。 非统一架构时代的 GPU 架构组件解读 上世纪的绝大多数显示加速芯片都不能称之为完整意义上的 GPU,因为它们仅仅只有 像素填充和纹理贴图的基本功能。而 NVIDIA 公司在 1999 年所发布的 GeForce 256 图形处 理芯片则首次提出了 GPU 的概念。GPU 所采用的核心技术有硬件 T&L、立方环境材质贴图和 顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素 256 位渲染引擎等,而硬件 T&L(Transform and Lighting,多边形转换与光源处理)技术可以说是 GPU 问世的标志。 演示硬件几何和光影(T&L)转换的 Demo 传统的固定渲染管线 渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单 元。在某种程度上可以把渲染管线比喻为工厂里面常见的各种生产流水线,工厂里的生产 流水线是为了提高产品的生产能力和效率,而渲染管线则是提高显卡的工作能力和效率。 什么叫一条“像素渲染管线”?简单的说,传统的一条渲染管线是由包括 Pixel Shader Unit(像素着色单元)+ TMU(纹理贴图单元) + ROP(光栅化引擎)三部分组成的。 用公式表达可以简单写作:PS=PSU+TMU+ROP 。从功能上看,PSU 完成像素处理,TMU 负责 纹理渲染,而 ROP 则负责像素的最终输出。所以,一条完整的像素管线意味着在一个时钟 周期完成至少进行 1 个 PS 运算,并输出一次纹理。 Shader(着色器)的引入 而 GPU 的下一次重大革新则是引入了 Shader(着色器)。着色器替代了传统的固定渲 染管线,可以实现 3D 图形学计算中的相关计算,由于其可编辑性,从而可以实现各种各样 的图像效果而不用受显卡的固定渲染管线限制。这极大的提高了图像的画质。而从 GeForce 3 到 GeForce 9,GPU 的发展都是一直基于这种用于显卡硬件几何架构/渲染过程 的 Shader 来进行的。 传统(像素)管线/Shader 示意图 Shader(着色器)的分类 早期的 Shader(着色器)有两种, 一种是顶点着色器,称为 Vertex Shader(OpenGL 称为 vertex program),取代固定渲染管线中的变换和光照部分,程序员可以自己控制顶 点变换、光照等。另一种是像素着色器,称为 Pixel Shader(OpenGL 称为 fragment program),取代固定渲染管线中的光栅化部分,程序员可以自己控制像素颜色和纹理采样 等。 3D 场景的对象都是由顶点形成 关于顶点,我们需要小小说明一下:所有 3D 场景的对象都是由顶点形成。一个顶点是 X、Y、Z 坐标形成的 3D 空间中的一点,多个顶点聚在一起(至少四个)可形成一个多边形, 如三角形、立方体或更复杂的形状,将材质贴在其上可使该组件(或几个排好的组件)看 起来更真实。上图的 3D 立方体就是由八个顶点所形成,使用大量顶点,可形成弧线形对象 等较复杂的图像。 传统 shader 指令结构 GPU 的像素着色单元和顶点着色单元 在图形处理中,最常见的像素都是由 RGB(红绿蓝)三种颜色构成的,加上它们共有 的信息说明(Alpha),总共是 4 个通道。而顶点数据一般是由 XYZW 四个坐标构成,这样 也是 4 个通道。在 3D 图形进行渲染时,其实就是改变 RGBA 四个通道或者 XYZW 四个坐标的 数值。为了一次性处理 1 个完整的像素渲染或几何转换,GPU 的像素着色单元和顶点着色 单元从一开始就被设计成为同时具备 4 次运算能力的算数逻辑运算器(ALU)。 SIMD 和 MIMD 两种结构你知道吗? 在我们继续介绍 GPU 架构设计之前我们需要对 SIMD 和 MIMD 这两种结构进行一个详细 的说明。1966 年,MichealFlynn 根据指令和数据流的概念对计算机的体系结构进行了分类, 这就是所谓的 Flynn 分类法。Flynn 将计算机划分为四种基本类型,即 SISD、MIMD、SIMD、MISD。 SIMD(Single Instruction Single Data Stream,单指令单数据流)结构 传统的顺序执行的计算机在同一时刻只能执行一条指令(即只有一个控制流)、处理 一个数据(即只有一个数据流),因此被称为单指令单数据流计算(Single Instruction Single Data Stream,SISD)。 MIMD(多指令流多数据流)结构 而对于大多数并行计算机而言,多个处理单元都是根据不同的控制流程执行不同的操 作,处理不同的数据,因此,它们被称作是多指令流多数据流计算机,即 MIMD(Multiple Instruction Stream Multiple Data Stream,简称 MIMD)计算机,它使用多个控制器来 异步地控制多个处理器,从而实现空间上的并行性。 传统 SIMD 架构在执行效率下降的原因分析 数据的基本单元是 Scalar(标量),就是指一个单独的值,GPU 的 ALU 进行一次这种 变量操作,被称做 1D 标量。由于传统 GPU 的像素着色单元和顶点着色单元从一开始就被设 计成为同时具备 4 次运算能力的算数逻辑运算器(ALU),所以 GPU 的 ALU 在一个时钟周期 可以同时执行 4 次这样的并行运算,所以 ALU 的操作被称做 4D Vector(矢量)操作。一 个矢量就是 N 个标量,一般来说绝大多数图形指令中 N=4。 图形指令中标量与矢量 由于顶点和像素的绝大部分运算都是 4D Vector,它只需要一个指令端口就能在单周 期内完成 4 倍运算量,显然 SIMD 架构能够有效提升 GPU 的矢量处理性能以使效率达到 100%。 但如果 4D SIMD 架构一旦遇上 1D 标量指令的时候,效率就会陡然降至原来的 1/4,而其他 的 3/4 模块几乎被闲置。为了解决这种资源被浪费的情况,ATI 和 NVIDIA 在进入 DX9 时代 后相继采用混合型设计,比如 R300 就采用了 3D+1D 的架构,允许 Co-issue 操作(矢量指 令和标量指令可以并行执行),NV40 以后的 GPU 支持 2D+2D 和 3D+1D 两种模式,虽然很大 程度上缓解了标量指令执行效率低下的问题,但依然无法最大限度的发挥 ALU 运算能力, 尤其是一旦遇上分支预测的情况,SIMD 在矢量处理方面高效能的优势将会大大降低。 分析一下其中的原因,我们可以得知:在早期,传统的 1 条渲染管线包含了 4 个基本 单元,而大多数程序指令都是 4D 的,所以执行效率会很高。然而随着 API 的不断革新以及 游戏设计中复杂的 Shader 指令的发展,4D 指令的出现比例开始逐步下降,而 1D/2D/3D 等 混合指令开始大幅出现,故而传统的管线式架构效率开始越来越低下。 GPU 架构大变革:统一渲染架构袭来 微软 DirectX 10 对于统一渲染架构的提出,可谓是 GPU 架构设计的一场大变革。它 的核心思想是:将 Vertex Shader(顶点着色)和 Pixel Shader(像素着色)单元合并成 一个具备完整执行能力的 US(Unified Shader,统一渲染)单元,指令可以直接面向底层 的 ALU 而非过去的特定单元,所以在硬件层面 US 可以同时吞吐一切 shader 指令,同时 并不会对指令进行任何的修改,也不会对 shader program 的编写模式提出任何的强迫性 的改变要求。 GS(几何着色器)、PS(像素着色器)、VS(顶点着色器)首次三位一体:US 从 DirectX 10 开始,微软真正将注意力开始转向了 Shader 效率上来,借助提升 Shader 效率来提升对应设计的运算单元的整体运行效率,而最终给玩家的体现就是带来流 畅度(帧数)的提升。当然也可以用来进行更复杂和灵活的其他操作。 N 卡第一代 GPU 统一架构核心之 G80 2006 年 11 月,NVIDIA 发布了业界第一款 DirectX 10 构架的 GPUG80。G80 由一套 完整的包含仲裁资源的几何处理单元,与之相连的 8 个 SM 阵列,6 组 TA(纹理寻址)和 6 组 ROP(光栅化引擎)单元组成,整个构架以高速 crossbar(交叉)总线直连。 G80 的标量流处理器架构 NVIDIA 在 G80 核心架构上把原来的 4D 着色单元完全打散,流处理器统统由矢量设计 改为了标量运算单元。每一个 ALU 都有自己的专属指令发射器,初代产品拥有 128 个这样 的 1D 运算器,称之为流处理器(SP)。这些流处理器可以按照动态流控制智能的执行各种 4D/3D/2D/1D 指令,无论什么类型的指令执行效率都能接近于 100%。G80 这种标量流处理 器即 MIMD(多指令流多数据流)架构。虽然说 G80 将 GPU Shader 执行效率提升到了一个新 高度,但我们知道:4 个 1D 标量 ALU 和 1 个 4D 矢量 ALU 的运算能力是相当的,前者需要 4 个指令发射端和 4 个控制单元,而后者只需要 1 个,如此一来 MIMD 架构所占用的晶体管 数就远大于了 SIMD 架构,这正是采用 MIMD 架构的 G80 核心的软肋。 A 卡第一代 GPU 统一架构核心之 R600 2007 年 5 月,AMD 收购 ATI 之后推出的第一款 DirectX 10 GPUR600 正式发布了。 R600 由一套几何处理单元,独立的线程仲裁器 UTDP,与仲裁机构相连的 SPU(流处理器) 和 TMU(纹理贴图)单元,以及完整的后端所组成。整个构架以 ringbus(环状)总线进行 连接。 R600 的超标量流处理器架构 相比大胆革新的 G80 核心架构,从 Stream Processing Units 这一处可以观察出: R600 身上有些许传统 GPU 的影子,因为 SPU 依然采用的是 SIMD(单指令多数据流)架构。 R600 拥有 4 个 SIMD 阵列,每个 SIMD 阵列包括了 16 个 Stream Processing Units,这样总 共就是 64 个,但不能简单地认为它拥有 64 个流处理器,因为 R600 的每个 Units 内部包含 了 5 个 ALU,从微观上来看即:5D Superscalar 超标量架构。 5D Superscalar 超标量架构 AMD 历代着色器演进 通过上图就可以清楚的看到,SIMD(单指令多数据流)的超标量架构可以执行任意组合 形式的混合指令,在一个 Stream Processing Units 内部的 5 个 ALU 可以在单个时钟周期 内进行 5 次 MAD(Multiply-Add,乘加)运算,其中全功能的 ALU 除了 MAD 之外还能执行 一些函数(SIN、COS、LOG、EXP 等)运算,在特殊条件下提高了运算效率。 对比总结:英伟达的所采用的 MIMD(多指令流多数据流)标量架构的 G80 核心需要占 用不少额外的晶体管,所以在流处理器数量和理论运算能力方面稍显吃亏,但优点是 GPU Shader 执行效率很高;而 AMD 所采用的 SIMD(单指令多数据流)超标量架构的 R600 核心则 用较少的晶体管数实现了更多的流处理器数量和更高的理论运算能力,不过在执行效率方 面则需要视情况而定了 N 卡第二、三次 GPU 统一架构设计革新 GPU 架构的革新其实和 CPU 架构的革新很相似,比如说 Tick-Tock(工艺年-构架年)模 式。Tick-Tock(工艺年-构架年)是英特尔所提出的芯片技术发展战略模式,Tick-Tock: 奇数年更新制作工艺,偶数年更新微架构。其实在 GPU 的研发过程中也同样是借鉴到了这 种 Tick-Tock 模式。 Tick 工艺年里,G92 和 RV670 在核心架构上并无太大改动,而主要体现在工艺制程的 革新。 G92 和 RV670:核心架构没有任何变化 N 卡第二次 GPU 统一架构设计革新 而真正的核心架构革新当属 GT200 架构核心的推出,即 NVIDIA 第 2 代统一架构核心。 GT200 构架图 GT200 在结构上与 G80 具有一定的传承性。他们的前端构造是基本相同的,整体来讲 两者之间大部分的区别来自于规模上的差异。GTX200 核心微架构给我们主要带来如下改进: 一、 每个 SM 可执行线程上限提升:G80/G92 核心每个 SM(即不可拆分的 8 核心流处 理器)单元最多可执行 768 条线程,而 GTX200 核心的每个 SM 可执行高达 1024 条线程,同 时 GTX200 还拥有更多的 SM 单元,故而芯片性能实力是之前的 2.5 倍。 二、 每个 SM 单元的指令寄存器翻倍:GTX200 与 G80 核心在 SM 单元结构上基本相同 的,但功能有所提升,在执行线程数增多的同时,NVIDIA 还将每个 SM 单元中间的 Local Memory 容量翻倍(从 16K 到 32K)。Local Memory 用于存储 SM 即将执行的上千条指令, 容量增大意味着可以存储更多的指令、超长的指令、或是各种复杂的混合式指令,这对于 提高 SM 的执行效能大有好处。 三、增加了 atomic 单元以及 SIMT 特性:atomic 单元的添加使得 GT200 具备了原子操 作的能力,atomic 单元和原子操作的引入也为未来 NVIDIA 构架最终实现并行化设计起到 了关键的先导作用;SIMT 特性的引入则可以使得程序员在进行指令搭建的过程中无需考虑 GPU 究竟是 SIMD 还是 MIMD,从而将性能优化的方向专注于 shader 的拆分,合并,灵活搭 配以及 Thread 管理方面。 GT200 与 G80 的异同 N 卡第三次 GPU 统一架构设计革新 NVIDIA 的 GF100 架构核心可谓是一款“千呼万唤始出来”的 GPU,可能是因为 40nm 制 程良品率不足或者是 NVIDIA 希望力求打造一颗在 DX11 和 GPU 通用计算方面都相当完美的 核心,所以这款 GPU 真的让玩家等的太就了。 GF100 架构设计 整体上看 GF100 核心架构,大致由四块组成,而这四大块就是 GPC(Graphics Processing Cluster,图形处理器簇),每个 GPC 单元都包含独立的几何引擎以及光栅化 流水线,GPC 模块之间透过新加入的 L2 cache 进行通讯、 kernel 和 Thread 的协调以及 数据共享。这无疑使得 GF100 的三角形吞吐量有了将近 300%的提升,也实现了并行的分块 化的渲染动作,更使得 DirectX 11 所要求的 TS 单元直接融入到了整个光栅化流水线内部。 Polymorph Engines 和 Raster Engines 在 GF100 中的设计 同时,我们在 GF100 核心架构图和 SM 架构图上可以看到,相比 G80/92 和 GT200 核心架构多了 Polymorph Engines 和 Raster Engines 功能模块。那么这两个模块有什么作 用了? 多形体引擎(PolyMorph Engine) 多形体引擎则要负责顶点拾取(Vertex Fetch)、细分曲面( Tessellation)、视口转 换(Viewport Transform)、属性设定( Attribute Setup)、流输出(Stream Output)等 五个方面的处理工作,DX11 中最大的变化之一细分曲面单元(Tessellator)就在这里。 Fermi GF100 产品中有 16 个多形体引擎,每个 SM 一个,或者说每个 GPC 拥有四个。 光栅引擎(Raster Engine) 光栅引擎严格来说光栅引擎并非全新硬件,只是此前所有光栅化处理硬件单元的组合, 以流水线的方式执行边缘/三角形设定(Edge/Triangle Setup)、光栅化(Rasterization)、 Z 轴压缩(Z-Culling)等操作,每个时钟循环周期处理 8 个像素。GF100 有四个光栅引擎, 每组 GPC 分配一个,整个核心每周期可处理 32 个像素。 总而言之:GF100 核心架构是自 GPU 进入 DX10 之后的最重大的一次架构革新,其在 图形架构和并行计算架构方面都有着革命性的突破。我们在 GF100 身上看得到了高效、 高针对性、贴近需求的 GPU 架构设计理念。 A 卡第二、三次 GPU 统一架构设计革新 进过了 R600 架构设计的阵痛期,AMD 似乎要在第二次 GPU 架构革新战争中扬眉吐气。 而事实也证明了:这款相比于 GT200 更小巧的芯片,却永远着更大的魔力。 A 卡第三次 GPU 统一架构设计革新 AMD 在 RV770 这款 GPU 核心架构上的革新可谓“大刀阔斧”,几乎对所有的模块都进 行了改进,而从市场端所反应的销量来看:这确实是一次很不错的架构革新。 RV770 GPU 系统架构图 通过上面的架构图我们首先来看看流处理器部分:RV670/R600 是纵向 4 组 SIMD 阵列, 每组 16 个 Shader,每个 Shader 5 个流处理器;RV770 是横向 10 组 SIMD 阵列,每组 16 个 Shader,每个 Shader 5 个流处理器,也就是说流处理器部分只是单纯的规模扩充;其 次、纹理单元和光栅单元部分数量翻了 2.5 倍,且抗锯齿算法已经由 R600/RV670 的流处理 器部分转移至光栅单元部分,因此 RV770 的 AA 效率大幅提高;最后、RV770 放弃了使用多 年沿用的环形总线,回归了交叉总线结构设计,有效提高了显存利用率,并节约了显存带 宽。总之:RV770 的整体架构的全面革新使得其相比 RV670 有了前所未有的改变。 A 卡第三次 GPU 统一架构设计革新 虽然说 AMD 抢在竞争对手 NVIDIA 之前发布了 DX11 显卡,但是相比较晚发布的 GF100 核心架构而言,RV870 架构在改进方面显得有些微不足道。 RV870(又称 Cypress)架构设计 对比 RV870 和 RV770 核心架构我们发现,RV870 并非 RV770 一样将 1600 个流处理器设 计在同一区域,而是将 1600 个流处理器分为 2 组各 800 个流处理器。所以我们可以这样认 为:除了显存位宽维持 256bit 不变之外,Cypress 的其它所有规格都正好是 RV770 的两倍, 而且在流处理器部分可以看作是双核心的设计,几乎就是并排放置了两颗 RV770 核心。 RV870 的相关特性 在 RV870 核心架构设计中,AMD 仅为其配备了合乎 DirectX 11 要求的寄存器资源,改 进了 UTDP 对多线程的支持,在前端的几何单元中插入了一组 TS 单元,同时将运算单元中 的 GDS 提升到了 64K。除此之外,我们仅能见到进一步放大的 VLIW core 规模和其他配套 的纹理资源及后端资源。各资源的整体比例较之 RV770 并未发生本质性的改变,VLIW(Very Long Instruction Word,超长指令字) core 的操作管理方式及周边资源密度也未见任何 实质性的变化,甚至其 UTDP 单元也依旧维持着抢占式多线程的管理方式。 总之:除了增加了对 DX11 的支持,RV870(Cypr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论