欢迎来到天天文库
浏览记录
ID:44820791
大小:177.50 KB
页数:7页
时间:2019-10-30
《细研GPU架构流程工作原理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一节:第二代及以后的GPU工作流程简介 简单(而不一定绝对科学)的说:GPU主要完成对3D图形的处理--图形的生成渲染。 GPU的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序)顶点处理:这阶段GPU读取描述3D图形外观的顶点数据并根据顶点数据确定3D图形的形状及位置关系,建立起3D图形的骨架。在支持DX8和DX9规格的GPU中,这些工作由硬件实现的VertexShader(定点着色器)完成。光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点
2、。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。纹理帖图:顶点单元生成的多边形只构成了3D物体的轮廓,而纹理映射(texturemapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴上相应的图片,从而生成“真实”的图形。TMU(Texturemappingunit)即是用来完成此项工作。像素处理:这阶段(在对每个像素进行光栅化处理期间)GPU完成对像素的计算和处理,从而确定每个像素的最终属性。在支持DX8和DX9规格的GPU中,这些工作由硬件
3、实现的PixelShader(像素着色器)完成最终输出:由ROP(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。 总结:GPU的工作通俗的来说就是完成3D图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。 第二节:DirectX8和DirectX9GPU的传统流水线 前面的工作流程其实已经说明了问题。本章来总结一下,承前启后。传统的GPU功能部件我们不妨将其分为顶点单元和像素流水线两部分顶点单元由数个硬件实现的VertexShader组成。传统的像素流水线由几组PSU
4、(PixelShaderUnit)+TMU+ROP组成。于是,传统的GPU由顶点单元生成多边形,并由像素流水线负责像素渲染和输出。对于像素流水线需要做的说明是:虽然传统的流水线被认为=1PSU+1TMU+1ROP,但这个比例不是恒定的,例如在RadeonX1000(不包括X1800)系列中被广为称道的3:1黄金架构,PSU:TMU:ROP的数量为3:1:1。一块典型的X1900显卡具有48个PSU,16个TMU和16个ROP。之所 以采用这种设计方法,主要考虑到在当今的游戏中,像素指令数要远远大于纹理指令的数量。ATI凭借这
5、个优秀的架构,成功击败了Geforce7,在DX9后期取得了3D效能上的领先。 总结:传统的GPU由顶点单元生成多边形,像素流水线渲染像素并输出,一条像素流水线包含PSU,TMU,和ROP(有的资料中不包含ROP),比例通常为1:1:1,但不固定。第三节:顶点和像素操作指令GPU通过执行相应的指令来完成对顶点和像素的操作 熟悉OpenGL或Direct3D编程的人应该知道,像素通常使用RGB三原色和alpha值共4个通道(属性)来描述。而对于顶点,也通常使用XYZ和W4个通道(属性)来描述。因而,通常执行一条顶点和像素指令需
6、要完成4次计算,我们这里成这种指令为4D矢量指令(4维)。当然,并不是所有的指令都是4D指令,在实际处理中,还会出现大量的1D标量指令以及2D,3D指令。 总结:由于定点和像素通常用4元组表示属性,因而顶点和像素操作通常是4D矢量操作,但也存在标量操作。第四节:传统GPU指令的执行 其实这很好理解,传统的VS和PS中的ALU(算术逻辑单元,通常每个VS或PS中都会有一个ALU,但这不是一定的,例如G70和R5XX有两个)都能够在一个周期内(即同时)完成对矢量4个通道的运算。比如执行一条4D指令,PS或VS中的ALU对指令对
7、应定点和像素的4个属性数据都进行了相应的计算。这便是SIMD的由来。这种ALU我们暂且称它为4DALU。需要注意的是,4DSIMD架构虽然很适合处理4D指令,但遇到1D指令的时候效率便会降为原来的1/4。此时ALU3/4的资源都被闲置。为了提高PSVS执行1D2D3D指令时的资源利用率,DirectX9时代的GPU通常采用1D+3D或2D+2DALU。这便是Co-issue技术。这种ALU对4D指令的计算时仍然效能与传统的ALU相同,但当遇到1D2D3D指令时效率则会高不少,例如如下指令: ADDR0.xyz,R0,R1
8、//此指令是将R0,R1矢量的x,y,z值相加结果赋值给R0 ADDR3.x,R2,R3 //此指令是将R2R3矢量的w值相加结果赋值给R3 对于传统的4DALU,显然需要两个周期才能完成,第一个周期ALU利用率75%,第二个周期利用率25%。而对于1D+3D的ALU,这
此文档下载收益归作者所有