本發(fā)明涉及通信領(lǐng)域,尤其涉及一種熱插拔的設(shè)備及方法。
背景技術(shù):
在信息通信技術(shù)領(lǐng)域,熱插拔技術(shù)應(yīng)用廣泛,使用熱插拔技術(shù),可以在不中斷服務(wù)器或者其他it設(shè)備業(yè)務(wù)情況下,進(jìn)行故障的維修和更換,提高了設(shè)備的可維護(hù)性和系統(tǒng)的健壯性?,F(xiàn)有技術(shù)中,請(qǐng)參閱圖1所示的熱插拔設(shè)備的系統(tǒng)10示意圖,熱插拔系統(tǒng)10包括主機(jī)11和熱插拔設(shè)備12,熱插拔設(shè)備12包括端口121、系統(tǒng)控制寄存器122、固件模塊123、通知按鈕126和電源指示器127,該端口121包括高速物理層接口124和控制器125,外部主機(jī)11通過端口121與該熱插拔設(shè)備建立通信鏈路,高速物理層接口124接收主機(jī)11發(fā)送的指令,該高速物理層接口124和控制器125根據(jù)主機(jī)11傳輸?shù)闹噶顖?zhí)行相關(guān)業(yè)務(wù)。下面結(jié)合圖1說明現(xiàn)有技術(shù)中端口執(zhí)行熱拔操作的過程:
1、用戶按下通知按鈕126觸發(fā)熱拔出請(qǐng)求,系統(tǒng)控制寄存器122接收到該熱拔出請(qǐng)求后,將該熱拔出請(qǐng)求傳輸至固件模塊123,固件模塊123接收到該熱拔出請(qǐng)求后向主機(jī)11發(fā)送一個(gè)中斷請(qǐng)求,主機(jī)11根據(jù)該中斷請(qǐng)求會(huì)再次將中斷確認(rèn)呈現(xiàn)給用戶,在主機(jī)11得到用戶的確認(rèn)后,主機(jī)11會(huì)向固件模塊發(fā)出中斷響應(yīng)。
2、固件模塊123接收到中斷響應(yīng)后,檢測(cè)到主機(jī)11不再發(fā)送數(shù)據(jù),確定已經(jīng)完成當(dāng)前業(yè)務(wù),禁用該端口的插槽。
3、電源指示器127指示用戶可以進(jìn)行熱拔出操作。
上述步驟簡(jiǎn)要描述了端口121從主機(jī)11熱拔出的操作步驟,后續(xù)若需要端口121重新插入主機(jī)而執(zhí)行熱插入的步驟,同樣也是需要通知按鈕126觸發(fā)熱插入請(qǐng)求,電源指示器127指示用戶可以進(jìn)行熱插入操作后,方能執(zhí)行熱插入操作,具體的步驟與上述步驟類似,此處不再舉例贅述。
從上述例子可以看出,用戶在執(zhí)行熱插拔操作時(shí),必須先行通知熱插拔設(shè)備,使熱插拔設(shè)備做好準(zhǔn)備之后,通過指示器通知用戶可以進(jìn)行熱插拔的 操作,而不允許在用戶沒有通知熱插拔設(shè)備的情況下對(duì)熱插拔設(shè)備進(jìn)行插拔行為,用戶需要等待指示才能進(jìn)行操作,操作繁瑣,且等待時(shí)間長(zhǎng)。并且熱插拔操作需要通知按鈕和電源指示器等輔助性硬件的支持,上述輔助性硬件極大的浪費(fèi)了板極資源。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種熱插拔的設(shè)備及方法,能夠減少板極冗余輔助硬件,減少板極硬件資源,隨插隨拔,無需等待時(shí)間,提高插拔效率。
本發(fā)明提供的熱插拔的設(shè)備應(yīng)用于熱插拔系統(tǒng),熱插拔系統(tǒng)包括主機(jī)和熱插拔設(shè)備,熱插拔設(shè)備包括多個(gè)端口,熱插拔設(shè)備可以通過多個(gè)端口與多個(gè)不同的主機(jī)建立通信鏈路,以實(shí)現(xiàn)熱插拔設(shè)備中的資源共享。本發(fā)明實(shí)施例中的熱插拔設(shè)備可以是任何其他能夠支持熱插拔功能的設(shè)備,該熱插拔設(shè)備可以是一個(gè)固態(tài)硬盤(英文:solidstatedrives,縮寫:ssd),也可以是一個(gè)加速卡。
本發(fā)明的第一方面提供了一種熱插拔的設(shè)備,該設(shè)備包括:端口、固件模塊和中斷屏蔽模塊,設(shè)備通過端口與主機(jī)連接;端口包括高速物理層接口,高速物理層接口包含多條引線lane,多條lane用于從主機(jī)接收模擬信號(hào)。
該設(shè)備上電完成后,固件模塊查詢控制器的鏈路速率寄存器中記錄的當(dāng)前鏈路速率值,當(dāng)固件模塊確定當(dāng)前鏈路最高速率值到達(dá)預(yù)置門限時(shí),表明熱插拔設(shè)備與主機(jī)已建立的通信鏈路達(dá)到了穩(wěn)定狀態(tài),然后,高速物理層接口開始偵測(cè)該高速物理層接口的模擬信號(hào)。高速物理層接口偵測(cè)多條lane中每條lane的模擬信號(hào),并且當(dāng)偵測(cè)到多條lane中的一條lane的模擬信號(hào)的振幅小于預(yù)設(shè)門限值時(shí),高速物理層接口產(chǎn)生與lane對(duì)應(yīng)的模擬信號(hào)丟失指示alos信號(hào),高速物理層接口將alos信號(hào)傳輸至中斷屏蔽模塊,中斷屏蔽模塊產(chǎn)生與lane對(duì)應(yīng)的alos中斷信號(hào),中斷屏蔽模塊將alos中斷信號(hào)發(fā)送至固件模塊。若固件模塊從接收到第一條lane對(duì)應(yīng)alos中斷信號(hào)開始,在預(yù)置時(shí)間段內(nèi)接收到每條lane對(duì)應(yīng)的alos中斷信號(hào),則固件模塊對(duì)端口進(jìn)行復(fù)位。實(shí)際上alos中斷信號(hào)用于指示熱拔事件。
本實(shí)施例中,當(dāng)固件模塊確定接收到該端口對(duì)應(yīng)的全部lane的alos中斷信號(hào)時(shí),固件模塊確定該端口正在執(zhí)行熱拔事件,固件模塊進(jìn)行熱拔事件 中斷處理。實(shí)現(xiàn)了不需要利用通知按鈕等輔助硬件而進(jìn)行熱拔事件檢測(cè),有效減少了板極上的硬件資源。
可選的,設(shè)備還包括系統(tǒng)控制寄存器,端口還包括控制器,高速物理層接口與控制器連接,控制器與系統(tǒng)控制寄存器連接,系統(tǒng)控制寄存器與固件模塊連接。固件模塊對(duì)端口進(jìn)行復(fù)位包括:固件模塊通過系統(tǒng)控制寄存器配置軟復(fù)位信號(hào),控制器和高速物理層接口根據(jù)軟復(fù)位信號(hào)進(jìn)行復(fù)位。
可選的,控制器和高速物理層接口復(fù)位后,為保證業(yè)務(wù)的殘留數(shù)據(jù)不會(huì)影響后續(xù)的業(yè)務(wù)的正常進(jìn)行,需要繼續(xù)清除控制器的寄存器中殘留的與業(yè)務(wù)相關(guān)的數(shù)據(jù),固件模塊在預(yù)置時(shí)間段內(nèi)接收到每條lane對(duì)應(yīng)的alos中斷信號(hào)用于指示端口從主機(jī)熱拔出。固件模塊通過系統(tǒng)控制寄存器為端口配置清除標(biāo)識(shí),控制器根據(jù)清除標(biāo)識(shí)清除端口從主機(jī)熱拔出時(shí)所執(zhí)行業(yè)務(wù)的殘留數(shù)據(jù)。
可選的,端口還包括計(jì)數(shù)器,控制器根據(jù)清除標(biāo)識(shí),清除業(yè)務(wù)的殘留數(shù)據(jù),計(jì)數(shù)器用于記錄在控制器執(zhí)行清除操作時(shí),業(yè)務(wù)的殘留數(shù)據(jù)的剩余數(shù)量。當(dāng)計(jì)數(shù)器的計(jì)數(shù)為零時(shí),固件模塊通過系統(tǒng)控制寄存器配置清除撤銷標(biāo)識(shí),控制器根據(jù)清除撤銷標(biāo)識(shí)停止執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。
本實(shí)施例中,固件模塊通過系統(tǒng)控制寄存器為控制器配置清除標(biāo)識(shí),以使控制器清除業(yè)務(wù)的殘留數(shù)據(jù),且固件模塊根據(jù)計(jì)數(shù)器可以確定該端口的業(yè)務(wù)的殘留數(shù)據(jù)被徹底清除,以避免該端口重新建立鏈路后,可能會(huì)出現(xiàn)仍然返回?zé)o效的業(yè)務(wù)的殘留數(shù)據(jù),影響后續(xù)業(yè)務(wù)的正常進(jìn)行。
可選的,當(dāng)該端口執(zhí)行完成熱拔后,該熱插拔設(shè)備可以會(huì)重新被插入到主機(jī)或另一個(gè)主機(jī),與主機(jī)建立通信鏈路,該端口又涉及執(zhí)行熱插操作,固件模塊是通過檢測(cè)主機(jī)輸入的硬件復(fù)位信號(hào)的電平跳變來實(shí)現(xiàn)對(duì)熱插入的檢測(cè)的,具體的,中斷屏蔽模塊接收主機(jī)輸出的硬件復(fù)位信號(hào),并將硬件復(fù)位信號(hào)發(fā)送到固件模塊,固件模塊檢測(cè)硬件復(fù)位信號(hào)的電平。當(dāng)固件模塊檢測(cè)到硬件復(fù)位信號(hào)具有電平跳變時(shí),硬件復(fù)位信號(hào)具有電平跳變時(shí)指示了該端口正在執(zhí)行熱插入事件,則固件模塊通過系統(tǒng)控制寄存器為控制器和高速物理層接口配置復(fù)位清除信號(hào)??刂破骱透咚傥锢韺咏涌诟鶕?jù)復(fù)位清除信號(hào)停止執(zhí)行復(fù)位操作。熱插拔設(shè)備和主機(jī)建立業(yè)務(wù)。
本發(fā)明實(shí)施例中,通過固件模塊對(duì)主機(jī)輸入的硬件復(fù)位信號(hào)的電平跳變的檢測(cè),指示出該端口正在執(zhí)行熱插入事件,熱插拔設(shè)備和主機(jī)建立業(yè)務(wù)。實(shí)現(xiàn)不需要通知按鈕等硬件實(shí)現(xiàn)熱插入事件的檢測(cè),有效的減少了板極資源,減少了熱插入的等待時(shí)間,提高工作效率。
本發(fā)明的第二方面提供了一種熱插拔的方法,方法應(yīng)用于第一方面提供的熱插拔的設(shè)備,該方法包括:高速物理層接口偵測(cè)多條lane中每條lane的模擬信號(hào),并且當(dāng)偵測(cè)到多條lane中的一條lane的模擬信號(hào)的振幅小于預(yù)設(shè)門限值時(shí),高速物理層接口產(chǎn)生與lane對(duì)應(yīng)的模擬信號(hào)丟失指示alos信號(hào)。
高速物理層接口將alos信號(hào)傳輸至中斷屏蔽模塊,中斷屏蔽模塊產(chǎn)生與lane對(duì)應(yīng)的alos中斷信號(hào),中斷屏蔽模塊將alos中斷信號(hào)發(fā)送至固件模塊。
若固件模塊從接收到第一條lane對(duì)應(yīng)alos中斷信號(hào)開始,在預(yù)置時(shí)間段內(nèi)接收到每條lane對(duì)應(yīng)的alos中斷信號(hào),則固件模塊對(duì)端口進(jìn)行復(fù)位。
本實(shí)施例中,固件模塊確定接收到該端口對(duì)應(yīng)的全部lane的alos中斷信號(hào)時(shí),固件模塊確定該端口正在執(zhí)行熱拔事件,固件模塊進(jìn)行熱拔事件中斷處理。實(shí)現(xiàn)了不需要利用通知按鈕等硬件的輔助而進(jìn)行熱拔事件檢測(cè),有效減少了板極上的硬件資源。
可選的,固件模塊對(duì)端口進(jìn)行復(fù)位包括:固件模塊通過系統(tǒng)控制寄存器配置軟復(fù)位信號(hào),控制器和高速物理層接口根據(jù)軟復(fù)位信號(hào)進(jìn)行復(fù)位。
可選的,固件模塊在預(yù)置時(shí)間段內(nèi)接收到每條lane對(duì)應(yīng)的alos中斷信號(hào)指示端口從主機(jī)熱拔出。固件模塊通過系統(tǒng)控制寄存器配置軟復(fù)位信號(hào),控制器和高速物理層接口根據(jù)軟復(fù)位信號(hào)進(jìn)行復(fù)位之后,方法還包括:
固件模塊通過系統(tǒng)控制寄存器為端口配置清除標(biāo)識(shí),清除標(biāo)識(shí)用于指示控制器清除端口從主機(jī)熱拔出時(shí)所執(zhí)行業(yè)務(wù)的殘留數(shù)據(jù)。
可選的,方法還包括:控制器根據(jù)清除標(biāo)識(shí),清除業(yè)務(wù)的殘留數(shù)據(jù),計(jì)數(shù)器用于記錄在控制器執(zhí)行清除操作時(shí),業(yè)務(wù)的殘留數(shù)據(jù)的剩余數(shù)量。當(dāng)計(jì)數(shù)器的計(jì)數(shù)為零時(shí),固件模塊通過系統(tǒng)控制寄存器配置清除撤銷標(biāo)識(shí),清除撤銷標(biāo)識(shí)用于指示控制器停止執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。
本實(shí)施例中,固件模塊通過系統(tǒng)控制寄存器為控制器配置清除標(biāo)識(shí),以 使控制器清除業(yè)務(wù)的殘留數(shù)據(jù),且固件模塊根據(jù)計(jì)數(shù)器可以確定該端口的業(yè)務(wù)的殘留數(shù)據(jù)被徹底清除,以避免該端口重新建立鏈路后,可能會(huì)出現(xiàn)仍然返回?zé)o效的業(yè)務(wù)的殘留數(shù)據(jù),影響后續(xù)業(yè)務(wù)的正常進(jìn)行。
可選的,方法還包括:中斷屏蔽模塊接收主機(jī)輸出的硬件復(fù)位信號(hào),并將硬件復(fù)位信號(hào)發(fā)送至固件模塊。
固件模塊接收主機(jī)輸出的硬件復(fù)位信號(hào)并檢測(cè)復(fù)位信號(hào)的電平。
當(dāng)固件模塊檢測(cè)到硬件復(fù)位信號(hào)具有電平跳變時(shí),則固件模塊通過系統(tǒng)控制寄存器為控制器和高速物理層接口配置復(fù)位清除信號(hào)。
控制器和高速物理層接口根據(jù)復(fù)位清除信號(hào)停止執(zhí)行復(fù)位操作。
設(shè)備和主機(jī)建立業(yè)務(wù)。
本發(fā)明實(shí)施例中,通過固件模塊對(duì)主機(jī)輸入的硬件復(fù)位信號(hào)的電平跳變的檢測(cè),指示出該端口正在執(zhí)行熱插入事件,熱插拔設(shè)備和主機(jī)建立業(yè)務(wù)。實(shí)現(xiàn)不需要通知按鈕等硬件實(shí)現(xiàn)熱插入事件的檢測(cè),有效的減少了板極資源,減少了熱插入的等待時(shí)間,提高工作效率。
附圖說明
圖1為現(xiàn)有技術(shù)中熱插拔系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例中熱插拔系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中熱插拔設(shè)備的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實(shí)施例中熱拔檢測(cè)示意圖;
圖5為本發(fā)明實(shí)施例中熱插檢測(cè)示意圖;
圖6為本發(fā)明實(shí)施例中熱拔出的方法示意圖;
圖7為本發(fā)明實(shí)施例中熱插入的方法示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種熱插拔的設(shè)備及方法,用于減少了板極硬件資源,提高插拔效率。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲 得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實(shí)施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
目前,總線和接口標(biāo)準(zhǔn)(英文:peripheralcomponentinterfaceexpress,縮寫:pcie)設(shè)備應(yīng)用廣泛,pcie設(shè)備支持熱插拔功能,本發(fā)明實(shí)施例中的熱插拔設(shè)備以pcie設(shè)備為例進(jìn)行說明,實(shí)際上,本發(fā)明實(shí)施例中的熱插拔設(shè)備也可以是任何其他能夠支持熱插拔功能的設(shè)備。該pcie設(shè)備可以是一個(gè)固態(tài)硬盤(英文:solidstatedrives,縮寫:ssd),也可以是一個(gè)加速卡。
圖2為本發(fā)明實(shí)施例中熱插拔系統(tǒng)的結(jié)構(gòu)示意圖。
如圖2所示,本發(fā)明實(shí)施例的熱插拔系統(tǒng)包括主機(jī)21和pcie設(shè)備22,pcie設(shè)備22包括多個(gè)端口,pcie設(shè)備22可以通過多個(gè)端口與多個(gè)不同的主機(jī)建立通信鏈路,以實(shí)現(xiàn)pcie設(shè)備22中的資源共享。其中,pcie設(shè)備22包括端口221、固件模塊223(firmware)、系統(tǒng)控制寄存器222和中斷屏蔽模塊(mask)226,該端口221包括高速物理層接口(英文:peripheralcomponentinterfaceexpressphysicallayer,縮寫:pciephy)224和控制器225。
下面對(duì)本發(fā)明實(shí)施例中涉及到的各個(gè)部件的功能進(jìn)行概括性說明。
其中,在主機(jī)21和pcie設(shè)備22正常連接,并有業(yè)務(wù)交互時(shí),高速物理層接口224用于接收外部主機(jī)21傳輸?shù)臉I(yè)務(wù)指令,高速物理層接口224和控制器225根據(jù)該業(yè)務(wù)指令執(zhí)行相關(guān)業(yè)務(wù)。
本發(fā)明實(shí)施例中pcie設(shè)備22在與主機(jī)21業(yè)務(wù)交互的過程中,為了及時(shí)獲知pcie設(shè)備22從主機(jī)21中熱拔出,會(huì)由高速物理層接口224周期性的檢測(cè)高速物理層接口224所在端口221的模擬信號(hào)。
高速物理層接口224還用于根據(jù)檢測(cè)的該模擬信號(hào)的振幅,判斷模擬信 號(hào)是否丟失,若確定模擬信號(hào)丟失,會(huì)產(chǎn)生模擬信號(hào)丟失指示(英文,analogsignalloss,縮寫:alos)信號(hào),并將該alos信號(hào)發(fā)送給中斷屏蔽模塊226。
中斷屏蔽模塊226用于根據(jù)高速物理層接口224傳輸來的alos信號(hào)產(chǎn)生alos中斷信號(hào)。
固件模塊223根據(jù)接收的alos中斷信號(hào)進(jìn)行中斷處理。
固件模塊223用于根據(jù)alos中斷信號(hào)對(duì)所述端口進(jìn)行復(fù)位。實(shí)際上alos中斷信號(hào)用于指示熱拔事件。
另外,固件模塊223還用于當(dāng)檢測(cè)主機(jī)21輸入的硬件復(fù)位信號(hào)的電平跳變時(shí),通過所述系統(tǒng)控制寄存器配置復(fù)位清除信號(hào),以使該端口停止執(zhí)行復(fù)位操作。硬件復(fù)位信號(hào)的電平跳變用于指示熱插事件。
具體固件模塊223對(duì)熱插事件和熱拔事件的判定過程可結(jié)合圖3至圖5過程的描述進(jìn)行理解。
系統(tǒng)控制寄存器222用于配置軟復(fù)位信號(hào)用于端口221對(duì)應(yīng)的高速物理層接口224和控制器225的復(fù)位;還用于配置清除標(biāo)識(shí)用于指示控制器225清除端口221的業(yè)務(wù)的殘留數(shù)據(jù)。
下面結(jié)合圖3和圖4對(duì)本發(fā)明實(shí)施例的熱拔過程進(jìn)行具體描述,并結(jié)合圖5對(duì)本發(fā)明實(shí)施例的熱插過程進(jìn)行具體描述。
一、熱拔事件檢測(cè)
請(qǐng)參閱圖3,本申請(qǐng)實(shí)施例中pcie設(shè)備的一個(gè)實(shí)施例包括:
pcie設(shè)備包括至少一個(gè)端口,圖3中是以兩個(gè)端口為例,但實(shí)際中不限于圖3所示的兩個(gè)端口。本發(fā)明實(shí)施例中,每個(gè)端口都包括各自的控制器和高速物理層接口。下面以其中的一個(gè)端口221的熱拔功能的實(shí)現(xiàn)為例進(jìn)行說明。
pcie設(shè)備22包括:端口221、固件模塊223、系統(tǒng)控制寄存器222和中斷屏蔽模塊(mask)226,該端口221包括高速物理層接口224和控制器225。控制器225還包括用于記錄鏈路速率的速率協(xié)商寄存器(圖3中未示)。
當(dāng)pcie設(shè)備22上電完成后,固件模塊223查詢控制器225的鏈路速率寄存器中記錄的當(dāng)前鏈路速率值,固件模塊223判斷當(dāng)前鏈路速率值是否達(dá)到預(yù)置門限,當(dāng)固件模塊223確定當(dāng)前鏈路最高速率值到達(dá)預(yù)置門限時(shí),固 件模塊223判定該pcie設(shè)備22與主機(jī)21已建立的通信鏈路達(dá)到了穩(wěn)定狀態(tài),高速物理層接口224開始偵測(cè)該高速物理層接口224的模擬信號(hào)。實(shí)際上,高速物理層接口224偵測(cè)每條引線lane的模擬信號(hào)。該模擬信號(hào)可以是差分信號(hào),差分信號(hào)就是傳輸在兩根數(shù)據(jù)線上信號(hào),這兩個(gè)信號(hào)的振幅相等,相位相反,例如,rx+信號(hào),rx-信號(hào),差分信號(hào)為這兩個(gè)信號(hào)的差值。其中,預(yù)置門限在pcie1.0規(guī)范模式下,可以是2.5gbps,在pcie2.0規(guī)范模式下,可以是5gbps,在pcie3.0規(guī)范模式下,可以是8gbps。當(dāng)然,上述數(shù)值只是舉例說明,并不應(yīng)理解為是對(duì)預(yù)置門限的限定。本發(fā)明實(shí)施例中,
高速物理層接口224包含多條引線lane,圖3中所示的高速物理層接口224以包含兩條引線lane進(jìn)行舉例說明,下面結(jié)合圖4以其中一條lane的差分信號(hào)檢測(cè)過程為例進(jìn)行說明,實(shí)際上每條lane的差分信號(hào)檢測(cè)過程都是一致的。該lane包括一對(duì)差分收發(fā)數(shù)據(jù)線,兩根差分收發(fā)數(shù)據(jù)線產(chǎn)生差分信號(hào),當(dāng)通信鏈路達(dá)到了穩(wěn)定狀態(tài)時(shí),高速物理層接口224偵測(cè)該lane上的差分信號(hào)的振幅是否大于預(yù)設(shè)值,當(dāng)高速物理層接口224偵測(cè)到該lane上的差分信號(hào)的振幅大于預(yù)設(shè)值時(shí),則確定鏈路處于正常連接狀態(tài),當(dāng)高速物理層接口224偵測(cè)到該lane上的差分信號(hào)的振幅小于或等于預(yù)設(shè)值時(shí),則確定鏈路差分信號(hào)丟失。
當(dāng)高速物理層接口224確定該lane的差分信號(hào)丟失時(shí),高速物理層接口224產(chǎn)生與該lane對(duì)應(yīng)的alos信號(hào),并將該lane對(duì)應(yīng)的alos信號(hào)從低電平置為高電平,高電平的alos信號(hào)傳輸?shù)街袛嗥帘文K226,中斷屏蔽模塊226檢測(cè)到該高電平alos信號(hào)后生成alos中斷信號(hào),固件模塊223接收該alos中斷信號(hào)。
端口221對(duì)應(yīng)兩條lane,每條lane產(chǎn)生一個(gè)alos信號(hào),中斷屏蔽模塊226接收到一個(gè)alos信號(hào)產(chǎn)生一個(gè)alos中斷信號(hào),固件模塊223對(duì)接收的alos中斷信號(hào)進(jìn)行計(jì)數(shù),若所述固件模塊223從接收到第一條lane對(duì)應(yīng)alos中斷信號(hào)開始,在預(yù)置時(shí)間段內(nèi)接收到所述每條lane對(duì)應(yīng)的alos中斷信號(hào)時(shí),所述則所述固件模塊對(duì)所述端口進(jìn)行復(fù)位??梢岳斫獾氖牵?dāng)固件模塊223接收到兩個(gè)alos中斷信號(hào)時(shí),則固件模塊223判定了當(dāng)前該端口221執(zhí)行了與外部主機(jī)21的熱拔事件,所述固件模塊223對(duì)所述端口進(jìn)行 復(fù)位。
端口221從主機(jī)21中拔出時(shí),pcie設(shè)備22與主機(jī)21可能正在進(jìn)行第一業(yè)務(wù)交互。端口221突然從主機(jī)21中拔出時(shí),端口221對(duì)應(yīng)的控制器225和高速物理層接口224還會(huì)有與第一業(yè)務(wù)相關(guān)的命令沒有完全執(zhí)行完,而控制器225和高速物理層接口224在主機(jī)21與端口221的鏈路已經(jīng)斷開情況下,仍然會(huì)繼續(xù)執(zhí)行這些命令,并產(chǎn)生第一業(yè)務(wù)的殘留數(shù)據(jù)。因端口221已經(jīng)從主機(jī)21拔出,所以產(chǎn)生的這些第一業(yè)務(wù)的殘留數(shù)據(jù)不能再繼續(xù)返回主機(jī)21,只能殘留在控制器225的寄存器中,這些第一業(yè)務(wù)的殘留數(shù)據(jù)在端口221與主機(jī)21重新建立通信鏈路后會(huì)對(duì)第二業(yè)務(wù)造成影響,第二業(yè)務(wù)為端口221與主機(jī)21重新建立通信鏈路后交互的業(yè)務(wù)。
為了在該端口221與主機(jī)21重新建立通信鏈路后可以正常進(jìn)行第二業(yè)務(wù),固件模塊223會(huì)通過系統(tǒng)控制寄存器222對(duì)控制器225和高速物理層接口224進(jìn)行殘留命令清除的復(fù)位操作,具體復(fù)位方式可以是固件模塊223通過系統(tǒng)控制寄存器222配置軟復(fù)位信號(hào),控制器225和高速物理層接口224根據(jù)該軟復(fù)位信號(hào)清除與第一業(yè)務(wù)相關(guān)的命令。
本實(shí)施例中,高速物理層接口224通過偵測(cè)到一條lane對(duì)應(yīng)的差分信號(hào)的丟失,則產(chǎn)生與該lane對(duì)應(yīng)的alos信號(hào),高速物理層接口224將該alos信號(hào)上拉到高電平后將alos信號(hào)傳輸?shù)街袛嗥帘文K226,中斷屏蔽模塊226接收到高電平的alos信號(hào),生成alos中斷信號(hào),并將alos中斷信號(hào)發(fā)送到固件模塊223,當(dāng)固件模塊223確定接收到該端口221對(duì)應(yīng)的全部lane的alos中斷信號(hào)時(shí),固件模塊223確定該端口221正在執(zhí)行熱拔事件,固件模塊223進(jìn)行熱拔事件中斷處理。實(shí)現(xiàn)了不需要利用通知按鈕等硬件的輔助而進(jìn)行熱拔事件檢測(cè),有效減少了板極上的硬件資源。
進(jìn)一步的,控制器225和高速物理層接口224復(fù)位后,為保證第一業(yè)務(wù)的殘留數(shù)據(jù)不會(huì)影響第二業(yè)務(wù),需要繼續(xù)清除控制器225的寄存器中殘留的與第一業(yè)務(wù)相關(guān)的數(shù)據(jù),具體清除方式可以是固件模塊223通過系統(tǒng)控制寄存器222配置清除標(biāo)識(shí)(clearflag),控制器225的寄存器根據(jù)清除標(biāo)識(shí)將自身的清除標(biāo)識(shí)位置為“1”,可以理解的是,例如,寄存器的“03”標(biāo)識(shí)位表示清除標(biāo)識(shí)位,寄存器將“03”清除標(biāo)識(shí)位置為“1”時(shí),控制器225丟棄 寄存器中第一業(yè)務(wù)的殘留數(shù)據(jù),避免當(dāng)主機(jī)與該端口221重新建立通信鏈路后,第一業(yè)務(wù)的殘留數(shù)據(jù)作為第二業(yè)務(wù)的數(shù)據(jù)返回到主機(jī)21中,影響第二業(yè)務(wù)。
可選的,控制器225還包括計(jì)數(shù)器,該計(jì)數(shù)器用于記錄主機(jī)傳輸?shù)拿畹氖S鄶?shù)量,每個(gè)命令對(duì)應(yīng)一定的殘留數(shù)據(jù),控制器225在執(zhí)行清除操作時(shí),固件模塊223可以通過該計(jì)數(shù)器確定第一業(yè)務(wù)的殘留數(shù)據(jù)剩余的數(shù)量,進(jìn)而固件模塊223可以判定該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)是否被徹底清除??梢岳斫獾氖?,第一業(yè)務(wù)可能包括多個(gè)命令,每個(gè)命令又對(duì)應(yīng)一定大小的處理數(shù)據(jù),若該端口221接收到主機(jī)21傳輸?shù)囊粋€(gè)命令,該計(jì)數(shù)器就會(huì)加1,當(dāng)pcie設(shè)備22處理完成一個(gè)命令并將該命令對(duì)應(yīng)的處理數(shù)據(jù)返回主機(jī)21后,該計(jì)數(shù)器就減1,因?yàn)樵摱丝?21從主機(jī)21熱拔出,所以與第一業(yè)務(wù)對(duì)應(yīng)的相關(guān)命令的處理數(shù)據(jù)不能返回到主機(jī),則由控制器225根據(jù)清除標(biāo)識(shí)清除殘留在端口221的處理數(shù)據(jù),控制器225清除一個(gè)命令對(duì)應(yīng)的數(shù)據(jù)后,該計(jì)數(shù)器也會(huì)對(duì)應(yīng)減1,當(dāng)固件模塊223檢測(cè)到計(jì)數(shù)器記錄的數(shù)量為零時(shí),固件模塊223判定第一業(yè)務(wù)的殘留數(shù)據(jù)被徹底清除。
當(dāng)該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被完全清除后,固件模塊223通過系統(tǒng)控制寄存器222為控制器225配置清除撤銷標(biāo)識(shí),控制器225的寄存器根據(jù)該清除撤銷標(biāo)識(shí)將“清除標(biāo)識(shí)位”置為“0”,控制器225確定清除標(biāo)識(shí)位為“0”時(shí),則不再執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。可以的理解的是,若當(dāng)該端口221重新和主機(jī)21建立通信鏈路后,該端口221執(zhí)行第二業(yè)務(wù),那么,控制器225也同樣還會(huì)根據(jù)清除標(biāo)識(shí)清除第二業(yè)務(wù)的數(shù)據(jù),這樣就會(huì)導(dǎo)致對(duì)后續(xù)的第二業(yè)務(wù)的正常進(jìn)行造成影響,因此,當(dāng)該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被完全清除后,控制器225就不需要再執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。
本實(shí)施例中,固件模塊223通過系統(tǒng)控制寄存器222配置控制器225中寄存器的標(biāo)識(shí)位,以使控制器225清除寄存器中存儲(chǔ)的第一業(yè)務(wù)的殘留數(shù)據(jù),且固件模塊223根據(jù)計(jì)數(shù)器可以確定該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被徹底清除,以避免該端口221重新建立鏈路后,可能會(huì)出現(xiàn)仍然返回?zé)o效的第一業(yè)務(wù)的殘留數(shù)據(jù),影響第二業(yè)務(wù)的正常進(jìn)行。
二、熱插事件檢測(cè)
請(qǐng)參閱圖5所示的熱插檢測(cè)示意圖。
在上述實(shí)施例的基礎(chǔ)上,當(dāng)該端口221執(zhí)行完成熱拔后,該pcie設(shè)備22可以會(huì)重新被插入到主機(jī)21或另一個(gè)主機(jī),與主機(jī)建立通信鏈路,該端口221又涉及執(zhí)行熱插操作,下面結(jié)合圖5對(duì)如何檢測(cè)熱插操作進(jìn)行具體描述。
本發(fā)明實(shí)施例中,固件模塊223是通過檢測(cè)主機(jī)21輸入的硬件復(fù)位信號(hào)的“高-低-高”的電平跳變來實(shí)現(xiàn)的,下面對(duì)“高-低-高”中的第一個(gè)高電平的得來做簡(jiǎn)要說明。
每一次端口221插入主機(jī)后,主機(jī)會(huì)輸入一個(gè)低電平的硬件復(fù)位信號(hào),低電平的硬件復(fù)位信號(hào)輸入到中斷屏蔽模塊226,固件模塊223接收中斷屏蔽模塊226發(fā)送的低電平的復(fù)位信號(hào)后,進(jìn)行中斷處理,固件模塊223使該端口對(duì)應(yīng)的硬件進(jìn)行初始化,如控制器225和高速物理層接口224等,主機(jī)可以通過預(yù)置的時(shí)長(zhǎng)來判斷硬件復(fù)位完成,當(dāng)硬件復(fù)位完成后,主機(jī)將該硬件復(fù)位信號(hào)拉高為高電平,固件模塊223記錄該硬件復(fù)位信號(hào)的電平狀態(tài)為高電平。
下面對(duì)“高-低-高”中的第二個(gè)低電平的得來做簡(jiǎn)要說明。
當(dāng)端口221重新與主機(jī)建立通信鏈路后,主機(jī)輸入一個(gè)低電平的硬件復(fù)位信號(hào),低電平的硬件復(fù)位信號(hào)輸入到中斷屏蔽模塊226,固件模塊223檢測(cè)到低電平的復(fù)位信號(hào),并記錄硬件復(fù)位信號(hào)的電平狀態(tài)為低電平。
下面對(duì)“高-低-高”中的第三個(gè)高電平的得來做簡(jiǎn)要說明。
固件模塊223檢測(cè)到低電平的硬件復(fù)位信號(hào)后,使該端口221對(duì)應(yīng)的硬件進(jìn)行初始化,當(dāng)硬件復(fù)位完成后,主機(jī)會(huì)將該硬件復(fù)位信號(hào)上拉到高電平,固件模塊223記錄硬件復(fù)位信號(hào)的電平為高電平。
當(dāng)固件模塊223檢測(cè)到“高-低-高”的信號(hào)的電平跳變,則判定該端口221正在執(zhí)行熱插事件。
當(dāng)固件模塊判定該端口221執(zhí)行熱插事件后,固件模塊還需要通過系統(tǒng)控制寄存器222配置復(fù)位解除信號(hào),復(fù)位解除信號(hào)用于使控制器225和高速物理層接口224停止執(zhí)行復(fù)位操作??梢岳斫獾氖牵捎谠诒敬螣岵迦肭皥?zhí)行了熱拔操作,為了避免高速物理層接口224和控制器225執(zhí)行與第一業(yè)務(wù)相關(guān)的殘留命令,影響后續(xù)第二業(yè)務(wù)的進(jìn)行,固件模塊223通過系統(tǒng)控制寄 存器222對(duì)控制器225和高速物理層接口224進(jìn)行殘留命令清除的復(fù)位操作,但是當(dāng)該端口221當(dāng)前執(zhí)行熱插入后,該復(fù)位信號(hào)還會(huì)繼續(xù)觸發(fā)控制器225和高速物理層接口224執(zhí)行復(fù)位操作,這樣當(dāng)端口221與主機(jī)21進(jìn)行第二業(yè)務(wù)交互時(shí),控制器225和高速物理層接口224同樣會(huì)繼續(xù)清除第二業(yè)務(wù)的相關(guān)指令的操作,因此,為了能夠使第二業(yè)務(wù)正常進(jìn)行,就需要控制器225和高速物理層接口224停止執(zhí)行復(fù)位操作。
上面對(duì)一種熱插拔的設(shè)備進(jìn)行了描述,下面對(duì)一種熱插拔的方法進(jìn)行描述,方法應(yīng)用于上述實(shí)施例對(duì)應(yīng)的熱插拔的設(shè)備。
一、熱拔事件檢測(cè)
請(qǐng)結(jié)合圖3所示的pcie設(shè)備的結(jié)合示意圖,在方法實(shí)施例中不再贅述pcie設(shè)備的結(jié)構(gòu),pcie設(shè)備包括至少一個(gè)端口,圖3中是以兩個(gè)端口為例,但實(shí)際中不限于圖3所示的兩個(gè)端口。本發(fā)明實(shí)施例中,每個(gè)端口都包括各自的控制器和高速物理層接口。下面以其中的一個(gè)端口221的熱拔的方法為例進(jìn)行說明。
本申請(qǐng)實(shí)施例中一種方法的一個(gè)實(shí)施例包括:
請(qǐng)參閱圖6所示的熱插拔的方法的示意圖。
步驟601、固件模塊223查詢控制器225的鏈路速率寄存器中記錄的當(dāng)前鏈路速率值,固件模塊根據(jù)鏈路速率值223確定pcie設(shè)備22與主機(jī)21已建立的通信鏈路達(dá)到了穩(wěn)定狀態(tài)。
當(dāng)pcie設(shè)備22上電完成后,固件模塊223查詢控制器225的鏈路速率寄存器中記錄的當(dāng)前鏈路速率值,固件模塊223判斷當(dāng)前鏈路速率值是否達(dá)到預(yù)置門限,當(dāng)固件模塊223確定當(dāng)前鏈路最高速率值到達(dá)預(yù)置門限時(shí),固件模塊223判定該pcie設(shè)備22與主機(jī)21已建立的通信鏈路達(dá)到了穩(wěn)定狀態(tài)。
步驟602、高速物理層接口224偵測(cè)每條lane上的差分信號(hào)的振幅是否大于預(yù)設(shè)值,當(dāng)高速物理層接口224偵測(cè)到一條lane上的差分信號(hào)的振幅小于或等于預(yù)設(shè)值時(shí),則確定鏈路差分信號(hào)丟失。
圖3中所示的高速物理層接口224包含兩個(gè)引線lane,下面結(jié)合圖4以其中一個(gè)lane的差分信號(hào)檢測(cè)過程為例進(jìn)行說明,實(shí)際上每個(gè)lane的差分信號(hào)檢測(cè)過程都是一致的。該lane包括一對(duì)差分收發(fā)數(shù)據(jù)線,兩根差分收發(fā)數(shù) 據(jù)線產(chǎn)生差分信號(hào),當(dāng)通信鏈路達(dá)到了穩(wěn)定狀態(tài)時(shí),高速物理層接口224檢測(cè)該lane上的差分信號(hào)的振幅是否大于預(yù)設(shè)值,當(dāng)高速物理層接口224檢測(cè)到該lane上的差分信號(hào)的振幅大于預(yù)設(shè)值時(shí),則確定鏈路處于正常連接狀態(tài),當(dāng)高速物理層接口224檢測(cè)到該lane上的差分信號(hào)的振幅小于或等于預(yù)設(shè)值時(shí),則確定鏈路差分信號(hào)丟失。
步驟603、當(dāng)高速物理層接口224確定該lane的差分信號(hào)丟失時(shí),高速物理層接口224產(chǎn)生與該lane對(duì)應(yīng)的alos信號(hào)。
步驟604、高速物理層接口224將該lane對(duì)應(yīng)的alos信號(hào)從低電平置為高電平,并將高電平的alos信號(hào)傳輸?shù)街袛嗥帘文K226。
步驟605、中斷屏蔽模塊226檢測(cè)到該高電平alos信號(hào)后生成alos中斷信號(hào),并將該alos中斷信號(hào)發(fā)送到固件模塊223。
步驟606、當(dāng)固件模塊223接收到全部lane對(duì)應(yīng)的alos中斷信號(hào)時(shí),固件模塊223對(duì)所述端口221進(jìn)行復(fù)位。
可以理解的是若所述固件模塊223從接收到第一條lane對(duì)應(yīng)alos中斷信號(hào)開始,在預(yù)置時(shí)間段內(nèi)接收到所述每條lane對(duì)應(yīng)的alos中斷信號(hào)時(shí),所述則所述固件模塊對(duì)所述端口進(jìn)行復(fù)位??梢岳斫獾氖?,當(dāng)固件模塊223接收到兩個(gè)alos中斷信號(hào)時(shí),則固件模塊223判定了當(dāng)前該端口221執(zhí)行了與外部主機(jī)21的熱拔事件,
固件模塊223通過系統(tǒng)控制寄存器222配置軟復(fù)位信號(hào),控制器225和高速物理層接口224根據(jù)該軟復(fù)位信號(hào)進(jìn)行復(fù)位。
端口221從主機(jī)21中拔出時(shí),pcie設(shè)備22與主機(jī)21可能正在進(jìn)行第一業(yè)務(wù)交互。端口221突然從主機(jī)21中拔出時(shí),端口221對(duì)應(yīng)的控制器225和高速物理層接口224還會(huì)有與第一業(yè)務(wù)相關(guān)的命令沒有完全執(zhí)行完,而控制器225和高速物理層接口224在主機(jī)21與端口221的鏈路已經(jīng)斷開情況下,仍然會(huì)繼續(xù)執(zhí)行這些命令,并產(chǎn)生第一業(yè)務(wù)的殘留數(shù)據(jù)。因端口221已經(jīng)從主機(jī)21拔出,所以產(chǎn)生的這些第一業(yè)務(wù)的殘留數(shù)據(jù)不能再繼續(xù)返回主機(jī)21,只能殘留在控制器225的寄存器中,這些第一業(yè)務(wù)的殘留數(shù)據(jù)在端口221與主機(jī)21重新建立通信鏈路后會(huì)對(duì)第二業(yè)務(wù)造成影響,第二業(yè)務(wù)為端口221與主機(jī)21重新建立通信鏈路后交互的業(yè)務(wù)。
本實(shí)施例中,固件模塊223確定接收到該端口221對(duì)應(yīng)的全部lane的alos中斷信號(hào)時(shí),固件模塊223確定該端口221正在執(zhí)行熱拔事件,固件模塊223進(jìn)行熱拔事件中斷處理。實(shí)現(xiàn)了不需要利用通知按鈕等硬件的輔助而進(jìn)行熱拔事件檢測(cè),有效減少了板極上的硬件資源。
為了在該端口221與主機(jī)21重新建立通信鏈路后可以正常進(jìn)行第二業(yè)務(wù),固件模塊223會(huì)通過系統(tǒng)控制寄存器222對(duì)控制器225和高速物理層接口224進(jìn)行殘留命令清除的復(fù)位操作,具體復(fù)位方式可以是固件模塊223通過系統(tǒng)控制寄存器222配置軟復(fù)位信號(hào),控制器225和高速物理層接口224根據(jù)該軟復(fù)位信號(hào)清除與第一業(yè)務(wù)相關(guān)的命令。
進(jìn)一步的,步驟607、固件模塊通過系統(tǒng)控制寄存器為端口配置清除標(biāo)識(shí),清除標(biāo)識(shí)用于指示控制器清除熱拔事件時(shí)所執(zhí)行業(yè)務(wù)的殘留數(shù)據(jù)。
控制器225和高速物理層接口224復(fù)位后,為保證第一業(yè)務(wù)的殘留數(shù)據(jù)不會(huì)影響第二業(yè)務(wù),需要繼續(xù)清除控制器225的寄存器中殘留的與第一業(yè)務(wù)相關(guān)的數(shù)據(jù),具體清除方式可以是固件模塊223通過系統(tǒng)控制寄存器222配置清除標(biāo)識(shí)(clearflag),控制器225的寄存器根據(jù)清除標(biāo)識(shí)將自身的清除標(biāo)識(shí)位置為“1”,可以理解的是,例如,寄存器的“03”標(biāo)識(shí)位表示清除標(biāo)識(shí)位,寄存器將“03”清除標(biāo)識(shí)位置為“1”時(shí),控制器225丟棄寄存器中第一業(yè)務(wù)的殘留數(shù)據(jù),避免當(dāng)主機(jī)與該端口221重新建立通信鏈路后,第一業(yè)務(wù)的殘留數(shù)據(jù)作為第二業(yè)務(wù)的數(shù)據(jù)返回到主機(jī)21中,影響第二業(yè)務(wù)。
可選的,步驟608、當(dāng)計(jì)數(shù)器的計(jì)數(shù)為零時(shí),固件模塊通過系統(tǒng)控制寄存器配置清除撤銷標(biāo)識(shí),清除撤銷標(biāo)識(shí)用于指示控制器停止執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。
該計(jì)數(shù)器用于記錄主機(jī)傳輸?shù)拿畹氖S鄶?shù)量,每個(gè)命令對(duì)應(yīng)一定的殘留數(shù)據(jù),控制器225在執(zhí)行清除操作時(shí),固件模塊223可以通過該計(jì)數(shù)器確定第一業(yè)務(wù)的殘留數(shù)據(jù)剩余的數(shù)量,進(jìn)而固件模塊223可以判定該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)是否被徹底清除。
當(dāng)該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被完全清除后,固件模塊223通過系統(tǒng)控制寄存器222為控制器225配置清除撤銷標(biāo)識(shí),控制器225的寄存器根據(jù)該清除撤銷標(biāo)識(shí)將“清除標(biāo)識(shí)位”置為“0”,控制器225確定清除標(biāo)識(shí) 位為“0”時(shí),則不再執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作??梢缘睦斫獾氖?,若當(dāng)該端口221重新和主機(jī)21建立通信鏈路后,該端口221執(zhí)行第二業(yè)務(wù),那么,控制器225也同樣還會(huì)根據(jù)清除標(biāo)識(shí)清除第二業(yè)務(wù)的數(shù)據(jù),這樣就會(huì)導(dǎo)致對(duì)后續(xù)的第二業(yè)務(wù)的正常進(jìn)行造成影響,因此,當(dāng)該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被完全清除后,控制器225就不需要再執(zhí)行清除業(yè)務(wù)數(shù)據(jù)的操作。
本實(shí)施例中,固件模塊223通過系統(tǒng)控制寄存器222配置控制器225中寄存器的標(biāo)識(shí)位,以使控制器225清除寄存器中存儲(chǔ)的第一業(yè)務(wù)的殘留數(shù)據(jù),且固件模塊223根據(jù)計(jì)數(shù)器可以確定該端口221的第一業(yè)務(wù)的殘留數(shù)據(jù)被徹底清除,以避免該端口221重新建立鏈路后,可能會(huì)出現(xiàn)仍然返回?zé)o效的第一業(yè)務(wù)的殘留數(shù)據(jù),影響第二業(yè)務(wù)的正常進(jìn)行。
二、熱插事件檢測(cè)
在上述實(shí)施例的基礎(chǔ)上,當(dāng)該端口221執(zhí)行完成熱拔后,該pcie設(shè)備22可以會(huì)重新被插入到主機(jī)21或另一個(gè)主機(jī),與主機(jī)建立通信鏈路,該端口221又涉及執(zhí)行熱插操作,下面結(jié)合圖5對(duì)如何檢測(cè)熱插入的方法進(jìn)行具體描述。
請(qǐng)參閱圖7所示的熱插入的方法示意圖。本發(fā)明實(shí)施例提供的一種熱插入的方法包括:
步驟701、中斷屏蔽模塊接收主機(jī)輸出的硬件復(fù)位信號(hào),并將該硬件復(fù)位信號(hào)發(fā)送至固件模塊,固件模塊檢測(cè)復(fù)位信號(hào)的電平。
本發(fā)明實(shí)施例中,固件模塊223是通過檢測(cè)主機(jī)21輸入的硬件復(fù)位信號(hào)的“高-低-高”的電平跳變來實(shí)現(xiàn)的,本發(fā)明實(shí)施例中,固件模塊223是通過檢測(cè)主機(jī)21輸入的硬件復(fù)位信號(hào)的“高-低-高”的電平跳變來實(shí)現(xiàn)的,下面對(duì)“高-低-高”中的第一個(gè)高電平的得來做簡(jiǎn)要說明。
每一次端口221插入主機(jī)后,主機(jī)會(huì)輸入一個(gè)低電平的硬件復(fù)位信號(hào),低電平的硬件復(fù)位信號(hào)輸入到中斷屏蔽模塊226,固件模塊223接收中斷屏蔽模塊226發(fā)送的低電平的復(fù)位信號(hào)后,進(jìn)行中斷處理,固件模塊223使該端口對(duì)應(yīng)的硬件進(jìn)行初始化,如控制器225和高速物理層接口224等,主機(jī)可以通過預(yù)置的時(shí)長(zhǎng)來判斷硬件復(fù)位完成,當(dāng)硬件復(fù)位完成后,主機(jī)將該硬件復(fù)位信號(hào)拉高為高電平,固件模塊223記錄該硬件復(fù)位信號(hào)的電平狀態(tài)為高電平。
下面對(duì)“高-低-高”中的第二個(gè)低電平的得來做簡(jiǎn)要說明。
當(dāng)端口221重新與主機(jī)建立通信鏈路后,主機(jī)輸入一個(gè)低電平的硬件復(fù)位信號(hào),低電平的硬件復(fù)位信號(hào)輸入到中斷屏蔽模塊226,固件模塊223檢測(cè)到低電平的復(fù)位信號(hào),并記錄硬件復(fù)位信號(hào)的電平狀態(tài)為低電平。
下面對(duì)“高-低-高”中的第三個(gè)高電平的得來做簡(jiǎn)要說明。
固件模塊223檢測(cè)到低電平的硬件復(fù)位信號(hào)后,使該端口221對(duì)應(yīng)的硬件進(jìn)行初始化,當(dāng)硬件復(fù)位完成后,主機(jī)會(huì)將該硬件復(fù)位信號(hào)上拉到高電平,固件模塊223記錄硬件復(fù)位信號(hào)的電平為高電平。
步驟702、當(dāng)固件模塊檢測(cè)到硬件復(fù)位信號(hào)具有電平跳變時(shí),固件模塊通過系統(tǒng)控制寄存器為所述控制器和高速物理層接口配置復(fù)位清除信號(hào)。
可以理解的是,硬件復(fù)位信號(hào)具有電平跳變用于指示端口執(zhí)行與主機(jī)的熱插事件。
當(dāng)固件模塊223檢測(cè)到“高-低-高”的信號(hào)的電平跳變,則判定該端口221正在執(zhí)行熱插事件。
當(dāng)固件模塊判定該端口221執(zhí)行熱插事件后,固件模塊還需要通過系統(tǒng)控制寄存器222配置復(fù)位解除信號(hào),復(fù)位解除信號(hào)用于使控制器225和高速物理層接口224停止執(zhí)行復(fù)位操作??梢岳斫獾氖牵捎谠诒敬螣岵迦肭皥?zhí)行了熱拔操作,為了避免高速物理層接口224和控制器225執(zhí)行與第一業(yè)務(wù)相關(guān)的殘留命令,影響后續(xù)第二業(yè)務(wù)的進(jìn)行,固件模塊223通過系統(tǒng)控制寄存器222對(duì)控制器225和高速物理層接口224進(jìn)行殘留命令清除的復(fù)位操作,但是當(dāng)該端口221當(dāng)前執(zhí)行熱插入后,該復(fù)位信號(hào)還會(huì)繼續(xù)觸發(fā)控制器225和高速物理層接口224執(zhí)行復(fù)位操作,這樣當(dāng)端口221與主機(jī)21進(jìn)行第二業(yè)務(wù)交互時(shí),控制器225和高速物理層接口224同樣會(huì)繼續(xù)清除第二業(yè)務(wù)的相關(guān)指令的操作。
步驟703、控制器和高速物理層接口根據(jù)復(fù)位清除信號(hào)停止執(zhí)行復(fù)位操作。
可以理解的是,為了能夠使后續(xù)的第二業(yè)務(wù)正常進(jìn)行,就需要控制器225和高速物理層接口224停止執(zhí)行復(fù)位操作。
步驟704、pcie設(shè)備和主機(jī)建立第二業(yè)務(wù)。
本發(fā)明實(shí)施例中,固件模塊通過檢測(cè)主機(jī)輸入的硬件復(fù)位信號(hào)的電平跳變判定熱插入事件,不需要通知按鈕和電源指示器等輔助硬件,有效的減少了板極資源,并減少了熱插拔設(shè)備需要進(jìn)行熱插入做準(zhǔn)備的時(shí)間。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的方法,可以參考前述設(shè)備實(shí)施例中裝置的具體工作過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。