【桃子同學筆記4】PCIE訓練狀態機(LTSSM)基礎

首先,所謂LTSSM,即:Link Training and Status State Machine(鏈路訓練及狀態機)

下圖為 LTSSM 的狀態機及訓練過程:

poYBAGMDrVmAL_fgAACkfb-bRc4659.png

LTSSM 包含 11 個頂層狀態:Detect、Polling、Configuration、Recovery、L0、L0s、L1、L2、Hot Reset、Loopback 和 Disable。這些狀態可以分為 5 類:

Link Training states(鏈路訓練狀態)
Re-Training(Recovery)state(重訓練狀態)
Software driven Power Management State(由軟件控制的電源管理狀態)
Active-State Power Management(ASPM)states(動態電源管理狀態)
Other states(其他狀態)


①各種復位(Reset)之后,狀態機的改變為:Detect => Polling => Configuration => L0。在 L0 狀態下即可進行標準數據交互。

②鏈路的 Re-Training 狀態也稱為 Recovery(恢復)狀態。鏈路進入 Re-Training 狀態的原因有多種,例如從低功耗鏈路狀態(如 L1)退出、改變帶寬(改變速率或者寬度)等。在該狀態下,鏈路會根據需要重新執行一部分鏈路訓練的流程,然后進入 L0 狀態。

③電源管理軟件能將設備(Device)切換到低功耗設備狀態(D1,D2,D3Hot 或者 D3Cold),這會導致鏈路進入對應的低功耗鏈路狀態(L1 或者 L2)。

④在某一時刻,如果沒有數據在傳輸,那么 ASPM 硬件可以自動將硬件切換到功耗較低的 ASPM 狀態(L0s 或者 ASPM L1)。

另外,軟件還可以將鏈路設置為其它的一些特殊狀態:Disabled,Loopback 或者 Hot Reset。


1. Detect 狀態

當 PCIe 鏈路被復位或者數據鏈路層通過填寫某些寄存器之后,LTSSM 將進入該狀態。
當 PCIe 鏈路進入該狀態時,發送邏輯 TX 并不知道對端接收邏輯 RX 的存在,因此需要使用 Receiver Detect 識別邏輯判斷對端接收邏輯 RX 是否可以正常共工作,之后才能進入其他狀態。那么TX怎么去判斷對端設備呢?

如下圖,Detect狀態包含了兩個子狀態:Detect.Quiet和Detect.Active

pYYBAGMDrVmAB66AAABWg7-KUB4846.png

2. Polling 狀態
當 PCIe 鏈路進入該狀態時,將向對端發送 TS1 和 TS2 Ordered Sets(2.5 GT/s),并接收對端的 TS1 和 TS2 Ordered Sets(2.5 GT/s)。

通過接收到的 TS1 和 TS2 序列,完成如下操作:

獲取 Bit Lock
獲取 Symbol Lock 或者 Block Lock
如果需要,糾正 lane polarity inversion(差分信號極性反轉)
檢測支持的速率
PCIe 鏈路處于該狀態時,將進行 Loopback 測試,確定當前使用的 PCIe 鏈路可以正常工作。


3. Configuration 狀態
發送邏輯 TX 和 接收邏輯 RX 繼續以 2.5 GT/s 的速度交換 TS1 和 TS2 Ordered Sets,完成如下任務:

確定 Link Width
指定 Lane Number
根據需要,對 Lane reversal 進行檢查并對其進行糾正
處理 Lane-to-Lane 時序的偏差
Configuration 狀態下,scrambling 可以關閉,該狀態可以切換到 Disabled 狀態或者 Loopback 狀態。
在 TS1 和 TS2 中,還指定了 L0 狀態切換到 L0s 狀態所需要的 FTS Ordered Sets 的個數。


4. L0 狀態
L0 狀態是 PCIe 鏈路的正常工作狀態。該狀態下,PCIe 鏈路可以正常發送和接收 TLP、DLLP 和 Ordered Sets。如果需要切換到高于 2.5 GT/s 的速度傳輸,則需要進入 Recovery 狀態進行鏈路重訓練(Re-Training)。


5. Recovery 狀態
PCIe 鏈路需要進行重訓練(Re-Training)時會進入該狀態,可能的原因有:

L0 狀態出現錯誤
從 L1 狀態切換到了 L0 狀態
從 L0s 狀態切換到了 L0 狀態,但是使用 FTS 流程并沒有將鏈路訓練到可用狀態
在 Recovery 狀態,重新建立 Bit Lock 和 Symbol/Block Lock 的過程與 Polling 狀態相似,但是要比 Polling 狀態花的時間更短。


6. L0s 狀態
L0s 是 ASPM(Active State Power Management)機制提供的第 1 級低功耗狀態,該狀態可以在較短的時間內切換到 L0 狀態。當設備要從 L0 狀態切換到 L0s 狀態時,需要向外發送 EIOS。當設備要從 L0s 狀態切換到 L0 狀態時,需要向外發送多個 FTS,從而快速獲取 Bit Lock 和 Symbol/Block Lock。


7. L1 狀態
L1 是 ASPM(Active State Power Management)機制提供的第 2 級低功耗狀態,它的功耗比 L0s 低,但是需要更長的時間才能切換到 L0 狀態。想要進入 L1 狀態,位于 PCIe 總線兩端的設備需要進行協商,然后同時進入 L1 狀態。兩種可能的方式如下:

ASPM 機制下硬件自動切換。當 Upstream Port 的硬件發現沒有 TLP 或者 DLLP 需要再發送的時候,就會自動和 Downstream Port 進行協商進入 L1 狀態。如果 Downstream Port 同意,則二者同時進入 L1 狀態;如果 Downstream Port 拒絕,則 Upstream Port 會進入 L0s 狀態。
電源管理軟件通過命令將設備配置為低功耗狀態(D1,D2,D3hot)。此時 Upstream Port 和 Downstream Port 上的設備同時進入 L1 狀態。

8. L2 狀態
L2 狀態是ASPM(Active State Power Management)機制提供的第 3 級低功耗狀態,此時設備的主電源被關閉,從而達到更低的功耗。該狀態下,幾乎所有的邏輯都被關閉,只有一小部分使用 Vaux 供電的邏輯在工作,該部分邏輯可以用來發送 wakeup 事件。

支持 wakeup 功能的 Upstream Port 能向外發送一個低頻信號,該信號稱為 Beacon。Downstream Port 將 Beacon 信號轉發給 Root Complex。通過 Beacon 或者 WAKE# 引腳,設備可以要求系統恢復它的主電源供電。


9. Loopback 狀態
該狀態是用來測試的,但是協議并沒有明確規定 Receiver 在該狀態下做些什么。基本的操作很簡單:設備 A 作為 Loopback Master,連續對外發送兩個 TS1 Ordered Sets,并且 TS1 的 Training Control 區域的 Loopback 位需要設置為 1。設備 B 接收到連續兩個 Loopback 位為 1 的 TS1 之后,就會進入 Loopback state,稱為 Loopback Slave。Loopback Slave 會將收到的所有內容再發送給 Loopback Master,從而形成回環,驗證鏈路的完整性。


10. Disable 狀態
系統軟件可以通過設置寄存器,使 PCIe 鏈路進入 Disabled 狀態。當 PCIe 鏈路的對端設備被拔出時,LTSSM 也需要進入該狀態。

該狀態下,發送端設備處于 Electrical Idle 狀態,接收端設備處于低阻抗狀態。對于鏈接已經變得不可靠或者設備被意外移除時,這種狀態很有必要。

系統軟件配置 Link Control register 的 Disable 位之后,該設備會對外發送 16 個 TS1 Ordered Sets,這些 TS1 的 Training Control 區域的 Disable Link 位需要設置為 1。接收設備在收到這 16 個 TS1 之后,進入 Disabled 狀態。


11. Hot Reset 狀態
系統軟件將 Bridge Control register 的 Secondary Bus Reset 位設置為 1 之后,Bridge 的 downstream port 會對外發送多個 TS1 Ordered Sets,這些 TS1 的 Training Control 區域 Hot Reset 位必須被設置為 1。接收設備收到連續 2 個這種 TS1 之后,必須對設備進行復位。

當處理器系統進行 Hot Reset 操作時,PCIe 鏈路將進入 Recovery 狀態,然后進入 Hot Reset 狀態進行 PCIe 鏈路的重訓練。

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

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

相關文章

STM32傳感器模塊編程實踐(十五)DIY語音對話控制+滿溢檢測智能垃圾桶模型

文章目錄 一.概要二.實驗模型原理1.硬件連接原理框圖2.控制原理 三.實驗模型控制流程四.語音控制垃圾桶模型程序五.實驗效果視頻六.小結 一.概要 以前介紹的智能垃圾桶模型都是通過超聲波模塊感知控制,這次介紹一款新的智能垃圾桶,直接使用語音交互模塊…

[bat-cli] docs | 控制器

鏈接:https://github.com/sharkdp/bat 前文傳送: 【探索Linux命令行】從基礎指令到高級管道操作的介紹與實踐【Linux命令行】從時間管理->文件查找壓縮的指令詳解【Linux】1w詳解如何實現一個簡單的shell docs:bat bat 是一個*…

無線自動信道調整

通過信道調整功能,可以保證每個AP 能夠分配到最優的信道,盡可能地 減少和避免相鄰信道干擾,而且通過實時信道檢測,使AP 實時避開雷達,微波爐等干擾源。 動態信道調整能夠實現通信的持續進行,為網絡的可靠傳…

ios面試八股文

??Swift 語言特性??:請解釋一下 struct和 class的主要區別。特性????struct (值類型)????class (引用類型)????類型本質??值類型 (復制時創建獨立副本)引用類型 (復制時共享同一實例)??內存分配??通常在棧上 (更快速)在堆上 (需要ARC管理)??…

IntelliJ IDEA 2023更新git憑據

背景:已知原來從遠程倉庫獲取的項目,需要更新git用戶和密碼,但是又不想刪除本地項目環境(不想重新獲取新建項目)。報錯:remote: HTTP Basic: Access denied. The provided password or token is incorrect …

Docker 容器 OOM:從資源監控到JVM調優的實戰記錄

人們眼中的天才之所以卓越非凡,并非天資超人一等而是付出了持續不斷的努力。1萬小時的錘煉是任何人從平凡變成超凡的必要條件。———— 馬爾科姆格拉德威爾 🌟 Hello,我是Xxtaoaooo! 🌈 “代碼是邏輯的詩篇&#xff…

【開題答辯全過程】以 基于微信小程序的寵物領養系統為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人,語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

【可信數據空間-連接器狀態監控-Java代碼集成】

可信數據空間-連接器狀態監控-Java代碼集成一、 核心概念1. Micrometer2. Micrometer Registry Prometheus3.Prometheus二、 依賴配置 (Maven)三、 集成步驟與代碼示例場景一:在 Spring Boot 應用中集成(最簡單)1. 添加依賴(如上所…

反編譯分析C#閉包

一、問題描述:比如有這樣的代碼:它的輸出結果是 3,3,3。通過搜索得知這一現象是因為C#閉包導致的.我們借助ILSpy看下IL中間代碼,首先它生成了一個名叫DisplayClass的類,類中定義了i的字段主代碼&#xff1a…

卷積神經網絡(CNN):從圖像識別原理到實戰應用的深度解析

目錄一.CNN的技術必要性:破解傳統圖像處理的兩大核心痛點痛點1:特征依賴人工設計,通用性差痛點2:全連接網絡參數爆炸,訓練難收斂二.CNN的核心原理:兩大機制與分層感知邏輯1.核心機制1:局部連接&…

用 SPL 編寫阿里云 FC2.0 函數

前言 在數字化轉型持續加速的背景下,企業越來越多地將業務邏輯以服務化方式部署至云端。阿里云函數計算(Function Compute,簡稱FC)作為一種無服務器計算平臺,屏蔽了底層資源運維的復雜性,使開發者能夠專注…

AR 巡檢與普通巡檢有哪些區別,有哪些優勢|阿法龍XR云平臺

AR 巡檢(增強現實巡檢)與普通巡檢(傳統人工巡檢)在技術應用、效率、準確性等多個維度存在顯著差異,具體區別如下: 1. 巡檢方式更智能 普通巡檢:依賴人工現場觀察,主要通過眼看、手…

Java中的volatile關鍵字詳解

核心作用:解決可見性和有序性問題volatile 的主要作用可以歸結為兩點:1.保證變量的可見性 和 禁止指令重排序。2.它提供了一種輕量級的同步機制,3.但需要注意的是,它不能保證原子性。保證可見性:什么是可見性問題&…

【Linux】MySQL數據目錄遷移步驟(含流程圖踩坑經驗)

在生產環境中,有時候你會遇到一些看似簡單但實際上很棘手的問題。最近我就碰到了一次典型的服務器磁盤空間告急,最后通過遷移 MySQL 數據目錄成功解決了問題。本文記錄整個過程,包括我的分析思路、遷移步驟、踩坑和經驗總結,希望對…

數據驅動下的連鎖模式復制:技術科普與方法論深度解析

前言在連鎖經營的賽道上,“復制”是核心命題,但絕非簡單的“粘貼”。當行業進入數字化深水區,數據驅動正成為連鎖模式突破增長瓶頸、實現高效復制的“隱形引擎”。本文將從技術科普與方法論心得兩個維度,深度拆解數據如何重塑連鎖…

數據庫學習MySQL系列2、Windows11系統安裝MySQL方法一.msi安裝詳細教程

方法一.msi安裝詳細教程 Windows系統下MySQL——.msi安裝詳細教程(默認--只安裝服務端“Server only”)MySql官網地址:https://www.mysql.com/;快速下載通道請單擊→ No thanks, just start my download.ps:其他資源(…

html+css+vue實現增刪改查

代碼如下&#xff1a;<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>優化版 Vue.js CRUD 示例&l…

(計算機網絡)DNS解析流程及兩種途徑

在計算機網絡中&#xff0c;DNS&#xff08;Domain Name System&#xff09;用于 將域名解析為 IP 地址。一個完整的解析過程涉及 遞歸查詢、迭代查詢&#xff0c;以及多個關鍵角色&#xff08;LDNS、本地域名服務器&#xff1b;根服務器&#xff1b;頂級域名服務器&#xff1b…

數據結構——隊列(Java)

一.基本概念 隊列用來存儲邏輯關系為“一對一”的數據&#xff0c;是一種“特殊”的線性存儲結構。 特點&#xff1a; ?先進先出&#xff1a;隊列中元素的添加&#xff08;入隊enqueue&#xff09;和移除&#xff08;出隊dequeue&#xff09;遵循先進先出的原 則。 ?端點&…

【Go】:mac 環境下GoFrame安裝開發工具 gf-cli——gf_darwin_arm64

當前主要是關于gf_darwin_arm64的安裝步驟 如何快速給mac電腦安裝gfgf是什么安裝步驟方法1&#xff1a;去github下載gf-cli去git上下載對應電腦版本的gf-cli驗證下載文件是否二進制文件授予該文件權限方法2&#xff1a;去goframe官網教你下載步驟驗證gf是否安裝成功可能遇到的問…