一 本章节主讲知识点
1.1 EIOS的具体码型
1.2 EIOS的识别规则
1.3 EIEOS的具体码型
二 本章节原文翻译
2.1 EIOS
当某种状态下,发送器想要进入电器空闲状态的时候,发送器必须发送EIOSQ,也既是:电器Electrical Idle Odered Set Sequence。当然,除非在某些情况下,特殊制定,也是可以不发送EIOSQ的。
(1)若当下速率是Gen1/3/4/5, 一个EIOSQ 是由一个 EIOS 组成;
(2)若当下速率是Gen2,一个EIOSQ是由2个EIOS组成。
2.1.1 8b/10b 编码模式,Gen1/Gen2
当使用8b/10b编码的时候,一个EIOS的组成规则,请见Table 4-10 描述。
对于发送端,其必须完整发送整个EIOS;对于接收端,其认为接收到EIOS的标准是:接收到一个COM, 加三个IDL 中的两个 IDL。
2.1.2 128b/130b 编码模式,Gen3/Gen4/Gen5
128b/130b 和 1b/1b 编码下,EIOS 是有序集块。如果 EIOS 发送后还有 EIOS 需要发送,则要发送正在发送的 EIOS 的全部字符。此外,规定了发射器必须发送 EIOS 的字符 0-13,在转入电气空闲后可以在发送字符 14-15 的任一处停止发送。其实也就是说,PCIe Gen 3 及更高的版本是允许最后一个 EIOS 有序集截断,因为此时的内部时钟可能无法支持继续发送,所以接收器也只是看 EIOS 的前 4 个字符来判断。
Gen 6 之前,只要收到了符合 EIOS 的字符 0-3,就认为收到了 EIOS。Gen 6,只要接收到的块的前 8 个字节中有至少 5 个字节能够匹配对应的 EIOS 的字节,且字符 0 或字符 8 也匹配对应的 EIOS 字节,则认为收到 EIOS。文章来源:https://www.toymoban.com/news/detail-721838.html
发送完 EIOS 的最后一个字符后,发射器必须处于电气空闲状态。文章来源地址https://www.toymoban.com/news/detail-721838.html
2.2 EIOS
EIEOS 有序集是低频周期发送的控制数据,Gen 1 不支持,它的作用是帮助接收器退出电气空闲状态。在 128b/130b 编码中,还可以用于块对齐,这涉及到块对齐的知识。
Gen 2-4,EIEOS 序列是一个 EIEOS 有序集;Gen 5 则由两个背靠背中间无其它信号插入的 EIEOS 有序集组成。但只发一个 EIEOS 有序集也可以帮助块对齐
而 Gen 6 中,EIEOS 序列的定义更加复杂了,除下列特殊情况是由 4 个连续 EIEOS 组成且中间不能被其它有序集插入外,其他情况是一个 EIEOS 有序集组成
- 从 Recovery.Speed 或 L1 状态进入 Recovery.RcvrLock,直到接收器所有 Lane 收到了退出电气空闲信号或任意 Lane 收到了两个连续有效的 TS1 有序集
- 在 L0p 状态增大链路宽度操作时,接收器在需要激活的所有 Lane 检测到退出电气空闲或有两个连续有效的 TS1 有序集
- 从电气空闲进入 Loopback,直到接收器在需要激活的所有 Lane 检测到电气空闲或两个连续的 TS1 有序集
Gen 6 中,一个块的开始和末尾的 8 字节中有至少 5 个对齐和连续的字节符合对应的 EIEOS 的字节,并且块的字符 0 或字符 8 符合 EIEOS 对应的字节,接收器可以忽略其中 1bit 的不匹配,则认为收到了 EIEOS
Gen 2 会在以下情况发送 EIEOS 序列:
- 进入 LTSSM Configuration.Linkwidth.Start 状态后,第一个发送 TS1 有序集前
- 进入 LTSSM Recovery.RcvrLock 状态后,第一个发送 TS1 有序集前
- 在 LTSSM Configuration.Linkwidth.Start、Recovery.RcvrLock 和 Recovery.RcvrCfg 状态,每发送 32 个 TS1 或 TS2 有序集。
- PCIe 物理层总结 2- 有序集、帧令牌和 Flit - 知乎 (zhihu.com)
当使用128b/130b编码模式时候,一个EIOS的组成,是由一个EIOS block ,见下表。
Transmitters must transmit all Symbols of an EIOS if additional EIOSs are to be transmitted following it. Transmitters must transmit Symbols 0-13 of an EIOS, but are permitted to terminate the EIOS anywhere in Symbols 14 or 15, when transitioning to Electrical Idle after it.
An EIOS is considered received when Symbols 0-3 of an Ordered Set Block match the definition of an EIOS.
既然有EIOS 进入电器空闲序列,那么肯定要有退出电器空闲序列。我们看下SPec 中规定的EIEOS :
下面是Gen3/4/5 速率下的,EIEOS 的详细bit流情况,我们可以发现:三种速率下的EIEOS 在串行端的频率大概是1Ghz 。
三 本章节关联知识点
暂无
四 本章节存疑问题
疑问1:对于发送端,其必须完整发送整个EIOS;对于接收端,其认为接收到EIOS的标准是:接收到一个COM, 加三个IDL 中的两个 IDL。为什么?连续2个,还是只要收到2个?这么处理好处是什么?
答:
疑问2:在具体实现中,Gen3/4/5 发送EIOS 和 EIEOS 的效果图是怎么样的?
五 总结
5.1 EIOS
在 8b/10b 编码下,EIOS 由 K28.5 COM 和其后的三个 K28.3 IDL 字符组成。发射器是需要发送 EIOS 有序集的所有字符,不过接收器只要接收到 COM 和其后的两个 IDL 字符,就认为收到了 EIOS。
128b/130b 和 1b/1b 编码下,EIOS 是有序集块。如果 EIOS 发送后还有 EIOS 需要发送,则要发送正在发送的 EIOS 的全部字符。此外,规定了发射器必须发送 EIOS 的字符 0-13,在转入电气空闲后可以在发送字符 14-15 的任一处停止发送。其实也就是说,PCIe Gen 3 及更高的版本是允许最后一个 EIOS 有序集截断,因为此时的内部时钟可能无法支持继续发送,所以接收器也只是看 EIOS 的前 4 个字符来判断。
Gen 6 之前,只要收到了符合 EIOS 的字符 0-3,就认为收到了 EIOS。Gen 6,只要接收到的块的前 8 个字节中有至少 5 个字节能够匹配对应的 EIOS 的字节,且字符 0 或字符 8 也匹配对应的 EIOS 字节,则认为收到 EIOS。
发送完 EIOS 的最后一个字符后,发射器必须处于电气空闲状态。
5.2 EIEOS
到了这里,关于S4.2.4.3 Electrical Idle Sequence(EIOS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!