🚀 从 UI 到吞吐量:一条 PCIe 数据是如何变成 GB/s 的(含 PCIe 6.0 + 误码率)
在 PCIe 开发、验证、性能分析中,我们经常听到这些概念:
- GT/s
- GB/s
- UI(Unit Interval)
- 编码(8b/10b、128b/130b)
- 吞吐量(Throughput)
- 误码率(BER)
但这些其实不是独立知识点,而是描述:
👉 同一条数据在不同层级的“形态变化”
👉 本文换一种方式讲清楚:
从“一个 bit 在链路上传输”开始,一路推导到最终吞吐量
一、故事的起点:一个 bit 需要多长时间?
PCIe 本质是高速串行链路(SerDes)。
最底层问题只有一个:
👉 一个 bit 需要多少时间发送?
1️⃣ UI(Unit Interval)
UI=1/Symbol Rate
👉 可以理解为:
链路上的最小时间单位
示例
| 代际 | 速率 | UI |
|---|---|---|
| Gen1 | 2.5 GT/s | 400 ps |
| Gen3 | 8 GT/s | 125 ps |
| Gen5 | 32 GT/s | 31.25 ps |
| Gen6 | 64 GT/s | 15.625 ps |
👉 结论:
- 速率越高 → UI 越小
- UI 越小 → 信号越难(抖动/损耗/串扰)
二、一个 UI 里传什么?——Symbol
有了时间单位,还需要定义:
👉 每个 UI 里传多少信息
2️⃣ Symbol(符号)
👉 Symbol = 每个 UI 传输的信息单位
PCIe 1.0 ~ 5.0(NRZ)
- 2 个电平(0/1)
👉 1 Symbol = 1 bit
PCIe 6.0(PAM4)
- 4 个电平
👉 1 Symbol = 2 bit
👉 关键变化:
| 模式 | 每 Symbol |
|---|---|
| NRZ | 1 bit |
| PAM4 | 2 bit |
三、GT/s 到底是什么?
👉 GT/s = 每秒多少个 Symbol
因此:
- NRZ:GT/s ≈ Gbps
- PAM4:GT/s × 2 = Gbps
示例:PCIe 6.0
64 GT/s × 2 = 128 Gbps
👉 这是物理层裸速率
四、为什么不能直接用这些 bit?——编码的出现
现实链路存在问题:
- 时钟恢复困难
- 长时间无跳变
- DC 不平衡
👉 所以必须引入:
四、编码(Encoding)
目的:
👉 让信号能可靠传输
1️⃣ 8b/10b(Gen1 / Gen2)
- 8 bit → 10 bit
👉 效率:
80%
<

4万+

被折叠的 条评论
为什么被折叠?



