江门平板电脑批发-EPAI中国大学生团队创业计划_第1页
江门平板电脑批发-EPAI中国大学生团队创业计划_第2页
江门平板电脑批发-EPAI中国大学生团队创业计划_第3页
江门平板电脑批发-EPAI中国大学生团队创业计划_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、江门平板电脑批发 -EPAI 中国大学生团队创业计划作者:日期:2计、整个 US 和 Shader 簇内的 MIMD化执行。 AMD 历代着色器演进 在 GeForce 8800 GTX之后, AMD 经过数月的延迟后推出了代号 R600 的 RADEON HD 2900XT核心,这款产品和NVIDIA 的新品一样使用了统一渲染架构,不同之处在于 2900XT 的 64个 SIMD 着色器内包含了5 路超标量( superscalar)的运算单元( ALU ),我们习惯性称其拥有320 个流处理器。组织形式方面,SIMD 单元采用超标量+VLIW (甚长指令)设计,虽然从数量上看规模庞大(共拥

2、有320 个 ALU ,8800 GTX 为28 个),但是执行效率在实际运算特别是通用计算中会发生不可忽视地衰减。为方便讨论,在后文分析中,我们将更多地把着色器Shader 称为流处理器 Stream Processor。 产品: ATIRadeon HD 4850 显示芯片 传统 GPU 发展与着色器管线 传统 GPU 发展与着色器管线根据第一章的讲解, 我们了解到渲染一个复杂的三维场景,需要在一秒内处理几千万个三角形顶点和光栅化几十亿的像素。早期的 3D 游戏,显卡只是为屏幕上显示像素提供一个缓存,所有的图形处理都是由CPU 单独完成。图形渲染适合并行处理,擅长于执行串行工作的CPU实际

3、上难以胜任这项任务。所以那时在PC 上实时生成的三维图像都很粗糙。995 年设计完成的 3dfx V oodoo 用自己的深度缓冲区( z-buffer )和纹理映射( texture mapping)技术将3D 渲染速度提升到当时的顶峰。 999 年发布 GeForce 256 图形处理芯片时首先提出GPU 的概念,Geforce 256所采用的核心技术有硬体T&L 、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素 256 位渲染引擎等,而硬体 T&L技术可以说是GPU 的标志。 传统的 GPU渲染流水线 从 DirectX 9开始, ATI 抢先发布了代

4、号 R300 的 Radeon 9700,这款 GPU 产品以简洁明快的设计风格赢得了用户的一致好评,首款DX9 图形芯片, 256Bit的显存位宽,9700 凭借 8 条管线理所当然的坐上了3D 之王的宝座。 正是在由微软DirectX 9 开启的 R300时代,图形芯片厂商意识到了渲染管线的重要性。无论是顶点处理器数量还是像素渲染管线数量都成为各家厂商竞争的重点标准。如果说 DirectX 8 中的 Shader 单元还是个简单尝试的话, DirectX 9 中的 Shader 则成为了标准配置。除了版本升级到2.0 外, DirectX 9 中 PS 单元的渲染精度已达到浮点精度,游戏程

5、序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。 在图形处理中, 最常见的像素都是由 RGB(红绿蓝) 三种颜色构成的,加上它们共有的信息说明(Alpha ),总共是 4 个通道。而顶点数据一般是由XYZW四个坐标构成,这样也是 4 个通道。在 3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW 四个坐标的数值。为了一次性处理个完整的像素渲染或几何转换,GPU 的像素着色单元和顶点着色单元从一开始就被设计成为同时具备4 次运算能力的算数逻辑运算器( ALU )。 “管线”的由来个时钟周期 4 次运算 顶点着色单元( Vertex Shader, VS )和像素着色单元

6、( Pixel Shader, PS)两种着色器的架构既有相同之处,又有一些不同。两者处理的都是四元组数据(顶点着色器处理用于表示坐标的w、 x、y、 z,但像素着色器处理用于表示颜色的 a、 r、 g、b),顶点渲染需要比较高的计算精度;而像素渲染则可以使用较低的精度,从而可以增加在单位面积上的计算单元数量。在Shader Model 4.0 之前,两种着色器的精度都在不断提高,但同期顶点着色器的精度要高于像素着色器。数据的基本单元是 Scalar(标量),就是指一个单独的值, GPU 的 ALU 进行一次这种变量操作,被称作D 标量。由于传统 GPU 的 ALU 在一个时钟周期可以同时执行

7、4 次这样的并行运算,所以ALU 的操作被称作 4D Vector(矢量)操作。一个矢量就是N 个标量,一般来说绝大多数图形指令中N=4 。所以,GPU 的 ALU 指令发射端只有一个,但却可以同时运算4 个通道的数据, 这就是 SIMD( Single Instruction Multiple Data ,单指令多数据流) 架构。 传统意义上像素渲染流水线 (PixelShader Pipeline)应该是像素着色器(Pixel Shader Processor,简称 PSP):纹理处理单元(Texture Model Unit ,简称 TMU ):像素输出处理单元(Render Back

8、End ,简称 RBE )=:。这个比例在DirectX 9.0c 末期的 Radeon 900 系列中被打破,因为ATI 的工程师们认为在未来游戏中显卡Pixel Shader 部分的 ALU 算术指令所占的比例将越来越大,TMU纹 理 贴 图 指 令 所 占 的 比 例 将 缩 小 。 所 谓 3 : 架 构 就 是 指 Arithmetic:Texture=3:或 是ALU:TMU=3: 。( Arithmetic指算术运算 ,由 ALU完成 ;Texture 也可以指纹理运算 ,由 TMU 完成)。 无论是 CPU 送给 GPU 的顶点数据,还是GPU 光栅生成器产生的像素数据都是互不

9、相关的,可以并行地独立处理。而且顶点数据(xyzw ),像素数据( RGBA )一般都用四元数表示,适合于并行计算。在GPU 中专门设置了SIMD 指令来处理向量,一次可同时处理四路数据, SIMD 指令使用起来非常简洁。此外,纹理片要么只能读取,要么只能写入,不允许可读可写,从而解决了存贮器访问的读写冲突。GPU 这种对内存使用的约束也进一步保证了并行处理的顺利完成。产品: ATI Radeon HD 4850显示芯片 传统 SIMD 结构流处理器指令细节 传统 SIMD 结构流处理器指令细节传统的 GPU 基于 SIMD 的架构。SIMD 即 Single Instruction Mult

10、iple Data,单指令多数据。 这种架构天生是为了应对顶点与像素四元组数据而设计的。传统的 VS 和 PS 中的 ALU (算术逻辑单元,通常每个VS或PS中都会有一个 ALU ,但这不是一定的, 例如 G70 和 R5XX 有两个)都能够在一个周期内 (即同时)完成对矢量4 个通道的运算。比如执行一条4D 指令, PS 或 VS 中的 ALU对指令对应定点和像素的4 个属性数据都进行了相应的计算。这便是 SIMD 的由来。 R520架构顶点与像素着色器单元这种 ALU 我们暂且称它为 4D ALU 。需要注意的是, 4D SIMD架构虽然很适合处理 4D 指令,但遇到 D 指令的时候效率

11、便会降为原来的/4。此时 ALU 3/4的资源都被闲置。为了提高PS VS 执行 D 2D 3D 指令时的资源利用率,DirectX9 时代的 GPU 通常采用 D+3D 或 2D+2D ALU 。这便是 Co-issue 技术。这种 ALU 对 4D 指令的计算时仍然效能与传统的ALU 相同,但当遇到 D 2D 3D指令时效率则会高不少, 例如如下指令:ADD R0.xyz , R0,R/此指令是将 R0,R 矢量的 x,y,z值相加 结果赋值给 R0ADD R3.x , R2,R3/ 此指令是将R2 R3 矢量的 w 值相加 结果赋值给 R3 对于传统的4D ALU ,显然需要两个周期才能

12、完成,第一个周期ALU 利用率75% ,第二个周期利用率25%。而对于 D+3D 的 ALU ,这两条指令可以融合为一条4D 指令,因而只需要一个周期便可以完成,ALU 利用率 00%。但当然,即使采用co-issue,ALU利用率也不可能总达到00% ,这涉及到指令并行的相关性等问题,而且,更直观的,上述两条指令显然不能被2D+2D ALU 一周期完成, 而且同样,两条 2D 指令也不能被 D+3D ALU一周期完成。传统GPU 在对非 4D指令的处理显然不是很灵活。R600 之前 SIMD 流处理器常采用 co-issue 模式传统的 GPU 中顶点和像素处理分别由VS 和 PS 来完成,

13、每个VS PS 单元中通常有一个4D ALU ,可以在一个周期完成4D 矢量操作,但这种 ALU 对 D 2D3D 操作效率低下, 为了弥补,DX9 显卡中 ALU 常被设置为 D+3D 2D+2D 等形式如上图。为了进一步提高并行度, 可以增加流水线的条数。多条流水线可以在单一控制部件的集中控制下运行,也可以独立运行。在单指令多数据流(SIMD )的结构中,单一控制部件向每条流水线分派指令,同样的指令被所有处理部件同时执行。SIMD 架构可以用较少的晶体管堆积出庞大规模的流处理器,同时 SIMD 架构可以用最少的晶体管换取最大的浮点吞吐量值。但是在指令执行效率方面,SIMD 架构非常依赖于将

14、离散指令重新打包组合的算法和效率,正所谓有得必有失。MIMD标量架构需要占用额外的晶体管数,在流处理器数量和理论运算能力方面比较吃亏,但却能保证超高的执行效率;SIMD 超标量架构可以用较少的晶体管数获得很多的流处理器数量和理论运算能力,但执行效率方面要依具体情况而定。产品: ATIRadeon HD 4850 显示芯片 MIMD 结构流处理器指令细节 MIMD 结构流处理器指令细节和 ATI 延续传统架构的思路形成非常明显的差异,NVIDIA在 G80 时代使用了全新的设计思想,它认为优化 ALU阵列的结构才能换取更大的性能提升,而一味追求数量的增长无法永远延续较高的图形处理加速比。以下我们

15、着重讨论G80 和 R600 的统一着色单元而不考虑纹理单元,ROP 等因素。 G80 GPU 中安排了6 组共 28 个统一标量着色器, 被叫做 stream processors,后面我们将其简称为SP。每个 SP 都包含有一个全功能的D ALU 。该 ALU 可以在一周期内完成乘加操作 ( MADD )。也许有人已经注意到了,在前面传统 GPU 中 VS 和 PS 的 ALU 都是 4D的,但在这里, 每个 SP 中的 ALU 都是 D 标量 ALU 。 NVIDIA G80 架构流处理器这就是很多资料中提及的MIMD (多指令多数据)架构,G80 走的是彻底的标量化路线,将ALU 拆分

16、为了最基本的 D 标量 ALU ,并实现了28 个 D 标量 SP,于是,传统 GPU 中一个周期完成的 4D 矢量操作,在这种标量SP 中需 4 个周期才能完成,或者说,个4D 操作需要 4 个 SP 并行处理完成。这种实现的最大好处是灵活,不论是D,2D,3D,4D指令, G80得便宜其全部将其拆成D 指令来处理。指令其实与矢量运算拆分一样。Fermi 架构 CUDA核心细节例如一个4D矢量指令ADD R0.xyzw , R0,RR0 与 R 矢量相加 ,结果赋 R0G80 的编译器会将其拆分为 4 个 D 标量运算指令并将其分派给4个 SP:ADD R0.x , R0,RADD R0.y , R0,RADD R0.z , R0,RADD R0.w, R0,R综上: G80 的架构可以用28XD 来描述。这种流处理器设计方式抛弃了单独追求浮点吞吐的目标,转而优化流处理器内部结构来换取更高的执行效率。但是它也有明显的问题就是需要使用更多发射端和周边寄存器资源来支撑这种被“打散”的流处理器运行,芯片集成度和面积相对于ATI 都有较大提升,必须严格控制发热和功耗。产

温馨提示

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

评论

0/150

提交评论