1. PCIe Gen4概述

各位同学,咱们今天聊聊PCIe的身世。说实话,这个接口协议从诞生到现在,已经快二十年了。

我入行那会儿,正是PCIe从AGP手里抢地盘的日子。AGP插槽你们可能都没见过,老古董了。2003年,PCI-SIG组织推出了PCIe 1.0,那时候叫“3GIO”——3rd Generation I/O。名字挺绕,但核心思路很简单:用高速串行总线替代并行总线。

为什么这样做?并行总线那些年已经走到头了。你想想看,PCI-X总线上信号要同时传32位甚至64位,高速下时序根本对不齐。我有个老同事,为了调一个PCI-X的时序问题,生生在实验室熬了三宿。后来换了PCIe,问题自然就没了。

  • PCIe Gen1 (2003年):每通道2.5 GT/s,编码8b/10b,有效带宽2 Gb/s。起跑线。
  • PCIe Gen2 (2007年):速率翻倍到5 GT/s,保持8b/10b编码。我记得到Gen2的时候,显卡终于可以流畅跑1080p游戏了。
  • PCIe Gen3 (2010年):跳到8 GT/s,编码换成128b/130b,效率从80%飙到约98.4%。这个改动相当大胆。
  • PCIe Gen4 (2017年):速率再翻倍到16 GT/s。这就是咱们这一章的主角。

Gen4到底新在哪里?

你可能觉得,Gen4不就是Gen3的速率翻倍吗?嗯,表面看确实是这样。但身为硬件工程师,咱们得往深了看。

我最想强调的几个新特性:

特性 Gen3 Gen4 你的钱包
每通道速率 8 GT/s 16 GT/s 我建议按需选择
编码方式 128b/130b 128b/130b 没变,好事
参考时钟抖动要求 较宽松 严苛得多 小心你的PLL
去加重设置 -3.5 dB 多级可调 调试起来让你头疼
接收端均衡 CTLE CTLE + DFE 模拟工程师的噩梦

看出来没?Gen4本质上是在更恶劣的信道条件下,硬生生把速率撑上去。举个例子,Gen3的规范里,插损预算大约在20-25 dB。到了Gen4,这个数字变成了28-30 dB。信号衰减更大,噪声余量更小。

一次真实的翻车经历

我曾经在一个存储项目里试过直接把Gen3的PCB走线拿去跑Gen4。结果?训练失败率超过30%。问题就出在过孔阻抗不连续——Gen3能忍,Gen4忍不了。后来改了两版PCB才搞定。

为什么要做合规测试?

这个问题我问过很多新人。有人回答“为了拿认证”,有人回答“客户要求的”。都对,但不够本质。

合规测试,说白了就是让所有PCIe设备能在一起好好工作。你想想看,你的显卡、SSD、网卡,可能来自不同的厂家。它们内部的设计、PCB、芯片工艺都不一样。如果没有一个统一的“裁判标准”,那兼容性灾难就来了。

CTS——Compliance Test Specification,就是这个标准。

具体来说,CTS测试覆盖以下层面:

  • 电气层:发端信号质量、抖动、眼图、幅度。这是最基础也最磨人的。
  • 链路层:训练状态机、L0/L1状态切换、电源管理。我调过最久的一个bug,就是L1.1入口时序差了不到2 ns。
  • 协议层:TLP格式、完成超时、流量控制。通常软件工程师盯这个。
  • 配置空间:寄存器读写、能力结构、MSI中断。别小看,栽在这里的产品我见过不下5个。

我的小建议

新手工程师常常只盯着电气测试。但经验告诉我,真正的坑往往在链路层和协议层。信号不好你能看到误码,状态机跑飞了可就不那么容易定位了。

CTS标准的框架结构

PCIe Gen4的CTS文档,SIG组织发布了好几个版本。我个人用的最顺手的是1.0和1.1版本。这里说一下它的框架,你拿到文档后不至于迷路。

  1. Scope:告诉你这是测Gen4 Base还是CEM。重点看CEM——那是插卡和插槽的测试方法。
  2. Reference Clock:Common Refclk还是Separate Refclk? SRIS现在越来越流行,但测试方法麻烦很多。
  3. Transmitter Testing:眼图、抖动、去加重。需要示波器和特定码型。
  4. Receiver Testing:抖动容限、压力眼图。这块设备贵,但必须做。
  5. Link Training:速率协商、均衡系数、极性反转。需要协议分析仪。
  6. Test Fixtures:规范了探针点、参考通道、校准方法。这一部分最容易被人忽略。

整个框架,可以用下面这张图来总结。

PCIe Gen4 合规测试CTS全景图 PCI-SIG CTS 规范 电气层 链路层 协议层 配置空间 电源管理 眼图测试 抖动分析 均衡校准 L1/L2测试 示波器 + 协议分析仪 夹具 + 参考通道 通过CTS = 产品高可信交付

这张图里,我特意把示波器和协议分析仪放到了同一层。为什么?因为很多团队只买其中一种,然后互相扯皮——电气组说链路不通是协议问题,软件组说是信号不行。你如果想在项目里少撕几次,建议两样都备齐。

一个重要警告

不要忽视Test Fixture的校准。我见过一个团队,在Gen4的眼图测试里连续败了两个月。最后发现是参考通道的S参数文件弄错了。重新校准后一次通过。校准件比你想象的更重要。

合规测试的现实意义

说完了框架,聊聊更实在的。为什么我们要拿CTS说事?

  • 第一,降本。没有CTS,你的产品可能要在客户那里反复调试。每次出差都是钱。我在一家存储公司时,光是出差做兼容性测试,一个季度就花了三四十万。后来老老实实把CTS跑通,再没为兼容性出过差。
  • 第二,保交付。CTS不过,ODM/OEM工厂直接打回。你拖一天,就是几百万的产值。老板的脸色那叫一个难看。
  • 第三,防背锅。一旦出了问题,CTS数据就是你的护身符——“信号满足规范,链路训练通过,不是我这边的问题。”这在跨团队合作中特别有用。

好了,这一章主要带大家捋了一遍PCIe的发展历程、Gen4的新变化,以及CTS到底在测什么、为什么测。后面的章节,我们会深入每一个测试项,用具体的案例和波形,手把手教你如何避坑。