前言
CPU 架構中,不論是 Intel、AMD 採用的 X86 架構,或是高通採用的具低功耗ARM 架構;兩種架構設計中,皆廣泛使用 PCIe 做為高速匯流排介面。
PCIe 介面被廣泛用作高速串列匯流排,透過多對高速差分訊號傳輸資料。 PCIe 支援全雙工通訊,允許同時發送和接收資料。其資料速率已從 PCIe Gen1.0/2.5GTps 發展到 Gen6.0/64GTps、Gen7.0/128GTps。使用者可根據所需的匯流排吞吐量選擇 X1、X2、X4、X8、X16、X32 的通道模式(其中X 後面的數字表示匯流排的通道數)。
以下,是常見的 PCIe 應用場景:
在上圖中,Root Complex(根複合體 RC) 是 CPU 的關鍵的中樞;是指 PCIe 主機板上,負責管理並協調所有 PCIe 設備之間通訊的晶片/晶片組。如果 Root Complex 並未整合於 CPU 內,可能以外部元件存在(如 PCIe 交換器)。
Repeater 可用於增強長距離 PCIe 匯流排傳輸期間的訊號完整性和穩定性,以不同的架構與功能再細分為 Retimer 與 Redriver 兩種,以防止訊號失真或中斷。
PCIe Endpoint(端點)是指透過 PCIe 匯流排連接到電腦系統的任何裝置。端點分為 RC 端點和裝置端點。每個裝置必須有一個唯一的位址,透過稱為「命名空間 Namespace」的機制分配,允許在 PCIe 匯流排上獨立運作,而不會干擾其他裝置。
PCIe Sideband Pin
除了主要的 Data 訊號外, PCIe 也包含幾個引腳,如 REFCLK、RESET等。
RESET 訊號為基礎復位,電源準備就緒前一直為低電位,當鏈路初始化的開始,便由低電位轉為高電位。
REFCLK 作為 PCIe 連結進行資料傳輸前的先決條件,PCIe 採用 100MHz 的參考時脈訊號,在傳輸鏈路上產生高速 PCIe 資料。
附加訊號 - CLKREQ:用於低功耗狀態 ASPM 之間的轉換(通常不使用)。
附加訊號 - WAKE:開漏、低電位有效訊號,用於重新啟動 PCI Express 連結的主電源和參考時鐘,用於支援外部卡或系統板的任何 PCIe 喚醒功能。
PERST:基礎重置訊號。
PCIe 介面初始化
PCIe 初始化及建構傳輸鏈的過程,也就是常說的「LTSSM 狀態」,發生在實體層。
鏈路初始化和訓練是一個實體物理層控製過程,目的是配置、初始化設備的物理層、連接埠和相關鏈路,以便讓正常的資料封包流量可以在鏈路上進行;此過程在重置後自動啟動,無需任何軟體參與。
當 PCIe 上電並提供參考時脈後,會由PCIe 中的實體層進行鏈路初始化(Link Initialization & Training)。
LTSSM 在該過程中,負責處理設備識別、速率協商、電源管理、重置和鏈路寬度協商等任務。如果低功耗模式或錯誤條件下發生喚醒事件,也會自動啟動此程序的子集(稱為連結重新訓練)。
LTSSM 鏈路狀態
LTSSM 全名為 Link Training and Status State Machine,主要用於控制鏈路的連結狀態和鏈路的電源管理,從初始化到可以溝通,會如下圖流程,從 Detect 階段到 L0。LTSSM 狀態主要有 5 大類、共 11 個狀態:Detect、Polling、Configuration、Recovery、L0、L0p、L0s、L1、L2、Hot Reset、Loopback、Disabled。這些狀態之間的轉換,如下圖所示:
上述中我們說的 5 大類,分別是:
連結訓練狀態 Link Traing States:
如上圖所示,正常的 PCIe 連結建置過程遵循順序 Detect > Polling > Configuration > L0(圖中央 4 個圓圈)。
連結重新訓練狀態 Link Re-Training State:
稱為恢復(Recovery),由於錯誤(例如電源狀態、速率變化)導致連結無法操作,從 L0 進入此狀態。它重新建立位元和符號鎖定(Symbol and bit lock),類似於輪詢狀態,但所需時間更少。
電源管理狀態 Power Mngt States:
由 PCI-PM 軟體定義,包括 D0(正常操作)、D1/D2(中間省電狀態)、D3Hot(低功耗)和 D3Cold(斷電)。可以用於管理高速和低功耗狀態之間的轉換。
主動電源管理 Active Power Management:
PCIe 定義的另一種電源管理機制 ASPM(自主鏈路電源管理)在硬體層級運行,根據活動管理鏈路電源狀態,例如在沒有資料包傳輸時轉換到低功耗狀態。
其他狀態 Other States:
包括 Disable、Loop back、Hot Reset 等等。
PCIe 介面初始化的 11 種 LTSSM 狀態:
Detect:
Detect 做為 PCIE 鏈路訓練的第一個環節,主要完成 TX 端檢測、確認 RX 端能否正常工作等功能,如果檢測通過則會進入下個狀態。協議規定,Detect 作為上電時的初始狀態,在基本重設或熱復位完成後,必須在 80mS 內進入 Detect。 Detect 包含兩種子狀態,Detect Quiet 和 Detect Active。
Polling:
在此狀態期間主要完成位元鎖定(Bit lock )、符號鎖定(Symbol Lock)、鏈路速率協商(Link Data Rate )、通道極性反轉(Lane Polarity)等功能。Polling 狀態下主要包含:Polling Active、Polling Compliance、Polling Configuration、Polling. Speed 等四個子狀態。
Configuration:
在 Configuration 狀態下,發送端和接收端已經確認可以正常傳輸。在該狀態中,PCIe 設備會依序傳送 TS1 OrderSet和 TS2 OrderSet,達到以下的工作:
確定鏈路寬度(Link Width)
連結編號(Link Number)
通道位置翻轉(Lane Reversal)
通道對齊(Lane-to-Lane De-skew)
L0 :
連結的正常運行中狀態,在此時可以發送/接收 TLP、DLLP 等封包。
L0p:
PCIe 6.0加入的全新低功耗模式,根據頻寬需求調整連接寬度和功耗,同時保持資料傳輸不中斷。
L1:
相對於 L0s 狀態,L1 狀態下的功耗較低。但進入和退出 L0 狀態時間更長。
L2:
最低功率的狀態。大部分發送端與接收端的邏輯被關閉;需要重新透過 Detect 階段恢復鏈接。
Recovery:
當 PCIe 連結需要重整時,進入 Recovery 狀態。主要有以下幾種情況:
PCIe 連結訊號發現 error ,需要調整 Bit Lock 和 Symbol Lock。
從 L0s 或 L1低功耗電源狀態退出。
Speed Change 。因為第一次進入 L0 狀態時,速率是 2.5GT/s。當需要進行速率調整 5.0GT/s 或 8.0GT/s 時,需要進入 Recovery 狀態進行 Speed Change,Bit Lock 、Symbol Lock等都需要重新取得。
需要重新調整 PCIe 連結的 Width。
軟體觸發 Retrain 操作。
僅在 Gen3、Gen4 和 Gen5,需要重新進行 Equalization 。
L0s/L1/L2 :
這三個狀態,主要是低功耗電源管理狀態。下圖所示為 ASPM 機制下三種狀態來回切換的狀態機:
Hot Reset:
進行 Hot Reset 時,PCIe 主機系統會向目標裝置發送「重設」訊號,以將其重設為初始狀態。過程不會影響系統中的其他設備或匯流排通訊,因此系統的運作不會中斷。
Loopback:
Loopback (回歸測試)是一種用於測試和診斷 PCIe 匯流排連接的技術。透過配置 PCIe 裝置為 Loopback 模式,可以將發送到裝置的資料透過 PCIe 匯流排迴歸到裝置的接收端口,藉此進行自我測試診斷。
Disable:
一般進入 Disable 的原因,是由於 PCIe 設備發生硬體故障(插拔、過熱等)或資料錯誤時,為防止對系統進一步影響,而將其連結進行停用。
PCIe 的電源管理
針對 PCIe 電源管理機制,目前 PCIe 協定主要規定兩種情況:ASPM(硬體控制)、和 PM Capability(軟體控制),透過這兩種機制來管理設備和匯流排的功耗。
ASPM 機制:
用於降低裝置在活動狀態下的功耗。它透過降低設備的傳輸延遲來實現節能,從而減少了設備在空閒或輕負載狀態下的功耗;ASPM 包括 L0s 和 L1、L2 等三種模式。
PM Capability 機制:
PCIe 協定中對於 PM Capability 部分的描述,主要分為 D0、D1、D2、D3 四種狀態:
D0:是 PCIe 設備的正常工作狀態,設備在此狀態下能夠執行所有功能並回應系統的請求,在 D0 狀態下,設備消耗最大的電力。
D1:是較淺的睡眠狀態,設備可以迅速恢復到活動狀態。
D2 :是深度睡眠狀態之一,裝置的功耗進一步降低,恢復到活動狀態需要較長的時間。
D3 :是最深的睡眠狀態或完全關閉狀態,功耗極低,恢復到活動狀態的時間最長。
PCIe 的熱插拔
PCIe 裝置基本都支援熱插拔功能,避免主機板 或 PCIe 插槽過熱或損毀,同時為了意外,PCIe 協定設計了一種「No Surprise」熱插拔機制:當使用者要插拔 PCIe 裝置時,必須先通知系統軟體做好準備,然後透過指示燈告知使用者熱插拔的狀態;這項工作需要軟體硬體合作完成,以下圖示說明:
熱插拔的軟硬體需求:
軟體層面,包括:Hot-Plug Service、Standardized Hot-Plug System Driver、Device Driver。
硬體層面,包括:Hot-Plug Controller 、Card Slot Power Switching Logic、Card Reset Logic、Power Indicator、Attention Indicator、Card Present Detect Pins。
結語
總結這篇文章,我們討論從硬體介面上的資料傳輸,來理解 PCLe 的運作模式。尤其是 PCIe 的特色:LTSSM 鏈路狀態;透過對 LTSSM 狀態的管理,PCIe 介面能在不同的資料傳輸模式、電源管理模式間靈活切換,以達到高效能與低功耗的平衡。無論是硬體復位、錯誤修復,還是節能模式……等等,LTSSM 都在背後扮演關鍵角色。
延伸閱讀:
參考資料:
Comments