LTSSM在PCIe體系結(jié)構(gòu)中的位置的示意圖如下: 在系統(tǒng)復(fù)位后,,會自動進(jìn)行鏈路訓(xùn)練,以達(dá)成以下目標(biāo):位鎖定(Bit Lock),、字符鎖定(Symbol Lock,,Gen1 & Gen2 Only)、塊鎖定(Block Lock,,Gen3 Only),、確定鏈路寬度(Link Width)、通道位置翻轉(zhuǎn)(Lane Reversal),、信號極性翻轉(zhuǎn)(Polarity Inversion),、確定鏈路的數(shù)據(jù)率(Data Rate)和通道對齊(Lane-to-Lane De-skew)等功能。 下面依次的,,簡要地介紹一下這些目標(biāo),。 注:本次連載博文主要Gen2為主,所以一些和Gen3相關(guān)的內(nèi)容只會簡單提及,,并不會深入地介紹,,有興趣的可以閱讀PCIe Spec V3.0或者M(jìn)indshare的相關(guān)書籍。 首先是 前面的文章中提到過,,PCIe總線采用了一種嵌入式時鐘的機(jī)制,,即發(fā)送端只向接收端發(fā)送數(shù)據(jù)信號,并不發(fā)送時鐘信號(時鐘信號影藏在數(shù)據(jù)信號中),。接收端可以通過CDR(Clock and Data Recovery)邏輯將時鐘從數(shù)據(jù)流中恢復(fù)出來,,然后再用恢復(fù)出來的時鐘對數(shù)據(jù)信號進(jìn)行采樣。當(dāng)然,,時鐘恢復(fù)需要一定的時間,,才能保證時鐘信號與數(shù)據(jù)信號的相位對應(yīng)關(guān)系符合要求。一旦CDR完成了時鐘的恢復(fù),,我們就說PCIe總線完成了位鎖定,。 完成了位鎖定之后,只是能夠準(zhǔn)確地識別出數(shù)據(jù)流中的0和1,,還是不知道發(fā)送的內(nèi)容是個啥,。對于Gen1&Gen2來說,采用的8b/10b編碼,,即傳輸?shù)臄?shù)據(jù)是以10bit為一個字符,。LTSSM可以引導(dǎo)物理層相關(guān)邏輯通過識別COM字符(K28.5)來確定每個字符的開始與結(jié)束為止,即字符鎖定,。 由于PCIe允許將x1的PCIe卡插入x4,、x8甚至是x16的PCIe插槽中。因此在鏈路訓(xùn)練與初始化過程中,相鄰的兩個PCIe設(shè)備需要相互通信來確定其支持的最大鏈路寬度,。 注:實(shí)際上PCIe Spec還允許采用動態(tài)帶寬的機(jī)制,即允許鏈路寬度和數(shù)據(jù)率動態(tài)調(diào)整,,以實(shí)現(xiàn)降低功耗等功能,。 有的時候兩個PCIe設(shè)備的通道排列位置可能不太一致,PCIe Spec允許對默認(rèn)的通道排列位置重新排列,,如下圖所示,。但是,從大部分的PCIe設(shè)備(PCIe卡和插槽等)都是按照統(tǒng)一的標(biāo)準(zhǔn)實(shí)現(xiàn)的,,一般不會出現(xiàn)這種情況,,因此這一功能是可選的。 前面的文章中介紹過,,PCIe收發(fā)的都是差分信號,,有的時候Link兩端的設(shè)備的對應(yīng)信號的極性可能是相反的。因此,,PCIe Spec允許在鏈路訓(xùn)練與初始化的時候,,對其進(jìn)行調(diào)整,如下圖所示,。和通道位置翻轉(zhuǎn)(Lane Reversal)不一樣的是,,信號極性翻轉(zhuǎn)(Polarity Inversion)并不是一個可選項,而是所有標(biāo)準(zhǔn)PCIe設(shè)備都應(yīng)支持的,。 系統(tǒng)剛復(fù)位的時候,,鏈路訓(xùn)練和初始化都是基于2.5G T/s的速率的。如果Link兩端的設(shè)備都支持更高的速率,,則會自動進(jìn)入Re-training狀態(tài),,以重新切換速率。 注:PCIe Spec規(guī)定,,高速率的PCIe設(shè)備必須能夠向下兼容,。即Gen2必須同時支持2.5G T/s和5G T/s。 PCIe鏈路完成字符鎖定后,,還需要進(jìn)行通道對齊,。因為有的通道的信號可能先到達(dá),有的可能后到達(dá),。PCIe Spec規(guī)定PCIe鏈路應(yīng)有能力對一定范圍了的Lane-to-Lane Skew進(jìn)行移除,,使得各個Lane上的信號是同步的。關(guān)于通道對齊,,會在后續(xù)的博文中詳細(xì)地介紹,。
|
|