图形处理器(英语:Graphics Processing Unit,缩写:gpu),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,也是“人机对话”的重要设备之一。显卡作为电脑主机里的一个重要组成部分,承担输出显示图形的任务,对于从事专业图形设计的人来说显卡非常重要。
gpu由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。
gpu的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。在 2003-2004年左右,图形学之外的领域专家开始注意到gpu与众不同的计算能力,开始尝试把gpu用于通用计算(即GPgpu)。之后NVIDIA发布了CUDA,amd和等公司也发布了OpenCL,gpu开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map- Reduce等),金融分析等等。
简而言之,当程序员为cpu编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即Latency。当程序员为gpu编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖 Lantency。 目前,cpu和gpu的区别正在逐渐缩小,因为gpu也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于gpu比cpu更严重。
gpu是显示卡的“心脏”,也就相当于cpu在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。
2D显示芯片在处理3D图像和特效时主要依赖cpu的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。gpu使显卡减少了对cpu的依赖,并进行部分原本cpu的工作,尤其是在3D图形处理时。gpu所采用的核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬体T&L技术可以说是gpu的标志。
gpu工作原理-工作原理
简单的说gpu就是能够从硬件上支持T&L(Transform and LighTIng,多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由cpu处理的(这就也就是所谓的软件T&L),由于cpu的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待cpu数据的情况,其运算速度远跟不上今天复杂三维游戏的要求。即使cpu的工作频率超过 1GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与cpu的速度无太大关系。
gpu图形处理,可以大致分成 5 个步骤,如下图箭头的部分。分别为 vertex shader、primiTIve processing、rasterisaTIon、fragment shader、tesTIng and blending。
第一步,vertex shader。是将三维空间中数个(x,y,z)顶点放进 gpu 中。在这一步骤中,电脑会在内部模拟出一个三维空间,并将这些顶点放置在这一空间内部。接着,投影在同一平面上,也是我们将看到的画面。同时,存下各点距离投影面的垂直距离,以便做后续的处理。
这个过程就像是本地球观看星星一般。地球的天空,就像是一个投影面,所有的星星,不管远近皆投影在同一面上。本地球的我们,抬起头来观看星星,分不出星星的远近,只能分辨出亮度。gpu 所投影出的结果,和这个情况类似。
从地球所看到的星空,星星就像是投影到一球面上,除非使用特别的仪器,不然分不出星星和地球的距离
第二步,primitive processing。是将相关的点链接在一起,以形成图形。在一开始输入数个顶点进入 gpu 时,程序会特别注记哪些点是需要组合在一起,以形成一线或面。就像是看星座的时候一样,将相关连的星星连起来,形成特定的图案。
第三步,rasterisation。因为电脑的屏幕是由一个又一个的像素组成,因此,需要将一条连续的直线,使用绘图的演算法,以方格绘出该直线。图形也是以此方式,先标出边线,再用方格填满整个平面。
第四步,fragment shader。将格点化后的图形着上颜色。所需着上的颜色也是于输入时便被注记。在游玩游戏时,这一步相当耗费 gpu 的计算资源,因为光影的效果、物体表面材质皆是在这一步进行,这些计算决定着游戏画面的精细程度。因此在游玩游戏时,调高游戏画面品质大幅增加这一步的计算负担,降低游戏品质。
将一个三角形,用方格呈现近似原始图案,并着上颜色。一块又一块的方格,就是显示器上的像素
最后一步,testing and blending。便是将第一步所获得的投影垂直距离取出,和第四步的结果一同做最后处理。在去除被会被其他较近距离的物体挡住的物体后,让剩下的图形放进 gpu 的输出内存。之后,结果便会被送到电脑屏幕显示。
gpu工作原理-主要供应商
gpu有非常多的厂商都生产,和cpu一样,生产的厂商比较多,但大家熟悉的却只有INA,以至于大家以为gpu只有三大厂商。
英特尔
英特尔的gpu基本为集成显卡芯片,用于英特尔的主板和英特尔的cpu。可能你想不到,要是只按市场占有率计算,英特尔随着他主板及cpu发售的集成gpu占据了整个gpu市场的60%以上。
他的gpu主要有:唯一一款独立显卡芯片Intel 740(i740)。Extreme Graphics系列、GMA系列(集成于芯片组中)。现在的HD Graphics系列[1] 、Iris? Graphics系列[2] 、Iris? Pro Graphics[2] 系列等(集成于cpu中)。
NVIDIA
NVIDIA是现在最大的独立显卡芯片生产销售商。他的gpu包括大家熟悉的Geforce系列 ,包括GTX、GTS、GT等。专业工作站的Quadro系列 ,超级计算的Tesla系列 ,多显示器商用的NVS系列 ,移动设备的Tegra系列 。
以前也销售集成在主板上的集成显卡芯片,这些随着主板芯片组一起发售,但是由于amd收购ATI后自身主板芯片组gpu能力提高,NVIDIA芯片组如日中天的景象已经消失了。曾经为游戏机Xbox、PS3供应gpu。
amd(ATI)
amd是世界上第二大的独立显卡芯片生产销售商,他的前身就是ATI,2006年amd以54亿美元收购ATI。他的gpu主要是大家熟悉的Radeon系列,包括以前的X、HD系列,近几年的R9、R7、R5、R3,现在的RX系列等。专业工作站的FireGL系列,超级计算的FireStream系列,多显示器商用的FireMV系列,现在前三者已合并为FirePro系列 。
早期ATI还生产过Wonder系列、Mach系列、Rage系列芯片。除了独立显卡之外amd还拥有集成显卡芯片,集成于芯片组、APU中。由于amd收购ATI后,其主板市场迅速扩大,已经夺取了NVIDIA在amd处理器主板芯片组的半壁江山。就现在的发售量和发售盈利方面,amd的gpu市场占有率方面仍然略输于NVIDIA。amd也是游戏机Xbox 360、Wii、Wii U、PS4、Xbox One的gpu供应商。
3dfx
是一家于1994年成立的生产3D gpu及显卡的公司。曾经生产了Voodoo系列显卡,并且研发了SLI技术。由于经营不善等问题于2002年被NVIDIA收购。
Matrox
Matrox当年和NVIDIA,ATI一起争夺独立显卡芯片市场份额的一家公司,在曾经的一个时期Matrox的显卡和NVIDIA,ATI曾经在性能上比肩过。但由于后来其开发能力日渐衰退,在GF5时期,也就是ATI的9000系列时期,Matrox由于性能上整整落后了GF5900和Raden9800一个世代而逐渐被淘汰,淡出了民用独立显卡市场。但时下Matrox仍然在工程用专业显卡方面有自己的地位。
这些显卡用于工程主图和多头输出仍然很强力。与NVIDIA和amd的专业显卡不同,NVIDIA,ATI的专业显卡涉足的是3D领域,而Matrox得专业显卡涉足的是2D领域,也就是CAD。但由于OpenCL、CUDA的日渐普及,DX10以上显卡将在所有支持CUDA的程序上表现出惊人的性能,也就是说当CUDA在各种运用软件普及的那天,Matrox也必将退出2D专业卡的市场。
SiS和VIA
矽统和威盛时下是对孪生兄弟,但他们曾经也是分开的两家公司,并且都生产自己主板的集成显卡芯片。但这可怜的两兄弟已经逐步在淡出主板市场了,也就必定将淡出gpu市场。