与PCI总线不同,PCIe总线运用端到端的衔接方法,在一条PCIe链路的两头只能各衔接一个设备,这两个设备互为是数据发送端和数据接纳端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接纳端接纳数据时也运用这些层次。PCIe总线运用的层次结构与网络协议栈较为相似。
4.1.1端到端的数据传递
PCIe链路运用“端到端的数据传送方法”,发送端和接纳端中都含有TX(发送逻辑)和RX(接纳逻辑),其结构如图4‑1所示。
由上图所示,在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-间隔很近并且信号幅值持平、极性相反。这两根线与地线间耦合电磁场的幅值持平,将彼此抵消,因而差分信号对外界的电磁搅扰较小。当然差分信号的缺陷也是清楚明了的,一是差分信号运用两根信号传送一位数据;二是差分信号的布线相对严厉一些。
PCIe链路能够由多条Lane组成,现在PCIe链路能够支撑1、2、4、8、12、16和32个Lane,即×1、×2、×4、×8、×12、×16和×32宽度的PCIe链路。每一个Lane上运用的总线频率与PCIe总线运用的版别相关。
第1个PCIe总线标准为V1.0,之后依次为V1.0a,V1.1,V2.0和V2.1。现在PCIe总线的最新标准为V2.1,而V3.0正在开发过程中,估计在2010年发布。不同的PCIe总线标准所界说的总线频率和链路编码方法并不相同,如表4‑1所示。
表4‑1PCIe总线标准与总线频率和编码的联络
PCIe总线标准 |
总线频率[1] |
单Lane的峰值带宽 |
编码方法 |
1.x |
1.25GHz |
2.5GT/s |
8/10b编码 |
2.x |
2.5GHz |
5GT/s |
8/10b编码 |
3.0 |
4GHz |
8GT/s |
128/130b编码 |
如上表所示,不同的PCIe总线标准运用的总线频率并不相同,其运用的数据编码方法也不相同。PCIe总线V1.x和V2.0标准在物理层中运用8/10b编码,即在PCIe链路上的10 bit中含有8 bit的有用数据;而V3.0标准运用128/130b编码方法,即在PCIe链路上的130 bit中含有128 bit的有用数据。
由上表所示,V3.0标准运用的总线频率尽管只要4GHz,可是其有用带宽是V2.x的两倍。下文将以V2.x标准为例,阐明不同宽度PCIe链路所能供给的峰值带宽,如表4‑2所示。
PCIe总线的数据位宽 |
×1 |
×2 |
×4 |
×8 |
×12 |
×16 |
×32 |
峰值带宽(GT/s) |
5 |
10 |
20 |
40 |
60 |
80 |
160 |
由上表所示,×32的PCIe链路能够供给160GT/s的链路带宽,远高于PCI/PCI-X总线所能供给的峰值带宽。而行将推出的PCIe V3.0标准运用4GHz的总线频率,将进一步进步PCIe链路的峰值带宽。
在PCIe总线中,运用GT(Gigatransfer)核算PCIe链路的峰值带宽。GT是在PCIe链路上传递的峰值带宽,其核算公式为总线频率×数据位宽×2。
在PCIe总线中,影响有用带宽的要素有许多,因而其有用带宽较难核算,这部分内容详见第8.4.1节。尽管如此,PCIe总线供给的有用带宽仍是远高于PCI总线。PCIe总线也有其缺点,其间最杰出的问题是传送延时。
PCIe链路运用串行方法进行数据传送,然而在芯片内部,数据总线仍然是并行的,因而PCIe链路接口需求进行串并转化,这种串并转化将产生较大的延时。除此之外PCIe总线的数据报文需求通过业务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。本书将在第8.4节具体评论PCIe总线的延时与带宽之间的联络。
在根据PCIe总线的设备中,×1的PCIe链路最为常见,而×12的PCIe链路很少呈现,×4和×8的PCIe设备也不多见。Intel一般在%&&&&&%H中集成了多个×1的PCIe链路用来衔接低速外设,而在MCH中集成了一个×16的PCIe链路用于衔接显卡控制器。而PowerPC处理器一般能够支撑×8、×4、×2和×1的PCIe链路。
PCIe总线物理链路间的数据传送运用根据时钟的同步传送机制,可是在物理链路上并没有时钟线,PCIe总线的接纳端含有时钟康复模块CDR(Clock Data Recovery),CDR将从接纳报文中提取接纳时钟,然后进行同步数据传递。
值得注意的是,在一个PCIe设备中除了需求从报文中提取时钟外,还运用了REFCLK+和REFCLK-信号对作为本地参阅时钟,这个信号对的描绘见下文。
4.1.2PCIe总线运用的信号
PCIe设备运用两种电源信号供电,分别是Vcc与Vaux,其额外电压为3.3V。其间Vcc为主电源,PCIe设备运用的首要逻辑模块均运用Vcc供电,而一些与电源办理相关的逻辑运用Vaux供电。在PCIe设备中,一些特别的寄存器一般运用Vaux供电,如Sticky Register,此刻即便PCIe设备的Vcc被移除,这些与电源办理相关的逻辑状况和这些特别寄存器的内容也不会产生改动。
在PCIe总线中,运用Vaux的首要原因是为了下降功耗和缩短体系康复时间。由于Vaux在大都状况下并不会被移除,因而当PCIe设备的Vcc康复后,该设备不必从头康复运用Vaux供电的逻辑,然后设备能够很快地康复到正常作业状状况。
PCIe链路的最大宽度为×32,可是在实践运用中,×32的链路宽度很少运用。在一个处理器体系中,一般供给×16的PCIe插槽,并运用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信号线组成32对差分信号,其间16对PETxx信号用于发送链路,别的16对PERxx信号用于接纳链路。除此之外PCIe总线还运用了下列辅助信号。