# PCIe概述与Gen4主要特点 ## PCIe是什么?为什么需要它? 说起PCIe,我得先坦白——刚入行那会儿,我也被这个缩写搞得一头雾水。PCIe全称是Peripheral Component Interconnect Express,中文叫“快速外设互连”。别被这么长的名字吓到,其实它就是连接CPU和外设的高速公路。 你想想看,CPU要跟显卡、固态硬盘、网卡这些设备通信,总得有一条路吧?PCIe就是这条路。
PCIe本质上是一种高速串行计算机扩展总线标准。它取代了老旧的PCI、PCI-X和AGP,成为现代计算机系统中最核心的互连技术。
## 从并行到串行 我记得刚入行那会儿,公司还在用PCI总线。PCI是并行的——32位或64位数据同时传输。听起来很厉害对吧?但问题来了:并行信号要同步,频率一高,信号之间互相干扰,根本跑不快。 为什么会这样?很简单,32根线要同时到达,只要有一根延迟大一点,整个传输就废了。 PCIe改用了串行——虽然只有一对差分线,但频率可以拉得很高。一个简单的类比:并行就像30个人手拉手过独木桥,串行就像一个人跑百米冲刺——后者虽然人少,但速度快得多。 | 特性 | 传统PCI(并行) | PCIe(串行) | |------|----------------|--------------| | 数据传输方式 | 32/64位并行 | 差分对串行 | | 时钟方式 | 共享同步时钟 | 内嵌时钟 | | 最高频率 | 33/66 MHz | 2.5 GHz起(Gen1) | | 信号完整性挑战 | 时序同步 | 高频损耗、反射 | ## PCIe的拓扑结构 PCIe采用树形拓扑。说白了就是“一颗树长出来”的结构。
我在项目中遇到过最典型的设计:CPU连着Root Complex,Root Complex下面挂Switch,Switch再分出几个Endpoint。对了,Root Complex我习惯叫它RC,Endpoint简称EP。
核心组件有三个: - **Root Complex (RC)**:树根,连接CPU和内存,负责管理整个PCIe域 - **Switch**:树枝,扩展通道,让更多设备挂进来 - **Endpoint (EP)**:树叶,就是各种设备——显卡、SSD、网卡 ## PCIe的分层协议 PCIe的协议栈分三层,每一层各司其职: - **事务层**:负责生成和处理TLP(事务层包)。说白了就是决定“要干什么”——读、写、还是消息? - **数据链路层**:负责可靠传输,加序列号、做CRC校验、处理重传 - **物理层**:负责最底层的信号收发,包括电气特性、编码方式 嗯,这里要注意:每一层对上层是透明的。事务层发一个包,它不用管物理层是怎么发出去的。这种分层设计,我个人认为非常优雅。 ## 什么是Gen4? PCIe标准每隔几年更新一次,每一代都把速率翻倍: | 代际 | 发布时间 | 单通道速率 | 编码方式 | x16带宽 | |------|----------|------------|----------|---------| | Gen1 | 2003年 | 2.5 GT/s | 8b/10b | 4 GB/s | | Gen2 | 2007年 | 5.0 GT/s | 8b/10b | 8 GB/s | | Gen3 | 2010年 | 8.0 GT/s | 128b/130b | 16 GB/s | | **Gen4** | **2017年** | **16.0 GT/s** | **128b/130b** | **32 GB/s** | | Gen5 | 2019年 | 32.0 GT/s | 128b/130b | 64 GB/s | Gen4把速率从Gen3的8 GT/s提升到了16 GT/s,翻了一番。但注意——这里的GT/s是Giga Transfers per second,即每秒传输次数,不是比特。
我曾经见过一个团队,照着Gen3的layout规则去画Gen4的板子。结果呢?链路死活协商不到Gen4速率。后来一查,差分对间距不够,串扰太大。这就是不懂Gen4信号完整性差异的代价。
## Gen4的主要特点 ### 1. 速率翻倍到16 GT/s 这是最直观的变化。速率翻倍意味着信号频率也翻倍,信号完整性设计难度指数级上升。 ### 2. 保持128b/130b编码 从Gen3开始,PCIe就把编码从8b/10b改成了128b/130b。效率从80%提升到了98.46%——多出来的带宽全给用户了。 ### 3. 功耗优化 Gen4在链路管理上做了不少优化,比如L0p子状态,可以根据需要动态调整通道宽度,省电。 ### 4. 向后兼容 Gen4设备可以插在Gen3或Gen2的槽位上,只是速率降级运行。反过来也一样,Gen3设备插在Gen4槽位上也能用。 ## Gen4带来的信号完整性挑战 这就是咱们这门课的重点了。为什么要专门学《PCIe Gen4信号完整性基础入门》?因为16 GT/s的速率,已经进入了信号完整性设计的深水区。 - **损耗**:高频信号在PCB上传输时,损耗比低频大得多。16 GT/s信号的基频是8 GHz,这个频率下的介质损耗和导体损耗都非常可观。 - **反射**:阻抗不连续就会产生反射。16 GT/s的信号周期只有62.5 ps,反射回来的波在数个周期内都无法稳定。 - **串扰**:线间距不够大,一根线上的信号会串到相邻线上。高频下,这种耦合更加严重。 - **抖动**:时钟恢复更难了,接收端的眼图更容易闭合。 PCIe体系结构与Gen4核心要点 事务层(Transaction Layer) 数据链路层(Data Link Layer) 物理层(Physical Layer) Root Complex (RC) Switch Endpoint Endpoint 16 GT/s 数据传输 128b/130b 编码 功耗优化 L0p 向后兼容 Gen4信号完整性挑战 传输损耗 介质损耗+导体损耗 信号反射 阻抗不连续引起 串扰 线间距不足引起 抖动 时钟恢复困难 PCIe Gen4信号完整性设计:从协议理解到物理实现 ## 这门课为什么值得学? 说实话,Gen4现在已经是很多高端服务器、数据中心和消费电子产品的标配。我接触过不少硬件工程师,他们能做Gen3的设计,但一到Gen4就翻车。 为什么?因为Gen4的设计余量更小。Gen3的眼图还勉强能用走线长一点凑合,Gen4必须精确控制阻抗、减少过孔、优化叠层。 我不希望大家走弯路。这门课会从最基础的信号完整性概念讲起,结合PCIe Gen4的协议特点,一步步带你掌握设计方法。
记住一句话:信号完整性不是玄学,是可以用物理和数学精确描述的工程科学。