突破带宽瓶颈,迈向极速巅峰

互联网 | 编辑: 2003-06-25 00:00:00 返回原文

PCI Express——突破带宽瓶颈,迈向极速巅峰

写在前面

随着计算机内部信息交换的日益提高,哪怕是目前性能最高的个人电脑也面临着相当严峻的挑战。尽管电脑体系中的每一个子系统都可以独当一面,但其内部的互连总线,却还是沿用90年代的技术。这就好比,在一个国家内,一个个城市都在不断地发展扩张,而连接每个城市的道路建设却停滞不前。正因为内部连接总线存在着带宽瓶颈,所以最终影响到整个体系的性能发挥。

就拿目前的Intel E7205芯片组来说吧,支持533MHz Pentium 4以及双通道DDR,可以达到4.2GB/s的总线带宽;AGP 8X的支持,带宽为2.1GB/s;同时,ICH4南桥芯片支持Ultra ATA/100、USB 2.0等,如果再加上主板厂商外接的网络控制芯片以及Serial ATA芯片,那整个系统对总线带宽的需求就会相当苛刻。但非常可惜的是,目前市场上除了屈指可数的几款主板芯片组(比如NVIDIA的nForce/2)外,大多数的产品在内部互连总线还是沿用非常古老的PCI总线架构。

PCI(Peripheral Component Interconnect)接口是由Intel于1991年所推出的一种新的总线标准。当时,由于计算机上的图形处理以及多媒体应用日渐普及,Windows逐步占据主流PC领域,以及得到提高的外设速度,使得PC机本身对于内部总线的带宽提出了更高的要求。当时所存在的总线技术,如我们熟悉的ISA、EISA以及VESA总线因为自身无法满足当时不断膨胀的需求,所以被时代的浪潮所冲刷得一干二净。而PCI总线则就不同,它的出现就是专为解决当时PC体系带宽性能上的瓶颈而制订的,拥有更为明确的发展方向以及针对性,从而以一个强者的姿态进入PC产业,并最终铸就了它的辉煌。

PCI是一种先进的局部总线,它是在CPU以及系统总线之间所插入的一级总线。由桥接电路来对其控制管理,实现双向的信号传输。PCI总线工作在33MHz和66MHz两种时钟频率上,通常都是33MHz上,总线位宽为32-bit,这样就达到了133MB/s的数据传输率,这在当时磁盘传输大约10MB/s、图形子系统传输率70MB/s左右,外设速度普遍不高的90年代,PCI所提供的带宽无可争议地获得了成功。

随着计算机技术和应用的迅猛发展,在进入Pentium III时代后,我们就已经隐隐察觉到PCI总线在实际的应用上已经相当疲惫了。PCI总线经历了8、9年的风雨,已经难以抵挡住电脑的飞速发展了。其133MHz的带宽就已经成为了整个系统最大的瓶颈所在。我们知道,在几年前,我们所使用的显卡都是PCI界面的,但由于带宽的不足,使Intel不得不另起炉灶地推出AGP接口标准。时至今日,AGP已经不知不觉地发展到8X。在下一代标准还未发布之前,各大芯片组厂商只能各显神通,推出一些应急的对策。这其中包括了Intel的AHA、VIA的V-Link 以及SiS的Mutli-Threaded I/O Link技术,不过它们所仍为PCI总线体系,所以只是一时之计,无法解决今后数年的发展需要。就在这个形势下,PCI Express诞生了。

PCI Express的发展

PCI Express前身就是非常有名的3GIO(3rd Generation Input/Output,第三代I/O),研发代号为Arapahoe。是由Intel、Dell、Compaq、IBM、Microsoft等PCI SIG( PCI Special Interest Group:PCI特殊兴趣小组,一个非赢利性的组织)联合成立的Arapahoe Work Group共同草拟并推举成取代PCI总线标准的下一代标准。高性能、高扩展性、高可靠性、更良好的升级性以及更为低廉的花费,就是PCI Express的设计理念。

后来,HyperTransport的始作俑者AMD也加入了PCI SIG中,成为了PCI Express中一个“关键合作伙伴”。AMD相信,PCI Express和HyperTransport将能形成互补关系,使后者在功能上更为完善。

PCI Express技术分析

从技术来说,PCI Express是革命性的。我们就从基础的技术层面上来观察一下它的主要特性吧。

设备之间的高速串行点对点传输
灵活可调的总线宽度
低功耗以及电源管理机制
支持设备热插拔
支持同步数据传输
通过主控芯片进行基于主机的传输,并通过Switch进行点对对传输
封包分层协议架构
每个物理连接层中可以拥有多个虚拟通道
PCI级别的错误处理以及先进的错误报告机制
使用小型接口来节约空间
软件层面兼容PCI标准(而非硬件以及接口层面)

和共享、并行总线体系的PCI以及以前的PC总线一经对比,点对点传输允许每个设备都拥有专属的一条连接,就不需要在带宽资源中你争我抢,这一点的确是个突破。PCI Express是一种芯片之间的互连技术以及一种板卡扩展的接口技术,可以作为主板的一部分而不会和诸如USB 2.0、InfiniBand、Ethernet以及IEEE 1394/1394b造成冲突。

在我们深入了解PCI Express串行连接的物理以及逻辑结构之前,我们还是来看看一些简单的PCI Express系统架构的块型解图。你可以看到PCI Express在系统中是如何来连接不同的部件的,并为未来高速设备来提供连接点的。

一个由PCI Express为网络的标准系统就是这样的。由设备之间的点对点连接所组成。基本的PCI Express系统是由一个root complex(功能上类似于连接CPU/memory子系统到I/O设备的北桥芯片)、switches(软件包含两个甚至更多的PCI-to-PCI桥,可以保证兼容性)以及不同的终端设备。不排除会出现类似于PCI转PCI Express的桥接设备。

下图为PCI Express Switch的逻辑块状图

点对点传输可以让一个终端设备通过root complex将数据传送到另一个终端设备,或是从一个终端设备经过一个switch到另一个switch,然后再到另一个终端设备。第二种方式称之为高级点对点传输,附加的功能可以实现未来的“PCI Express高级信息包转换器”。你可以看到两个“Advanced switches”之间的连接,一个root complex通过高级转换功能来实现主机软件之间的点对点传输。

PCI物理串行连接特性

一个单一、基本的PCI Express串行连接是一个使用两组独立低电压驱动信号的全双工接口——一组接受数据,一组发送数据(四根电缆)。一组差分信号在两个接口之间利用电压差进行信号传递。第一代PCI Express连接的数据传输率为单向2.5Gbit/s。到PCI Express正式推出的时候,我们估计可以达到双向5Gbit/s的速率。一个关键的设计是在4层PCB技术以及标准的接口上允许最高20英寸的连接长度。采用质量更高的元件,传输距离将更远。

一根全双工的接口允许同时进行传输数据,相当两根独立的单向接口,但全双工,每一个方向的电缆都有自己的接地线而不像单工使用的是共用的接地。在全双工接口上可以获得更高的速度以及更良好的信号质量。在PCI总线中,一个初始化的设备必须首先从central arbiter到PCI共享总线请求访问,然后才可以通过总线向目标设备传送数据,两设备之间的传送仅能提供单向传输。

基本的PCI Express串行连接的另一项关键特性就是通过8b/10b编码(这也在其它诸如InfiniBand以及新版本的RapidIO等串行总线技术中出现)来嵌入时钟信号技术。这种时钟信息被直接编码到数据流中,而非以单独的信号存在。许多现有的并行总线都有“源同步”时钟信号,与数据信号同步传输。这两种方法利弊参半。8b/10b编码每个字符需要10-bit,或者大约20%的通道占用率。

虽然PCI Express的线缆连接方式还没有公布,不过如同许多的并行传输技术一样,PCI Express比起并行线缆连接,它应该在电磁干扰上更具优势,因为电线将有良好的屏蔽性,并会利用缠绕来降低电容值。串行信号能传输很长的距离,而且相比并行总线宽大的线缆,串行不过是前者的1/4,传输也相当简便。从主板上的信号传输来看,PCI Express信号连接还是有很大优势的(减少大量的点对点线路),而且可以抵抗在并行总线架构中经常出现的信号干扰,信号失真以及其它电子信号的缺损问题。同时,PCI Express的设计者们必须完善差分信号传输损失的问题(特别在长距离传输以及接口传输)。

一个串行数据/时钟信号流比起单独时钟信号的并行数据总线可以传输更长的距离。同时,在串行连接的价格也相当低廉的情况下,内置I/O设备可以拥有更为良好的数据传输,外置设备可以传输更远。然而,提取和嵌入这个时钟信号需要附加的处理时间,所以并行界面还会存在一段时间,运用于高速多处理器系统的场合,因为它们需要更低的延迟。

PCI Express串行连接结构

PCI Express连接包含了多个管线。每一个管线包含了基本连接的两组差分驱动电缆(发送与接受),子连接可以依靠现有的2.5Gbit/s达到10Gbit/s。多重子连接可以联系设备以及芯片等等。看起来,这和利用多重管线的并行界面相当相似,但实际上却是一组独立的串行连接,不会像并行界面那样容易受到信号干扰。

PCI Express的管线位宽可以为x1、x2、x4、x8、x12、x16以及x32等不同形式。一个x1连接拥有4根电线(2组差分信号,一个方向1个),一个x16连接,每个方向就拥有16个差分信号(总共就有32组差分信号),或者64根双向传输数据的电线。高端领域,一个x32连接单向能够传输10GB/s(2.5Gbit/s x 32 / 8 bits)。但由于8b/10b编码,所以嵌入时钟信号要占用20%的管线带宽,所以真正的可用带宽大约为8GB/s。

PCI Express连接为对称结构,两边的管线必须相等。一些业界分析者,如果PCI Express来取代AGP成为图形接口,应该使用非对称结构还非16管线对称接口。他们认为从显卡帧缓冲到主系统内存的数据传输操作相对较少,这样会主板上会增加一些没有必要的信号布线,从而增加成本。

管线的先后次序也可以在每个设备进行交换,差分信号的正负两极是可以翻转的,这样的设计更为灵活,并可以避免布线时的物理信号交叉。如下图,左边的接口一个x2的设备利用x1的位宽与一个x1设备进行通信。

来自程序的数据流可以通过多重管线的PCI Express进行传输,数据流在经过多重管线时就会拆分开并被发送到不同的管线中,并在接受端进行重组数据流。这样可以简化操作,提高效率。

PCI Express封包分层协议

PCI Express使用了一种封包分层协议结构,它不需要在主串连接上加入任何边频信号,分层协议在数据通信已经沿用了很长时间,在协议中允许两个不同的功能区之间进行隔离,在一个层内的数据传输和其它层没有关系。

PCI Express的三个协议层——处理层、数据连接层以及物理层——从一个设备传输数据到另一个设备时,每个设备都被看作是一个协议堆栈。从一个处理层的发送端,数据包在高层上生成,在传递到一个低层就添加一些信息,直到它通过物理层发送到接收设备。这个包然后从接收设备向协议堆栈向上传直到被程序所接收。

下面这张图就是处理层和数据连接层中的数据包信息的主要功能。处理层合成和分解处理级的数据包比如读取和写入数据的请求。它同时掌握连接结构以及控制信号。它还能利用有效的数据防止终端至终端的通信错误。数据连接层确保点对点传输的正确无误,提供ack/nack协议技术、错误监测以及校正功能。

然后就是数据包的结构了,你能看到这个比较传统的嵌套式结构。高位层的封包信息被低位层所包裹。应用层的数据基本位于数据包的核心位置。处理层为终端-终端传输而使用32位的CRC。数据连接层则为16位的CRC。

位于处理层的数据包标题包括了终端至终端信息传送的控制信息。(如下图)

PCI Express虚拟通道

与InfiniBand类似,PCI Express也支持每管线多个虚拟通道。理论上,每条管线可以存在8个彼此不同,相互独立的通信处理。每一个处理可以根据数据包的传输等级(TC)性质来得到不同的处理。对于通过PCI Express所传输的东西来说,每个switch或者一个连接终端,都需要经过TC,并以此进行相应的传输方法。在数据包标题中的传输等级描述占用3-bit来表示8个不同的传输等级。

PCI Express数据包处理

PCI Express的数据包的处理包含了4个处理类型——内存、I/O、配置以及信息处理。下图中设备B向设备A发出请求传输信号,然后设备A给设备B完成发送。这样能够成为一种内存读/写、I/O读/写或者配置处理,都有一个请求以及完成相。

在下图中我们可以看到PCI Express 1.0 Spec里更多的处理类型。

PCI Express使用了基本的流控制(由处理层管理)来保证接收设备拥有足够的缓冲资源来接收发送设备所发送的数据的大小以及类型。

PCI Express中断

PCI Express支持两种中断形式,老式的PCI INTx(x可以是A、B、C或者D)延迟中断,以及更为新颖的消息信号中断(Message Signaled Interrupt,MSI)。MSI在PCI 2.2/2.3设备中是一个可选项,但在PCI Express设备中就是必需的。

INTx向主机芯片组发出信号中断。它可以兼容目前的PCI-兼容驱动以及操作系统。使用里带信号机制来虚拟PCI物理电线中断信号。PCI Express设备必须支持两种中断模式,兼容设备将INTx中断信息压缩到PCI Express的消息处理单元内。

MSI中断是一种边缘触发,通过内存的写操作来发送。对体现MSI边缘触发中断的优势来说,重写驱动是必需的。在通过串行连接使用封包协议时,MSI是一种相当好的方法(因为没有边带或者额外的电线中断信号)。MSI在多处理器系统中相当具有优势,任何设备都可以在不同的主机上支持使用中断。另一方面,许多处理器以及系统I/O架构都为MSI技术做好了准备。

PCI Express桌面以及笔记本插槽

在此之前,我们对PCI Express桌面以及笔记本的插槽定义的资料知之甚少。但从最新的一份名为《PCI Express Card Electromechanical Spec》白皮书中,我们找到了不少有意义的资料。

PCI Express的接口根据总线位宽而不同,从x1到x16,包括x1、x4、x8以及x16。而x2模式将会被用于内部接口而非接口。目前的PCI接口将被继续保留,而且将毗邻PCI-Express接口。由于位宽高的PCI Express针脚数量以及结构将会比位宽低的设备要复杂,目前可能的情况就是低位宽的设备依旧可以插入高位宽的插槽,但接口就不行。向上兼容将不被允许——高位宽设备就无法插进低位宽的插槽中,因为在物理上不兼容。PCI Express卡能够支持热插拔以及热交换特性。支持的三种电压分别为+3.3V、3.3Vaux以及+12V。

取代AGP接口的插槽位宽为16x,能够达到5GB/s的带宽(因为8b/10b编码所以实际为4GB/s的带宽)

下图为在ATX主板系统中的x1接口形状。

这张就是采用x1以及x16接口的主板实例。

下面是用于服务器的PCI Express扩展卡以及PCI Express适配器实例。(用于高速的网络以及存储)。

笔记本设备所使用的PCI Express卡将使用特殊的接口,这在文档中并没有明确定义,线缆接口也没有在PCI Express Card Spec中出现,这一切都在以后推出。外部的PCI Express线缆可能会被用来接驳外部高速设备(与USB 2.0/IEEE 1394接口交互连接),或者依靠物理分离来连接两个甚至更多的PC子系统。

在一份由Ajay Bhatt的幻灯片中,发布了各式各样尺寸的接口、线缆以及模组。它们象乐高拼装玩具一样在特别的PCI Express插槽中可以随意插拔。

这里是一张笔记本专用的产品。PCMCIA/PC Card委员会正在和PCI-SIG以及PCI Express工作组协商,共同研发兼容PCI Express标准的PC Card界面。

桌面插槽针脚定义

最后,让我们来看看x1、x4、x8以及x16插槽的针脚定义。除了x1有完整的信号定义外,x4、x8以及x16都是在前一个标准的基础所添加的附加信号定义。

x1接口信号定义

x4接口增加的信号定义

x8接口增加的信号定义

x16接口增加的信号定义

PCI Express PC架构实例演示

现在我们让我们来看看PCI Express体系的一些美妙构想,跟随Ajay Bhatt的幻灯片中,让我们领略一下基于PCI Express技术的桌面平台、移动平台以及服务器平台吧。在未来,我们将看到PCI Express技术下更为明晰的服务器设计。未来的服务器将大量使用PCI Express互连技术,我们现在真的很难去判断。

桌面系统中,你能看到PCI Express连接将取代AGP总线,另外,提供为千兆以太网以及一些PCI Express总线插槽所服务的芯片组界面,当然,你也可以看到未来的南北桥也可以利用PCI Express提供高速互连。

对于笔记本系统体系来说,PCI Express同样取代AGP总线,另外,它将成为底座接口、PC Card界面以及各种各样主板高速I/O设备(例如千兆以太网等)的连接。

在服务器平台上,我们可以看到通过芯片组,PCI Express将成为一个通用的互连标准,另外我们也可以看到InfiniBand架构体系。非常有趣的是,服务器是我们PCI Express技术说得最少,但却应用最多的一个领域。

PCI Express以及Hyper-Transport

虽然AMD暂时屈就于Intel之下,协助开发推广PCI Express,但AMD自己也在这段时间里为自己的Hyper-Transport技术拉了不少选票。至今也有众多的厂商加入其队伍,由于Hyper-Transport的用途相当广泛,既可以作为系统总线,也可以作为交换机、路由器、大型集线器甚至连游戏机、通讯设备都可以使用。因此,支持的厂商范围也相当广泛。从技术而言,无论是工作形式还是技术规格,Hyper-Transport技术和PCI Express技术有不少相似之处。这使许多人不自觉地将它们放在一起相提并论。其实从定位来看,两者的利益冲突并不大。PCI Express的服务对象更多的是电脑设备,而Hyper-Transport则成为高端网络设备的一个高带宽的解决方案,对于数据吞吐量巨大的网络路由器、交换机来说,Hyper-Transport的确可以满足它们。所以针对市场的不同使它们的可比性也大为降低。

PCI Express,离我们到底有多远?

我们需要的是,PCI Express所面临的一个局面,比起当时的PCI总线要复杂得多。PCI Express在未来是一项重要的技术,这点我们无可非议。但它有多重要呢?我们对其发展前景目前还无法很好地做出一个推断。因为PCI Express要考虑的因素实在是太多了。

首先,我们觉得PCI Express不是相当适合作为处理器-处理器连接以及芯片之间的连接。因为其8b/10b编码会占用20%的带宽资源,而且会提高传输中的通讯延迟。多处理器系统中,处理器之间的互连也是需要有缓存的一致性。其次,我们再来看看其他的高速总线,比如PCI-X 1.0可以提供1GB/s的峰值带宽,而PCI-X 2.0的带宽则是4.26GB/s。PCI-X 2.0在一段时间内将有能力给予大多高端服务器的带宽需求。而且PCI-X 2.0多重段总线可以直接支持服务器芯片组。你可以在前文中的幻灯片中看到,在服务器平台架构中,PCI Express连接是在服务器主芯片组以及PCI-X桥接芯片之间建立一条高速的信息通道。PCI SIG非常清楚地认识到PCI-X技术在服务器领域担当着相当重要的角色,他们也相当PCI Express绝非取代PCI-X,而是进一步增强服务器架构体系。

对于PCI Express技术在服务器方面的推广,让我们来看看全球最大服务器芯片组生产厂商之一的ServerWorks所发表的一些看法吧。从它的计划中我们得知,未来ServerWorks并没有推出PCI Express的计划以及意愿。他们认为在服务器中,PCI总线将会被继续发展,达到66MHz/64-bit,然后就是PCI-X,接着就是PCI-X 2.0。

ServerWorks声称没有必要使用其他的服务器标准规范,他们说目前大多数使用服务器的购买者都是x86系统的保守派——订单中中,占了很大比重的都是大买家,比如大型企业。当他们更换一批服务器的时候,往往要求保留现有的I/O扩展卡并装入新的机器内,这就对向后兼容提出了要求。当我们问到PCI Express可以连接ServerWorks芯片组的不同组件时,他们声明自己所有的互连总线IMB,同样可以相互连接ServerWorks芯片组的不同组成部分,而且不用担心向后兼容的问题。使用像PCI Express这样的工业标准互连技术,将会降低ServerWorks的创新能力。

从Richard Solomon(LSI Logic的主要PCI/PCI-X基础体系设计者之一)的口中,我们得到一些相当有趣的评论。Richard是一直潜心研究PCI相关技术,并作为PCI-SIG代表,在近年来的平台会议上发表PCI-X/PCI-X 2.0演说。他感到诧异,时至今日,设计者为什么不简单地将PCI-X添加到桌面PC系统的芯片组中。他说这并不需要过多地花费,而且它可以达到比PCI总线更快的速度。他认为PCI-X系统与PCI Express系统相比,价格更为低廉。PCI-X系统也可能在几年内阻碍着PCI Express的发展。

总结

前段时间在一个国外网站,我们看到一张采用PCI Express x16界面的Radeon 9700 Pro。虽然这张图片最终被确认是用PS(Photoshop)制作完成的,但在IDF 2003上,我们看到了包括NVIDIA、ATI、3D Labs等厂商都在研发基于PCI Express界面的图形产品,以取代AGP界面。在其他方面,我们估计在今年将很难看到有什么基于PCI Express的产品发布,但美好的未来还是值得憧憬的。

从前文我们可以看到,PCI Express界面在未来不会完全取代现行的PCI总线技术。凡事都有一个循序渐进的过程。就如同当初PCI总线取代ISA后,许多主板还是留有ISA的影子,直到目前,我们还可以看到许多基于ISA总线的设备。PCI总线虽然已经廉颇老矣,但其众多的产品支持还是会令它的寿命再延长。

返回原文

本文导航

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑