查看原文
其他

PCIe 4.0的设备插在3.0的插槽上可行吗,如果反过来又会怎样?

wolf uefiblog UEFI社区 2023-12-29
点击上方“公众号” 可以订阅哦!

PCIe设计地相当灵活,PCIe Gen5的可以插在Gen1的插槽上,Gen1也可以插在Gen5的上面;PCIe x1的可以插在x16的插槽上,x16的也可以插在x1的插槽上(需去掉插槽后挡板);而且他们都可以正常工作!这是怎么做到的呢?

这都是靠着PCIe的Link Training(链路训练)和Link Equalization(链路均衡)两步来做到的,我们分别来简单看看。

Link Training

PCIe 规范定义了Link Training and Status State Machine(以下简称LTSSM),顾名思义,它就是个用来做链路训练的有限状态机,一般是纯硬件实现,位于PCIe RootPort的PHY硬件中。它被定义了几种状态:

LTSSM的主要状态

这里只介绍和link速度和宽度有关的几个状态:

1。Detect:这是链接建立的第一步,主要是链接RP的TX用来发现EP的RX的,也叫作receiver detection。结束后发现有链接,可以开始以PCIe Gen1的2.5Gbps来发送数据。

2。Pooling:这一步用来锁定时钟和Symbol,数据链路完全通了。

3。Configuration:这一步主要协调link number和Lane Number,也就是link宽度和分叉。

做好这一步,链接就完全打通了,x1、x2、x4、x8还是x16也决定好了,之后如果RP和EP是Gen1和Gen2的话,就进入L0,开始正常工作了。

Link Equalization

在PCIe Gen3之后,因为频率的提升,要达到更高的速度,必须在RP和EP直接加入均衡器,关于它我这里就不展开了,感兴趣的朋友可以去这里看看:芯片中的数学——均衡器EQ和它在高速外部总线中的应用

总之,这一步打开均衡器,开始逐步提升频率。开始是Gen2到Gen3,接着是Gen3到Gen4,之后是Gen4到Gen5。这其中,通过检测a bit error rate(BER)来协商达到最高的速度(当然要RP和EP都本身支持的情况下)

一个达成Gen3速度的示例

结论

PCIe设备插好后,通过LTSSM状态机,Link被Training好到最高Gen2的状态;如果通讯两边都支持Gen3以上,则通过link Equalization达成最高频率。

这一通操作下来,结果往往就是达成一个最小双方可以接受的结果,如x1 Gen1的设备,查到x16支持Gen5的插槽上,速度就是x1 Gen1 2.5Gbps。

这里讲的很简单,如果对PCIe细节感兴趣的同学,推荐读一读这本书:


参考资料



继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存