top of page

從硬體的角度,解析 PCIe 介面初始化

前言


CPU 架構中,不論是 Intel、AMD 採用的 X86 架構,或是高通採用的具低功耗ARM 架構;兩種架構設計中,皆廣泛使用 PCIe 做為高速匯流排介面。


PCIe 介面被廣泛用作高速串列匯流排,透過多對高速差分訊號傳輸資料。 PCIe 支援全雙工通訊,允許同時發送和接收資料。其資料速率已從 PCIe Gen1.0/2.5GTps 發展到 Gen6.0/64GTpsGen7.0/128GTps。使用者可根據所需的匯流排吞吐量選擇 X1、X2、X4、X8、X16、X32 的通道模式(其中X 後面的數字表示匯流排的通道數)。


以下,是常見的 PCIe 應用場景:


常見的 PCIe 應用場景
常見的 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。這些狀態之間的轉換,如下圖所示:


LTSSM 狀態之間轉換
LTSSM 狀態之間轉換

上述中我們說的 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。


Detect
Detect

Polling:

在此狀態期間主要完成位元鎖定(Bit lock )、符號鎖定(Symbol Lock)、鏈路速率協商(Link Data Rate )、通道極性反轉(Lane Polarity)等功能。Polling 狀態下主要包含:Polling Active、Polling Compliance、Polling Configuration、Polling. Speed 等四個子狀態。


Polling
Polling

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 機制下三種狀態來回切換的狀態機:


L0s L1 L2 狀態切換
L0s L1 L2 狀態切換

Hot Reset:

進行 Hot Reset 時,PCIe 主機系統會向目標裝置發送「重設」訊號,以將其重設為初始狀態。過程不會影響系統中的其他設備或匯流排通訊,因此系統的運作不會中斷。


Loopback:

Loopback (回歸測試)是一種用於測試和診斷 PCIe 匯流排連接的技術。透過配置 PCIe 裝置為 Loopback 模式,可以將發送到裝置的資料透過 PCIe 匯流排迴歸到裝置的接收端口,藉此進行自我測試診斷。


Disable:

一般進入 Disable 的原因,是由於 PCIe 設備發生硬體故障(插拔、過熱等)或資料錯誤時,為防止對系統進一步影響,而將其連結進行停用。





PCIe 的電源管理


針對 PCIe 電源管理機制,目前 PCIe 協定主要規定兩種情況:ASPM(硬體控制)、和 PM Capability(軟體控制),透過這兩種機制來管理設備和匯流排的功耗。


PCIE電源管理
PCIE電源管理

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 都在背後扮演關鍵角色。


《翔宇科技》希望藉由對 PCIe 的相關討論,提供更多參考資源給相關業者、及有興趣研究匯流排的朋友。若您想深入了解 PCIe、或其他種類匯流排的分析、檢測、驗證相關知識;歡迎洽詢《翔宇科技》





延伸閱讀:




參考資料:








Comments


歡迎 訂閱翔宇科技主題式電子報 >,您將可同步掌握最新的產業新訊以及技術文章。
bottom of page