显卡工作流程

发布 2019-05-26 04:11:40 阅读 5279

第一章:第二代及以后的gpu工作流程简介。

简单(而不一定绝对科学)的说:gpu主要完成对3d图形的处理--图形的生成渲染。

gpu的图形(处理)流水线完成如下的工作:(并不一定是按照如下顺序)

1、顶点处理:这阶段gpu读取描述3d图形外观的顶点数据并根据顶点数据确定3d图形的形状及位置关系,建立起3d图形的骨架。在支持dx8和dx9规格的gpu中,这些工作由硬件实现的vertex shader(定点着色器)完成。

2、光栅化计算:显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。

例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。

3、纹理帖图:顶点单元生成的多边形只构成了3d物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图,通俗的说,就是将多边形的表面贴上相应的**,从而生成“真实”的图形。tmu(texture mapping unit)即是用来完成此项工作。

4、像素处理:这阶段(在对每个像素进行光栅化处理期间)gpu完成对像素的计算和处理,从而确定每个像素的最终属性。在支持dx8和dx9规格的gpu中,这些工作由硬件实现的pixel shader(像素着色器)

5、完成最终输出:由rop(光栅化引擎)最终完成像素的输出,1帧渲染完毕后,被送到显存帧缓冲区。

总结:gpu的工作通俗的来说就是完成3d图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。

第二章:directx8和directx9 gpu的传统流水线。

前面的工作流程其实已经说明了问题。本章来总结一下,承前启后。传统的gpu功能部件我们不妨将其分为顶点单元和像素流水线两部分顶点单元由数个硬件实现的vertex shader组成。

传统的像素流水线由几组psu(pixel shader unit)+tmu+rop组成。于是,传统的gpu由顶点单元生成多边形,并由像素流水线负责像素渲染和输出。对于像素流水线需要做的说明是:

虽然传统的流水线被认为=1psu+1tmu+1rop,但这个比例不是恒定的,例如在radeonx1000(不包括x1800)系列中被广为称道的3:1**架构,psu:tmu:

rop的数量为3:1:1。

一块典型的x1900显卡具有48个psu,16个tmu和16个rop。之所以采用这种设计方法,主要考虑到在当今的游戏中,像素指令数要远远大于纹理指令的数量。ati凭借这个优秀的架构,成功击败了geforce7,在dx9后期取得了3d效能上的领先。

总结:传统的gpu由顶点单元生成多边形,像素流水线渲染像素并输出,一条像素流水线包含psu,tmu,和rop(有的资料中不包含rop),比例通常为1:1:1,但不固定。

第三章:顶点和像素操作指令gpu通过执行相应的指令来完成对顶点和像素的操作。

熟悉opengl或direct3d编程的人应该知道,像素通常使用rgb三原色和alpha值共4个通道(属性)来描述。而对于顶点,也通常使用xyz和w 4个通道(属性)来描述。因而,通常执行一条顶点和像素指令需要完成4次计算,我们这里成这种指令为4d矢量指令(4维)。

当然,并不是所有的指令都是4d指令,在实际处理中,还会出现大量的1d标量指令以及2d,3d指令。

总结:由于定点和像素通常用4元组表示属性,因而顶点和像素操作通常是4d矢量操作,但也存在标量操作。

第四章:传统gpu指令的执行。

传统的gpu基于simd的架构。simd即single instruction multiple data,单指令多数据。

其实这很好理解,传统的vs和ps中的alu(算术逻辑单元,通常每个vs或ps中都会有一个alu,但这不是一定的,例如g70和r5xx有两个)都能够在一个周期内(即同时)完成对矢量4个通道的运算。比如执行一条4d指令,ps或vs中的alu对指令对应定点和像素的4个属性数据都进行了相应的计算。这便是simd的由来。

这种alu我们暂且称它为4d alu。需要注意的是,4d simd架构虽然很适合处理4d指令,但遇到1d指令的时候效率便会降为原来的1/4。此时alu 3/4的资源都被闲置。

为了提高ps vs执行1d 2d 3d指令时的资源利用率,directx9时代的gpu通常采用1d+3d或2d+2d alu。这便是co-issue技术。这种alu对4d指令的计算时仍然效能与传统的alu相同,但当遇到1d 2d 3d指令时效率则会高不少,例如如下指令:

add , r0,r1

/此指令是将r0,r1矢量的x,y,z值相加结果赋值给r0

add , r2,r3

/此指令是将r2 r3矢量的w值相加结果赋值给r3

对于传统的4d alu,显然需要两个周期才能完成,第一个周期alu利用率75% ,第二个周期利用率25%。而对于1d+3d的alu,这两条指令可以融合为一条4d指令,因而只需要一个周期便可以完成,alu利用率100%。但当然,即使采用co-issue,alu利用率也不可能总达到100%,这涉及到指令并行的相关性等问题,而且,更直观的,上述两条指令显然不能被2d+2d alu一周期完成,而且同样,两条2d指令也不能被1d+3d alu一周期完成。

传统gpu在对非4d指令的处理显然不是很灵活。

总结:传统的gpu中定点和像素处理分别由vs和ps来完成,每个vs ps单元中通常有一个4d alu,可以在一个周期完成4d矢量操作,但这种alu对1d 2d 3d操作效率低下,为了弥补,dx9显卡中alu常被设置为1d+3d 2d+2d等形式。

第五章:统一渲染架构。

相对于directx 9来说,最新的directx 10最大的改进在于提出了统一渲染架构,即unified shader。传统的显卡gpu一直采用分离式架构,顶点处理和像素处理分别由vertex shader和pixel shader来完成,于是,当gpu核心设计完成时,ps和vs的数量便确定下来了。但是不同的游戏对于两者处理量需求是不同的,这种固定比例的ps vs设计显然不够灵活,为了解决这个问题,directx10规范中提出了了统一渲染架构。

不论是顶点数据还是像素数据,他们在计算上都有很多共同点,例如通常情况下,他们都是4d矢量,而且在alu中的计算都是没有分别的浮点运算。这些为统一渲染的实现提供了可能。在统一渲染架构中,ps单元和vs单元都被通用的us单元所取代,nvidia的实现中称其为streaming processer,即流处理器,这种us单元既可以处理顶点数据,又可以处理像素数据,因而gpu可以根据实际处理需求进行灵活的分配,这样便有效避免了传统分离式架构中vs和ps工作量不均的情况。

总结:统一渲染架构使用us(通常为sp)单元取代了传统的固定数目的vs和ps单元,us既可以完成顶点操作,又可以完成像素操作,因而可以根据游戏需要灵活分配,从而提高了资源利用率。

显示卡负责的的工作及其进行的程序究竟是怎样的呢?

我们必须了解,资料 (data) 一旦离开 cpu,必须通过 4 个步骤,最后才会到达显示屏:

1、从总线 (bus) 进入显卡芯片 -将 cpu 送来的资料送到显卡芯片里面进行处理。 (数位资料)

2、从 video chipset 进入 video ram-将芯片处理完的资料送到显存。 (数位资料)

3、从显存进入 digital analog converter (=ram dac),由显示显存读取出资料再送到 ram dac 进行资料转换的工作(数位转类比)。 数位资料)

4、从 dac 进入显示器 (monitor)-将转换完的类比资料送到显示屏 (类比资料)

vertex顶点处理——>三角形等处理——>平面像素渲染等处理——>rop输出(rasterizing operation,光栅化引擎,即像素输出处理单元)——显存交换数据。

统一着色单元——>rop——>显存交换。

学生工作流程

上海外国语大学学生标兵评审流程图。上海外国语大学学生保险工作流程图。上海外国语大学学生违纪处理流程图。上海外国语大学学生火车票优惠卡办理流程图。上海外国语大学学生突发事件处理流程图。上海外国语大学。学生各类奖助学金评审流程图。上海外国语大学。学生综合奖学金评定流程图。上海外国语大学。学生办理国家助学...

仓库工作流程

管理 分公司。仓管组工作流程。一 物品入 出库管理规定。物品入 出库及保存管理是公司的一项重要工作,由财务仓管组进行日常的库房管理工作,办理物品的入 出库手续 库存物品的保管及库房的安全工作。非库房管理人员未经许可不得进入库房内。1 库房物品的出库将依据各部门上月所报计划 办理物品出库手续。如无计划...

质检工作流程

质检员 仓管员工作程序。一 收货验货发货。1 检验依据。合同 生产指令单 确认板。2 验货必备。生产指令单 确认板 验货报告表。3 检验程序。1 收货 外协厂送来产品或到外协商仓库去验货,须有外协厂开具的送货清单,清单上须有以下内容 客户 本司货号 颜色 件数 单价 开单人签名。拿到送货清单须与生产...