這一篇文章來簡單地介紹一下鏈路訓練狀態(tài)機(Link Training and Status State Machine,LTSSM),并簡要地介紹各個狀態(tài)的作用和實現機制。
LTSSM有11個狀態(tài)(其中又有多個子狀態(tài)),分別是Detect、Polling、Configuration、Recovery,L0、L0s、L1、L2(L3是可選的)、Hot Reset、Loopback和Disable狀態(tài)。系統(tǒng)進行復位操作(Cold, Hot or Warm Reset)后,會自動進入Detect狀態(tài)。
這11個狀態(tài)又可以被分為以下五個類別:
1、鏈路訓練狀態(tài)(Link Training State);
2、重訓練狀態(tài)(Re-Training(Recovery) State);
3、軟件驅動功耗管理狀態(tài)(Software Driven Power Management State);
4、活動狀態(tài)功耗管理狀態(tài)(Active-State Power Management State,ASPM State);
5、其他狀態(tài)(Other State);
如下圖所示:

下面分別簡要地介紹一下各個狀態(tài):
首先是Detect:
前面說到,系統(tǒng)進行復位操作(Cold, Hot or Warm Reset)后,會自動進入Detect狀態(tài)。在這個狀態(tài)中,PCIe設備會去檢測自己Link的另一端是否存在其他PCIe設備。換句話說,就是檢測有么有其他的PCIe設備與其相連接。如下圖所示:

Polling:
在該狀態(tài)中,PCIe設備會依次發(fā)送TS1OS和TS2OS以實現以下目標:
1、位鎖定(Bit Lock);
2、字符鎖定(Symbol Lock);
3、信號極性翻轉(Polarity Inversion),如果需要的話;
4、確定各個設備支持的速率(Data Rates)。
如下圖所示:

Configuration:
在該狀態(tài)中,PCIe設備會依次發(fā)送TS1OS和TS2OS以實現以下目標:
1、確定鏈路寬度(Link Width);
2、分配通道(Lane)號;
3、通道位置翻轉(Lane Reversal),如果需要的話;
4、通道對齊(Lane-to-Lane De-skew)。
如下圖所示:

L0:
這是鏈路(Link)的正常狀態(tài)(Normal and Full-Active State),所有的TLP、DLLP和Ordered Sets都可以被正常的收發(fā)。該狀態(tài)下,速率可以是2.5GT/s或者是5GT/s(如果鏈路兩端設備都支持的話,且經過了Re-Trainning)。
Recovery:
這個狀態(tài)用于Re-Trainning,因此Re-Trainning可能會改變原有的速率,所以位鎖定(Bit Lock)和符號鎖定(Symbol Lock)操作都會被重新進行,但是花費的時間要比第一次少很多。
其內部的子狀態(tài)轉移圖如下圖所示:

L0s:
該ASPM狀態(tài)主要用于降低功耗,在總線空閑的時候可以進入該狀態(tài),且從該狀態(tài)可以迅速地重新切換回L0狀態(tài)。當在L0狀態(tài)是,鏈路上出現EIOS時,則表明即將進入L0s狀態(tài)。當在L0s狀態(tài)時,鏈路上出現FTS時,鏈路會迅速地完成位鎖定和符號鎖定,并進入L0狀態(tài)。
發(fā)送端如下圖所示:

接收端的示意圖如下:

L1:
相對于L0s狀態(tài),L1狀態(tài)下的功耗更低。進入L1狀態(tài)需要鏈路兩端的PCIe進行“溝通”,只有雙方都“同意”進入該狀態(tài),鏈路才會進入該狀態(tài)。一般有以下兩種方式:
1、第一種是由ASPM引導,硬件自動完成的。發(fā)送端發(fā)現鏈路上長時間沒有TLP或者DLLP時,便通過ASPM建議接收端進入L1狀態(tài)。如果接收端“同意”了,則鏈路進入L1狀態(tài);如果接收端“不同意”,則鏈路進入L0s狀態(tài)。
2、第二種是有軟件引導的,軟件發(fā)送一系列的命令讓鏈路進入低功耗狀態(tài)(D1,D2,or D3 Hot)。隨后,鏈路的上端設備會通知下端設備進入L1狀態(tài),收到來自下端設備的應答后,鏈路進入L1狀態(tài)。
如下圖所示:

L2:
L2狀態(tài)下的鏈路功耗更低,因為其只保留了Vaux,關閉了鏈路的其他功能。此時,需要Beacon信號或者WAKE#邊帶信號來喚醒系統(tǒng)。其中Beacon信號是一種低頻信號(30KHz~500MHz),其波形圖如下圖所示:

注:此外,還有一個L3狀態(tài),不過其實際上已經不屬于LTSSM了。由于L3狀態(tài)連Vaux都關閉了,一旦進入L3狀態(tài),實際上和直接關閉PCIe設備的電源沒有什么太大的差別了。
L2的子狀態(tài)轉移圖如下圖所示:

Loopback:
該狀態(tài)主要用于測試,這里就不詳細介紹了。
Disable:
該狀態(tài)中鏈路被禁止,此時發(fā)送端處于電氣空閑狀態(tài)(Electrical Idle State),而接收端處于低阻狀態(tài)(Low Impedance State)。進入該狀態(tài)的原因可能是鏈路連接不穩(wěn)定,或者鏈路中的某個設備被移除,如PCIe卡從插槽中拔出。
Hot Reset:
軟件可以通過將橋控制寄存器(Bridge Control Register)中的Secondary Bus Reset位置位來復位鏈路。隨后,橋下端的PCIe設備發(fā)送TS1OS,其中的Training Control中包含了Hot Reset的信息。當接收端發(fā)現連續(xù)的兩個TS1OS中都包含Hot Reset時,鏈路隨后進入復位狀態(tài)。
注:本文只是對LTSSM進行了簡單的介紹,關于具體的每一個狀態(tài)內部是如何實現的,請參考PCIe Spec相關章節(jié)。
-
PCIe
+關注
關注
16文章
1461瀏覽量
88454 -
鏈路
+關注
關注
1文章
77瀏覽量
14465 -
功耗管理
+關注
關注
0文章
10瀏覽量
7290
原文標題:【博文連載】PCIe掃盲——鏈路初始化與訓練基礎(三)之LTSSM
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
對LTSSM進行了簡單的介紹
評論