图形处理器-GPU
2024-04-10 10:02:08 阿炯

图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心(display core)、视觉处理器(video processor)、显示芯片(display chip)或图形芯片(graphics chip),是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上执行绘图运算工作的微处理器。以图形处理器为核心的主板扩展卡也称显示卡或“显卡”。

图形处理器是NVIDIA公司(NVIDIA)在1999年8月发表NVIDIA GeForce 256(GeForce 256)绘图处理芯片时首先提出的概念,在此之前,电脑中处理视频输出的显示芯片,通常很少被视为是一个独立的运算单元。而对手冶天科技(ATi)亦提出视觉处理器(Visual Processing Unit)概念。图形处理器使显卡减少对中央处理器(CPU)的依赖,并分担部分原本是由中央处理器所担当的工作,尤其是在进行三维绘图运算时,功效更加明显。图形处理器所采用的核心技术有硬件坐标转换与光源、立体环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。

图形处理器可单独与专用电路板以及附属组件组成显卡,或单独一片芯片直接内嵌入到主板上,或者内置于主板的北桥芯片中,现在也有内置于CPU上组成SoC的。个人电脑领域中,在2007年,90%以上的新型台式机和笔记本电脑拥有嵌入式绘图芯片,但是在性能上往往低于不少独立显卡。但2009年以后,AMD和英特尔都各自大力发展内置于中央处理器内的高性能集成式图形处理核心,它们的性能在2012年时已经胜于那些低端独立显卡,这使得不少低端的独立显卡逐渐失去市场需求,两大个人电脑图形处理器研发巨头中,AMD以AMD APU产品线取代旗下大部分的低端独立显示核心产品线。而在手持设备领域上,随着一些如平板电脑等设备对图形处理能力的需求越来越高,不少厂商像是高通(Qualcomm)、PowerVR、ARM、NVIDIA等,也在这个领域“大显身手”。

GPU不同于传统的CPU,如Intel i5或i7处理器,其内核数量较少,专为通用计算而设计。相反,GPU是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算。虽然GPU在游戏中以3D渲染而闻名,但它们对运行分析、深度学习和机器学习算法尤其有用。GPU允许某些计算比传统CPU上运行相同的计算速度快10倍至100倍。

历史

1970年代
ANTIC和CTIA芯片为Atari-8位电脑提供硬件控制的图形和文字混合模式,以及其他视频效果的支持。ANTIC芯片是一个特殊用途的处理器,用于映射文字和图形数据到视频输出。ANTIC芯片的设计师,Jay Miner随后为Amiga设计绘图芯片。

1980年代
Commodore Amiga是第一个于市场上包含映像显示功能在其视频硬件上的电脑,而IBM 8514图形系统是第一个植入2D显示功能的PC显卡。

Amiga是独一无二的,因为它是一个完整的图形加速器,拥有几乎所有的影像产生功能,包括线段绘画,区域填充,块图像传输,以及拥有自己一套指令集(虽然原始)的辅助绘图处理器。而在先前(和之后一段时间在大多数系统上),一般用途的中央处理器是要处理各个方面的绘图显示的。

1990年代
1990年代初期,Microsoft Windows的崛起引发人们对高性能、高清晰度二维位图运算(UNIX工作站和苹果公司的Macintosh原本是此领域的领导者)的兴趣。在个人电脑市场上,Windows的优势地位意味着台式机图形厂商可以集中精力发展单一的编程接口,图形设备接口。

1991年,S3 Graphics推出第一款单片机的2D图像加速器,名为S3 86C911(设计师借保时捷911的名字来命名,以表示它的高性能)。其后,86C911催生大量的仿效者:到1995年,所有主要的PC绘图芯片制造商都于他们的芯片内增加2D加速的支持。到这个时候,固定功能的Windows加速器的性能已超过昂贵的通用图形辅助处理器,令这些辅助处理器续渐消失于PC市场。


S3 Graphics ViRGE 显卡

在整个1990年代,2D图形继续加速发展。随着制造能力的改善,绘图芯片的集成水准也同样提高。加上应用程序接口(API)的出现有助执行多样工作,如供微软Windows 3.x使用的WinG图像程序库,和他们后来的DirectDraw接口,提供Windows 95和更高版本的2D游戏硬件加速运算。

在1990年代初期和中期,中央处理器辅助的即时三维图像越来越常见于电脑和电视游戏上,从而导致大众对由硬件加速的3D图像要求增加。早期于大众市场出现的3D图像硬件的例子有第五代视频游戏机,如PlayStation和任天堂64。在电脑范畴,显著的失败首先尝试低成本的3D绘图芯片为S3 ViRGE、ATI的3D Rage,和Matrox的Mystique。这些芯片主要是在上一代的2D加速器上加入三维功能,有些芯片为了便于制造和花费最低成本,甚至使用与前代兼容的针脚。起初,高性能3D图像只可经设有3D加速功能(和完全缺乏2D GUI加速功能)的独立绘图处理卡上运算,如3dfx的Voodoo。然而,由于制造技术再次获取进展,影像、2D GUI加速和3D功能都集成到一块芯片上。Rendition的Verite是第一个能做到这样的芯片组。

OpenGL是出现于90年代初的专业图像API,并成为在个人电脑领域上图像发展的主导力量,和硬件发展的动力。虽然在OpenGL的影响下,带起广泛的硬件支持,但在当时用软件实现的OpenGL仍然普遍。随着时间的推移,DirectX在90年代末开始受到Windows游戏开发商的欢迎。不同于OpenGL,微软坚持提供严格的一对一硬件支持。这种做法使到DirectX身为单一的图形API方案并不得人心,因为许多的图形处理器也提供自己独特的功能,而当时的OpenGL应用程序已经能满足它们,导致DirectX往往落后于OpenGL一代。

随着时间的推移,微软开始与硬件开发商有更紧密的合作,并开始针对DirectX的发布与图形硬件的支持。Direct3D 5.0是第一个增长迅速的API版本,而且在游戏市场中获得迅速普及,并直接与一些专有图形库竞争,而OpenGL仍保持重要的地位。Direct3D 7.0支持硬件加速坐标转换和光源(T&L)。此时,3D加速器由原本只是简单的栅格器发展到另一个重要的阶段,并加入3D渲染流水线。NVIDIA的GeForce 256(也称为NV10)是第一个在市场上有这种能力的显卡。硬件坐标转换和光源(两者已经是OpenGL拥有的功能)于90年代在硬件出现,为往后更为灵活和可编程的像素着色引擎和顶点着色引擎设置先例。

2000年到现在
随着OpenGL API和DirectX类似功能的出现,图形处理器新增可编程着色的能力。现在,每个像素可以经由独立的小程序处理,当中可以包含额外的图像纹理输入,而每个几何顶点同样可以在投影到屏幕上之前被独立的小程序处理。NVIDIA是首家能生产支持可编程着色芯片的公司,即GeForce 3(代号为NV20)。2002年10月,ATI发表了Radeon 9700(代号为R300)。它是世界上首个Direct3D 9.0加速器,而像素和顶点着色引擎可以执行循环和长时间的浮点运算,就如中央处理器般灵活,和达到更快的图像数组运算。像素着色通常被用于凸凹纹理映射,使对象透过增加纹理令它们看起来更明亮、阴暗、粗糙、或是偏圆及被挤压。

随着绘图处理器的处理能力增加,所以他们的电力需求也增加。高性能绘图处理器往往比目前的中央处理器消耗更多的电源。2017年3月10日后由于适用于个人研究使用的GPU发布,近年来也逐渐受到许多研究者及公司的关注并广泛用于深度学习。

绘图处理器公司
现时有许多公司生产绘图芯片。以台式机与笔记本电脑为例Intel、AMD和NVIDIA都是目前市场的领导者,分别拥有54.4%、24.8%和20.%的市场占有率。手机、平板电脑等移动设备方面,高通等公司有较高市占率。另外,硅统科技和Matrox等公司过去也曾生产图像芯片;英特尔也在2021年推出全新高性能显卡品牌 Intel Arc

类型

独立显卡
独立显卡(Discrete Graphics Processing Unit,dGPU,简称独显)透过PCI Express、AGP或PCI等扩展槽界面与主板连接。

所谓的“独立(专用)”即是指独立显卡(或称专用显卡)内的RAM只会被该卡专用,而不是指显卡是否可从主板上独立移除。基于体积和重量的限制,供笔记本电脑使用的独立绘图处理器通常会透过非标准或独特的接口作连接。然而,由于逻辑接口相同,这些端口仍会被视为PCI Express或AGP,即使它们在物理上是不可与其他显卡互换的。一些特别的技术如NVIDIA的SLI、NVLink和AMD-ATI的CrossFire允许多个图形处理器共同处理影像信息,可令电脑的图像处理能力增加。

优点
相对集成显卡,独立显卡一般拥有更强劲的性能;
消耗的系统资源更少(目前的独立显卡都有独立的显示存储器);
拥有例如CUDA一类的在部分领域(例如影视后期等)可以起到辅助工作作用的处理单元。

缺点
购置计算机需要更多金钱;
消耗的功率更多,使电脑功率增加,体积更大;
部分低端独立显卡性能可能不如核心显卡。

集成绘图处理器

Intel GMA X3000 集成绘图芯片(被散热片覆盖)

集成绘图处理器(Integrated Graphics Processing Unit,iGPU)(或称内置显示核心)是集成在主板或CPU上的绘图处理器,运作时会借用部分的系统存储器。2007年装设集成显卡的个人电脑约占总出货量的90%[8],相比起使用独立显卡的方案,这种方案可能较为便宜,但性能也相对较低。从前,集成绘图处理器往往会被认为是不适合于执行3D游戏或精密的图形运算。然而,如Intel GMA X3000(Intel G965 芯片组)、AMD的Radeon HD 4290(AMD 890GX 芯片组)和NVIDIA的GeForce 8200(NVIDIA nForce 730a 芯片组)已有能力处理对系统需求不是太高的3D图像。当时较旧的集成绘图芯片组缺乏如硬件坐标转换与光源等功能,只有较新型号才会包含。

从2009年开始,集成GPU已经从主板移至CPU了,如Intel从Westmere微架构开始将Intel HD Graphics GPU集成到CPU至今,Intel将之称为处理器显示芯片。Intel Core极致版并没有集成绘图芯片。将GPU集成至处理器的好处是可以减低电脑功耗,提升性能。随着内显技术的成熟,目前的内显已经足够应付基本3D的需求,不过仍然依赖主板本身的RAM。AMD也推出了集成GPU的AMD APU、AMD Athlon和AMD Ryzen with Radeon Graphics。

用于人工智能学习

人工智能要用GPU的主要原因是因为GPU拥有强大的并行计算能力,适合处理大规模的矩阵运算和向量计算,而这些计算在人工智能算法中非常常见。

在传统的中央处理器(CPU)中,每个核心通常只能处理一个任务,因此在处理大量数据时速度会相对较慢。而GPU拥有大量的计算单元(CUDA核心),可以同时执行许多相似的计算任务,因此能够在短时间内处理大量的数据。这对于机器学习和深度学习等人工智能任务来说非常重要,因为它们通常涉及大量的矩阵运算和向量计算。另外,人工智能算法中经常使用到深度神经网络,这些网络拥有大量的参数需要进行训练。传统的CPU在处理这些大规模神经网络时效率较低,而GPU能够通过并行计算加速神经网络的训练过程,从而大大缩短了训练时间。


也有像FuryGPU这种由爱好者从零开始构建的开源GPU硬件

迪伦-巴里(Dylan Barrie)想找出答案,并花了四年时间进行尝试。他的成果是一块完整的 GPU,理论上可以在 Windows 上运行旧版游戏软件。他是一名游戏开发人员和硬件爱好者。在过去 14 年的游戏行业职业生涯中,Barrie 主要专注于图形渲染的软件方面。不过,四年前他开始利用业余时间开发定制的全栈 GPU。


巴里说,从头开始创建图形卡的过程简直是地狱般的煎熬,但经过四年的不懈努力,终于可以与大家分享他的心血,现在附加卡的设计工作已基本完成。FuryGPU是基于 Xilinx Zynq UltraScale+ FPGA 设计的"真正的硬件 GPU"。该卡使用定制的印刷电路板,通过一个 PCIe 插槽与主机连接。

FuryGPU 可支持相当于 20 世纪 90 年代中期"高端"显卡的硬件功能,并为现代 Windows 版本提供完整的软件和驱动程序栈。该图形处理器可以以实时、可玩的帧速率渲染那个年代的游戏。巴利公司最终将通过开源许可发布硬件原理图、软件和驱动程序。

这位硬件自制者说,他决定从头开始制造图形处理器,因为他不知道 GPU 如何工作的"实际细节"。由于对软件方面的 3D 渲染过程"极为熟悉",巴里意识到创建 GPU 可能是一个虽然艰巨但可行的个人项目。

他花了"无数个小时"学习 FPGA 芯片如何工作,以及如何通过硬件描述、验证和实现语言SystemVerilog 来构建芯片设计。巴里说,设计 PCIe 图形卡的原理图是一项"艰巨的工作"。编写 Windows 驱动程序是该项目最痛苦的任务,这也许不足为奇。

开发人员编写了与 GPU 通信的自定义图形 API,并创建了管理显示和音频信号的 Windows 内核驱动程序。FuryGPU 可以以每秒 60 帧的"稳定"速度渲染《雷神之锤》(1996 年发布的初代),这对 90 年代的游戏玩家来说是一种真正的享受。

Barrie 计划在他的 FuryGPU 博客上撰写更多关于 GPU 制作冒险的文章,从显卡的纹理单元开始。他还希望优化他的定制《雷神之锤》构建版本,使其运行速度更快。