PCIe—TS1/TS2 之Polling.Active(一)

前文? ? ? ??

訓練序列有序集用于比特對齊、符號對齊以及交換物理層參數。2.5GT/s和5GT/s速率時,訓練序列有序集不會加擾,只用8b/10b 編碼。但到8GT/s及以上速率時,采用128b/130b編碼,符號有可能加擾有可能不加擾,具體參閱SPEC物理層章節,后續可能會寫。

???????? 訓練序列(TS1或TS2或ModifiedTS1或ModifiedTS2)是連續傳輸的,并且只能被SKP有序集(Section4.2.7)或對于2.5GT/s 以外的數據速率由EIEOS有序集中斷(Section4.2.4.3)。

????????當支持8.0GT/s或更高的數據速率時,使用8b/10b編碼的TS1(或TS2)有序集(即2.5或5.0GT/s數據速率)可以是標準TS1 (或TS2)有序集(即,對于TS1有序集,Symbol6是D10.2,對于TS2有序集,是D5.2)或EQTS1有序集(或EQTS2有序集) (即,Symbol6的bit7是1b)。傳輸EQTS1有序集的能力是特定于實現的。支持8.0GT/s或更高數據速率的端口必須接受LTSSM 狀態中的TS1(或TS2)類型,除非明確要求查找特定類型。不支持8.0GT/s數據速率的端口允許(但不是必需)接受EQTS1(或 TS2)有序集。

????????當支持16.0GT/s和更高數據速率時,使用128b/130b編碼(即8.0GT/s或更高數據速率)的TS2可以是標準TS2有序集(即Symbol 7 為45h)或128b/130bEQTS2(即,Symbol7的bit7為1b)。除非明確要求查找特定類型,否則支持16.0GT/s或更高數據速 率的端口必須在LTSSM狀態中接受任一TS2類型。允許(但不是必需)不支持16.0GT/s數據速率的端口接受128b/130bEQTS2 有序集。 使用8b/10b 編碼時,僅當Symbol6與先前的TS1或TS2有序集的Symbol6相匹配時,才將TS1或TS2有序集視為連續(傳輸過 程中不能Symbol6的值不能隨意改動)

????????打算協商備用協議或傳遞一個TrainingSetMessage的組件必須在Configuration.Lanenum.Wait,Configuration.Lanenum.Accept 和 Configuration.Complete 子狀態中使用 Modified TS1/TS2 Ordered Set,而不是 TS1/TS2 OrderedSet。為了可以發送 ModifiedTS1/TS2 Ordered Set,組件必須在Polling.Active,Polling.Configuration,TS1/TS2 Ordered Set 中將 TS1 和 TS2 有序集的 Enhanced Link behavior Control 字段設置為 11b, Configuration.Linkwidth.Start 和 Configuration.Linkwidth.Accept 子狀態,并執行 LinkUp = 0b 時過渡到 Configuration.Lanenum.Wait 子 狀 態 中 概 述 的 步 驟 。 如 果 鏈 路 伙伴不支持 Modified TS1/TS2 Ordered Set , 則 從 Configuration.LaneNum.Wait 開始,標準 TS 應停止在Enhanced LinkbehaviorControl 字段中發送 11b 并切換到適當的編碼。

?

?給出一個polling階段OS的在lane上的發送示例:

?

?直至雙方協商polling完畢后,進入下一個狀態

Polling概述? ? ? ??

在PCIe的 LTSSM狀態機中,Polling態進Configuration狀態是一個關鍵的步驟,標志著鏈路兩端已經建立了基本的物理層通信,并準備開始協商鏈路的工作參數(如鏈路寬度和操作速率)。Polling狀態成功進入 Configuration狀態的條件和過程:

1. ?完成接收器檢測和鎖定 (Receiver Detection and Locking


? ? ? 在 Polling.Active 子狀態,每個端口(按照距離CPU的遠近分為下游端口和上游端口)都會在所有配置的 Lane 上交替發送 TS1 (Training Sequence 1) 有序集。
? ? ? 這些 TS1 序列有兩個主要目的:
? ? ? * 接收器檢測 (Receiver Detection):確認對端確實存在一個活動的接收器。
? ? ??* 位鎖定 (Bit Lock) 和 符號鎖定 (Symbol Lock):接收端的物理層 (PHY) 使用傳入的 TS1 序列來鎖定發送端發送數據的比特邊界(位鎖定)和識別 COM (Comma) 符號以確定符號邊界(符號鎖定)。這是正確解碼后續數據的基礎。

2. ?交換 TS1 序列并達成基本協議 (Exchange TS1s and Basic Agreement):


? ? ? 兩端設備通過接收對方發送的 TS1 序列,不僅確認了對方的存在和活動狀態,還能從TS1中攜帶的信息字段獲取對方的基本能力:
? ? ? ?* Link Number:通常是未配置的(0xFF)。
? ? ? ?* Lane Number:發送該TS1的物理Lane的編號(在 Polling 階段通常是未配置的,如 0x1F 或 PAD 值)。
? ? ? ? * Rate ID:發送端支持的最高鏈路速率(Gen1, Gen2, Gen3, Gen4 等)。
? ? ? ? * 其他控制位:如 Disable Link、Loopback 等(通常不設置)。
? ? ? ? * 最關鍵的是,兩端通過持續接收有效的 TS1 序列確認鏈路在物理層是連通的,并且雙方都支持至少一個共同的鏈路速率(通常是 Gen1,作為基礎速率)。

3. 進入 Configuration 狀態的條件 (Transition Condition):


? ? ? LTSSM 從 Polling 狀態(具體是 Polling.Active)進入 Configuration 狀態需要滿足以下核心條件:
? ? ? * 在 `N_FTS` 個連續時間內(通常是一個預設的超時值,例如 24ms),在所有配置的 Lane 上,本地接收器持續檢測到來自對端的有效 TS1 有序集。這里的“有效”意味著:
? ? ? ? ? ? ** 接收到的 TS1 的符號被正確解碼(依賴于之前完成的位鎖定和符號鎖定)。
? ? ? ? ? ? ** TS1中包含的 `Link` 和 `Lane` 編號信息表明對方設備存在且正在嘗試建立鏈路(通常 ????????????????`Link=0xFF`, `Lane=0x1F` 或 PAD)。
? ? ? * 本地接收器的位鎖定 (Bit Lock) 和符號鎖定 (Symbol Lock) 已經成功完成。這是正確接收和理解 TS1 的前提。

4.? 狀態轉換:


? ? 一旦上述條件滿足(即在規定時間內穩定地接收到有效的 TS1,且本端鎖定成功),LTSSM? ? ? ? ?就會觸發狀態轉換。?狀態機從Polling.Active退出,并進入Configuration.Linkwidth.Start子狀態? ?(Configuration 狀態下的第一個子狀態)。

?5. 設備是怎么知道bit鎖定和symbol鎖定?

在 PCIe 鏈路訓練過程中,接收端設備無法直接通過解析接收到的 TS1 內容本身來“知道”發送端是否完成了位鎖定 (Bit Lock) 或塊鎖定/符號鎖定 (Block/Symbol Lock)。相反,接收端通過自身成功完成位鎖定和塊鎖定,并能夠持續、正確地解析接收到的 TS1 有序集的內容,從而推斷出鏈路狀態良好,并觸發狀態轉換。發送端則通過接收來自對端的、內容正確的 TS1 來推斷對方已經鎖定。

1. ?位鎖定 (Bit Lock) 和塊鎖定/符號鎖定 (Block/Symbol Lock) 的本質:
????????位鎖定 (Bit Lock):這是接收端物理層 (PHY) 時鐘和數據恢復電路 (CDR) 的功能。CDR 利用接收到的數據流來調整其本地采樣時鐘的相位,使其能夠準確地在每個比特位的中心位置進行數據重采樣。成功完成位鎖定意味著接收器能夠可靠地區分出數據流中的單個比特 `0` 和 `1`。
? ? ? ? 塊鎖定/符號鎖定 (Block/Symbol Lock):PCIe 使用 8b/10b (Gen1, Gen2) 或 128b/130b (Gen3+) 編碼。接收器需要識別編碼方案中定義的“特殊控制符號”來找到符號邊界。對于 8b/10b,關鍵的控制符號是 `COM` (Comma, K28.5)。`COM` 符號具有獨特的、在數據流中不會出現的比特模式(如 `0011111010` 或 `1100000101`)。接收器在數據流中搜索這些獨特的 `COM` 模式。一旦連續檢測到幾個有效的 `COM` 符號(通常是 3 個),并且它們出現在預期的間隔位置(例如,每 16 個 10-bit 符號出現一次,因為 TS1 是 16 個符號的有序集),接收器就確定了符號邊界,完成了塊鎖定/符號鎖定。這意味著接收器能正確地將連續的比特流分割成一個個獨立的 10-bit (或 130-bit block) 符號進行解碼。

2.? 怎么利用TS1 的信息交換?含有那些信息?
? ? * ? TS1 有序集是鏈路訓練期間交換的主要信息單元。它包含重要的字段,如:
? ? ? ? * ? `Link Number` (通常初始為 `0xFF` - Unconfigured)
? ? ? ? * ? `Lane Number` (通常初始為 `0x1F` - Unassigned 或 PAD)
? ? ? ? * ? `Rate ID` (支持的速率)
? ? ? ? * ? `N_FTS` (需要多少個 Fast Training Sequences 用于后續速率切換的時鐘補償)
? ? ? ? * ? 其他控制位 (如 Disable Link, Loopback, Hot Reset 等)。
?????? ?* ? 關鍵:TS1 的有序集結構本身(特別是包含的 `COM` 符號)是實現塊鎖定/符號鎖定的關? ? ? ? ? ? ? ?鍵信號源。

3. ?如何“知道”鎖定完成 (接收端視角):
? ? * 接收端自身硬件完成鎖定:?接收端的 PHY 層電路在接收到對端發送的TS1 流后,會在內部執行位鎖定和搜索 `COM` 符號的過程。
? ? * 鎖定成功的標志是能正確解析 TS1 內容:因為只有當接收端 PHY 成功完成了位鎖定和塊鎖定,它才能:
? ? ? ? A.?準確地將比特流分割成符號 (`COM` 和其他符號)。
? ? ? ? B.?正確解碼每個符號(將 10b 解碼為 8b 數據/控制符,或識別 130b block)。
? ? ? ? C.?識別出接收到的有序集確實是 TS1(因為它能識別出 `COM` 符號以及緊隨其后的特定數據模式)。
? ? ? ? D.?提取出 TS1 中包含的有效信息(`Link Number`, `Lane Number`, `Rate ID` 等)。
?狀態機轉換的依據:LTSSM 在 Polling 狀態(Polling.Active)監測接收邏輯。如果接收邏輯報告在配置的所有 Lane 上,在 `N_FTS` 個連續時間內(例如 24ms),持續接收到內容有效且符合預期的 TS1 有序集(例如,`Link=0xFF`, `Lane=0x1F` 或 PAD,且無錯誤標志),那么 LTSSM 就認為:
? ? ? ? * 物理層連接可靠(信號質量足夠好)。
? ? ? ? * 本端接收器已經成功完成了位鎖定和塊鎖定**(因為只有這樣它才能持續正確地解析 TS1 的內容)。
? ? ? ? * 對端設備存在且也在積極發送 TS1(意味著對端很可能也檢測到了本端的存在并完成了其接收端的鎖定)。
? ? ? ? *?因此,接收端“知道”鎖定完成(主要是自己的鎖定完成)是通過其自身 PHY 能夠持續、正確、無錯誤地解析出對端發來的 TS1 內容來體現的,因為這種持續正確的解析是接收端內部完成了鎖定的直接體現。

4. ?發送端視角 & 對端的鎖定狀態:
? ? * 發送端只是按照協議要求在 Polling.Active 狀態持續發送 TS1 有序集。
? ? * 發送端無法直接感知自己發送的信號是否被對端成功鎖定,它只能通過接收來自對端的 TS1來間接判斷。
? ? * 如果發送端在接收通道上也開始持續接收到內容正確且符合預期的 TS1 有序集(意味著發送端自己的接收PHY也完成了鎖定,那么發送端的 LTSSM 就會認為滿足了進入Configuration狀態的條件。
? ? ? ? ? ? A.當發送端持續接收到有效的TS1 時,發送端推斷對端鎖定完成,對端設備發送TS1這個行為隱含了對端已經檢測到了本端的存在,并且很可能對端的發送邏輯已經準備完畢。更重要的是,本端的接收器能夠正確解析這些TS1,意味著本端接收器的位鎖定和塊鎖定已經完成。雖然發送端無法直接確認對端接收器的鎖定狀態,但通過對端持續發來有效的TS1,可以推斷對端的發送邏輯是正常工作的,并且本端到對端的鏈路也是通的(因為對端需要檢測到本端的TS1才會進入發送 TS1狀態)。

? ? ? ? ? ? B.最終雙方都持續接收到有效 TS1 是雙向鏈路完成polling到下一個config的轉移

舉個簡單的比方來說:設備不是通過“讀取”TS1里的某個特定字段來知道鎖定完成的。而是它發現自己能穩定地“聽懂”(正確解析)對方發來的TS1“話語”時,就證明自己的“耳朵”(接收PHY)已經調整好了(完成了位鎖定和塊鎖定)。同時,聽到對方在持續說話(發TS1),就知道對方也在積極溝通。當雙方都持續聽到對方清晰的話語(有效TS1)一段時間后,就認為物理層溝通基礎已經打好,可以進入下一階段(Configuration)商量具體細節了。

?Polling詳細解剖

?上面簡單了說了一些基本常識,下面細節一點,當LTSSM 進?輪詢狀態時,鏈路處于電?空閑狀態,不過,輪詢狀態期間會在鏈路兩端之間交換 TS1 和 TS2 有序集。輪詢狀態的主要?的是使鏈路兩端的設備能夠聽懂對?在說些什么,換句話說,他們需要各?在對?的發送?特流上,建??特和符號鎖定狀態,并且解決極性翻轉 (polarity inversion)恢復之類的事宜。在這些?作完成后,設備們才能夠正確地接收對?發出的 TS1 和 TS2 有序集。下圖展示了輪詢狀態的 各個?狀態:

Polling.Active 期間

?????????旦鏈路雙?的共模電壓穩定在發送余量( Transmit Margin)域中允許的范圍內之后,發送?會發送?少 1024 個連續的 TS1 有序集。因為鏈路雙?退出檢測狀態的時刻可能不同,所以 TS1 命令序列的交換不是同步的。在 Gen1(2.5GT/s) 速率下,發送 1024 個 TS1 序列花費 64us 。

????????Active 次狀態下,有?些值得注意的細節: 必須在 TS1 序列的通道(Lane)和鏈路編號(Link number)字段中使?PAD字符設備需要通告(advertise)???持的所有速率,哪怕設備并不打算使?這些速率;接收?使?接收到的 TS1 序列實現?特鎖定和符號鎖定(低于 8GT/s 的速率)或者塊鎖定(8GT/s 速率)

為什么至少要發送1024個TS1,并至少接收8個為準?

接收端的符號鎖定電路需要連續檢測到一定數量的有效 `COM` 符號(通常是 3 個),并且它們出現在預期的間隔位置(例如,每 16 個符號出現一次,因為一個 TS1 有序集包含 16 個符號),才能確認成功鎖定。

????????1024 個 TS1 提供了海量的 `COM` 符號機會:每個 TS1 有序集至少包含 1 個 `COM` 符號(通常是第一個符號)。發送 1024 個 TS1 就意味著發送了至少 1024 個 `COM` 符號。這么做的目的:

? ? ? ? A.這個巨大的數量確保了即使在存在嚴重的噪聲、干擾或信號完整性問題的極端情況下,接收端也有極高的統計概率能夠在其接收到的信號流中找到足夠數量(遠多于最低要求的 3 個)的有效 `COM` 符號序列,從而成功實現并確認符號鎖定。它大大降低了因隨機噪聲或瞬時干擾導致鎖定失敗的可能性。

? ? ? ? B.提供足夠的穩定時間:接收端的時鐘數據恢復 (CDR) 電路需要時間來收斂并穩定地鎖定到發送端的比特率(位鎖定)。而且符號鎖定電路也需要在鎖定后,持續觀察一段時間以確認鎖定的穩定性和正確性。
? ? ????????1024 個 TS1 的時間窗口,在 PCIe Gen1 (2.5 GT/s) 基礎速率下:
? ? ? ? ? ? ????????* ? 一個 TS1 有序集有 16 個符號。
? ? ? ? ? ? ????????* ? 每個符號是 10 比特(8b/10b 編碼)。
? ? ? ? ? ? ????????* ? 發送一個 TS1 需要 `16 symbols * 10 bits/symbol / 2.5e9 bits/sec = 64 ns`。
? ? ? ? ? ? ????????* ? 發送 1024 個 TS1 需要 `1024 * 64 ns = 65.536 μs`。
? ? ? ? ???在 Gen2 (5.0 GT/s) 下,時間減半為 `~32.768 μs`。這個時間量級(幾十微秒)對于典型的 CDR 和符號鎖定電路來說,是一個合理的穩定時間窗口。它允許電路克服初始抖動、適應通道特性并達到穩定狀態。

? ? ? ? C.確保通道檢測的確定性,在 `Polling` 狀態之前是 `Detect` 狀態。`Detect` 狀態負責初步檢測對端是否存在接收器。而1024 個 TS1 的要求,是對 `Detect` 狀態結果的最終確認。它要求鏈路不僅在 `Detect` 瞬間被認為“存在”,還必須能在相對較長(微秒級)的時間內持續穩定地傳輸和接收訓練序列,避免因瞬時連接或噪聲尖峰導致的誤檢測。

????????8個連續的 TS1” 是鎖定成功后的穩定性驗證:
????????即使接收端在某個瞬間報告了鎖定,也需要確認這種鎖定是持續穩定的,而不是瞬態或錯誤的。而8 個連續的 TS1 要求,是在發送方發送完其設定的 TS1 序列(至少 1024 個)之后,接收方必須在所有檢測到的通道 (Lane) 上,連續無誤地接收到 8 個完整的 TS1 有序集(如果存在極性反轉,接收到的就是 TS1 的補集,但能被正確識別為有效 TS1)。這么做的目的:
? ? ? ? A.驗證位鎖定的穩定性:連續正確接收 8 個 TS1(每個 TS1 包含 160 比特 Gen1/2)需要 ?CDR 電路在整個接收過程中都保持精確的位鎖定。
? ? ? ? B.驗證符號鎖定的穩定性:每個TS1 中的 `COM` 符號必須被連續、正確地識別8次。
? ? ? ? C.驗證通道均衡初步有效性 (可選):在支持接收端均衡 (`RxEQ`) 的 `Polling.RxEQ` 子狀態中,這 8 個連續的 TS1 也用于驗證接收端應用的初始均衡設置是否足夠好,能支持無錯誤接收。如果在此階段有錯誤,狀態機可能不會立即進入 Configuration,而是嘗試調整均衡或進入 Recovery。
? ? ? ? D.確保參數一致性:接收到的這 8 個 TS1 的內容(`Link`, `Lane`, `Rate ID` 等)必須是一致的,表明對端設備在穩定發送相同的配置信息

Active轉移至Polling.Configuration

????????在發送?發送完 1024 個 TS1 ?最后?個 TS1 序列之后,如果所有檢測到的通道都收到了 8 個連續的訓練序列(如果存在極性翻轉的話,那么 收到的就是訓練序列的補集),并且這些訓練序列滿?以下條件之?的 話,狀態機進? Polling.Configuration 狀態:

? ? ? ? A.接收到的 TS1 的鏈路和通道字段全部被設置為全填充字符 (PAD),并且 Compliance Receive ?特設置為 0b (符號 5 的 ?特 4)

? ? ? ? B.接收到的 TS1 的鏈路和通道字段都被設置為全填充字符,并且 Loopback ?特設置為 1b (符號 5 的 ?特 2)

? ? ? ? C.接收到的 TS2 的鏈路和通道字段都被設置為全填充字符.

如果上述條件都沒能滿?,那么在 24ms 的超時之后,在接收到某個 TS1 之后,已經發送了 1024 個 TS1 序列,只需要任意檢測到的通道接 收到了 8 個連續的TS1 序列或者 TS2 序列,通道以及鏈路編號是填充符號,并且滿?以下條件之?(譯注:其實以下條件和超時前的判斷條件 ?致),那么狀態機進? Polling.Configuration 狀態。

? ? ? ? A.?接收到的 TS1 的鏈路和通道字段全部被設置為全填充字符 (PAD),并且 Compliance Receive ?特設置為 1b (符號 5 的 ? 特 4)

? ? ? ? B.接收到的 TS1 的鏈路和通道字段都被設置為全填充字符,并且 Loopback ?特設置為 1b (符號 5 的 ?特 2)

? ? ? ? C.接收到的 TS2 的鏈路和通道字段都被設置為全填充字符

備用機制(降級lane number)

如果在任意通道上都沒有滿?上述條件的情況出現,那么如果?進? Polling.Active 狀態以來,有超過預定數量的通道上檢測到?少?次退出電?空閑的現象(這是為了防??個或者多個失效的發送端或者接收端 導致鏈路不能能進?配置),那么也能進? Polling.Configuration 狀 態

這個機制是 PCIe LTSSM 狀態機在Polling.Active子狀態下,當無法通過常規的 TS1 交換條件進入 Configuration 狀態時的一種容錯和恢復路徑。它允許鏈路在部分通道(Lane)出現故障時,仍有可能繼續訓練過程,嘗試建立部分寬度的可用鏈路,而不是完全失敗。以下進行詳細解釋:

1. ?常規進入 Configuration 狀態的條件失敗:
? ? ????????* ? 在 Polling.Active 狀態,設備會持續發送 TS1 并監聽接收到的 TS1。
? ? ????????* ? 進入 Configuration 狀態的條件是:在 `N_FTS` 時間窗口內,在所有配置的 Lane上,持續、穩定地接收到有效的 TS1 有序集,并且本端接收器也完成了位鎖定和符號鎖定。
? ? ???如果在任意通道上都沒有滿足上述條件的情況出現:這意味著在 `N_FTS` 超時期限內,至少存在一個 Lane上未能持續接收到有效的 TS1 序列(例如,完全沒收到、收到無效 TS1、收到 TS2、錯誤太多、鎖定失敗等)。

2. ?備選條件:檢測“退出電氣空閑” (Exit from Electrical Idle):**
? ? ????????* ?當主要條件不滿足時,狀態機不會立即宣告失敗(如進入 Detect 或 Loopback 等恢復狀態),而是檢查一個備選條件,?這個條件是自進入 Polling.Active 狀態以來,在超過某個“預定數量”的Lane 上,檢測到至少一次“退出電氣空閑” (Exit from Electrical Idle) 的現象。

退出電氣空閑?
? ? ? ? ????????* ?電氣空閑 (Electrical Idle, EI)是 PCIe 物理層的一種低功耗狀態。在 EI 狀態下,發送器停止發送差分信號,并將差分電壓驅動到接近 0V (共模電壓不變)。
? ? ? ? ????????* ?退出電氣空閑 (Exit from EI)是指發送器離開 EI 狀態,開始發送有效的差分信號(如 TS1)的過程。這個過程會在鏈路上產生一個明顯的、可檢測的電氣瞬變(差分電壓從 ~0V 躍升到正常的信號電平)。
如何檢測“退出電氣空閑”?
? ? ? ? ????????* ? 接收端的物理層 (PHY) 電路包含電氣空閑退出檢測器 (Electrical Idle Exit Detector, EIED)。EIED 監測差分線路上的電壓變化。當檢測到差分電壓在特定時間內超過一個預設的閾值(通常遠低于正常信號幅度,但明顯高于 EI 噪聲水平),它就認為檢測到了一次“退出電氣空閑”事件。通常這個檢測發生在信號解碼之前,不依賴于位鎖定、符號鎖定或 TS1 內容解析。它是一種非常底層的、對物理信號存在性的探測。

設計這個機制的意義防止一個或者多個失效的發送端或者接收端導致鏈路不能進行配置,這是該機制的核心目標。
? ? ? ? * 場景1 (發送端失效):某個 Lane 的對端發送器可能完全故障,無法發送任何信號(包括 TS1),在常規條件下,這個 Lane 永遠收不到 TS1,會阻止整個鏈路進入 Configuration。
? ? ? ? * 場景2 (接收端失效):某個 Lane 的本端接收器可能故障(如位鎖定/符號鎖定電路損壞),導致它無法正確解析任何信號,即使對端發送了有效的 TS1,它也無法報告“接收到有效 TS1”。

? ? ????* 檢測到退出電氣空閑”的含義:在一個 Lane 上檢測到 Exit EI 事件,表明**該 Lane 的對端發送器很可能在工作**(它至少嘗試發送了信號)。同時它也表明該 Lane 的物理連接(包括本端接收器的基礎模擬前端)很可能基本完好,能夠檢測到這個電氣瞬變。
解釋一下什么是超過預定數量的通道” (Predetermined Number of Lanes):預定數量” 由具體實現決定 (Implementation Defined):這意味著設計者可以根據系統需求和容錯策略來設定這個閾值。
? ? ? ? ? ? * ?基于鏈路寬度:例如,對于 x16 鏈路,閾值可能設為 12 或 14 個 Lane (即允許 2-4 個 Lane 故障)。對于 x4 鏈路,閾值可能設為 3 或 4 個 Lane (允許 0-1 個故障)。
? ? ? ? ? ? * ?最小可用寬度:?閾值可能設定為支持鏈路最低可用寬度所需的 Lane 數(例如,PCIe 支持 x1, x2, x4, x8, x16,即使配置為 x16,如果檢測到 8 個可用 Lane,也可能嘗試建立 x8 鏈路)。
? ? ? ? ??? *?只要足夠數量的 Lane 表現出“有活躍發送器存在”(檢測到 Exit EI),就認為鏈路有希望建立部分連接,值得嘗試進入 Configuration 狀態進行進一步的協商和可能的降級(Lane 縮減)。

狀態轉換
? ?????????如果主要條件不滿足(即至少一個 Lane 沒收到連續有效的 TS1),但備選條件滿足(即超過預定數量的 Lane 檢測到至少一次 Exit EI),那么狀態機將進入 Configuration 狀態(Configuration.Linkwidth.Start)。Configuration 子狀態機(特別是 Linkwidth 協商)會負責識別和排除那些有問題的 Lane,最終建立可用的(可能是縮減寬度的)鏈路。在進入 Configuration 狀態后,設備會繼續嘗試進行鏈路寬度協商(Link Number 和 Lane Number 分配)。在這個過程中,那些未能滿足主要條件的 Lane(即未能正確交換 TS1 的 Lane)很可能在 Configuration 狀態中被標記為失敗(例如,分配到 `Link=0xFE` 的“壞 Lane 集合”中,最終鏈路會以縮減的寬度(例如,x8 而不是 x16)向上層報告 L0 狀態。

還是舉個例子吧:當正常“握手”(交換TS1)因為一兩條“線”(Lane)壞了而失敗時,PCIe協議提供了一個備選方案:檢查大部分“線”上是否有對方“喊話”的跡象(檢測到退出電氣空閑)。如果有足夠多的“線”能聽到對方“喊了一嗓子”,就認為還有救,于是進入下一階段(Configuration)去具體商量哪些“線”還能用,最終可能建立一條比預期窄但還能工作的“路”(鏈路)。這個機制顯著提高了PCIe鏈路在面對個別通道硬件故障時的生存能力。

Active轉移至Polling.Compliance

如果 Link Control 2 寄存器中的Enter Compliance?特被設置為1, 那么進?Polling.Compliance。或者如果在進? Polling.Active 狀態之前,該?特已經被置位,那么將直接從 Active 狀態進? Compliance 狀 態,不會在 Active 狀態中發送任何 TS1 序列。若未設置?Enter Compliance bit,在?Polling.Active?等待?24ms?后,滿足以下任一條件,再次判斷進? Compliance 狀態的條件:

? ? ? ? A.所有的通道在進? Active 狀態后,都沒有檢測到對端退出電?空閑狀態,即無活動信號。(這意味著對端是?個被動測試負載,?如在?少?個通道 上掛載了?個測試電阻,將強制使所有通道進? Compliance 狀 態。)

? ? ? ? B.接收到 8 個連續的 TS1 ,其鏈路和通道字段全部被設置為全填充字符(PAD),并且 Compliance Receive ?特設置為 1b (符號 5 的 ?特 4),并且 Loopback ?特設置為 0b (符號 5 的 ?特 2)。

為何需要 24ms 等待?

  • 這是?Polling.Active?狀態的超時窗口N_FTS?典型值)。

  • 確保有足夠時間檢測對端是否存在正常設備(若能收到有效 TS1,則進入常規鏈路訓練)。

  • 若超時后仍無有效信號或收到特定測試序列,則判定為測試環境。

未檢測到退出電氣空閑 (Condition A)

  • 現象:?所有 Lane 的接收端始終處于電氣空閑 (Electrical Idle)?狀態。

  • 原因:?對端是被動測試負載(如:

    • 在差分線上連接?50Ω?電阻到地(模擬接收端)。

    • 無信號發送能力,因此無法觸發 "Exit Electrical Idle" 事件。

  • 意義:?強制進入 Compliance 狀態以執行接收端電氣測試(如差分電壓、共模噪聲等)。

Active轉移至?Detect State

????????如果在 24ms 之后,沒有滿?進? Polling.Configuration 狀態或者 Polling.Compliance 狀態的條件,那么返回 Detect 狀態。?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85377.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【HarmonyOS Next之旅】DevEco Studio使用指南(二十八) -> 開發云對象

目錄 1 -> 開發流程 2 -> 創建云對象 3 -> 開發云對象 4 -> 調試云對象 4.1 -> 前提條件 4.2 -> 通過本地調用方式調試云對象 4.3 -> 通過遠程調用方式調試云對象 5 -> 部署云對象 1 -> 開發流程 除去傳統的云函數,您還可在端云…

基于51單片機的音樂盒汽車喇叭調音量proteus仿真

地址: https://pan.baidu.com/s/1l3CSSMi4uMV5-XLefnKoSg 提取碼:1234 仿真圖: 芯片/模塊的特點: AT89C52/AT89C51簡介: AT89C51 是一款常用的 8 位單片機,由 Atmel 公司(現已被 Microchip 收…

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.8 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.8 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖。 (a) dataframe<-data.frame( Lightc(580,568…

[藍橋杯]分考場

題目描述 nn 個人參加某項特殊考試。 為了公平&#xff0c;要求任何兩個認識的人不能分在同一個考場。 求是少需要分幾個考場才能滿足條件。 輸入描述 輸入格式&#xff1a; 第一行&#xff0c;一個整數 nn (1≤n≤1001≤n≤100)&#xff0c;表示參加考試的人數。 第二行…

C++: STL簡介與string類核心技術解析及其模擬實現

目錄: 一.STL二.string類一、創建對象的6種構造方式二、常用接口解析1. 容量操作2. 元素訪問3. 修改操作4. 字符串操作 三.string模擬實現一、設計基礎&#xff1a;類結構與資源管理二、拷貝控制&#xff1a;深拷貝的三種實現1. 傳統深拷貝2. 現代寫法&#xff08;推薦&#xf…

Python進階【四】:XML和JSON文件處理

Python提供了多種處理XML和JSON文件的方式&#xff0c;讓我們來看看最常用的方法。 一、處理JSON文件 JSON在Python中處理起來非常簡單&#xff0c;因為它的結構與Python的字典(dict)和列表(list)幾乎一致。 常用模塊&#xff1a;json模塊 優點&#xff1a;Python標準庫自帶…

Golang | 搜索哨兵-對接分布式gRPC服務

哨兵&#xff08;centennial&#xff09;負責接待客人&#xff0c;直接與調用方對接。哨兵的核心組件包括service HUB和connection pool。service HUB用于與服務中心通信&#xff0c;獲取可提供服務的節點信息。connection pool用于緩存與index worker的連接&#xff0c;避免每…

CSS3實現的賬號密碼輸入框提示效果

以下是通過CSS3實現輸入框提示效果的常用方法&#xff0c;包含浮動標簽和動態提示兩種經典實現方案&#xff1a; 一、浮動標簽效果 <div class"input-group"><input type"text" required><label>用戶名</label> </div><…

maven編譯時跳過test過程

如果代碼里有無法在打包環境中測試的部分&#xff0c;則直接運行mvn clean package&#xff0c;因為測試失敗&#xff0c;會導致打包失敗。目前有兩種方式可以跳過測試&#xff1a; 1. mvn clean package -DskipTests&#xff0c;這會跳過執行階須&#xff0c;但仍會生成測試所…

美業+智能體,解鎖行業轉化新密碼(2/6)

摘要&#xff1a;中國美業市場近年蓬勃發展&#xff0c;規模持續擴大&#xff0c;預計不久將突破萬億級別&#xff0c;但同時也面臨著諸多挑戰&#xff0c;如獲客成本攀升、服務質量不穩定、難以滿足消費者多元化個性化需求等。智能體技術的出現為美業帶來了新的發展機遇&#…

設計模式——責任鏈設計模式(行為型)

摘要 責任鏈設計模式是一種行為型設計模式&#xff0c;旨在將請求的發送者與接收者解耦&#xff0c;通過多個處理器對象按鏈式結構依次處理請求&#xff0c;直到某個處理器處理為止。它包含抽象處理者、具體處理者和客戶端等核心角色。該模式適用于多個對象可能處理請求的場景…

react/vue移動端項目,刷新頁面404的原因以及解決辦法

一 、 項目 移動端 二、背景 1、問題描述&#xff1a;react/vue移動端項目&#xff0c;正常的頁面操作跳轉&#xff0c;不會出現404的問題&#xff0c;但是一旦刷新&#xff0c;就會出現404報錯 2、產生原因&#xff1a; React Router是客戶端的路由&#xff0c;當再次刷新時…

數據結構-算法學習C++(入門)

目錄 03二進制和位運算04 選擇、冒泡、插入排序05 對數器06 二分搜索07 時間復雜度和空間復雜度08 算法和數據結構09 單雙鏈表09.1單雙鏈表及反轉09.2合并鏈表09.2兩數相加09.2分隔鏈表 013隊列、棧、環形隊列013.1隊列013.2棧013.3循環隊列 014棧-隊列的相互轉換014.1用棧實現…

用JS實現植物大戰僵尸(前端作業)

1. 先搭架子 整體效果&#xff1a; 點擊開始后進入主場景 左側是植物卡片 右上角是游戲的開始和暫停鍵 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

深入理解設計模式之代理模式

深入理解設計模式之&#xff1a;代理模式 一、什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式。它為其他對象提供一種代理以控制對這個對象的訪問。代理對象在客戶端和目標對象之間起到中介作用&#xff0c;可以在不改變目標…

Ubuntu設置之初始化

安裝SSH服務 # 安裝 OpenSSH Server sudo apt update sudo apt install -y openssh-server# 檢查 SSH 服務狀態 sudo systemctl status ssh # Active: active (running) since Sat 2025-05-31 17:13:07 CST; 6s ago# 重啟服務 sudo systemctl restart ssh自定義分辨率 新…

【仿生機器人】極具前瞻性的架構——認知-情感-記憶“三位一體的仿生機器人系統架構

基于您的深度需求分析&#xff0c;我將為您設計一個全新的"認知-情感-記憶"三位一體的仿生機器人系統架構。以下是經過深度優化的解決方案&#xff1a; 一、核心架構升級&#xff08;三體認知架構&#xff09; 采用量子糾纏式架構設計&#xff1a; 認知三角&#xf…

Python量化交易12——Tushare全面獲取各種經濟金融數據

兩年前寫過Tushare的簡單使用&#xff1a; Python量化交易08——利用Tushare獲取日K數據_skshare- 現在更新一下吧&#xff0c;這兩年用過不少的金融數據庫&#xff0c;akshare&#xff0c;baostock&#xff0c;雅虎的&#xff0c;pd自帶的......發現還是Tushare最穩定最好用&…

python打卡day39@浙大疏錦行

知識點回顧 圖像數據的格式&#xff1a;灰度和彩色數據模型的定義顯存占用的4種地方 模型參數梯度參數優化器參數數據批量所占顯存神經元輸出中間狀態 batchisize和訓練的關系 1. 圖像數據格式 - 灰度圖像 &#xff1a;單通道&#xff0c;像素值范圍通常0-255&#xff0c;形狀為…

源碼解析(二):nnUNet

原文 &#x1f600; nnU-Net 是一個用于生物醫學圖像分割的自配置深度學習框架&#xff0c;可自動適應不同的數據集。可用于處理和訓練可能規模龐大的二維和三維醫學圖像。該系統分析數據集屬性并配置優化的基于 U-Net 的分割流程&#xff0c;無需手動參數調整或深度學習專業知…