PCI Express标准概述

1. 概述
本文档主要介绍获得广泛成功的PCI总线,以及更高性能的新一代I/O互联技术-PCI Express。PCI Express即将成为多种未来计算平台的标准局部I/O总线。本白皮书还介绍了PC总线技术的发展史、PCI Express的物理及软件层、PCI Express的优势,以及该技术即将对测量及自动化系统产生的影响。

2. PC的历史
PCI总线诞生于20世纪90年代初,对当时一系列用于PC的I/O总线产生了统一效果,包括VESA局部总线、EISA、ISA和微通道(如图1所示)。最初,PCI总线仅用于芯片间的互联,或替代碎化的ISA总线。早年间,33 MHz的PCI总线能很好地满足主流外设的带宽需求。现在,情况却不一样了。处理器及内存频率大幅增长,而处理器速度的增长速度尤其惊人。在此期间,PCI总线的频率从33 MHz增长到了66 MHz,而处理器速度则从33 MHz增长到了3 GHz。新兴I/O技术,如千兆以太网和IEEE 1394B,几乎可独占全部可用PCI总线带宽,成为总线上唯一的设备。

图1. PC总线的发展

图1. PC总线的发展

3. PCI总线的历史及概述
相比于之前的总线,PCI总线具有一些优势。其中最重要的优势包括:处理器的独立性、缓冲隔离、总线控制以及真正的即插即用操作。缓冲隔离彻底将CPU局部总线从PCI总线隔离出来(从电路和时钟域上)。该功能为系统性能带来两大额外优势:第一,可在PCI总线和CPU总线上运行并行循环;第二,允许增加CPU局部总线频率,无需考虑PCI总线速度和负载。通过总线控制,PCI板卡可通过仲裁过程访问PCI总线,并直接控制总线传输,无需等待主机CPU服务设备,降低了服务I/O操作导致的整体延迟。最后, 即插即用操作允许自动检测并配置设备,免去了为基地址和DMA中断手动设置开关及跳线(这往往令基于ISA的板卡用户感到头疼)。

4. PCI面临的挑战
虽然PCI成就斐然,但它面临着一系列挑战,包括带宽限制、主机引脚数限制、缺乏实时数据传输服务(如等时数据传输)以及无法满足下一代I/O的要求(如服务质量、电源管理以及I/O虚拟化技术)。

自诞生伊始,PCI规范几经更新,以跟上日益增长的I/O需求。具体内容见表1。

PCI总线
带宽(位)
总线时钟
频率(MHz)
带宽(MB/s) 目标市场
32 33 132 桌面/移动
32 66 264 服务器
64 33 264 服务器
64 66 512 服务器

表1. PCI带宽及市场使用

受协议开销及总线拓扑结构影响,PCI总线的可用带宽及其衍生带宽可能远小于理论带宽。总线上的全部设备分享PCI总线的可用带宽,导致加入更多设备时,每台设备的可用带宽降低。

由于PCI时钟频率已不适用于特定应用程序,PCI的衍生物,如PCI-X以及高级图形端口(AGP),尝试通过增大总线频率以缓解带宽压力。增大频率的副作用之一是会减少总线可连线的距离,并降低总线收发器可驱动的连接器数量。这催生了将PCI总线分成多个部分的想法。每部分都需要一个完整的PCI-X总线,从主机驱动芯片连线至每个活动插槽。例如,64位PCI-X每部分需要150引脚。显然,这种做法是不经济的,而且对连线、板层数及芯片封装引脚都造成了限制。该额外花费仅适合带宽至关重要的情况,例如在服务器中。

数据采集、波形生成应用程序及多媒体应用程序(包括传输音频和视频),要求有保证的带宽和确定性的延迟,否则用户将遭遇故障。最初的PCI规范未涉及上述内容,因为开发规范时此类应用程序还不普遍。如今的等时数据传输,如高分辨率的未压缩视频及音频,向I/O系统提出了等时传输能力的需求。等时传输的副作用之一是,局部PCI Express板卡用于缓冲的内存比典型PCI板卡用于最小化可变带宽问题的内存大大减少。

最后,下一代I/O要求以下性能:服务测量及电源管理、增强数据完整性以及允许选择性地关闭系统设备-随着现代PC的耗电持续增加,这是一项重要的考量。虚拟通道允许数据通过虚拟路由;即使其他通道被大量操作阻塞,也可进行数据传输。某些功能需要超出传统PCI要求的软件控制,且仅在操作系统和设备驱动支持时可用。

2004年诞生的下一代PCI总线-PCI Express即将应对这些挑战。现在,大多数PC出厂时都带有PCI和PCI Express插槽。不用多久,PCI总线就会彻底被淘汰。

5. PCI Express架构
PCI Express架构分为不同的层级,如图2所示。与PCI寻址模型的兼容性(一种拥有平坦地址空间的加载-存储架构)确保所有现存应用程序及驱动可照常运行。PCI Express的配置使用PCI即插即用规范中定义的标准机制。软件层生成读取和写入请求,通过基于数据包的分割式传输协议,由传输层传输至I/O设备。链接层添加序列号和CRC至上述数据包,创建高度可靠的数据传输机制。基础物理层包括2个单向通道,作为一个传输对和一个接收对。传输对和接收对统称为通道。2.5 Gb/s的初速度使得每条PCI Express通道在各个方向上具有约250 MB/s的额定带宽。考虑到开销,设备可用于数据传输的带宽约为200 MB/s。该速率是多数经典PCI板卡的2到4倍。设备需分享PCI总线的带宽,而PCI Express可将全部可用带宽提供给每台设备。

图2. PCI Express分层架构

图2. PCI Express分层架构

物理层
基础PCI Express链接包含两个低电压交流耦合差分信号对(一个传输对和一个接收对),如图3所示。物理链接信号使用去加重方案,以减少码间干扰,从而提升数据完整性。内置的数据时钟使用8b/10b编码方案,以获得极高的数据速率。各方向上的初始信令频率为2.5 Gb/s(第一代信令),并且随着硅技术的进步,该数据预计将达到10 Gb/s(信号在铜中可达到的最大值)。物理层在2个PCI Express代理的链接层之间传输数据包。

图3. 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通道宽度。随着带宽要求的提高,越来越多的板卡采用更大的宽度。根据目标市场对计算机的不同需求,x1、x4、x8及x16插槽的组合也有所变化。PCI Express允许不匹配的通道宽度之间进行互通(取决于不匹配的方向)。若在较小宽度的连接器中使用较大宽度的扩展板卡,则称为下插。例如,使用PCI时,可在32位插槽上插入64位PCI板卡。而使用PCI Express时,扩展板卡和连接器的设计就从物理上阻止了下插操作。另一种不匹配,即在较大宽度的连接器中使用较小宽度的扩展板卡,称为上插。允许上插的前提是,要求母板供应商仅支持x1数据速率的扩展板卡,但是,若扩展板卡具备较高速度,则可能浪费了这种投资。特定母板是否能在上插时以全数据速率带动扩展板卡,必须在具体情况下与母板制造商确认。例如,一些母板可在插入x8或x16插槽时,以x4数据速率处理x4的扩展板卡,而同一供应商的其他母板可能只可以x1速率运行。若母板同时具备集成(板载)图形控制器和用于未来图形扩展的x16 PCI Express插槽,通常不可在启用板载图形的同时使用该x16插槽。

数据链接层
链接层的主要作用是确保可靠地传输PCI Express链接中的数据包。链接层负责保证数据完整性,并添加序列号及CRC至传输层,如图4所示。大多数数据包在传输层进行初始化。基于信誉的流控制协议确保仅当另一端存在可用缓冲区时才传输数据包,从而消除数据包重试,以及由资源限制带来的总线带宽浪费。链接层自动重试标记为损坏的数据包。

图4. 数据链接层增加数据完整性功能。

图4. 数据链接层增加数据完整性功能。

传输层
传输层从软件层接收读取和写入请求,并创建请求数据包以传输至链接层。所有请求都被实现为分割式传输,而一些请求数据包需要回复数据包。传输层也从链接层接收回复数据包,并将该数据包与原始软件请求相匹配。每个数据包拥有特殊的标识,可使回复数据包找到正确的发出方。数据包格式提供32位内存寻址以及扩展64位内存寻址。数据包的属性还包括:“防窃听”、“松散排序”和“优先级”,可帮助用户在I/O子系统内优化连线数据包。

传输层提供4个地址空间,其中3个是PCI地址空间(内存、I/O和配置),1个是消息空间。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 Express的机器上开机,无需修改。PCI使用的运行时软件模型是一种加载-存储、共享-内存模型,在PCI Express架构内部维护,以允许所有现有软件无需变化就可执行。新软件也可利用PCI Express的某些先进功能,如先进切换(本白皮书未做讨论)。

6. PC架构-现状和未来
2002年的PC架构(具备PCI)
2002年的PC架构对各互联部分存在不同的要求。例如,图形板卡是通过高级图形端口(AGP)接入的,内存桥则是通过一些接口接入I/O桥的,接口包括HubLink,如图5所示。

图5. 2002年的PC架构(具备PCI)(图片来自Intel)

图5. 2002年的PC架构(具备PCI)(图片来自Intel)

具备PCI Express的PC架构
如图6所示,PCI Express通过常用总线架构统一了I/O系统。此外,PCI Express代替了一些用于连接子系统的内部总线。

图6. 实现PCI Express的PC架构(图片来自Intel)

图6. 实现PCI Express的PC架构(图片来自Intel)

7. PCI Express封装
PCI Express具有一系列不同的I/O扩展格式,取决于应用程序所处的平台,如笔记本电脑、桌面电脑或服务器。服务器要求更大的带宽以满足I/O需求,因此具有更多的PCI Express插槽,这些插槽可提供更高的PCI Express通道计数。作为对比,笔记本电脑可在内部使用PCI Express架构,但仅能为中等速度外围设备提供x1通道。

桌面PCI Express扩展插槽
桌面及工作站机器的PCI板卡替代物与当今的PCI板卡具有极为相似的机械结构。该结构是基于板卡边缘连接器和带I/O连接器的固定支架,两者穿过支架并连接至主PWB。母板上的连接器改进了固定功能,确保板卡在振动或运输中不会脱离连接器。板卡边缘连接器具有不用的大小,根据PCI Express通道宽度,可选从x1至x16。图7为带4个插槽的母板-一个PCI Express x16、一个PCI、一个PCI Express和一个PCI-X(从下至上)。图8为一个典型的图形板卡,带一个x16链接,数据传输速率为3.2 GB/s。图9显示的是各种PCI Express连接器的机械结构示意图。

图7. 带4个插槽的母板- PCI Express、PCI、PCI Express x8和PCI-X(从下至上)

图7. 带4个插槽的母板- PCI Express、PCI、PCI Express x8和PCI-X(从下至上)

图8. 带x16接口的图形板卡

图8. 带x16接口的图形板卡

图9. 各种PCI Express连接器的机械结构示意图

图9. 各种PCI Express连接器的机械结构示意图

ExpressCard
ExpressCard标准可让用户轻松添加硬件或媒体至系统。ExpressCard的主要市场是笔记本电脑及小型PC,该类设备的扩展需求较小。ExpressCard模块几乎可随时进行插拔,无需任何工具(而不像用于桌面电脑的传统附加板卡)。ExpressCard技术为桌面及移动电脑用户提供了一致、简单和可靠的方法,将设备接入系统。

ExpressCard技术替代了I/O设备上的常规并行总线,它的两种可缩放、高速串行接口包括:PCI Express和USB 2.0。ExpressCard开发者可使用PCI Express为最高性能应用程序创建模块,或利用USB芯片现有的各种优势。不论模块供应商选择哪种总线技术,终端用户的使用体验是一致的。终端用户无法从外部推断模块使用了哪种总线。

ExpressCard模块有两种标准格式:ExpressCard/34(34 mm宽)和ExpressCard/54 (54 mm宽)。两种模块的厚度都为5 mm,和Type II PC卡相同。标准模块长度为75 mm,比标准PC卡短10.6 mm。ExpressCard/34和ExpressCard/54模块使用相同的连接器接口。

ExpressCard模块的两种型号给系统制造商带来一定的灵活性,早期的模块标准就没有这个优点。ExpressCard/34设备更适用于小型系统,而某些设备无法使用较小体积的ExpressCard/34格式时,可采用更宽的ExpressCard/54模块。图10显示了两种ExpressCard模块的大小,并与PCMCIA CardBus模块进行了对比。更大的ExpressCard/54模块包括SmartCard读卡器、CompactFlash读卡器以及1.8英寸磁盘驱动器。除了能为组件提供更多的空间,ExpressCard/54模块比更小的ExpressCard/34模块散热更多。该特点使得ExpressCard/54适合用于更高性能及初代应用程序。但是,若模块制造商能将应用程序装入更小的模块,它就拥有了可在两种型号的ExpressCard插槽中工作的优势。为增强易用性,ExpressCard/54插槽包含了指导功能,帮助用户轻松地将ExpressCard/34模块插入连接器插槽。值得指出的是,将CardBus卡插入ExpressCard插槽,或将ExpressCard卡插入CardBus插槽,并不会对双方造成损害。

ExpressCard主接口的每个插槽必须包含一条PCI Express通道(x1),每个方向运行的基准数据速率为2.5 Gb/s。这是由PCI Express基本规范1.0a规定的。ExpressCard主接口还必须接受低速、全速和高速USB数据速率。这是由USB 2.0规范规定的。兼容ExpressCard的主平台可同时提供两种接口。根据应用程序需求,ExpressCard模块可使用一个或两个标准接口。

图10. ExpressCard和PCMCIA/CardBus的机械结构对比

图10. ExpressCard和PCMCIA/CardBus的机械结构对比

服务器I/O模块
服务器需要I/O适配器封装能够处理各类项目,例如封闭式机箱适配器移除/插入、集成热插、适配器ESD及操作损伤保护、标准管理接口及功能、适配器降温、单个大容量电源以及减少服务器内I/O足迹。服务器I/O模块(SIOM)规范规定了两种用于I/O适配器的PCI Express模块封装,以提供封闭式机箱安装及移除。该封装还用于原生热插,即在机箱上电时可安装或移除模块,不伤害模块或机箱。两种相同高度和深度格式的区别仅在于宽度或机箱内消耗的插槽空间。单倍宽度模块适用于任意SIOM插槽。双倍宽度模块需要两个相邻的SIOM插槽。

单倍宽度模块最多可有一个x8 PCI Express连接;而双倍宽度模块可提供一个x16连接。(双倍宽度插槽是PCI Express SIOM服务器的可选项。)一种最小管理接口(在所有模块上都是标准,包含一个EEPROM)为主系统提供关于适配器的管理数据。一种可选内部存储接口接收最多4个x1 SAS/SATA端口,以及一个边带接口,用于控制驱动LED。

SIOMs及SIOM机箱对降温有共同的需求。根据该规范,SIOM机箱要求至少为每个插槽提供一个最小气流。SIOMs要求提供一个最小和最大气流电阻,以确保SIOM有确定的气流用于I/O降温,且不为机箱增加散热负载。

8. PCI Express的优势
基于PC的测量及自动化系统多年来一直选择PCI总线,用于插入式扩展板卡。随着PC的进步,PCI总线(以及其并行架构)未随着平台的其他部分一起线性增长。PCI Express在如下5个方面解决了这些问题,并展现优势:

  • 高性能
  • -与带宽联系最紧密,是PCI x1链接的两倍以上,且随着通道的增加线性增长。另一个不会立刻显而易见的好处是,该带宽在每个链接的两个方向上都同时可用。此外,2.5 Gb/s的初始信号速度预计会继续增长,提升未来的速度。

  • I/O简化
  • -简化了各种芯片间及内部用户可访问的总线,如AGP、PCI-X及HubLink。该功能降低了设计的复杂度,并减少了实现的花费。

  • 分层架构
  • -PCI Express建立的架构可适应新技术,且节省了软件投入。从分层架构受益的两个主要方面是物理层(增加了信号速率)和软件兼容性。

  • 下一代I/O
  • -PCI Express通过等时数据传输,为数据采集及多媒体提供了新功能。等时传输提供了服务质量(QOS)保证,通过确定性、基于时间的方法确保按时传输数据。

  • 易用性
  • -PCI Express极大地简化了用户添加及升级系统的难度。IT支持热插拔。此外,PCI Express板卡的各种格式,特别是SIOM和ExpressCard,极大地增强了在服务器和笔记本电脑上添加高性能外设的能力。

    以上特点确保了PC将成为下一代测量及自动化系统更具吸引力的平台。

    9. 词汇表
    8b/10b编码-一种通过嵌入式时钟编码信号的方案。编码有两种目的。第一,确保数据流中有足够的传输用于时钟恢复;第二,0s和1s的数量相等,保持交流耦合系统中的直流平衡。

    高级图形端口(AGP)-PCI总线的更高速度版本,使用不同的连接器。用于满足桌面PC中精密插入式图形卡的带宽需求。

    循环冗赘核对(CRC) -该方法通过向数据包添加一组计算过的数值,以检测及更正数据包中的误码。添加的数值来自于一组原始数据包。

    差分-差分信号使用两根连线,携带相位外180度的信号。其主要优点是降低对噪音的敏感度。

    ExpressCard-包含PCI Express和USB 2.0接口的小型I/O卡。

    工业标准架构(ISA)-1984年为PC引入的总线标准,将XT总线架构扩展至16位。用于连接外设卡至母板。也称为AT总线。

    PICMG-PCI工业计算机制造商组织-该组织的成员公司维护CompactPCI和PCI/ISA的现有规范。

    外设组件互连(PCI)-由Intel设计的高速并行总线,用于连接I/O外设至CPU。

    PCI Express-PCI的革命性版本,维护了PCI软件使用模型,并用高速(2.5 Gb/s)串行总线替代了物理总线,服务多条通道。

    服务器I/O模块(SIOM)-一种用于服务器和工作站应用程序的I/O模块,使用PCI Express进行通信。

    USB 2.0-一种外部差分点对点串行总线,提供最高470 Mb/s的数据速率。USB 2.0是USB 1.1的扩展,使用相同的线缆和连接器。

    文章来源:NI官网