显卡工作原理
显示卡的主要作用是对图形函数进行加速。
早期的电脑,
CPU
和标准的
EGA
或
VGA
显示卡以及帧缓存
(
用于存储图象
)
,可以对大多数图象进行处理,但是它们只是起一种传递作用,我们所看到的就是
CPU
所提供的。这对老的操作系统象
DOS
,以及文本文件的显示是足够的,但是这种组合对复杂的图形和高质量的图象的处理就显得力不从心了,特别是当用户使用
Windows
操作系统后,
CPU
已经无法对众多的图形函数进行处理,而最根本的解决方法就是图形加速卡。图形加速卡拥有自己的图形函数加速器和显存,这些都是专门用来执行图形加速任务,因此就可以大大减少
CPU
所必须处理的图形函数。
比如我们想画个圆圈,如果单单让
CPU
作这个工作,它就要考虑需要多少个像素来实现,还要想想用什么颜色,但是如果图形加速卡芯片具有画圈这个函数,
CPU
只需要告诉它“给我画个圈”剩下的工作就由加速卡来进行,这样
CPU
就可以执行其他更多的任务,这样就提高了计算机的整体性能。
实际上现在的显示卡都已经是图形加速卡,它们多多少少都可以执行一些图形函数
.
通常所说的加速卡的性能,是指加速卡上的芯片集能够提供的图形函数计算能力,这个芯片集通常也称为加速器或图形处理器。
一般来说在芯片集的内部会有有一个时钟发生器、
VGA
核心和硬件加速函数,很多新的芯片集在内部还集成了
RAMDAC(
后面会介绍
)
。芯片集可以通过它们的数据传输带宽来划分,最近的芯片多为
64
位或
128
位,而早期的显卡芯片为
32
位或
16
位。更多的带宽可以使芯片在一个时钟周期中处理更多的信息。但是大家不要以为
128
位芯片就会比
64
位芯片快两倍,更大的带宽为我们带来的是更高的解析度和色深,加速卡的速度很大程度上受所使用的显存类型以及驱动程序的影响。现在生产加速卡的厂商可以分为两类。一类是自己生产芯片,自己设计卡板并生产,例如
MGA
所生产的加速卡多为此类
(m3d
除外
)
,因为从设计到生产都是自己进行,所以对
BIOS
和驱动程序的设计会做的较好。另外一类就是使用别人设计的芯片,自己设计卡板线路并生产,象
Diamond
就是这一类中比较著名的厂家。
API
当某一个应用程序提出一个制图请求时,这个请求首先要被送到操作系统中
(
这里我们以
Windows
操作系统为例
)
,然后通过
GDI(
图形设备接口
)
和
DCI(
显示控制接口
)
对所要使用得函数进行选择。
而现在这些工作基本由
DirectX
来进行,它远远超过
DCI
的控制功能,而且还加入了
3D
图形
API(
应用程序接口
)
和
Direct3D
。显卡驱动程序判断有那些函数是可以被显卡芯片集运算,可以进行的将被送到显卡进行加速。如果某些函数无法被芯片进行运算,这些工作就交给
CPU
进行
(
当然这会影响速度
)
。
运算后的数字信号写入帧缓存中,最后送入
RAMDAC
,在转换为模拟信号后输出到显示器。
RAMDAC
在显存中存储的当然是数字信息,因为计算机是以数字方式运行的,对于显卡来说这一堆
0
和
1
控制着每一个像素的色深和亮度。
然而显示器并不以数字方式工作,它工作在模拟状态下,这就需要在中间有一个“翻译”。
Random Access Memory Digital-to-Analog Converter
其缩写就是
RAMDAC
,它的作用就是将数字信号转换为模拟信号使显示器能够显示图象。
RAMDAC
的另一个重要作用就是提供显卡能够达到的刷新率,它也影响着显卡所输出的图象质量。
刷新频率
刷新频率是指
RAMDAC
向显示器传送信号,使其每秒重绘屏幕的次数,它的标准单位是
Hertz (Hz)
。
如今
RAMDAC
所提供的刷新率最高可达到
250Hz
,但是影响所实现的刷新率有两个方面,一是显卡每秒可以产生的图象数目,其二是显示器每秒能够接收并显示的图象数目。刷新率可以分为
56, 60, 65, 70, 72, 75, 80, 85, 90, 95, 100, 110
和
120 Hz.
数个档次。过低的刷新率会使用户感到屏幕严重的闪烁,时间一长就会使眼睛感到疲劳,
所以刷新率应该大于
72Hz
。分辨率指的是在屏幕上所显现出来的像素数目,它有两部分来计算,分别是水平行的点数和垂直行的点数。举个例子,如果分辨率为
800X600
,那就是说这幅图象由
800
个水平点和
600
个垂直点组成。通常分辨率分为
640x480, 800x600, 1024x768, 1152x864, 1280x1024,
和
1600x1200
或更高。更高的分辨率可以在屏幕上显示更多的东西。如果你使用
1024X768
的分辨率,你可以在写作时看到更多的文字,可以在制表时一屏显示更多的单元格,更可以在桌面上放更多的图标。色深可以看作一个调色板,它决定屏幕上每个像素由多少中颜色控制。我们知道每一个像素都用红、绿、蓝三种基本颜色组成,像素的亮度也是由它们控制。当三种颜色都设定为最大值时,像素就呈现为白色,当它们设
为零时,像素就呈现为黑色。通常色深可以设定为
4
位
8
位
16
位
24
位色,当然色深的位数越高,你所能够得到的颜色就越多,屏幕上的图象质量就越好。但是当色深增加时,它也增大了显卡所要处理的数据量,而随之带来的是速度的降低或是屏幕刷新率的降低。
接口技术
上面简单介绍了显卡的基本组成部分,但是还有一点没有提到,这就是显卡的界面。随着图形应用软件的发展,在显卡和
CPU
及内中的数据交换量越来越大,而显卡的界面正是一种连接显卡和
CPU
的通道。图形速度的提高
(
特别是
3D
图形
)
要求与
CPU
和内存间有极宽的带宽进行数据交换,而局部总线已经无法满足要求,它已经成为影响图形速度的瓶颈,因此出现一种廉价的解决方案
AGP
总线,
AGP
是第一个为图形卡所设计的界面。
(
实际上
AGP
不能算是总线,因为总线可以支持多种设备,它只是一种端口。
)PCI
显卡以
PCI
总线速度的一半即
33MHZ
工作,它可以达到的峰值传送率为
133MHz
。而
AGP
以
66MHz
的速度工作,
AGP 1X
的峰值传送率可达
266MHz
,
AGP 2X
的传输率可以达到
532MHz
,因为“
2X
”可以在一个时钟周期中传输两次数据
(
上升沿和下降沿各一次
)
,而一般的工作状态只能进行一次传输,而
AGP 4X
的理论传输率为
1.066GB/s
,这听起来也许是不可能的,因为这已经远远超过整个系统总线所能够达到的速度。
66MHz
总线的最大传输率为
532MHz
,在这种环境下
AGP 4X
无法发挥作用。而使用
100MHz
总线时,内存的最大数据交换率可以达到
800MHZ/s
,这可能会使“
4X
”发挥一些威力,但也是远远不够的。
借助如此高的传输率,我们可以使一些原本只能在显存中进行的函数运算扩展到主内存中。
Intel
称这种技术为
DIME(
内存直接使用
)
。我们知道显存的价格要比系统内存高的多,而且它们只能用于图形运算,而高质量的图形运算和输出就要求更多的显存。例如一款
VOODOO
卡的标准配置为
4MB
显存,其中
2MB
为帧缓存,
2MB
为织法缓存,所以它在
3D
游戏中只能达到
640X480
的分辨率。更高的分辨率就需要更多的显存,这就会增大加速卡的成本。加速卡的芯片集需要局部显存进行刷新率、
Z-buffer
、像素以及
front fuffer
和
back-buffers
的控制,因此应用程序需要
AGP
提供更多的织法缓存来达到更高的解析度。很多程序会要求
2-16MB
的织法缓存,而
AGP
就可以满足它们。