内容导航
从1x到8x
首先做一个简单的计算,来估算一下一般情况下的应用需要调用的材质数据,因为显卡计算需要的大部分数据都要从内存中通过AGP总线调用进来,假设图像显示模式是1024x768x32bpp,每个像素的一般使用两个以上的纹理贴图,那么每个纹理贴图包括32bit(4Bytes)的数据,这样渲染一个像素需要调用大约8Bytes材质数据,那么渲染一帧3D场景所需要的调用的基本材质为1024x768x4Bytes=3.14MB。而如果渲染速度为85帧/秒的话,那么每秒中所需要调用的材质数量是3.14x85=267MB。
这样看来AGP 2x的传输模式也是足够用的,但是要知道现在的3D游戏等应用越来越复杂,仅仅计算基本的材质应用并不能比较真实的体现实际的应用。如果同样的场景采用了三线过滤,那么每个纹理贴图包含8个纹理样本,这样每个纹理贴图包括的数据是32Bytes,这样以同样的速率渲染一个场景所需要的材质数量至少是267x8=2.136GB,这已经是AGP 4x模式的传输带宽的两倍了!我们还没有考虑场景的复杂程度、抗锯齿以及空间位置数据的传输等等需要的带宽。
如果上面的估算过程对你来说依然不好理解的话,那么我们可以反过来考虑这个问题。以GeForce 3 Ti200为例,它的核心频率为175MHz,GPU内包含4条双纹理像素处理管线,它的像素填充率就是700MPixels/s,按照每个像素两个纹理贴图的话,那么让Ti200完全发挥出来其全部潜能的化,每秒钟至少要提供700x2x4=5600MB的材质。
因此进一步提升AGP总线传输带宽是执行更加复杂应用的需要,也是为了更好的发挥我们的硬件所有能力的需要。因此就有了1x、2x、4x,顺理成章的8x也就成为了解决这个问题最直接的方法。那么我们AGP 8x工作模式是如何实现的呢?

AGP 1x 的时序图
上图是AGP 1x传输模式下最小延迟的数据传送的时序图,也就是最理想状态的数据传输的情况,在后面的几种传输模式也是以在理想状态下为例介绍的。如上图所示时钟信号CLK为66MHz,32bits数据D1、+1、+2、+3要在CLK 3、4、5、6这四个时钟周期中传输完毕,可以看到在CLK 3的上升沿传输数据D1、CLK 4的上升沿传输+1依次类推。这样传输速度很容易计算:66.6MHz x 32 bits (4Bytes) = 266 MB/S,也就是说AGP 1x模式的理想传输带宽为266MB/s。

AGP 2X 的时序图
时钟信号CLK依然为66MHz,32bits数据R1、+1、+2、+3、+4、+5、+6、+7也要在CLK 3、4、5、6这四个时钟周期内传输完毕,其中R1在CLK 3的上升沿传输,而R2在CLK 3下降沿传输,也就是说一个时钟周期的上升沿和下降沿各传输一次数据,同DDR SDRAM非常的相似,这样一个时钟周期内可以传送2个32bit数据,也就是8 Bytes数据,所以AGP 2x传输带宽为66.6MHz x 64 bits (8Bytes) = 533 MB/S。

AGP 4X 的时序图
时钟CLK还是为66MHz,我们需要在CLK2、3这两个时钟周期内传输R1、+1、+2、+3、+4、+5、+6、+7这8组32bits数据。这个时候无法直接利用CLK信号来控制数据的传输了,而是利用了AD_STBx和AD_STBx#这两个时钟的下降沿触发数据传输,也就是在AD_STBx下降沿传R1,在AD_STBx#下降沿传+1,下一个AD_STBx下降沿传+2,再下一个AD_STBx#下降沿传+3。对于AD_STBx和AD_STBx#这两个信号来说,同样的电平代表不同的逻辑状态,所以它们的波形是完全相反的,这就实现了在一个时钟周期内传输4组32bits数据的目的,因此AGP 4x传输带宽为66.6MHz x 128bits = 1066 MB/S。

AGP 8X 的时序图
AGP 8x时钟CLK还是为66MHz,我们需要在一个时钟周期内传输1、2……8这8组32bits数据,同样我们还是利用AD_STBS和AD_STBF来交替触发在AD上的数据传输,不过这里有几点同AGP 4x传输模式有区别:首先是AD_STBS和AD_STBF这两个触发信号的频率提高到了266MHz,而AGP 4x中的AD_STBx#和AD_STBx的工作频率是133MHz,这也是为什么AGP 8x的传输率比AGP 4x增加一倍的原因所在;另外一个不同之处就是触发信号的改变,AGP 4x是在触发信号(AD_STBx#和AD_STBx)的下降沿传输数据的,而AD_STBS和AD_STBF恰恰相反它们是在上升沿触发数据,当然这个改变对于我们最终用户来说并没有什么区别,不过对于工业设计来说是必须注意的基本问题,否则设计的产品将会无法正常工作。
通过这两个改变我们就可以实现在一个基本CLK时钟周期内传输8组32bits数据了,因此AGP 8x的传输带宽为66MHz x (8 x 32bits)=2133MB/s,也是它的理论峰值传输带宽可以达到2.1GB/s。