接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(1)
4.1 PCIe总线的基础知识
与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为数据发送端和数据接收端。PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。PCIe总线使用的层次结构与网络协议栈较为类似。
4.1.1 端到端的数据传递
PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑),其结构如图4-1所示:
由上图所示,在PCIe总线的物理链路的一个数据通路(Lane)中,由两组差分信号、共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。一个PCIe链路可以由多个Lane组成。
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-1 PCIe总线规范与总线频率和编码的关系
PCIe总线规范 | 总线频率 | 单Lane的峰值带宽/(GT/s) | 编码方式 |
---|---|---|---|
1.x | 1.25 | 2.5 | 8/10b 编码 |
2.x | 2.5 | 5 | 8/10b 编码 |
3.0 | 4 | 8 | 126/130b 编码 |
如上表所示,不同的PCIe总线规范使用的总线频率并不相同,其使用的数据编码方式也不相同。PCIe总线V1.x和V2.0规范在物理层中使用8/10b编码,即在PCIe链路上的10 bit中含有8 bit的有效数据;而V3.0规范使用128/130b编码方式,即在PCIe链路上的130 bit中含有128 bit的有效数据。
PCIe总线V3.0规范使用的总线频率虽然只有4GHz,但是其有效带宽是V2.x的两倍。下文将以V2.x规范为例,说明不同宽度PCIe链路所能提供的峰值带宽,如表4-2所示:
表4-2 PCIe总线的峰值带宽
PCIe总线的数据位宽 | x1 | x2 | x4 | x8 | x12 | x16 | x32 |
---|---|---|---|---|---|---|---|
峰值带宽/(GT/s) | 5 | 10 | 20 | 40 | 60 | 80 | 160 |
由上表所示,x32的PCIe链路可以提供160GT/s的链路带宽,远高于PCI/PCI-X总线所能提供的峰值带宽。而即将推出的PCIe V3.0规范使用4GHz的总线频率,将进一步提高PCIe链路的峰值带宽。
特别说明:
由于此书年代久远,是十几年之前的书了,因此这部分内容在当时是这样的。但现如今PCIe总线规范早已不止3.0了。具体如下(援引PCIe标准升级历程:PCIe3.0仍是消费市场主流选择,5.0正加速推进):
传输速率和带宽大小是 PCIe 总线的核心性能,围绕这两大性能,PCIe 总线标准持续演进升级,迄今为止该标准已经历了 5 代的更新迭代。按照数据传输技术的发展,处理器I/O 带宽的需求每三年就会倍增,PCIe 也大致按照三年一代的速度更新演进。
- PCIe 1.0 在 2003 年由 PCI-SIG 正式推出相关规范,其通道运行频率为 2.5GHz,相应的数据传输速率为250MB/s;
- PCIe 2.0 规范发布于 2007 年 1 月,相比 PCIe 1.0,PCIe 2.0 的每通道频率翻倍达到了5GHz,相应的传输能力也翻倍,达到了 500MB/s;
- 2010年 PCIe 3.0 规范发出,但受制于当时的技术条件,第三代 PCIe 的效率提升仅 60%;
- PCIe 4.0 规范在第三代发布 7 年后(2017年)正式推出,数据传输速率提升到 2GB/s;
- 由于第四代规范延迟发布,为追赶进度,仅两年后(2019年) PCIe 5.0 推出;
- 2022 年 1 月份第六代版本的规范标准 PCIe 6.0 规范也已正式出台。
PCIe标准升级历程
在PCIe总线中,使用GT(Gigatransfer)计算PCIe链路的峰值带宽。GT是在PCIe链路上传递的峰值带宽,其计算公式为总线频率×数据位宽×2。在PCIe总线中,影响有效带宽的因素有很多,因而其有效带宽较难计算。尽管如此,PCIe总线提供的有效带宽还是远高于PCI总线。PCIe总线也有其弱点,其中最突出的问题是传送延时。
虽然PCIe链路使用串行方式进行数据传送,然而在芯片内部,数据总线仍然是并行的,因此PCIe链路接口需要进行串并转换,这种串并转换将产生较大的延时。除此之外PCIe总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。
在基于PCIe总线的设备中,×1的PCIe链路最为常见,而×12的PCIe链路极少出现,×4和×8的PCIe设备也不多见。Intel通常在ICH(I/O Controller Hub)中集成了多个×1的PCIe链路用来连接低速外设,而在MCH(Memory Controller Hub)中集成了一个×16的PCIe链路用于连接显卡控制器。而PowerPC处理器通常能够支持×8、×4、×2和×1的PCIe链路。
PCIe总线物理链路间的数据传送使用基于时钟的同步传送机制,但是在物理链路上并没有时钟线,PCIe总线的接收端含有时钟恢复模块CDR(Clock Data Recovery),CDR将从接收报文中提取接收时钟,从而进行同步数据传递。
值得注意的是,在一个PCIe设备中除了需要从报文中提取时钟外,还使用了REFCLK+和REFCLK-信号对作为本地参考时钟,这个信号对的描述见下文。
更多内容请看下回。