SKP OS用来补偿Link两端bit速率的不一致。接收端的Physical Layer的逻辑子模块需要有Elastic Buffer来进行这种补偿。发送SKP OS的时间间隔由发送端与接收端之间时间频率的差异大小来决定。
PCIE3.1协议支持支持两种TX/RX refclk差异。一是没有SSC时(SRNS),最差为600PPM;二是使用独立SSC时(SRIS),最差可达5600PPM。注意一般Refclk架构对TX和RX使用相同的Refclk,所以TX和RX的Refclk就不会存在差异。
UP Stream端口允许支持SRIS和SRNS的各种组合,或者两个都不支持。Down Stream端口如果支持SRIS则也要支持SRNS。
如果clock的容忍度是600PPM的话,意味着TX和RX的clock每1666个clock可以偏移1个clock。如果是5600PPM,则是每178个clock偏移1个。
对于8b/10b,
发送端的SKP OS是1个COM加3个SKP symbol,即{COM, SKP, SKP, SKP},而接收端收到1个COM加1到5个SKP symbol,都认为是SKP OS。
对于128b/130b,
发送端发出的SKP OS是16 symbol。而端口可以增加或者减少4个symbol,所以,接收端收到的SKP OS可以是8,12,16,20,24 symbol。SKP_END symbol指明了SKP OS最后的4 symbol,所以接收端能识别下一个BLOCK的sync header起始点。跟在SKP_END后面的3个symbol在不同的LTSSM 状态包含了不同的信息。
对于发送端:
1.所有Lane应该以相同速率发送symbol。
2.所有Lane都应同时发送SKP OS。
3. 8b/10b时,如果不是SRIS,或者在L0,发送SKP OS的间隔是在1180到1538个symbol之间;如果link采用SRIS,且不在L0, SKP OS的发送间隔小于154 symbol。
4.128b/130b,如果不是SRIS,或者在L0,发送SKP OS的间隔是在370到375个block之间;如果link采用SRIS,且不在L0,SKP OS的发送间隔小于38个block. 当Link是SRNS,且在Loopback状态,loopback master必须发送2个SKP OS,它们的间隔是370到375个block;如果Link是SRIS,且在Loopback状态,Loopback master必须发送两个SKP OS,间隔是小于38个block。