PCI Express
2010-07-22 08:52:04 阿炯

PCI Express,简称PCIe或称PCI-Ex,是PCI电脑总线的一种,它沿用了现有的PCI编程概念及通讯标准,但建基于更快的序列通讯系统。英特尔是该介面的主要支持者。PCI Express仅应用于内部互连。由于PCI Express是基于现有的PCI系统,只需修改物理层而无须修改软件就可将现有PCI系统转换为PCI Express。PCI Express拥有更快的速率,以取代几乎全部现有的内部总线(包括AGP和PCI)。Intel希望将来能用一个PCI Express控制器和所有外设交流,取代现有的南桥/北桥方案。


除此之外,PCIe设备能够支持热拔插以及热交换特性,目前支持的三种电压分别为+3.3V、3.3Vaux以及+12V。考虑到现在显卡功耗的日益增加,PCIe而后在规范中改善了直接从插槽中取电的功率限制,×16的最大提供功率一度达到了75W,相对于AGP 8X接口有了很大的提升。

PCIe保证了兼容性,支持PCI的操作系统无需进行任何更改即可支持PCIe总线。这也给用户的升级带来方便。由此可见,PCIe最大的意义在于它的通用性,不仅可以让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可以用于连接图形处理器,这样整个I/O系统重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。



PCI Express的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16(X2模式将用于内部接口而非插槽模式)。较短的PCI Express卡可以插入较长的PCI Express插槽中使用。PCI Express接口能够支持热拔插,这也是个不小的飞跃。PCI Express卡支持的三种电压分别为+3.3V、3.3Vaux以及+12V。用于取代AGP接口的PCI Express接口位宽为X16,将能够提供5GB/s的带宽,即便有编码上的损耗但仍能够提供4GB/s左右的实际带宽,远远超过AGP 8X的2.1GB/s的带宽。

PCI Express规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的需求。例如,PCI Express X1规格支持双向数据传输,每向数据传输带宽250MB/s,PCI Express X1已经可以满足主流声效芯片、网卡芯片和存储设备对数据传输带宽的需求,但是远远无法满足图形芯片对数据传输带宽的需求。 因此,必须采用PCI Express X16,即16条点对点数据传输通道连接来取代传统的AGP总线。PCI Express X16也支持双向数据传输,每向数据传输带宽高达4GB/s,双向数据传输带宽有8GB/s之多,相比之下,目前广泛采用的AGP 8X数据传输只提供2.1GB/s的数据传输带宽。

尽管PCI Express技术规格允许实现X1(250MB/秒),X2,X4,X8,X12,X16和X32通道规格,但是依目前形式来看,PCI Express X1和PCI Express X16将成为PCI Express主流规格,同时芯片组厂商将在南桥芯片当中添加对PCI Express X1的支持,在北桥芯片当中添加对PCI Express X16的支持。除去提供极高数据传输带宽之外,PCI Express因为采用串行数据包方式传递数据,所以PCI Express接口每个针脚可以获得比传统I/O标准更多的带宽,这样就可以降低PCI Express设备生产成本和体积。另外,PCI Express也支持高阶电源管理,支持热插拔,支持数据同步传输,为优先传输数据进行带宽优化。

不同规格
PCI Express的规范主要是为了提升电脑内部所有数据传输的速度,因此带宽有多种不同规格标准,其中PCI Express x16是专有显示卡所设计的部分。AGP的资料传输效率最高为2.1GB/s,不过对上PCI Express x16的8GB/s,很明显的就分出胜负,但8GB/s只有指资料传输的理想值,并不是使用PCI Express介面的显示卡,就能够有突飞猛进的效能表现,实际的测试数据上并不会有这么大的差异存在。

PCI Express 总线性能
PCI Express
版本
推出Line
编码
原始
传输率
带宽(每个方向)
×1×2×4×8×16
1.020038b/10b2.5 GT/s250 MB/s0.50 GB/s1.0 GB/s2.0 GB/s4.0 GB/s
2.020078b/10b5.0 GT/s500 MB/s1.0 GB/s2.0 GB/s4.0 GB/s8.0 GB/s
3.02010128b/130b8.0 GT/s984.6 MB/s1.97 GB/s3.94 GB/s7.88 GB/s15.8 GB/s
4.02017128b/130b16.0 GT/s1969 MB/s3.94 GB/s7.88 GB/s15.75 GB/s31.5 GB/s
5.02019NRZ 128b/130b32.0 GT/s3938 MB/s7.88 GB/s15.75 GB/s31.51 GB/s63.0 GB/s
6.02021PAM4 & FEC 128b/130b64.0 GT/s7877 MB/s15.75 GB/s31.51 GB/s63.02 GB/s126.03 GB/s
特点和长处
PCI Express总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式,点对点意味着每一个PCI Express设备都拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响,而对于过去PCI那种共享总线方式,PCI总线上只能有一个设备进行通信,一旦PCI总线上挂接的设备增多,每个设备的实际传输速率就会下降,性能得不到保证。现在,PCI Express以点对点的方式处理通信,每个设备在要求传输数据的时候各自建立自己的传输通道,对于其他设备这个通道是封闭的,这样的操作保证了通道的专有性,避免其他设备的干扰。

在传输速率方面,PCI Express总线利用串行的连接特点将能轻松将数据传输速度提到一个很高的频率,达到远超出PCI总线的传输速率。PCI Express的接口根据总线位宽不同而有所差异,包括x1、x4、x8以及x16(x2模式将用于内部接口而非插槽模式),其中X1的传输速度为 250MB/s,而X16就是等于16倍于X1的速度,即是4GB/s。与此同时,PCI Express总线支持双向传输模式,还可以运行全双工模式,它的双单工连接能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似。因此连接的每个装置都可以使用最大带宽,PCI Express接口设备将有着比PCI设备优越的多的资源可用。

除了这些,PCI Express设备能够支持热拔插以及热交换特性,支持的三种电压分别为+3.3V、3.3Vaux以及+12V。考虑到现在显卡功耗的日益上涨,PCI Express而后在规范中改善了直接从插槽中取电的功率限制,16x的最大提供功率达到了70W,比AGP 8X接口有了很大的提高。基本可以满足未来中高端显卡的需求。这一点可以从AGP、PCI Express两个不同版本的6600GT上就能明显地看到,后者并不需要外接电源。

可以看到PCI Express只是南桥的扩展总线,它与操作系统无关,所以也保证了它与原有PCI的兼容性,也就是说在很长一段时间内在主板上PCI Express接口将和PCI接口共存,这也给用户的升级带来了方便。由此可见,PCI Express最大的意义在于它的通用性,不仅可以让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可以用于连接图形芯片,这样,整个 I/O系统将重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。PCI Express已经为PC的未来发展重新铺设好了路基,下面就要看PCI Express产品的应用情况了。

PCI Express的硬件协议
PCIe 的连接是建立在一个双向的序列的(1-bit)点对点连接基础之上,这称之为“传输通道”。与PCI 连接形成鲜明对比的是PCI是基于总线控制,所有设备共同分享的单向32位并行总线。PCIe是一个多层协议,由一个对话层,一个数据交换层和一个物理层构成。物理层又可进一步分为逻辑子层和电气子层。逻辑子层又可分为物理代码子层(PCS)和介质访问控制子层(MAC)。

物理层
于使用电力方面,每组流水线使用两个单向的低电压微分信号(LVDS) 合计达到2.5兆波特。传送及接收不同数据会使用不同的传输通道,每一通道可运作四项资料。两个PCIe设备之间的连接成为“链接”,这形成了1组或更多的传输通道。各个设备最少支持1传输通道(x1)的链接。也可以有2,4,8,16,32个通道的链接。这可以更好的提供双向兼容性。(x2模式将用于内部接口而非插槽模式)PCIe卡能使用在至少与之传输通道相当的插槽上(例如x1接口的卡也能工作在x4或x16的插槽上)。一个支持较多传输通道的插槽可以建立较少的传输通道(例如8个通道的插槽能支持1个通道)。PCIe设备之间的链接将使用两设备中较少通道数的作为标准。一个支持较多通道的设备不能在支持较少通道的插槽上正常工作,例如x4接口的卡不能在x1的插槽上正常工作,但它能在x4的插槽上只建立1个传输通道(x1)。PCI- Express卡能在同一数据传输通道内传输包括中断在内的全部控制信息。这也方便了与PCI的兼容。多传输通道上的数据传输采取交叉存取,这意味着连续字节交叉存取在不同的通道上。这一特性被称之为“数据条纹”,需要非常复杂的硬件支持连续数据的同步存取,也对链接的数据吞吐量要求极高。由于数据填充的需求,数据交叉存取不需要缩小数据包。与其它高速数传输协议一样,时钟信息必须嵌入信号中。在物理层上,PCIe采用常见的8B/10B代码方式来确保连续的1和0字符串长度符合标准,这样保证接收端不会误读。编码方案用10位编码比特代替8个未编码比特来传输数据,占用20%的总带宽。有些协议(如 SONET) 使用另外的编码结构如“不规则”在数据流中嵌入时钟信息。PCIe的特性也定义了一种“不规则化”的运算方法,但这种方法与SONET完全不同,它的方法主要用来避免数据传输过程中的数据重复而出现数据散射。第一代PCIe采用2.5兆位单信号传输率,PCI-SIG计划在未来版本中增强到5~10兆位。

数据链接层
数据链接层采用按序的交换层信息包(Transaction Layer Packets,TLPs),是由交换层生成,按32位循环冗余校验码(CRC, 本文中用LCRC)进行数据保护,采用著名的协议(Ack and Nak signaling)的信息包。TLPs能通过LCRC校验和连续性校验的称为Ack(命令正确应答);没有通过校验的称为Nak(没有应答)。没有应答的TLPs或者等待超时的TLPs会被重新传输。这些内容存储在数据链接层的缓存内。这样可以确保TLPs的传输不受电子噪音干扰。
Ack和Nak信号由低层的信息包传送,这些包被称为数据链接层信息包(Data Link Layer Packet,DLLP)。DLLP也用来传送两个互连设备的交换层之间的流控制信息和实现电源管理功能。

交换层
PCI Express采用分离交换(数据提交和应答在时间上分离),可保证传输通道在目标端设备等待发送回应信息传送其它数据信息。它采用了可信性流控制。这一模式下,一个设备广播它可接收缓存的初始可信信号量。链接另一方的设备会在发送数据时统计每一发送的TLP所占用的可信信号量,直至达到接收端初始可信信号最高值。接收端在处理完毕缓存中的TLP后,它会回送发送端一个比初始值更大的可信信号量。可信信号统计是定制的标准计数器,这一算法的优势,相对于其他算法,如握手传输协议等,在于可信信号的回传反应时间不会影响系统性能,因为如果双方设备的缓存足够大的话,是不会出现达到可信信号最高值的情况,这样发送数据不会停顿。第一代PCIe标称可支持每传输通道单向每秒250兆字节的数据传输率。这一数字是根据物理信号率2500兆波特除以编码率(10位/ 每字节)计算而得。这意味着一个16通道(x16)的PCIe卡理论上可以达到单向250*16=4000兆字节/秒(3.7G兆字节/每秒)。实际的传输率要根据数据有效载荷率,即依赖于数据的本身特性,这是由更高层(软件)应用程序和中间协议层决定。PCI Express与其它高速序列连接系统相似,它依赖于传输的鲁棒性(CRC校验和Ack算法)。长时间连续的单向数据传输(如高速存储设备)会造成>95%的PCIe通道数据占用率。这样的传输受益于增加的传输通道,但大多数应用程序如USB或以太网络控制器会把传输内容拆成小的数据包,同时还会强制加上确认信号。这类数据传输由于增加了数据包的解析和强制中断,降低了传输通道的效率。这种效率的降低并非只出现在PCIe上。

制式标准
半高卡、微型卡: 代替Mini PCI卡 (支持x1 PCIe, USB 2.0和SMBus总线接口) 快速卡: 类似PCMCIA接口标准(支持x1 PCIe,USB 2.0;支持热插拔) 先进TCA卡: 代替CompactPCI卡。

竞争协议

基于高速序列构架产生了很多传输标准。包括HyperTransport,InfiniBand,RapidIO和StarFabric等等。这些均有业界的不同企业支持,背后也都有大量的资金投入标准的研究开发,所以每一标准都声称自己与众不同,独占优势。主要的差异在于可扩展性、灵活性与反应时间、单位成本的取舍平衡各不相同。其中的一个例子是在传输包上增加一个复杂的头信息以支持复杂路由传输(PCI Express不支持这种方式)。这样的信息增加降低了接口的有效带宽也使传输更复杂,但是相应创造了新的软件支持此功能。这种架构下需要软件追踪网络拓扑结构的变化以实现系统支持热插拔。InfiniBand 和 StarFabric 标准即能实现这以功能。另一个例子是缩小信息包以减少反应时间。较小的信息包意味着包头占用了包的更大百分比,这样又降低了有效带宽。能实现此功能的标准是RapidIO 和HyperTransport。PCI Express取中庸之道,定位于设计成一种系统互连接口(总线)而非一种设备接口或路由网络协议。另外为了针对软件透明,它的设计目标限制了它作为协议,也在某种程度上增加了它的反应时间。

应用前景
PCI Express已近乎称为新的个人电脑主板标准。关于此有不少评论,但最基本的原因是它对于软件开发者完全透明:为PCI所设计的操作系统可以不做任何代码修改来启动PCI Express设备;其二,它能增强系统性能,还有强有力的品牌认知。大部分新生产的ATi或nVidia显卡都使用了PCI Express标准。nVidia在它新开发的可扩展链接接口(Scalable Link Interface,SLI,即双显卡)上采用了PCIe的高速数据传输,这使得两块相同芯片组显卡可同时工作于一台电脑之上。ATi公司也基于PCIe 开发了一种含两个GPU的显卡,称为交叉火力(Crossfire)。快速卡(ExpressCard)刚刚出现在笔记本电脑上,由于大部分笔记本电脑仅有一个插槽,目前无法将现有的Cardbus接口完全淘汰,升级成新的快速卡插槽。台式机就没有这种问题,因为它的多个插槽可以同时支持PCI Express和老的PCI。

最新版本:6.0
PCIe 6.0正式于2021年12月发布,x16带宽单工增至256GB/s。PCI-SIG组织宣布PCIe 6.0规范标准v1.0版本正式发布完工。延续了惯例,带宽速度继续增倍,x16下可达128GB/s(单向),由于PCIe技术允许数据全双工双向流动,因此双向总吞吐量就是256GB/s。按计划,标准公布12~18个月后将有商用案例出现,大概就是2023年,应该服务器平台先上。回到技术本身,PCIe 6.0被认为是PCIe问世近20年以来变化最大的一次。坦率来说,PCIe 4.0/5.0都是对3.0的小修小改,比如依然采用基于NRZ(Non-Return-to-Zero)的128b/130b编码。

PCIe 6.0则改用PAM4脉冲调幅信令,1b/1b编码,单个信号就有能四种编码(00/01/10/11)状态,比之前翻番,允许承载最高30GHz频率。不过由于PAM4信号比NRZ脆弱,所以配套上马了FEC前向纠错机制,纠正链路中的信号错误,保障数据完整性。除了PAM4和FEC,PCIe 6.0的最后一项主要技术就是在逻辑层使用FLIT(流量控制单元)编码。PAM4、FLIT都不算新技术,在200G+的超高速以太网早已应用,其中PAM4没能大规模推广的原因在于物理层成本太高,PCIe 6.0依然保持了向下兼容。Rambus全球首个发布了完全符合PCIe 6.0的控制器,支持全部新特性,主要面向高性能计算、数据中心、人工智能与机器学习、汽车、物联网、航空等高精尖领域。该控制器支持PCIe 6.0 64GT/s传输数据率,x1通道即可带来8GB/s的单向物理带宽(相当于PCIe 4.0 x4),x16则高达256GB/s,双向就是512GB/s。当然全新的PAM4脉冲调制也是必须有的,编码状态翻番到4个,最高可承载30GHz频率,而且加入了FEC(前向纠错),可纠正信号错误、保证数据完整性。其他新特性:
支持固定尺寸FLIT(流量控制单元),确保高带宽效率
内部数据通道基于最大链接速度和带宽自动调节(256/512/1024比特),优化吞吐
支持端点、启动端口、双模、切换端口配置
集成IDE(完整数据加密),优化性能,监视和保护链接抵御物理攻击
向下兼容PCIe 5.0/4.0/3.1/3.0

不过Rambus没有透露何时出货PCIe 6.0控制器。


PCI-SIG 已于2023年6月发布 PCI Express 7.0 的第一个审查草案 “v0.3”,计划在 2025 年发布完整的规范。PCIe 7.0 规范旨在支持新兴应用,例如 800 G 以太网、AI/ML、云和量子计算,和数据密集型市场,如超大规模数据中心、高性能计算 (HPC)、边缘计算和军事/航空航天。从草案的内容来看, PCI Express 7.0 将能够通过 PCIe x16 提供 128 GT/s 的数据速率和高达 512GB/s 的双向数据速率。 PCI Express 7.0 依赖 PAM4 信号,可大幅提高电源效率,并继续保持与早期 PCIe 版本的向后兼容性。

现在市场主流还是 PCIE 3.0 和 4.0 ,距离全面推出 7.0 版本大概还需要四到五年左右的时间。



该文章最后由 阿炯 于 2023-06-20 12:54:03 更新,目前是第 3 版。