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