1911中亚之王如同高速公路一样,电脑中的各个单元也是依靠总线来连接的。如果以英文来解释总线,单词是“BUS”,极为形象——有了足够快的信息“道路”,才能发挥电脑中各个部件的性能,让数据在总线这条高速公路上快速传输。你可能知道PCI-E,但是你知道ISA吗?
总线(Bus)是指电脑内部规范化的交换数据(data)方式,是一种内部结构,它的作用是为处理器、内存、输入/输出设备提供传递信息的公共通道,一如连接各地的高速公路般连接城市个各个地方。总线的基本逻辑是,在同一个时间内只能负责传输一个数据(比特,bit)。要想传输的更多、更快,那就必须扩展“道路”,加宽“车道”。总线的宽度越大,传输速度就越快。
针对不同的连接总线也是有(针对性)区别的。一般来说,电脑的总线分为几种。第一种是数据总线,名为Data Bus,主要负责处理器和内存之间的数据存储、传输;第二种是地址总线,即Address Bus,它负责用来在指定的内存(Random Access Memory)数据存储地址;第三种总线,是控制总线Control Bus,它负责将微处理器(Control Unit,非中央处理器)发出的信号传送到具体外部设备上,比如SATA设备(并发)、USB设备(串行);还有一种是扩展总线Expansion Bus,它的作用是电脑内部和外部设备进行通讯的总线,比如我们说的PCI-E总线就是扩展总线的一种。
例如一台电脑,主板的主芯片(PCH)要负责CPU与内存、显卡等数据吞吐大户的通讯工作(现在的CPU也会肩负这一工作),那么它如何工作呢?在CPU部分,通过前端总线(即FSB)连接到PCH芯片上,进而通过其与内存、显卡进行数据的“交流”。
总线也是代际迭代的,随着时间的发展数据的传输需求越来越高,例如PCI-E 5.0的总线带宽速度已经达到了惊人的128GB/s(全双工),这要比早期ISA总线MB/s。你没看错,早期的ISA总线Bit,最大的带宽传输速度不过区区4.77MB/s、8MB/s!
ISA的全称为Industrial Standard Architecture,工业标准结构总线年,是IBM兼容电脑的一个总线年,ISA总线bit。可插接显卡、声卡、网卡已及所谓的多功能接口卡等扩展插卡。其缺点是CPU资源占用太高,数据传输带宽太小,是已经被淘汰的插槽接口。目前它现在只存在于极少部分的工控类设备上还在使用。
ISA总线的表现形式是一个长长的插槽,远比现在的PCI-E长许多,而且它的使用其实并不方便——现如今我们非常习惯的“即插即用”,即Plug-n-Play功能根本没有,所以在安装了ISA接口的设备时,必须手动设置IRQ(中断请求)、I/O地址(输出/输入地址)、DMA信道才能配置其工作。
早年间数据总线处理器时代ISA总线还能够完全应对。但是当80386这个32bit位宽外部总线的处理器出现后,总线带宽就成为了严重的性能瓶颈,毕竟ISA扩展标准后也不过是16bit位宽。因此在1988年的时候,康柏、惠普等九个厂商协同制定标准,将ISA总线bit位宽,相应的名称也变成了EISA,即Extended ISA扩展ISA。EISA总线的工作频率其实和ISA一样都是8MHz,并且可以向下兼容8bit、16bit位宽的ISA总线设备。
ISA总线的致命弱点可不止带宽很有限,它更大的问题在于CPU占用率高、且占用硬件中断资源。1990年代后期PCI总线逐步取代了ISA总线规范中彻底放弃了对ISA总线的支持,后期即便有推出带有ISA插槽的主板,也不过是通过模拟的方式实现对ISA设备的支持。
1992年的时候,Intel提出了PCI,外围组件互连Peripheral Component Interconnect总线标准,对比ISA总线协议,PCI总线标准一开始就提供了ISA无法企及的高度:133MB/s的带宽(33MHz时钟,每时钟传送32bit),这对当时的电脑来说已经是超高速带宽了。到了后期,PCI总线bit位宽,带宽达到了264MB/s。
另一个特点是在PCI上实现了即插即用功能——安装即可使用(当然在操作系统内还需要安装驱动程序),无需手动调配硬件资源。
另外,PCI总线标准增加了奇偶校验错(PERR)、系统错(SERR)、从设备结束(STOP)等控制信号及超时处理等可靠性措施,使数据传输的可靠性大为增加。
在90年代末期,PCI总线bit的修订版本规格,其仅仅264MB/s的带宽吞吐能力已经无法为显卡提供足够的带宽支撑,而此时业界又没有一个更好的解决办法。于是,Intel将AGP这种点对点的专用传输通道提了出来。
AGP,全称为加速图形接口(Accelerated Graphics Port),1997年,Intel为了应对显卡这种带宽吞吐大户的需求,在PCI总线标准上创建的一种点对点传输通道,可以说,它并非是一个总线标准——毕竟它只是为显卡的专用接口。要知道,任何一个总线都允许多个设备共享,而AGP只能只能实现“一对一”的模式,仅仅为显卡提供带宽支撑。
AGP时代,出现了许多经典的显卡,比如3DFX Voodoo Banshee、NVIDIA RIVA 128、3Dlabs Permedia 2、ATi Rage系列、Matrox Millennium II、S3 ViRGE GX/2等等。比较有趣的是,最早的一批AGP显卡并非原生AGP接口,而是通过桥接方式由PCI总线转换成AGP,而且需要一颗单独的芯片负责处理转换,这导致首批此类显卡的性能根本无法发挥实际效率。直到真正原生的AGP接口显卡出现,人们才领略了AGP接口的高带宽究竟能带来什么样的3D加速性能。
AGP的带宽究竟有多大呢?AGP的第一版达到了266MB/s的带宽,到了后期AGP 8×的带宽达到了2.1GB/s。AGP的规范版本一共经历了4次更替,分别为AGP 1×、AGP 2×、AGP 4×和AGP 8×,他们对应的规格版本分别是AGP 1.0(AGP 1×、AGP 2×)、AGP 2.0(AGP 4×)、AGP 3.0(AGP 8×)。另外,AGP接口向下兼容,而不能向上兼容,因为连电压都会有区别。
到了AGP 8×后期,最高2.1GB/s的带宽吞吐能力也不足以支撑显卡日益高涨的带宽需求,同时,其他设备也对总线带宽有了更高的要求,PCI+AGP的组合已经不够看了,于是PCI-E应运而生。
2001年Intel在IDF(Intel开发者论坛)大会上公布了最新的总线年,PCI特殊兴趣组织(PCI-SIG)正式公布了新一代总线GIO改名而来的PCI-E。
PCI-E的规范设计十分友好,只要是支持PCI总线的操作系统,无需修改升级即可支持PCI-E总线技术标准,很快,这个总线技术标准就取代了PCI+AGP的组合,成为最主流的总线技术标准。
PCI-E不仅具有极为强大的带宽吞吐能力,而且它还能支持更高的供电,对于大功率的PCI-E扩展设备无疑十分友好。甚至,它在电压的支持上也做了特别设计,可以分别支持+3.3V、3.3Vaux以及+12V三种不同的电压标准,让PCI-E设备的设计更为简单容易。
当然,最重要的还是PCI-E惊人的带宽吞吐能力。根据需求PCI-E可以以不同规格、不同速率提供给使用者设计不同的插槽,如PCI-E ×1、PCI-E ×2、PCI-E ×4、PCI-E ×8、PCI-E ×16。
PCI-E规范主要是为了提升电脑内部所有总线的速度,因此带宽有多种不同规格标准,其中PCI-E ×16是特别为显卡所设计。
计算公式:PCI-E串行总线带宽(MB/s)=串行总线时钟频率(MHz)×串行总线 = B)×串行总线管线×编码方式×每时钟传输几组数据(cycle),例如全双工PCI-E 1.0 ×1,其带宽= 2500×1/8×1×8/10×1×2=500MB/s。
可以说,PCI-E的出现一定程度解决了带宽不足的问题,而且PCI-E总线技术标准也在不断升级,从最初的PCI-E 1.0已经更替到最新的PCI-E 6.0。
PCI-E 4.0总线技术准,其带宽吞吐能力对比最初的ISA总线技术标准呈几何数量级的增长,这就是技术进步带来的好处——否则,NVME规范的固态硬盘,又怎么可能发挥其超强的读写性能?次时代的旗舰级显卡,又如何能够支撑4K分辨率下的游戏贴图运算呢?
|