PCI總線中定義了四種復(fù)位名稱:冷復(fù)位(Cold Reset)、暖復(fù)位(Warm Reset)、熱復(fù)位(Hot Reset)和功能層復(fù)位(Function-Level Reset,F(xiàn)LR)。其中FLR是PCIe Spec V2.0加入的功能,因此一般把另外三種復(fù)位統(tǒng)稱為傳統(tǒng)的復(fù)位方式(Conventional Reset)。其中冷復(fù)位和暖復(fù)位是基于邊帶信號(hào)PERST#的,又被統(tǒng)稱為基本的復(fù)位方式(Fundamental Reset)。
基本復(fù)位由硬件自動(dòng)處理,會(huì)復(fù)位整個(gè)PCIe設(shè)備,初始化所有狀態(tài)機(jī)與相關(guān)硬件邏輯,端口狀態(tài)以及配置空間中的配置寄存器等等。但是,也有一個(gè)例外,就是前面介紹PCIe錯(cuò)誤報(bào)告機(jī)制的相關(guān)文章中提到過(guò)Sticky(不受復(fù)位影響)的概念。這里指的不受復(fù)位影響的前提是,PCIe設(shè)備的電源并未被完全切斷。Sticky這一功能有助于系統(tǒng)定位錯(cuò)誤與分析錯(cuò)誤起因。
基本復(fù)位中的冷復(fù)位(Cold Reset)指的是因?yàn)橹麟娫磾嚅_后重新連接導(dǎo)致的復(fù)位。需要注意的是,即使主電源斷開了,如果PCIe設(shè)備仍有輔助電源Vaux為其供電,該復(fù)位仍不會(huì)影響到Sticky的bits。
PCIe Spec允許兩種實(shí)現(xiàn)基本復(fù)位的方式。一是直接通過(guò)邊帶信號(hào)PERST#(PCI Express Reset);而是不使用邊帶信號(hào)PERST#,PCIe設(shè)備在主電源被切斷時(shí),自行產(chǎn)生一個(gè)復(fù)位信號(hào)。一個(gè)簡(jiǎn)單的例子如下圖所示:
暖復(fù)位(Warm Rest)是可選的,指的是在不關(guān)閉主電源的情況下,產(chǎn)生的復(fù)位。然而,PCIe Spec并未明確規(guī)定暖復(fù)位的產(chǎn)生機(jī)制,因此,如果產(chǎn)生暖復(fù)位完全是由系統(tǒng)設(shè)計(jì)者決定的。
熱復(fù)位(Hot Reset)是一種In-band 復(fù)位,其并不使用邊帶信號(hào)。PCIe設(shè)備通過(guò)向其鏈路(Link)相鄰的設(shè)備發(fā)送數(shù)個(gè)TS1 Ordered Set(其中第五個(gè)字符的bit0為1),如下圖所示。這些TS1OS在所有的通道(Lane)上同時(shí)發(fā)送,并持續(xù)2ms左右。
注:關(guān)于Ordered Set以及LTSSM等相關(guān)內(nèi)容,請(qǐng)參考前面介紹鏈路初始化與訓(xùn)練的相關(guān)文章。
主要注意的是,如果Switch的Upstream端口收到了熱復(fù)位,則會(huì)將其廣播至所有的Downstream端口,并復(fù)位其自己。如果PCIe設(shè)備的Downstream端口接收到熱復(fù)位,則只需要復(fù)位其自己即可。
當(dāng)PCIe設(shè)備接收到熱復(fù)位后,LTSSM會(huì)進(jìn)入Recovery and Hot Reset狀態(tài),然后返回值Detect狀態(tài),并重新開始鏈路初始化訓(xùn)練。其該P(yáng)CIe設(shè)備的所有狀態(tài)機(jī),硬件邏輯,端口狀態(tài)和配置空間中的寄存器(除了Sticky bits)都將被初始化值默認(rèn)狀態(tài)。
軟件可以通過(guò)向橋設(shè)備的,特定端口的配置空間中的二級(jí)總線復(fù)位(Secondary Bus Reset)bit先寫0再寫1,來(lái)產(chǎn)生熱復(fù)位,如下圖所示:
需要注意的是,如果軟件設(shè)置的是Switch的Upstream端口的二級(jí)總線復(fù)位bit,則該Switch會(huì)往其所有的Downstream端口廣播熱復(fù)位信號(hào)。而PCIe-to-PCI橋則會(huì)將接收到的熱復(fù)位信號(hào)轉(zhuǎn)換為PRST#置位,發(fā)送給PCI設(shè)備。
二級(jí)總線復(fù)位(Secondary Bus Reset)bit在配置空間的位置如下圖所示:
PCIe Spec還允許軟件禁止某個(gè)鏈路(Link),強(qiáng)制使其進(jìn)入電氣空閑狀態(tài)(Electrical Idle)。如果將某個(gè)鏈路禁止,則該鏈路所有的下游PCIe設(shè)備都將收到鏈路禁止信號(hào)(通過(guò)TS1OS,如下圖所示)。
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119816 -
PCI
+關(guān)注
關(guān)注
4文章
662瀏覽量
130141 -
總線
+關(guān)注
關(guān)注
10文章
2858瀏覽量
87912
原文標(biāo)題:【博文連載】PCIe掃盲——復(fù)位機(jī)制介紹(Fundamental & Hot)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論