作为CPU与存储之间的连接通道,PCIe自推出以来始终扮演着重要的作用。随着大数据分析、视频渲染等技术的飞速发展,PCIe6.0标准于去年初正式发布,相比较上一代PCIe 5.0规范,带宽再次翻倍,达到了64 GT / s。
虽说PCIe6.0发布并未引起太多用户的关注,但作为CXL 3.0软件栈协议规范的物理连接承载平台,PCI e 6.0将真正承载起CPU与GPU(AI加速器)、CPU与DPU(智能万卡NIC)、以及CXL内存模块(可以理解为其他CPU DDR内存)的连接,成为异构计算架构下数据交互的高速公路。
PCIe技术,数据交互的高速公路
PCIe总线的前身是PCI(Peripheral Component Interconnect)总线协议,由英特尔于1992年提出,并联合业界合作伙伴成立了名为PCI-SIG (PCI Special Interest Group)(PCI 特殊兴趣组J)的企业联盟,负责PCI总监的标准制定和推广。
PCI提出的目的是简化主板的总线接口,并提高数据传输总线的性能。由于PCI总线跟ISA总线都使用了并行总线设计,所以传输速度会受到影响。此外,PCI总线由于采用了带宽共享机制,因此在高负载下会出现设备之间会抢带宽的现象。最后,由于PCI不支持热插拔,因此也不能更好的支持更换磁盘的操作。
为了解决PCI总线的缺陷,2004年英特尔联合伙伴对PCI技术进行了升级,正式发布了 PCI Express(简称PCIe)总线,并陆续推出了PCIe1.0、PCIe2.0、PCIe3.0、PCIe4.0 、PCIe5.0和PCIe6.0规范,不断的进行带宽优化。
实际上,近两年火爆的CXL技术,其底层就是基于PCIe技术。随着大数据分析、视频渲染等技术的飞速发展,以及异构计算模式的兴起,对于CPU与GPU、CPU与DPU等之间数据交互的带宽提出了更高的要求。于是,PCIe 6.0 标准应运而生。
PCIe6.0规范:更高带宽与更低延迟
与PCIe5.0相比,PCIe6.0的最大亮点在于将带宽翻倍提升至64 GT/s。数据显示,PCIe6.0标准的6路双向传输带宽可达 256GB/s。由于PCIe的系统性能取决于RTT(Round-TripTime)及有效负载大小在支持的标签数量上,因此PCIe6.0变成了基于14位的15,360个标签数量(PCIe 5.0拥有768的标签数量),满足了在RTT较长的情况下也能使系统整体保证高性能的工作状态。
为了降低频率损耗ukjg ,PCIe 6.0采用高阶调制格式PAM4,保证在信号幅度相同的情况下信噪比下降了约9.5dB。为了解决电源噪声、串扰、反射等系统噪音影响,PCIe 6.0规范在综合考量了FBER、FIT、FLIT Retry 概率、带宽效率、Latency 及 FLIT 的 FEC 能力后,采用了轻量级FEC配合使用循环冗余码(CRC),在降低噪声敏感性的基础上将FEC带给系统延迟控制在2ns之内。
此外,PCIe 6.0还引入了FLIT模式(流量控制单元)。与物理层的PAM4不同,FLIT编码用于逻辑层,将数据分解为固定大小的数据包。PCIe 6.0以FLIT为单位进行事务传输,每个FLIT有256 B数据(1 FLIT=236B TLP+6B DLP+8B CRC+6B FEC=256B),每B数据占用4 UI。此外,FLIT编码还消除了以前PCIe规范的128B/130B编码和DLLP(数据链路层数据包)开销,从而显著提高了TLP(事务层数据包)效率。
PCIE6.0规范定义了FBER:1E-6,并引入轻量级FEC和鲁棒性强的CRC算法实现修正和错误检测。
从PCIe 6.0的规范我们不难发现,与前几代产品相比,技术上有着巨大的革新。不过,虽然PCIe 6.0更具优势,并且已经提出一年有余,但时至当下在PCIe 5.0还没有完全普及的情况之下,PCIe 6.0何时才能走进用户,有着诸多的不确定因素。即使在规范的发起者,英特尔在今年刚刚发布的第四代至强可扩展处理器上,也仅支持PCIe 5.0。不过,这并不影响PCIe 6.0的未来发展。笔者认为,随着企业对于算力性能的不断提升,异构计算架构的快速普及,PCIe将迎来巨大的发展机遇。
不断增长的算力需求,加速PCIe 6.0规范落地
前文提到了CXL这一当前比较火的技术。实际上,在CXL短短几年的发展中,也经历了不同的阶段,并且与PCIe底层技术有着密切的关联。
如果说在CXL1.1中还仅限于单一Node,是一种CPU到CPU,或者CPU到PCIe设备的cache一致性互联,与PCIe关联并不算大之外,那么从CXL2.0技术开始,由于加入了一层(Single Level)的Switch(PCIe Switch),实现了多个设备连接到一个root port上,这就与PCIe有着密不可分的关系。
当然,CXL1.1和CXL2.0都是基于PCIe5.0的底层技术。到了CXL 3.0时代的每通道吞吐量提升了一倍,达到64GT/s,便是建立在PCI-Express 6.0之上,并且其将一些复杂的标准设计简单化,确保了易用性。
我们知道,CXL创新性的引入了Flex Bus端口,可以灵活的根据链路层协商决定是采用PCIe协议还是CXL协议,这就不难看出,CXL拥有较高的兼容性,更容易被现有支持PCIe端口的处理器(绝大部分的通用CPU、GPU 和 FPGA)所接纳。这种创新,也更加有助于用户搭建异构计算架构,在进一步提升算力的同时,降低数据中心的整体能耗。
实际上,从CXL1.0/1.1、PCIe5.0、CXL2.0以及PCIe6.0CXL3.0的发展轨迹,我们也可以清晰看出CXL和PCI-e的关系。PCIe技术作为CXL技术的底层基础,会更早进行迭代升级。CXL可视为PCI-e技术的再提高版本,并且,CXL延伸了更多变革性的功能。
进入CXL3.0时代,由于允许更复杂的连接拓扑,以及一组CXL设备内可以灵活实现Memory sharing(内存共享)和内存访问,能够让多个Switch互相连接,或者能够让上百个服务器互联并共享内存。因此,数据中心的算力水平将得到进一步提升。因此,英特尔将CXL视为在PCIe物理层之上运行的一种可选协议,也就是说PCIe的互联协议没有被完全抛弃,并且英特尔还计划在PCIe 6.0标准上大力推进CXL的采用。
写在最后:虽说PCIe 6.0的技术至今仍旧没有看到具体的应用落地,但从技术上来看,PCIe 6.0标准的发布将进一步提高数据中心算力水平,能够更好地推动诸如基因测序、自动驾驶等数据爆炸式增长的场景下对算力的需求。实际上,在英特尔规划的Diamond Rapids(DMR)上,将会迎来一次较大的变革,首次支持PCIe 6.0总线,还会首次支持CXL 3.0高速接口,而后者正是基于PCIe 6.0而来。