一種識別中斷源的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,具體涉及一種識別中斷源的方法及裝置。
【背景技術(shù)】
[0002]在計算機(jī)系統(tǒng)中,夕卜圍設(shè)備通常需要中央處理器(Central Processing Unit,CPU)執(zhí)行中斷處理,例如外圍設(shè)備需要CPU讀取數(shù)據(jù),或者外圍設(shè)備需要CPU處理外圍設(shè)備在運(yùn)行中出現(xiàn)的錯誤,都會向CPU發(fā)送中斷信號,CPU收到中斷信號后暫停當(dāng)前執(zhí)行的任務(wù),轉(zhuǎn)去執(zhí)行發(fā)出中斷信號的外圍設(shè)備對應(yīng)的中斷處理程序,即讀取數(shù)據(jù),處理錯誤等,其中,發(fā)出中斷信號的外圍設(shè)備可以稱為中斷源(這是從外圍設(shè)備外部的角度來定義的),也可以將引起外圍設(shè)備內(nèi)部出現(xiàn)狀態(tài)變化并且使外圍設(shè)備發(fā)出中斷信號的模塊統(tǒng)稱為中斷源(這是從外圍設(shè)備內(nèi)部的角度來定義的,粒度更小),例如外圍設(shè)備內(nèi)部的數(shù)據(jù)接收模塊檢測到數(shù)據(jù)校驗錯誤,或者接收緩沖區(qū)溢出,都可以算作中斷源,因此,識別中斷源是正確執(zhí)行對應(yīng)的中斷處理程序,使計算機(jī)系統(tǒng)正常運(yùn)行的前提。
[0003]目前,一種現(xiàn)有技術(shù)是:外圍設(shè)備互聯(lián)總線(Peripheral Component Interconnect,PCI)支持INTA#/INTB#/INTC#/INTD#四個中斷管腳(#表示低電平有效),其中,橋片內(nèi)連接有中斷控制器,當(dāng)有中斷發(fā)生時某個管腳變?yōu)榈碗娖?,然后中斷控制器通知CPU執(zhí)行中斷處理,多個PCI設(shè)備可以共享某個中斷信號,當(dāng)中斷發(fā)生時CPU需要查詢每個PCI設(shè)備內(nèi)部的中斷狀態(tài)寄存器,確認(rèn)具體的中斷源。例如圖1的PCI設(shè)備一和PCI設(shè)備二共用INTA#信號,如果PCI設(shè)備二發(fā)生中斷,那么CPU必須依次訪問PCI設(shè)備一和PCI設(shè)備二內(nèi)部的中斷狀態(tài)寄存器才能確認(rèn)是PCI設(shè)備二產(chǎn)生的中斷,從而執(zhí)行對應(yīng)的中斷處理程序。然而,由于CPU訪問PCI設(shè)備內(nèi)部的中斷狀態(tài)寄存器需要經(jīng)過橋片和PCI設(shè)備,速度慢,因此增加了中斷處理延遲和CPU的開銷。
[0004]另一種現(xiàn)有技術(shù)是:外圍設(shè)備互聯(lián)總線快速通道(Peripheral ComponentInterconnect express,PCIe)支持消息傳遞中斷(Message Signaled Interrupt,MSI)或者擴(kuò)展的消息傳遞中斷(Message Signaled Interrupt extens1n,MSI_X)方式,當(dāng)有中斷發(fā)生時,例如圖2的PCIe設(shè)備主動將獨(dú)有的中斷號通過PCIe接口發(fā)送給連接在橋片內(nèi)的中斷控制器,中斷控制器再轉(zhuǎn)發(fā)給CPU,這樣CPU可以直接確認(rèn)發(fā)生中斷的外圍設(shè)備,其中,MSI協(xié)議最多支持32個中斷號,MS1-X最多支持2048個中斷號,相對硬件中斷信號的方式支持更多的中斷源。然而,考慮到實現(xiàn)的成本,實際PCIe設(shè)備所能支持的中斷號數(shù)目遠(yuǎn)比協(xié)議定義的少,當(dāng)前的MSI或MS1-X方式無法做到每個中斷源都有自己的中斷號,仍然需要CPU查詢具體的中斷源。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種識別中斷源的方法及裝置,用于解決現(xiàn)有技術(shù)中識別中斷源所存在的問題。
[0006]本發(fā)明第一方面提供一種識別中斷源的方法,包括:
[0007]當(dāng)外圍設(shè)備的任意一個模塊發(fā)生中斷時,所述模塊作為中斷源將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位,所述外圍設(shè)備包含多個不同層次的模塊;
[0008]所述外圍設(shè)備將所述數(shù)據(jù)字段高16位合入消息傳遞中斷的報文,所述報文還包含數(shù)據(jù)字段低16位;
[0009]所述外圍設(shè)備將所述合入的報文發(fā)送給中央處理器CPU,以使得所述CPU根據(jù)所述報文的數(shù)據(jù)字段低16位識別所述外圍設(shè)備,根據(jù)所述報文的數(shù)據(jù)字段高16位識別所述中斷源。
[0010]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,所述方法還包括:
[0011]當(dāng)所述中斷源對應(yīng)的上層次模塊檢測所述中斷源發(fā)生中斷時,所述上層次模塊將所述上層次模塊對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位。
[0012]結(jié)合第一方面,在第二種可能的實現(xiàn)方式中,所述模塊作為中斷源將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位包括:
[0013]所述模塊作為中斷源將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位中對應(yīng)的字段,所述數(shù)據(jù)字段高16位有多個字段,所述數(shù)據(jù)字段高16位的字段與所述外圍設(shè)備的模塊對應(yīng)的層次成對應(yīng)關(guān)系。
[0014]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述中斷源對應(yīng)的上層次模塊檢測所述中斷源發(fā)生中斷包括:
[0015]所述中斷源對應(yīng)的上層次模塊根據(jù)所述中斷源的中斷狀態(tài)位發(fā)生置位的結(jié)果檢測所述中斷源發(fā)生中斷。
[0016]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述上層次模塊將所述上層次模塊對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位包括:
[0017]所述上層次模塊將所述上層次模塊對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位中對應(yīng)的字段。
[0018]本發(fā)明第二方面提供一種識別中斷源的方法,包括:
[0019]CPU接收外圍設(shè)備發(fā)送的將數(shù)據(jù)字段高16位合入消息傳遞中斷的報文,所述報文還包含數(shù)據(jù)字段低16位;
[0020]所述CPU判斷所述報文的數(shù)據(jù)字段高16位是否為0,若否,所述CPU根據(jù)所述報文的數(shù)據(jù)字段低16位識別所述外圍設(shè)備,根據(jù)所述報文的數(shù)據(jù)字段高16位識別所述中斷源。
[0021]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述CPU根據(jù)所述報文的數(shù)據(jù)字段高16位識別中斷源包括:
[0022]所述CPU根據(jù)所述中斷源對應(yīng)的中斷號或所述中斷源對應(yīng)的上層次模塊的中斷號,識別所述中斷源。
[0023]本發(fā)明第三方面提供一種識別中斷源的裝置,包括:
[0024]第一寫入單元,用于當(dāng)外圍設(shè)備的任意一個模塊發(fā)生中斷時,將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位,所述外圍設(shè)備包含多個不同層次的模塊;
[0025]合入單元,用于在所述第一寫入單元將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位后,將所述數(shù)據(jù)字段高16位合入消息傳遞中斷的報文,所述報文還包含數(shù)據(jù)字段低16位;
[0026]發(fā)送單元,用于在所述合入單元將所述數(shù)據(jù)字段高16位合入消息傳遞中斷的報文后,將所述合入的報文發(fā)送給CPU,以使得所述CPU根據(jù)所述報文的數(shù)據(jù)字段低16位識別所述外圍設(shè)備,根據(jù)所述報文的數(shù)據(jù)字段高16位識別所述中斷源。
[0027]結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,還包括:
[0028]檢測單元,用于在所述第一寫入單元將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位后,檢測所述中斷源是否發(fā)生中斷;
[0029]第二寫入單元,用于當(dāng)所述檢測單元檢測所述中斷源發(fā)生中斷時,將所述中斷源對應(yīng)的上層次模塊對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位。
[0030]結(jié)合第三方面,在第二種可能的實現(xiàn)方式中,
[0031]所述第一寫入單元,具體用于將所述中斷源對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位中對應(yīng)的字段,所述數(shù)據(jù)字段高16位有多個字段,所述數(shù)據(jù)字段高16位的字段與所述外圍設(shè)備的模塊對應(yīng)的層次成對應(yīng)關(guān)系。
[0032]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,
[0033]所述檢測單元,具體用于根據(jù)所述中斷源的中斷狀態(tài)位發(fā)生置位的結(jié)果檢測所述中斷源發(fā)生中斷。
[0034]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,
[0035]所述第二寫入單元,具體用于將所述上層次模塊對應(yīng)的中斷號寫入消息傳遞中斷能力結(jié)構(gòu)的數(shù)據(jù)字段高16位中對應(yīng)的字段。
[0036]本發(fā)明第四方面提供一種識別中斷源的裝置,包括:
[0037]接收單元,用于接收外圍設(shè)備發(fā)送的將數(shù)據(jù)字段高16位合入消息傳遞中斷的報文,所述報文還包含數(shù)據(jù)字段低16位;
[0038]判斷單元,用于在所述接收單元接收外圍設(shè)備發(fā)送的將數(shù)據(jù)字段高16位合入消息傳遞中斷的報文后,判斷所述報文的數(shù)據(jù)字段高16位是否為O ;
[0039]識別單元,用于當(dāng)所述判斷單元判斷所述報文的數(shù)據(jù)字段高16位不為O時,根據(jù)所述報文的數(shù)據(jù)字段低16位識別所述外圍設(shè)備,根據(jù)所述報文的數(shù)據(jù)字段高16位識別所述中斷源。
[0040]結(jié)合第四方面,在第一種可能的實現(xiàn)方式中,
[0041]所述識別單元,具體用