15 October 2010

这篇文章属于《恰同学少年》系列,写于2010年。

平常说的显卡,就是图形适配器(Graphics Adapter),英文有Display(/Video/Graphics)Card(/Adapter)等多种称呼,都是指计算机系统中那块在显示图像过程中起着重要作用的板卡。一般个人电脑的显卡分为集成显卡和独立显卡——顾名思义,前者集成在主板上,而后者则作为一个分离的板卡插在主板的扩展插槽中。本文主要说明显卡的构成及其工作原理。

计算机的大部分运算和信息处理工作在中央处理器(即CPU)中完成,CPU得到的结果如果想输出到显示器上,产生让人看到的图像,则应先经过显卡的处理。显卡将计算机想要显示的信息转换为显示器能够直接使用的信号,其角色相当于CPU和显示器之间的一位中介。要说明这位中介是如何工作的,首先需要介绍一下显卡的结构。

显卡作为一个中间桥梁,首先需要有与其上家和下家通信的接口,即主板连接接口和显示器连接接口。主板连接接口主要针对独立显卡而言(因为集成显卡是已经在集成在主板上的),其中比较重要的有以下几种:PCI(Peripheral Component Interconnect,外围部件互连)、AGP(Advanced/Accelerate Graphical Port,高级或加速图像端口)、PCI-E(PCI Express,即PCI的改进版)。目前PCI和AGP正逐渐被淘汰,PCI-E成为最新型的标准。主板连接接口负责从主板得到显示需求,类似“要在某位置显示一个圆”等,显卡根据该需求进行图形运算和处理(详情见后),把它得到的数据通过显示器连接接口送给显示器用于实际显示。显示器连接接口根据显示器的不同而有多种,如对于阴极射线管(CRT)显示器是VGA(Video Graphics Array)输出,对于液晶显示器(LCD)则一般是DVI(Digital Visual Interface)输出,此外还有针对电视的S-Video输出、针对模拟摄像机的Vi-Vo输出,等等。当然,除了与外部的接口,显卡最重要的还是它自身的GPU、显存、数模转换器等结构,以下详细介绍。

GPU全称Graphics Process Unit,即图像处理器。它是显卡的核心,又叫显示芯片。它在显卡中的作用就像CPU在电脑中的作用一样。GPU在硬件方面专门为执行复杂的数学和几何运算设计,是显卡进行图形渲染的关键。我们知道,显示屏上的图形图像是由一个个的像素点组成的,这些像素点的位置、颜色和亮度等都是受一些物理信号的驱动的,如高低电平,电压大小等(老式的CRT显示器需要提供模拟信号电压)。计算机内部都是二进制的0和1,这些数字信号如何转化成适当的模拟信号来驱动显示器工作,就是显卡要解决的问题了;此外,为显示一帧图像,电脑必须计算决定如何显示每一个像素,最早这是由CPU完成的,而随着对高质量和3D显示需求的增加,每一帧都要为海量的像素点进行运算,而且运算也越来越复杂。最终,显卡承担了这种渲染任务,由显卡上的GPU进行这些运算,CPU只需告诉显卡想显示什么即可,这就将CPU解放了出来。

与CPU一样,GPU在运算时也需要存储临时数据的地方,这就是显存的作用。类似于电脑内存对CPU的作用,显卡上的显存用来存储GPU将要处理的数据和已经处理完毕的数据。事实上,显存与内存是同一种东西,即随机存储器(Random Access Memory,RAM)。不同的是,显示内存由于只用于GPU的图形运算,一般容量较小。GPU处理完的数据送给显存,接着将被送往数模转换器(Digital Analog Converter,DAC)转化成模拟信号后送给显示器显示。

除了上面提到的部件,完整的显卡还包括显卡BIOS(即基本输入输出系统,用于存放显示芯片与显卡驱动之间的控制程序,以及型号、规格、出厂信息等)、线路板、散热装置等等。由以上的说明也可以概括出显卡具体是如何工作的:显示信息由CPU送给GPU,GPU进行处理,处理过程中和处理后的数据临时放在显存中,显存将处理后的数据送给数模转换模块,数据被转化为模拟信号送给显示器。于是,通过显卡的中介,显示器将CPU想要显示的图像呈现了出来。

显卡需要有驱动程序才能正常使用。驱动程序使得显卡能根据操作系统的要求工作。在实际应用中,用户无须知道显卡的工作细节,只要使用显卡所支持的图形API按照需求调用相应绘图指令即可。常用的图形API有微软公司开发的DirectX和标准化的三维图形处理库OpenGL。

随着技术的进步和显示需求的不断增加,显卡的各项参数逐渐升级,其性能越来越好,重要性也越来越突出。尤其作为显卡核心的GPU,更是发展迅速。业界甚至有人提出,“未来GPU将越来越多地取代CPU的数据处理职能,未来GPU才是计算机的核心部件!”