图形处理器(Graphics Processing Unit,GPU),又称显示核心(display core),显示芯片(display chip),视觉处理器(video processor),是一种用于处理图像和图形运算工作的协处理器,广泛应用在个人电脑、工作站和一些移动设备(如智能手机、平板电脑等)。
发展历史
GPU的历史要从图形控制器开始。1981年IBM公司推出第一台个人电脑IBM5150,这台电脑配备的黑白显示适配器(Monochrome Display Adapter,MDA)和
彩色图形适配器(Color Graphics Adapter,CGA)被认为是个人计算机中最早的图形处理单元。1987年IBM公司推出
VGA(Video Graphics Array)标准,在文字模式下可支持720×400分辨率,绘图模式下可支持640×480× 16色和320×200×256色输出,VGA标准一直沿用至今。为了保证兼容性,当今的显卡依然会遵循VGA 标准。从MDA到VGA,图形图像的运算都由CPU来完成,图形卡的作用主要是将其显示出来。
1994年,3DLabs发布了第一颗用于PC的3D图形加速芯片Glint300SX,随后ATi,3dfx,Matrox,S3 Graphics等公司也推出了类似的产品,然而这些产品缺乏统一执行的标准,加速功能也不尽相同。1999年,NVIDIA公司发布了Geforce256显示核心,也是首个以“Geforce”为名的显示核心。它首次在硬件上支持变换和光照(transform and lighting,T&L),整合了三角形构成、裁剪、纹理和染色引擎,并兼容DirectX和OpenGL等图形相关的应用程序编程接口(API),标志着GPU时代的正式开始。一年后,大部分公司由于兼容性和性能的落后逐渐退出市场,只剩下ATi的Radeon显卡作为Geforce显卡的竞争对手孤军作战。
硬件T&L的引入,极大减轻了CPU的负担,是这一时代GPU的标志。2001年微软发布DirectX 8,提出了渲染单元模式(shader model)的概念,根据操作对象的不同引入了2种shader,分别是顶点着色器(vertex shader)和像素着色器(pixel shader),从此,硬件T&L被抛弃,进入shader时代,此时的GPU架构是固定管线。
固定管线架构持续多年,直到微软推出DirectX10。shader 不再扮演固定的角色,每一个shader都可以处理顶点和像素,这就是统一渲染着色器(unified shader),它的出现避免了固定管线中顶点着色器和像素着色器资源分配不合理的现象发生,使得GPU的利用率更高。第一款采用统一渲染架构的GPU是ATI在2005年与微软合作的游戏主机XBOX360上采用的Xenos,它是ATI第一代统一渲染架构,而真正具有影响力的,是NVIDIA在2006年发布的GeForce 8800 GTX(核心代号G80),它是第一款采用统一渲染架构的桌面GPU,其架构影响了日后的数代产品,是一款极具划时代意义的GPU。
与G80一同发布的,还有著名的
CUDA(compute unified device architecture),它能利用NVIDIA GPU的运算能力进行并行计算,拓展了GPU的应用领域,然而这时的CUDA只能算是GPU的副业。2011年TESLA GPU计算卡发布,标志着NVIDIA将正式用于计算的GPU产品线独立出来,凭借着架构上的优势,GPU在通用计算及超级计算机领域,逐渐取代CPU成为主角。
GPU的发展历程表如下表所示。
组成结构
GPU是一种用于执行大量并行计算任务的硬件平台,其拥有数百个甚至上千个
ALU(算术逻辑单元,Arithmetic Logic Unit),基于的SIMT(单指令多线程,Single Instruction Multiple Threads)架构以线程块为单位进行工作,这些计算核心支持线程块中的多个线程在同一周期内执行相同的指令,从而实现高效的并行计算。GPU还包含DRAM,用于存储数据和指令,如纹理、顶点数据、着色器程序等,以及包含Cache(高速缓存),用于临时存储频繁访问的数据或计算结果,减少访问主内存的次数,提高整体性能。
随着GPU的细分发展,不同厂商、不同型号的GPU具体微观架构存在差异,如NVIDIA的Tesla架构,Fermi架构和Maxwell架构,AMD的GCN架构,RNDA架构等,但核心部件、概念、以及运行机制仍大同小异。
工作原理
GPU处理图形任务主要包括输入、顶点处理、几何处理、光栅化、像素处理、输出合并、显示等步骤,随着GPU可编程性的不断提高,这些步骤中部分可以并行执行,GPU逐渐开始应用于通用计算领域。如GPU的图形流水线所示,首先,GPU接收来自GPU的发出的顶点数据,顶点着色器对这些数据进行一系列变换,然后几何着色器对图元进行着色和生成,光栅化阶段将图元转换成片段并确认像素值,像素着色器再为这些片段添加纹理参数等信息,最后进行颜色合并写入到像素点再输出到屏幕上。
应用场景
GPU作为硬件领域一个重要的分支,在科学计算、人工智能、游戏开发等领域应用广泛。目前商用GPU主要包括NVIDIA Geforce系列、AMD Radeon系列和 NVIDIA Tesla系列等,它们在图像处理等应用领域提供了高逼真的渲染效果,在机器学习、深度学习、科学计算等研究领域提供了强大的计算能力,支持人工智能的发展与进步。
国产GPU的研制实践
近年来,国产GPU厂商在图形渲染 GPU 和高性能计算 GPGPU 领域上均推出了较为成熟的产品,在性能上不断追赶行业主流产品,在特定领域达到业界一流水平。生态方面国产厂商大多兼容英伟达 CUDA,融入大生态进而实现客户端导入。
近些年,国外GPU技术快速发展,已经大大超出了其传统功能的范畴。国内GPU芯片的研制虽然可满足目前大多数图形应用需求,但在科学计算、人工智能及新型的图形渲染技术方面仍然和国外领先水平存在较大差距,未来持续发展国产GPU势在必行。
国产GPU下阶段的发展方向可以主要考虑三个方面:第一,进一步提升图形图像显示水平,提升国产GPU的基本能力;第二,扩展科学计算和人工智能计算能力,增强国产GPU的非传统功能;第三,建设全系统解决方案及生态系统,寻求用户的最优体验。