抛弃PCI 迎接PCI Express时代(上)

技术大讲堂

导言:随着Intel桌面915/925系列芯片组(对应移动市场的915GM/PM芯片组)进入市场,炒得沸沸扬扬的PCI Express(简称PCI-E)开始真正进入我们的视线,支持PCI Express的主板也越来越多。PCI Express总线技术拥有更快的传输速度,以及更方便、更廉价的外围设计。

PC系统的基本架构

不可否认,一些硬件高手对PC系统架构可以说了如指掌。不过为了更好地为下文做铺垫,并照顾一些初级读者,我们还是需要简单地说明一下。

核心芯片组在这个系统中扮演着一个交换机的角色,它掌管着各个外围设备的通信资源,以完成系统各部分的连接。实际情况是核心芯片组被分成两个部分:北桥和南桥。

至于为什么这么分?是因为CPU、内存以及显卡这三个部件工作非常紧密,他们需要更快的数据交换速度,在如今的系统中,GPU更像是第二颗CPU,它跟内存交换的速度甚至比和CPU交换还快。所以CPU、内存和显卡的接口被一起集成在北桥中。而南桥掌管着一些外围设备的数据交换,比如硬盘、USB、网卡等。这些设备的数据通过南桥被输送到北桥,并通过北桥到达CPU或者内存。

图1是现在的计算机系统架构,我们可以很清楚地看到PCI总线在南桥上。相对FSB、DDR或者HUB-LINK等总线,PCI在现在的系统中应该是时间最久、速度最慢的总线,它极大地拖累了整个系统的速度。

13-e12-1-1.jpg
图1 PC系统架构

结合图,我们也能理解,目前的计算机是由许多不同协议、不同带宽负载能力的总线连接而成(比如ATA、FSB等)。而随着PC业的发展,总有不同的硬件设备需要加入到南桥,比如IEEE1394、千兆网卡等。外围设备都需要通过PCI总线完成,这使得原本就已经显得拥挤的PCI总线更加不堪重负。

对PC的设计者而言,理想化的总线是,仅用一种总线技术把所有的设备连接起来,甚至包括CPU、RAM、GPU。虽然要实现这种理想化的设计比较困难,但我们还是找到了一个能把外围设备统一起来的高速、廉价的总线,那就是PCI Express。

PCI总线的基本原理

在开始了解PCI Express总线之前,我们必须要了解PCI总线的工作方式,这将有助于我们更好地了解PCI Express。

PCI总线的时钟频率是33MHz,32bit的,并采用了数据/地址线复用技术来减少PIN数。我们可以很容易计算出它的理论传输速度为32bit×33MHz= 1056Mbit/s=132MB/s。这个速度在PCI推出的时候是非常超前的,但随着计算机系统的发展,这点带宽也越来越显得拥挤。当然,在设计之初,PCI也考虑到将来升级的问题。它可以升级成64bit、33MHz,理论速度达到264MB/s,也可进一步升级成64bit、66MHz,速度可达到528MB/s。

在CPU主频越来越高的现在,也许有人要问,为什么PCI不能通过提高总线的频率来提升数据带宽,反而推出全新的PCI Express呢?原因其实很简单,由于PCI总线的PIN数过多,单纯的提高运行时钟会导致严重的信号干扰问题,而解决这些问题需要的成本将大大降低其竞争力。

PCI使用共享总线技术实现设备互连,不同的PCI设备(比如网卡、声卡、RAID卡等)被连接到同一根总线共享与CPU、RAM的通信。因为使用了共享总线技术,所以在总线上必须具有仲裁机制, Host(Root)就是仲裁机关。如果在同一时刻有多个设备要求使用总线的时候,就会由它来授权某个设备使用总线,而其他设备在这期间内就必须等待。一旦某个设备取得总线的使用权,它就会成为总线的主设备,而其他设备就成为从设备。主设备通过南桥与CPU、RAM等设备来进行数据通信。

PCI-X:带宽加大,速度提高,还是不够

PCI-X技术推出的本意是为了升级传统的PCI总线,以延缓PCI总线被淘汰的速度(图2)。但遗憾的是,PCI-X并没有从根本上改变PCI的架构,而且它的制造成本也大大超过了PCI。它对PCI总线的改良并不完善,在某些方面它甚至比PCI更糟糕。

13-e12-1-4.jpg
图2 框内就是PCI-X插槽

PCI-X总线的宽度从PCI的32bit上升到64bit,并把总线频率从33MHz提升到最高的133MHz,使PCI-X的理论传输速度达到了64bit×133MHz=1GB/s。新的PCI-X 2.0(PCI-X 266)版本更加入了类似于DDR技术的双倍读取技术,即在时钟的上升沿和下降沿都传送数据。这使得PCI-X的理论速度再增加了一倍,达到2.1GB/s。

虽然PCI-X使用了多项技术使PCI得到了更大的数据带宽扩展和频率提升,但这一切大大增加了其实现的成本。

PCI Express: 下一代的总线系统

PCI Express (PCI-E) 是第三代的总线规范。虽然它在2002年已经发布,但真正的PCI-E设备是在去年才进入我们的视野(图3)。

13-e12-1-2.jpg
图3 图中最短的两根插槽就是PCI-E

PCI-E和PCI总线的最大区别在于PCI-E采用了点到点的传输技术。图4是点到点技术的逻辑图(星形),并与共享总线技术作为对比。

13-e12-1-5.jpg
13-e12-1-6.jpg
图4 交换机方式(点到点)和共享总线方式的比较

在一个点到点的总线技术中,交换器替代了原来的主控器,并由它来控制总线上各设备的数据交换。与共享总线不同的是,当一个设备与另一个设备进行数据交换的时候,它们的通信是独立的。大概你已经想到,PCI技术相当于一个HUB,而PCI-E技术则相当于一个交换机。不同的是,售价上交换机比HUB要贵很多,PCI-E的制造成本要比PCI便宜。

PCI-E技术的出现就好像你跟你的朋友在用手机打电话,因为不存在同线电话,你们两人的谈话是私有的,不被“分享”的,也就不存在同线电话的背景噪音问题。PCI由于采用的是共享总线,所以在同一时间总线上传输数据的设备只能有两个,一个发送者,一个接收者,而其他需要传输的设备就只能等待。而PCI-E则不同,由于其建立的连接是点对点的,各个连接之间并不影响,所以在同一时间可以有多个设备传输数据。

启用了QoS(Quality of Service)

由于所有的外设都将通过交换机完成数据交换,所以交换器的地位就变得举足轻重。在PCI总线上,我们需要一个仲裁机构(主控制器)来判断哪个设备在哪个时刻使用总线,同样的道理,在交换机上我们也需要采取一个策略来完成对资源的分配。

在完成对外围设备的资源分配后,PCI-E还有一个新功能来完成目前流行的服务QoS(Quality of Service,服务质量)。PCI-E的交换机能将需要传送的数据打包发送,其原理类似于目前的Internet的分组交换原理。即:发送端在发送某一段数据的时候,把这段数据分成一个一个的包,并把这些包通过不同的路由发送到接收端,接收端在接收完这些数据包以后,会重新完成数据的组合。分组交换技术的好处是能够充分利用系统资源的带宽,这点在单路由的情况下不能很好地体现出来,但在多路由的情况下,分组交换的优点就会发挥得淋漓尽致。由于实时数据流(比如视频和音频传输)在分组交换技术中有着更高的传输优先级,所以能极大提高实时业务的服务质量。这意味着你将在大型3D游戏中丢帧更少,并有着更少的音频延时。