1.PCI-E发展及基础知识

一.什么是PCI-E

    PCI Express是新一代的总线接口。早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的规范,并在2002年完成,对其正式命名为PCI Express。它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。

    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-E发展历史

    话说上世纪80年代处理器的速度是越来越快,早期的ISA并行总线有8位和16位两种模式,时钟频率为8MHz,总线带宽可以达到8MB/s和16MB/s;到88年推出了EISA在兼容ISA的基础上将位宽增加到32位,带宽因此也能达到32MB/s,当时这速率连接386/486之类的处理器已足够;但随着处理器速度越来越快,EISA总线的带宽已经满足不了CPU的需求,CPU外网总线带宽已经成为制约计算机处理能力继续提高的瓶颈。于是在1991年,Intel、IBM、HP、Compaq、DEC等100多家计算机公司成立了PCISIG,联合推出PCI(Peripheral Component Interconnect),92年PCI1.0便Release。

    随着PCI总线的发展,PCI总线又发展到PCI-X(Peripheral Component Interconnect eXtended)。与PCI总线相比,PCI-X总线的位宽未改变,而是将时钟频率进行了提高。PCI-X 1.0的时钟频率有66MHz/100MHz/133MHz,总线带宽分别为:264MB/s,400MB/s和532MB/s(32位),528MB/s,800MB/s和1064MB/s;PCI-X2.0的时钟频率有266MHZ/533MHz/1066MHz,总线带宽分别为1064MB/s、2132MB/s和4264MB/s(32位),3128MB/s,4264MB/s和8512MB/s(64位)。PCI-X与PCI在结构上完全兼容。不过PCI-X出现不就便出现了PCIe,因此在工业界,PCI-X应用远没有PCI和PCIe广泛。
    90年代处理器按照摩尔定律发展,PCI碰到了和ISA一样的问题--赶不上处理器发展速度。想要提高速度,还是并行总线的PCI,要么提升频率要么提升位宽;如果提升频率的话并行信号间的串扰让时序难以收敛,提高位宽的话,信号线数量又大大增加。于是高速的串行总线开始替代并行总线,差分线替代并行线,在2003年的时候PCIe诞生了。下图为PCIe1.0到PCIe5.0的发展概况。

三.PCI-E总线基础知识

1.PCI-E体系结构

    PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统。在不同的处理器系统中,PCIe体系结构的实现方法略有不同。但是在大多数处理器系统中,都使用了RC、Switch和PCIe-to-PCI桥这些基本模块连接PCIe和PCI设备。在PCIe总线中,基于PCIe总线的设备,也被称为EP。

    在下图的结构中,处理器系统首先使用一个虚拟的PCI桥分离处理器系统的存储器域与PCI总线域。FSB总线下的所有外部设备都属于PCI总线域。与这个虚拟PCI桥直接相连的总线为PCI总线0。这种架构与Intel的x86处理器系统较为类似。

2.端到端的差分数据传递

    “端到端的数据传送方式”是PCI-E和PCI最大的差别,PCI是物理层为并行总线传输。PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑)。

    在PCIe总线的物理链路的一个数据通路(Lane)中,由两组差分信号,共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。一个PCIe链路可以由多个Lane组成。

    高速差分信号电气规范要求其发送端串接一个电容,以进行AC耦合。该电容也被称为AC耦合电容。PCIe链路使用差分信号进行数据传送,一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。

    与单端信号相比,差分信号抗干扰的能力更强,因为差分信号在布线时要求“等长”、“等宽”、“贴近”,而且在同层。因此外部干扰噪声将被“同值”而且“同时”加载到D+和D-两根信号上,其差值在理想情况下为0,对信号的逻辑值产生的影响较小。因此差分信号可以使用更高的总线频率。

    此外使用差分信号能有效抑制电磁干扰EMI(Electro Magnetic Interference)。由于差分信号D+与D-距离很近而且信号幅值相等、极性相反。这两根线与地线间耦合电磁场的幅值相等,将相互抵消,因此差分信号对外界的电磁干扰较小。当然差分信号的缺点也是显而易见的,一是差分信号使用两根信号传送一位数据;二是差分信号的布线相对严格一些。

3.PCIe总线的层次结构

    PCIe总线采用了串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。在PCIe总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层。PCIe总线的层次结构如图所示。具体每一层的硬件逻辑后续章节会详细介绍。

    PCIe总线的层次组成结构与网络中的层次结构有类似之处,但是PCIe总线的各个层次都是使用硬件逻辑实现的。在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

(1)事务层

    事务层定义了PCIe总线使用总线事务,其中多数总线事务与PCI总线兼容。这些总线事务可以通过Switch等设备传送到其他PCIe设备或者RC。RC也可以使用这些总线事务访问PCIe设备。

    事务层接收来自PCIe设备核心层的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。

(2)数据链路层

    数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通过数据链路层时,将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK协议保证报文的可靠传递。

    PCIe总线的数据链路层还定义了多种DLLP(Data Link Layer Packet),DLLP产生于数据链路层,终止于数据链路层。值得注意的是,TLP与DLLP并不相同,DLLP并不是由TLP加上Sequence Number前缀和CRC后缀组成的。

(3) 物理层

    物理层是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。PCIe总线的物理层为PCIe设备间的数据通信提供传送介质,为数据传送提供可靠的物理环境。

    物理层是PCIe体系结构最重要,也是最难以实现的组成部分。PCIe总线的物理层定义了LTSSM(Link Training and Status State Machine)状态机,PCIe链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。

4.PCIe链路的扩展

    PCIe链路使用端到端的数据传送方式。在一条PCIe链路中,这两个端口是完全对等的,分别连接发送与接收设备,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。因此PCIe链路必须使用Switch扩展PCIe链路后,才能连接多个设备。使用Switch进行链路扩展的实例如图所示。

 

发布了80 篇原创文章 · 获赞 86 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/weiaipan1314/article/details/104353379