前言
PCI Express (PCIe)協議中,EIOS (Electrical Idle Ordered Set) 和 EIEOS (Electrical Idle Exit Ordered Set) 是在高速鏈路管理和狀態切換過程中極為重要的特殊序列。下面做詳細解釋:
一、EIOS(Electrical Idle Ordered Set)
1. 定義及作用
EIOS是PCIe物理層在發送端進入“電氣空閑(Electrical Idle)”狀態之前,必須發送的特殊序列。
它用來通知接收端:鏈路即將進入電氣空閑狀態(即沒有數據傳輸,線路進入低功耗/待機狀態)。
2. EIOS的構成
不同編碼模式下的EIOS
1)8b/10b編碼(如PCIe 2.x/3.x低速率)
● EIOS = 1個K28.5(COM)符號 + 3個K28.3(IDL)符號。
● 詳見下表:
● 發送端需要發出全部4個符號,接收端收到頭4個(COM+任意2個IDL)即可視為EIOS已接收。
2)128b/130b 編碼(如PCIe 4.0及更高速率)
● EIOS是一個特殊的 Ordered Set Block(有序塊),具體符號見Table 4-32。
● 這個塊的前4個編解碼符號用于識別EIOS。
3)1b/1b 編碼(PCIe 6.0 極高速率)
3. 截斷與接收規則
● 截斷(Truncation):最后一個EIOS序列在實際進入Idle狀態時,可以在符號14或15提早結束(為支持某些編碼模式下的時鐘不對齊)。但接收方只要前4個符號匹配EIOS定義就可以正確判定鏈路進入空閑。
● 狀態切換:發送最后一個EIOS所有符號后,發送端必須真正進入Idle狀態。
4. 作用意義
● EIOS告知接收方鏈路即將Idle,可以收尾上一次傳輸的數據,進行電路省電和同步狀態管理。
二、EIEOS(Electrical Idle Exit Ordered Set)
1. 定義及作用
EIEOS是從“電氣空閑”狀態返回到正常數據傳輸狀態前要發送的特殊有序序列。
它通知接收器:鏈路即將退出Idle,準備恢復正常通信。
2. EIEOS的構成
● 8b/10b編碼下,EIEOS包含:
○ K28.7(EIE)等特定標識符(不同協議版本有所不同)。
○ EIEOS會在你想要退出Idle、準備發恢復訓練序列(FTS)之前發送。
● 其余編碼下,用有序塊識別。
● 詳見協議相關章節,通常和FTS配套出現。
3. 與EIOS的區別
● EIOS:Idle前發,進入空閑
● EIEOS:Idle結束發,退出空閑、恢復數據傳輸
4. 作用意義
● EIEOS確保接收方正確檢測到鏈路恢復,同步時鐘和準備下一幀訓練(FTS)或數據交換。
三、EIOS與EIEOS在鏈路訓練和狀態管理中的流程
- 正常數據傳輸
- 準備進入Idle
○ 發送EIOS (通知即將Idle) - 實際進入Idle狀態
- 準備恢復數據傳輸
○ 發送EIEOS (通知即將恢復) - 發送FTS或數據幀,鏈路恢復激活
四、常見應用場景
● PCIe設備省電自動管理
● PCIe鏈路訓練/恢復同步
● 熱插拔、鏈路異常恢復