为了达成直流平衡,PCIe spec对数据进行了特别的编码,也就是8/10b编码和Gen3以后的128/130b编码。所谓的编码,直观理解就是把8b(128b)的数据编码成10b(130b)来传输,使得发送的“0”、“1”数量保持基本一致。接收端按照同样的编码规则,解析出8b(128b)原始数据即可。事实上很多其他高速信号传输也用到类似的编码方式。为什么编码后就可以保持“0”、“1”一致以及详细的编码方式可以参考协议。这里需要记住一个关键事实,因为有了编码,链路上传输的有效数据只占80%(8b/10b编码情况下。数据在不同的lane上,是怎么分配传输的?