本白皮书主要着眼已经得到广泛采用的PCI 总线的成功优势所在,同时详细介绍下一代高性能I/O 互连技术PCI Express 它将作为标准的局域I/O 总线被广泛应用于未来各种计算机平台。本白皮书还将就PC 总线技术的演变历程、PCI Express 的物理层和软件层、PCI Express 所能带来的益处和竞争优势以及此项崭新技术在测量自动化系统领域里预示的令人振奋的深远意义,做个整体技术性概述。
PC 的演进历史
上世纪90 年代初,PCI 总线一经推出,即统一了当时并存的多种I/O 总线,诸如VESA 局域总线,EISA,ISA 和微通道等等,如图1所示。它首先被用于实现芯片与芯片间互连并替代了不全面的 ISA 总线。在早期,33MHz PCI总线很好地满足了当时主流外设I/O 的带宽需要。然而现在情况发生了变化,处理器速度惊人地提高,以及处理器和内存的频率也不断 地攀升。在这一期间,PCI 总线的频率由33MHz 提高到66MHz, 而处理器的速度由33MHz 提高到3GHz 。一个具有新I/O 技术的总线设备如千兆以太网和 IEEE 1394B ,就可能占用几乎所有 PCI 总线带宽。
PCI 总线历史和概述
和以前的总线相比,PCI 总线具有很多优势,其中最重要的是处理器的独立性,带缓冲的隔离,总线主控和真正的即插即用。带缓冲的隔离真正地实现了CPU 局域总线和 PCI 总线间在电路和时钟方面的隔离。这一特性能为系统性能带来两个主要好处。首先是 PCI 总线和CPU 总线可以工作在各自的时钟周期;第二是由于有独立的PCI 总线速度和负载,可单独提高CPU 局域总线的频率。通过总线主控,PCI 设备以仲裁处理方式访问 PCI 总线并且能直接控制总线处理业务,而不用等主CPU 为设备提供服务,从而使得整个I/O 处理业务的等待时间减少。即插即用操作,可以自动检测和配置设备,得到基本地址不再需要中断运行和手工设置开关跳线,而这些都曾使 ISA 板卡的用户感到很棘手。
PCI 面临的挑战
出色的 PCI 已经享受到了成功的殊荣,而今开始面临一系列新的挑战,包括带宽的限制,主管脚数的限制,缺乏如同步数据传输这样的实时数据传输服务以及没有下一代I/O 所需的服务质量,以及电源管理和虚拟I/O 等问题。
自从PCI 推出以来,我们不断完善PCI 的各项规格,试图跟上日益增加的更高I/O 要求。各阶段具体革新总结如下表所示:
对于PCI 和由其衍生的总线来说,协议开销和总线拓扑结构导致可使用的总线带宽要小于理论带宽。总线上的设备要共享可用带宽,这是PCI 主要的局限性。由于PCI 的时钟频率已不能满足某些应用的要求,由其衍生出来的其它一些总线,如PCI-X 和高级图像端口(AGP ),则通过提高总线频率来缓解带宽的压力。增加频率的副作用是总线连通距离和总线收发器可驱动连接器的数量也会相应缩短和减少,这样就导致了对PCI 总线的分割。每个片断都需要一个完整的 PCI-X 总线来连通主驱动芯片和所有功能插槽。例如,每一部分64 位的PCI-X 需要150 个管脚。很显然,要实现这样的连线,板层数和芯片封装引脚都会有很大的难度并且成本非常昂贵。这种额外的成本只有在对带宽有严格要求的情况下才有价值,如服务器。
诸如数据采集,波形生成,包含音频和视频流的多媒体应用等需要保证带宽和有确定的等待时间,如果不能满足这一点,有经验的用户也会束手无措。原始的PCI 规范并没有考虑这些问题,这是因为在制定规范时上述应用并不普及。如今的同步数据传输,如高清晰度的无压缩视频和音频,要求I/O 系统包含同步传输功能。同步传输的另一个作用是:和典型的PCI 设备相比,局域 PCI Express 设备只用少得多的内存就能实现缓冲功能,从而把所使用的可变带宽降至最低。
最后,对下一代I/O 的要求如服务质量测量和电源管理等,能提高数据的完整性并允许有选择地关闭系统设备对于现代PC 不断增加的电源功率来说这是需要重点考虑的。虚拟通道允许数据通过虚拟路由来传送;即使其它通道被更重要的处理业务所阻塞,也一样能进行数据传输。
尽管 PCI 总线在某些方面已有些过时,但是转变到PCI Express 还要经过一个长期过程,并且未来许多年里PCI 总线将仍然是I/O 扩展的强有力竞争者。随着PCI Express 技术日益赢得认可和广泛采用,2004 年以及此后推出的新型PC 将会同时配有PCI 插槽和PCI Express 插槽。
PCI Express 构架
如图 2 所示,即 PCI Express 的层次体系结构。它保持了与 PCI 寻址模式(加载-存储体系结构且具有单层地址空间)的兼容性,从而保证了所有现有的应用程序和驱动操作无需改变。PCI Express 配置使用的是PCI 即插即用标准中所定义的标准机制。软件层发出读和写请求,并使用基于数据包、分段传输的协议通过处理层传输至I/O 设备。
链路层向这些数据包添加序列号和循环冗余校验(CRC )从而创建了一个高度可靠的数据传输机制。基本的物理层包括两个单工通道,即传输对和接收对。这个传输对和接收对一起被称为一个信道。2.5 Gb/s 的初始速度提供了在每个PCI Express 信道上每个方向上大约250 MB/s 标准带宽。一旦考虑协议头,这其中大约200 MB/s 由设备用来传输数据。这一速率是大多数典型 PCI 设备的 2 番到 4 番。而且不同于 PCI 的是,只要总线带宽在设备之间共享,每一个设备都 具有此带宽。 [page]
物理层
基本的PCI Express 链路包括两个低电压的AC 耦合差分信号对(一个传输对和一个接收对),如图3所示。物理链路层信号使用一个去加重(de-emphasis )策略来减少符号间干扰,从而提高了数据完整性。数据时钟通过使用 8b/10b 的解码策略来嵌入,从而到达极高的数据传输率。初始的信号发生频率是每个方向 2.5 Gb/s (生成1个信号) 而且它将会随着硅工艺的提高而增加至每个方向10 Gb/s(信号在铜线中传输可能实现的最大速率)。两个链路层的 PCI Express 代理在物理层上传输数据包。
图3 PCI Express 物理连接图一个PCI Express 链路层的带宽可能通过增加信号对形成多个信道而线性增长。物理层提供 x1, x2, x4, x8, x12, x16 和x32 信道宽度,理论上它将输入的数据包在这些信道上分配。使用 8b/10b 编码方式,每一个字节在这些信道上传输。数据的分拆和整合对于其他层来说是透明的。在初始化阶段,每个PCI Express 链路通过链路两端代理的信道宽度的匹配和频率操作来建立。在这其中没有固件和操作系统软件的参与。PCI Express 体系结构提供了将来通过速度升级和高级编码技术所带来的性能提升。将来的速度、编码技术或者媒介仅仅会影响物理层。
在PCI Express 中使用不同的信道宽度需要用户注意扩展板要求的带宽以及与母板提供的带宽相匹配。除了图形卡以外(通常是X16 ),许多早期的PCI Express 扩展板使用的 X1 的宽度。随着更高的带宽要求,越来越多的板卡将使用更宽的带宽。早期的PCI Express 计算机提供一个X16 的连接器以及一些X1 、X4 、X8 插槽的组合,这由计算机面向的客户所决定。PCI Express 允许在不匹配的信道宽度上进行一些交互操作,这取决于不匹配的方向。在一个较小宽度的连接器上使用更大宽度的扩展板卡是向下插入。例如,利用PCI ,您可以在一个32 位的插槽上插入一个64 位的PCI 板卡。
然而,在 PCI Express 中,向下插入在物理上被扩展板卡和连接器所阻止。另一中不匹配在一个较大的连接器上使用一个较小的扩展板卡是向上插入。向上插入是允许的,但是会受到限制在这种配置下,母板厂商需要支持仅在X1 数据率上的扩展板卡,从而浪费了在具有更快接口速率的扩展板卡上的投资。无论一个特定的母板在向上插入配置时能否在全速率时处理一个扩展板卡,都必须在每种情况下向母板生产商确认。例如,一些母板可以在一个X4 的扩展板卡插入一个X8 或X1 的插槽时,以全速率(X4 )进行处理,然而来自同一厂商的其他母板可能仅以X1 的速率运行。在一个母板既带有集成图形控制器(板载)又带有一个 X16 的 PCI Express 插槽以用于将来图形扩展的情况下,通常不可能在板载图形卡使能的同时使用那个 X16 的插槽。
数据链路层
链路层的主要作用就是保证数据包在 PCI Express 链路上的可靠传输。链路层负责数据完整性并向处理层的数据包添加序列号和循环冗余校验,如图4所示。大部分数据包在处理层初始化。一个基于优先数的、流量控制的协议保证了数据包仅在另一端具有接收这个数据包的缓冲区情况下才能传输,这样就去除了任何数据包的请求以及由于资源限制而引起的总线带宽浪费。链路层会自动的重新收发一个被标记为损坏的数据包。
处理层
处理层接收软件层的读和写请求,并创建请求数据包发送至链路层。所有的请求都被分段的处理而且一些请求包需要一个响应包。处理层也从链路层接收响应数据包并且将它与原先的软件请求相匹配。每一个数据包都具有一个唯一的标识,使得响应包能够指向正确的源。数据包的格式提供了32 位的存储地址和扩展的64 位地址。数据包也具有诸如“无侦听”、“灵活排序”“优先级”等属性,这可能用于将这些数据包在I/O 子系统中以最优的路径传输。
处理层提供4 个地址空间3 个PCI 地址空间(内存、I/O 和配置)和消息空间。PCI 2.2 引入了另一种广播系统中断的方式称为消息信号中断(MSI )。作为PCI 2.2 系统中一种可选的性能, 这里使用了一种特殊格式的内存写处理替代硬连接的边带信号。PCI Express 技术指标重新使用了MSI 概念以作为一种主要的中断处理方式,并且使用了消息空间来接收所有的优先的边带信号来作为带内信号,例如中断、电源管理请求,和复位。其它PCI 2.2 技术指标中的“特殊周期”,例如中断确认,也被处理成带内消息。您可以将 PCI Express 消息视为“虚拟的线”,因为他们的作用是消除当前平台上所使用的各种边带信号。
软件层
软件兼容性对于 PCI Express 是极为重要的。软件兼容性有两个方面初始化(或者列举)和运行时刻。PCI 具有一个功能强大的初始化模式,其中操作系统可以发现所有当前添加的硬件设备然后分配系统资源,例如内存、I/O 空间和中断,从而创建一个优化的系统环境。PCI 配置空间和I/O 设备可编程能力是PCI Express 体系结构中保持不变的重要概念。PCI 所使用的运行时刻软件模式是一个加载-存储、共享内存的模式,它在PCI Express 体系结构中得以保持以使得所有现有的软件能够无需改变即可执行。新的软件也可以利用一些PCI Express 最新的先进特性,例如高级开关(本文并未述及)。