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