系統(tǒng)復(fù)位(Reset)
在PCIe Spec中,Reset總共分為兩類:Conventional Reset和Function Level Reset.
1. Conventional Reset
從字面上來講,Conventional Reset是傳統(tǒng)的Reset方式。這一類Reset功能是在PCIe Spec 2.0之前的Spec中定義的,所以稱為傳統(tǒng)的Reset。PCIe設(shè)備必須要支持這一類Reset。
Convential Resets包含了三種Resets: Cold Reset,Warm Reset 和 Hot Reset.
另外,還有一個(gè)概念: Cold Reset和Warm Reset又被稱為Fundamental Reset, Hot Reset被稱為Non-Fundamental Reset.
什么是Fundamental Reset呢?
這是PCIe最基本的復(fù)位方式,主要通過硬件實(shí)現(xiàn),效果是重置整個(gè)設(shè)備,對(duì)每個(gè)狀態(tài)機(jī)、所有硬件邏輯、端口狀態(tài)和配置寄存器重新初始化。
但是,也會(huì)有例外的情況:在某些寄存器中的字段只有在全部電源(包括VCC電源和Vaux備用電源)切斷的情況下才會(huì)被重置。PCIe Spec給這些固執(zhí)的字段起了個(gè)外號(hào)"Sticky Bits".
一般來說,F(xiàn)undamental Reset是針對(duì)整個(gè)系統(tǒng)做Reset,但是有時(shí)也可以針對(duì)某個(gè)單一設(shè)備進(jìn)行重置。
在這里說明一下Fundamental Reset中的Cold Reset和Warm Reset。
- Cold Reset : 設(shè)備的主電源VCC上電時(shí),就會(huì)觸發(fā)Cold Reset。
- Warm Reset : 在VCC不斷電的情況下,系統(tǒng)可以觸發(fā)Warm Reset。比如,電源狀態(tài)的變化就會(huì)觸發(fā)Warm Reset. 不過,PCIe Spec并沒有定義觸發(fā)Warm Reset的具體方式,這部分可以有系統(tǒng)設(shè)計(jì)人員自行決定。
另外,在PCIe Spec中,規(guī)定了兩種觸發(fā)Fundamental Reset方式。
舉個(gè)例子,看看PERST#是如何生成的。
明白了Fundamental Reset,那Non-Fundamental Reset中的Hot Reset又是什么呢?
與Fundatmental Reset相反,Hot Reset是一種軟件控制的復(fù)位方式。PCIe設(shè)備出現(xiàn)錯(cuò)誤時(shí),通常情況下用軟件的方式對(duì)設(shè)備重置。軟件可以通過在Bridge control中設(shè)置Secondary Bus Reset bit來觸發(fā)Hot Reset.
另外,在PCIe總線中,通過發(fā)送TS1序列,并且在TS1序列中設(shè)置Hot Reset bit來對(duì)下游設(shè)備進(jìn)行Hot Reset(如下圖紅色框).
在這個(gè)過程中,發(fā)送端會(huì)持續(xù)發(fā)送TS1序列至2ms, 接收端在接到2個(gè)連續(xù)的TS1序列之后進(jìn)行Hot Reset.
同樣,舉個(gè)例子說明一下Hot Reset:
- 系統(tǒng)通過軟件對(duì)Switch A左邊端口的Secondary Bus Reset bit置為1(下圖紅色框),觸發(fā)了Hot Reset.
- 之后通過發(fā)送TS1序列對(duì)PCIe鏈路中的下游設(shè)備觸發(fā)Hot Reset(下圖黑色箭頭).
2. Function Level Reset
在傳統(tǒng)復(fù)位方式的基礎(chǔ)上,PCIe Sepc 2.0以后開始增加了新的復(fù)位方式FLR(Function Level Reset)。前面講到的傳統(tǒng)復(fù)位方式(Cold Reset, Warm Reset, Hot Reset)均屬于全局復(fù)位方式,而FLR的優(yōu)勢則是對(duì)局部復(fù)位。
在PCIe協(xié)議中,一個(gè)PCIe設(shè)備可能包含多個(gè)功能模塊(Function),每個(gè)功能模塊相互對(duì)立,共用一個(gè)PCIe link。其中,某個(gè)功能模塊出問題時(shí),雖然可以采用傳統(tǒng)復(fù)位方式對(duì)整個(gè)PCIe設(shè)備復(fù)位,但這個(gè)顯然不友好,因?yàn)槠渌δ苣K可能正在埋頭苦干。這就好比如,在一個(gè)團(tuán)體中,一個(gè)人犯錯(cuò)了,要團(tuán)隊(duì)所有人一起承擔(dān),這個(gè)肯定會(huì)影響團(tuán)結(jié)呀。
所以,PCIe深得管理學(xué)的精髓,為了不影響團(tuán)結(jié),F(xiàn)LR允許只對(duì)其中出錯(cuò)的功能模塊(Function)進(jìn)行重置,其他功能模塊正常工作。
不過,F(xiàn)LR復(fù)位方式對(duì)PCIe設(shè)備并不是必須的,在對(duì)PCIe設(shè)備使用FLR復(fù)位之前必須先檢查是否支持FLR。這部分可以查看Device Capabilities Register是否將Funcion-Level Reset Capability bit置起。
如果PCIe設(shè)備支持FLR,那么就可以通過設(shè)置Device Control Register中的Function-Level Reset bit觸發(fā)FLR復(fù)位咯~
觸發(fā)FLR之后,PCIe鏈路中都有哪些變化呢?
我們前面提到了,F(xiàn)LR是一個(gè)局部復(fù)位方式,只對(duì)出問題的那個(gè)Function起作用。所以說, FLR只會(huì)改變當(dāng)下Function內(nèi)部的狀態(tài)和寄存器的內(nèi)容 。以下幾個(gè)方面不會(huì)被影響:
- 執(zhí)行FLR的Function所在的PCIe鏈路狀態(tài)不會(huì)改變,因?yàn)槠渌鸉unction也在共用整條PCIe鏈路;
- Sticky Bits . 傳統(tǒng)復(fù)位方式也無法改變Sticky bits, 除非完全斷電。
- HwInit Bits . HwInit bits是硬件初始化的內(nèi)容,這些值由芯片的配置引腳決定,后者上電復(fù)位后從EEPROM中獲取。Cold和Warm Reset可以復(fù)位這些寄存器,然后從EEPROM中從新獲取數(shù)據(jù),但是使用FLR方式不能復(fù)位這些寄存器。
- 與Link相關(guān)的寄存器 。比如ASPM,F(xiàn)low control等相應(yīng)的寄存器。
另外,PCIe Sepc規(guī)定,某個(gè)Function的FLR必須在100ms之后完成。所以,PCIe Spec寫了一封倡議書給要使用FLR復(fù)位方式的"人們"-軟件:
為了創(chuàng)造一個(gè)溫馨的FLR工作環(huán)境,請(qǐng)做到以下幾點(diǎn):
- 在FLR工作期間,請(qǐng)不要訪問對(duì)應(yīng)的Function;
- 清除所有的Command Register;
- 通過Polling Device Status Register中的Transaction Pending bit來確保之前請(qǐng)求的Compeletion報(bào)文已完成,或者確保后續(xù)不會(huì)再發(fā)送Compeletion報(bào)文。
- 觸發(fā)FLR之后,請(qǐng)耐心等待至少100ms;
- 初始化Function的配置寄存器,讓其正常工作。
在FLR執(zhí)行的過程中,如果收到TLP或者Compeletions都會(huì)被默默的丟棄,而不會(huì)向系統(tǒng)報(bào)錯(cuò)。
舉個(gè)栗子,看看FLR執(zhí)行過程,
- 如下圖,這個(gè)PCIe設(shè)備中有兩個(gè)功能模塊:Function 0和Function 5. 此時(shí),兩個(gè)Functions依舊是互不干擾,認(rèn)真工作,傳輸TLPs.
- 之后,F(xiàn)unction 5出了一些問題,需要做FLR。FLR之后,F(xiàn)unction5中的之前的TLPs全部被清除。
- Function 5做FLR,并不影響Function 0,繼續(xù)TLPs傳輸。如下圖,3個(gè)TLPs正常傳輸完畢。
-
控制器
+關(guān)注
關(guān)注
112文章
16389瀏覽量
178435 -
EEPROM
+關(guān)注
關(guān)注
9文章
1022瀏覽量
81667 -
TLP
+關(guān)注
關(guān)注
0文章
32瀏覽量
15641 -
Vcc
+關(guān)注
關(guān)注
2文章
305瀏覽量
36081 -
PCIe接口
+關(guān)注
關(guān)注
0文章
120瀏覽量
9736
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論