這一篇文章來(lái)簡(jiǎn)單地介紹一下鏈路訓(xùn)練狀態(tài)機(jī)(Link Training and Status State Machine,LTSSM),并簡(jiǎn)要地介紹各個(gè)狀態(tài)的作用和實(shí)現(xiàn)機(jī)制。
LTSSM有11個(gè)狀態(tài)(其中又有多個(gè)子狀態(tài)),分別是Detect、Polling、Configuration、Recovery,L0、L0s、L1、L2(L3是可選的)、Hot Reset、Loopback和Disable狀態(tài)。系統(tǒng)進(jìn)行復(fù)位操作(Cold, Hot or Warm Reset)后,會(huì)自動(dòng)進(jìn)入Detect狀態(tài)。
這11個(gè)狀態(tài)又可以被分為以下五個(gè)類別:
1、鏈路訓(xùn)練狀態(tài)(Link Training State);
2、重訓(xùn)練狀態(tài)(Re-Training(Recovery) State);
3、軟件驅(qū)動(dòng)功耗管理狀態(tài)(Software Driven Power Management State);
4、活動(dòng)狀態(tài)功耗管理狀態(tài)(Active-State Power Management State,ASPM State);
5、其他狀態(tài)(Other State);
如下圖所示:
下面分別簡(jiǎn)要地介紹一下各個(gè)狀態(tài):
首先是Detect:
前面說(shuō)到,系統(tǒng)進(jìn)行復(fù)位操作(Cold, Hot or Warm Reset)后,會(huì)自動(dòng)進(jìn)入Detect狀態(tài)。在這個(gè)狀態(tài)中,PCIe設(shè)備會(huì)去檢測(cè)自己Link的另一端是否存在其他PCIe設(shè)備。換句話說(shuō),就是檢測(cè)有么有其他的PCIe設(shè)備與其相連接。如下圖所示:
Polling:
在該狀態(tài)中,PCIe設(shè)備會(huì)依次發(fā)送TS1OS和TS2OS以實(shí)現(xiàn)以下目標(biāo):
1、位鎖定(Bit Lock);
2、字符鎖定(Symbol Lock);
3、信號(hào)極性翻轉(zhuǎn)(Polarity Inversion),如果需要的話;
4、確定各個(gè)設(shè)備支持的速率(Data Rates)。
如下圖所示:
Configuration:
在該狀態(tài)中,PCIe設(shè)備會(huì)依次發(fā)送TS1OS和TS2OS以實(shí)現(xiàn)以下目標(biāo):
1、確定鏈路寬度(Link Width);
2、分配通道(Lane)號(hào);
3、通道位置翻轉(zhuǎn)(Lane Reversal),如果需要的話;
4、通道對(duì)齊(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(如果鏈路兩端設(shè)備都支持的話,且經(jīng)過(guò)了Re-Trainning)。
Recovery:
這個(gè)狀態(tài)用于Re-Trainning,因此Re-Trainning可能會(huì)改變?cè)械乃俾?,所以位鎖定(Bit Lock)和符號(hào)鎖定(Symbol Lock)操作都會(huì)被重新進(jìn)行,但是花費(fèi)的時(shí)間要比第一次少很多。
其內(nèi)部的子狀態(tài)轉(zhuǎn)移圖如下圖所示:
L0s:
該ASPM狀態(tài)主要用于降低功耗,在總線空閑的時(shí)候可以進(jìn)入該狀態(tài),且從該狀態(tài)可以迅速地重新切換回L0狀態(tài)。當(dāng)在L0狀態(tài)是,鏈路上出現(xiàn)EIOS時(shí),則表明即將進(jìn)入L0s狀態(tài)。當(dāng)在L0s狀態(tài)時(shí),鏈路上出現(xiàn)FTS時(shí),鏈路會(huì)迅速地完成位鎖定和符號(hào)鎖定,并進(jìn)入L0狀態(tài)。
發(fā)送端如下圖所示:
接收端的示意圖如下:
L1:
相對(duì)于L0s狀態(tài),L1狀態(tài)下的功耗更低。進(jìn)入L1狀態(tài)需要鏈路兩端的PCIe進(jìn)行“溝通”,只有雙方都“同意”進(jìn)入該狀態(tài),鏈路才會(huì)進(jìn)入該狀態(tài)。一般有以下兩種方式:
1、第一種是由ASPM引導(dǎo),硬件自動(dòng)完成的。發(fā)送端發(fā)現(xiàn)鏈路上長(zhǎng)時(shí)間沒有TLP或者DLLP時(shí),便通過(guò)ASPM建議接收端進(jìn)入L1狀態(tài)。如果接收端“同意”了,則鏈路進(jìn)入L1狀態(tài);如果接收端“不同意”,則鏈路進(jìn)入L0s狀態(tài)。
2、第二種是有軟件引導(dǎo)的,軟件發(fā)送一系列的命令讓鏈路進(jìn)入低功耗狀態(tài)(D1,D2,or D3 Hot)。隨后,鏈路的上端設(shè)備會(huì)通知下端設(shè)備進(jìn)入L1狀態(tài),收到來(lái)自下端設(shè)備的應(yīng)答后,鏈路進(jìn)入L1狀態(tài)。
如下圖所示:
L2:
L2狀態(tài)下的鏈路功耗更低,因?yàn)槠渲槐A袅薞aux,關(guān)閉了鏈路的其他功能。此時(shí),需要Beacon信號(hào)或者WAKE#邊帶信號(hào)來(lái)喚醒系統(tǒng)。其中Beacon信號(hào)是一種低頻信號(hào)(30KHz~500MHz),其波形圖如下圖所示:
注:此外,還有一個(gè)L3狀態(tài),不過(guò)其實(shí)際上已經(jīng)不屬于LTSSM了。由于L3狀態(tài)連Vaux都關(guān)閉了,一旦進(jìn)入L3狀態(tài),實(shí)際上和直接關(guān)閉PCIe設(shè)備的電源沒有什么太大的差別了。
L2的子狀態(tài)轉(zhuǎn)移圖如下圖所示:
Loopback:
該狀態(tài)主要用于測(cè)試,這里就不詳細(xì)介紹了。
Disable:
該狀態(tài)中鏈路被禁止,此時(shí)發(fā)送端處于電氣空閑狀態(tài)(Electrical Idle State),而接收端處于低阻狀態(tài)(Low Impedance State)。進(jìn)入該狀態(tài)的原因可能是鏈路連接不穩(wěn)定,或者鏈路中的某個(gè)設(shè)備被移除,如PCIe卡從插槽中拔出。
Hot Reset:
軟件可以通過(guò)將橋控制寄存器(Bridge Control Register)中的Secondary Bus Reset位置位來(lái)復(fù)位鏈路。隨后,橋下端的PCIe設(shè)備發(fā)送TS1OS,其中的Training Control中包含了Hot Reset的信息。當(dāng)接收端發(fā)現(xiàn)連續(xù)的兩個(gè)TS1OS中都包含Hot Reset時(shí),鏈路隨后進(jìn)入復(fù)位狀態(tài)。
注:本文只是對(duì)LTSSM進(jìn)行了簡(jiǎn)單的介紹,關(guān)于具體的每一個(gè)狀態(tài)內(nèi)部是如何實(shí)現(xiàn)的,請(qǐng)參考PCIe Spec相關(guān)章節(jié)。
-
PCIe
+關(guān)注
關(guān)注
15文章
1263瀏覽量
83238 -
鏈路
+關(guān)注
關(guān)注
1文章
73瀏覽量
14042 -
功耗管理
+關(guān)注
關(guān)注
0文章
8瀏覽量
7191
原文標(biāo)題:【博文連載】PCIe掃盲——鏈路初始化與訓(xùn)練基礎(chǔ)(三)之LTSSM
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論