#PCIe# 为什么引入编码机制?

写在前言

 

今天主要补充点小知识,学习PCIE的道路很坎坷,至少对我来讲,不懂的欠缺的知识点天多了,每天补充一点点吧,相信自己。

一、为什么PCI-e需要引入8b/10b(Gen1 & Gen2)or 128b/130b(Gen3) 编码?

1. 为什么要编码机制

首先,为什么要编码?原来的码型有什么不好的地方吗?其中最主要的原因用下面这个图来进行解释:

 

大家看明白了吧,由于我们的串行链路中会有交流耦合电容,我们知道理想电容的阻抗公式是Zc=1/2πf*C,因此信号频率越高,阻抗越低,反之频率越低,阻抗越高。因此上面的情况,当码型是高频的时候,基本上可以不损耗的传输过去,但是当码型为连续“0”或者“1”的情况时,电容的损耗就很大,导致幅度不断降低,带来的严重后果是无法识别到底是“1”还是“0”。因此编码就是为了尽量把低频的码型优化成较高频的码型,从而保证低损耗的传输过去。

2. 8B/10B的编码方式的算法

如上图,关于8B/10B编码算法有下面几点需要理解:

1, 低5位(ABCDE)中间加一位,进行5B/6B编码,高三位(FGH)中间加一位,进行3B/4B编码;

2, 编码后的bit仅会出现这三种情况:5个“0”与5个“1”、4个“0”与6个“1”、6个“0”与4个“1”;

3, 有两个术语要知道:不均等性(disparity)和极性偏差(running disparity,RD)。

不均等性是指编码后的码型数据是“1”多还是“0”多,如果是“1”多,则极性偏差RD为-RD,如果是“0”多则为+RD。那定义+-RD有什么意义呢?+-RD代表着同一个码型的两种编码方式。我们本身就是编码的目标就是为了缓解长“0”或长“1”的影响,因此在编码后如果“1”多的话,我们下一次的编码就要把这种码型做一个修正,因此从-RD码型变成+RD码型。如果是“0”和“1”一样多,极性则不用变,如下图:


4, 我们怎么知道编码后映射成什么码型呢?因此会有一个专门的编码表,我们只需要在上面找到我们的原始码型,然后就一目了然了。编码表如下所示(部分截图):

说了那么多,还不如举个例子更直观。

我们以上面的D3.0码型进行仿真验证:

原始的码型如下:

仿真得到8B/10B编码后的码型如下:

 

对照上面的编码表,结果完全相同,从RD-的模型出发,编码后RD-的码型“1”比较多,因此极性变成RD+的编码码型,接着RD+的编码码型“0”比较多,极性又变回RD-,因此码型就是RD-和RD+之间循环下去。

总结

 

### PCIe Gen3 和 Gen4 的区别及规格 #### 基本概念 PCIe(Peripheral Component Interconnect Express)是一种用于连接高速组件的标准接口技术。随着版本迭代,数据传输速率显著提升。 #### 数据传输率 - **Gen3** 提供每通道 8 GigaTransfers per second (GT/s),有效带宽约为 985 MB/s 每 lane[^1]。 - **Gen4** 将这一数值翻倍至 16 GT/s,使得单lane的有效带宽达到约 1.97 GB/s。 #### 向前兼容性 尽管性能有所差异,但新旧标准之间保持良好的向后/向前兼容特性。这意味着较新的设备可以在较低代际主板上工作,反之亦然;不过实际吞吐量会受限于最低支持级别的一方[^2]。 #### 物理层改进 为了实现更高的速度,Gen4引入了更先进的信号处理技术和编码方案来减少误码率并提高链路稳定性。这包括但不限于增强型散射干扰消除机制以及更加精细的均衡算法。 #### 应用场景影响 对于依赖大量I/O操作的应用程序而言——比如机器学习训练平台所使用的IPU加速卡——采用更高世代的PCIe可以带来明显的效率增益,在相同时间内完成更多计算任务或更快地访问外部存储资源。 ```python # Python代码示例展示不同PCIe版本的数据传输能力对比 def calculate_bandwidth(generation, lanes=1): gt_per_second = { 'gen3': 8, 'gen4': 16 } efficiency_factor = 0.985 # 考虑到编码开销后的实际利用率 return (gt_per_second[generation.lower()] * efficiency_factor / 10) * lanes print(f"Single Lane Bandwidth:") print(f"- PCIe Gen3: {calculate_bandwidth('gen3')} GB/s") print(f"- PCIe Gen4: {calculate_bandwidth('gen4')} GB/s") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值