專利名稱:中斷處理方法及裝置、中央處理器以及處理設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及中斷處理技術(shù)領(lǐng)域,尤其涉及一種中斷處理方法及裝置、中央處理器以及處理設(shè)備。
背景技術(shù):
El通信技術(shù)運(yùn)用脈沖編碼調(diào)制技術(shù)和時(shí)分復(fù)用技術(shù),將編碼信號(hào)在線對(duì)上傳輸, 它最早起源于公眾電話網(wǎng)絡(luò),其一幀由32個(gè)時(shí)隙組成,每個(gè)時(shí)隙占用一個(gè)字節(jié),幀頻為固定的8000幀/秒,因此在El模式(即所有的32個(gè)時(shí)隙都分配到一個(gè)通道的情況)下,其速率為2. 048兆比特/秒。而在CEl模式下,可以將某一個(gè)或某幾個(gè)時(shí)隙分配到一個(gè)通道, 這樣就可以在鏈路層創(chuàng)建多個(gè)通道,從而提供更多的通道供用戶使用。其中,除去時(shí)隙0傳輸幀同步信號(hào)外,剩余的31個(gè)時(shí)隙可以最多分配到31個(gè)通道,即將每個(gè)時(shí)隙分別分配到一個(gè)單獨(dú)的通道,此時(shí)每個(gè)通道的帶寬為64千比特/秒。
在現(xiàn)有技術(shù)中,通常利用中斷向量查詢表的各個(gè)表項(xiàng)來保存每個(gè)通道的通道號(hào)以及需要在該通道執(zhí)行的操作,中斷向量查詢表的一般結(jié)構(gòu)如表一所示。
表一
表項(xiàng)0表項(xiàng)1表項(xiàng)2表項(xiàng)3表項(xiàng)4表項(xiàng)5表項(xiàng)6
表項(xiàng)k-1
中斷向量查詢表由處理設(shè)備的中央處理器(CPU,Central Processing Unit)創(chuàng)建,保存在處理設(shè)備的內(nèi)存中,其中,中斷向量查詢表中的各表項(xiàng)在內(nèi)存中是順序排列的。
初始時(shí),軟件指針和硬件指針都會(huì)指向中斷向量查詢表中的第一個(gè)表項(xiàng)(即表一中的表項(xiàng)0),處理設(shè)備的硬件依次向各表項(xiàng)中寫入相應(yīng)內(nèi)容(通道號(hào)和需要在該通道執(zhí)行的操作),每次向表項(xiàng)中寫入相應(yīng)內(nèi)容后,該表項(xiàng)由無效表項(xiàng)轉(zhuǎn)為有效表項(xiàng),然后使對(duì)應(yīng)的硬件指針加一,硬件指針加一后會(huì)指向下一個(gè)表項(xiàng)。處理設(shè)備的CPU依次提取各有效表項(xiàng)中存儲(chǔ)的相應(yīng)內(nèi)容,每次完成一個(gè)有效表項(xiàng)的內(nèi)容提取后,該表項(xiàng)由有效表項(xiàng)轉(zhuǎn)為無效表項(xiàng),然后使對(duì)應(yīng)的軟件指針加一,軟件指針加一后會(huì)指向下一個(gè)表項(xiàng)。當(dāng)硬件處理完最后一個(gè)表項(xiàng)后,會(huì)自動(dòng)跳回到第一個(gè)表項(xiàng),然后再依次往下執(zhí)行寫入內(nèi)容的操作,同樣的,當(dāng)CPU 處理完最后一個(gè)表項(xiàng)后,也會(huì)自動(dòng)跳回到第一個(gè)表項(xiàng),然后再依次往下執(zhí)行提取內(nèi)容的操作。
中斷向量查詢表中的每個(gè)表項(xiàng)都可分為若干個(gè)域,如表二所示。
表二
域3域2域1域0
在表二中,每個(gè)表項(xiàng)由四個(gè)域組成,其中,域0用于表示該表項(xiàng)是否為中斷向量查詢表的最后一個(gè)表項(xiàng),域1用于表示該表項(xiàng)對(duì)應(yīng)的通道(可以用通道號(hào)標(biāo)識(shí)),域2和域3 用于表示對(duì)應(yīng)需要在通道中進(jìn)行的操作。
如圖1所示,為現(xiàn)有技術(shù)中的中斷處理方法流程示意圖,其具體處理流程如下
步驟11,處理設(shè)備啟動(dòng)時(shí),將針對(duì)中斷向量查詢表的軟件指針和硬件指針分別進(jìn)行初始化,使其均指向中斷向量查詢表的第一個(gè)表項(xiàng)(即表一中的表項(xiàng)0);
步驟12,硬件進(jìn)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作時(shí),在中斷向量查詢表的表項(xiàng)中寫入相應(yīng)內(nèi)容(需要接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的通道號(hào),以及需要在通道中執(zhí)行的操作),并設(shè)置中斷狀態(tài)寄存器的值,然后以中斷的方式通知處理設(shè)備的CPU,即向處理設(shè)備的CPU發(fā)送中斷處理請(qǐng)求;
步驟13,處理設(shè)備的CPU進(jìn)入中斷處理程序,讀取中斷狀態(tài)寄存器的值,然后將中斷狀態(tài)寄存器的值歸位;
步驟14,根據(jù)讀取的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出,若判斷結(jié)果為是,則執(zhí)行步驟15,否則,執(zhí)行步驟16 ;
步驟15,清空中斷向量查詢表,使軟件指針和硬件指針指向第一個(gè)表項(xiàng)(即表一中的表項(xiàng)0);
步驟16,根據(jù)步驟13讀取的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效,若判斷結(jié)果為是,則執(zhí)行步驟17,否則,執(zhí)行步驟113 ;
步驟17,提取中斷向量查詢表中軟件指針當(dāng)前所指向的表項(xiàng)中所存儲(chǔ)的內(nèi)容;
步驟18,根據(jù)提取出的內(nèi)容,判斷該表項(xiàng)是否為有效表項(xiàng),若判斷結(jié)果為是,則執(zhí)行步驟111,否則,執(zhí)行步驟19;
步驟19,將軟件指針依次加一,并在每次加一后提取當(dāng)前指向的表項(xiàng)中的內(nèi)容,并根據(jù)提取出的內(nèi)容判斷當(dāng)前指向的表項(xiàng)是否為有效表項(xiàng),直至判斷出當(dāng)前指向的表項(xiàng)為有效表項(xiàng);
步驟110,判斷步驟19是否查找到有效表項(xiàng),若判斷結(jié)果為是,則轉(zhuǎn)至步驟111,否則,轉(zhuǎn)至步驟113;
步驟111,根據(jù)從判斷出的有效表項(xiàng)中提取出的內(nèi)容進(jìn)行相應(yīng)的處理(例如接收數(shù)據(jù)包處理或發(fā)送數(shù)據(jù)包處理);
步驟112,在步驟111處理完成后,將軟件指針加一,指向下一個(gè)表項(xiàng),然后轉(zhuǎn)至步驟17 ;
步驟113,退出此次中斷處理程序。
由上可見,現(xiàn)有技術(shù)在實(shí)現(xiàn)El通道在CEl模式下進(jìn)行收發(fā)數(shù)據(jù)包處理時(shí),由于中斷狀態(tài)寄存器中的值是處理設(shè)備的硬件負(fù)責(zé)寫入的,處理設(shè)備的CPU進(jìn)入中斷處理程序后,若根據(jù)中斷狀態(tài)寄存器的值判斷出全局中斷有效,就會(huì)對(duì)中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,在處理完所有有效表項(xiàng)后才能退出中斷處理程序,如果在CPU退出此次中斷處理程序之前,硬件又執(zhí)行了收發(fā)數(shù)據(jù)包的操作,那么硬件就會(huì)重新設(shè)置中斷狀態(tài)寄存器中的值,但是,處理設(shè)備的CPU只有在退出此次中斷處理程序之后,才能重新讀取中斷狀態(tài)寄存器中的值,而此時(shí)中斷向量查詢表中已經(jīng)不存在有效表項(xiàng)了,CPU依然會(huì)根據(jù)中斷狀態(tài)寄存器中的值再一次執(zhí)行中斷處理程序,由于此時(shí)各表項(xiàng)均為無效表項(xiàng),因此就需要遍歷中斷向量查詢表中的各表項(xiàng),從而浪費(fèi)了非常多的處理資源。發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種中斷處理方法及裝置、中央處理器以及處理設(shè)備,用以解決現(xiàn)有技術(shù)中中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí),遍歷中斷向量查詢表中的各表項(xiàng)浪費(fèi)了非常多的處理資源的問題。
本發(fā)明實(shí)施例技術(shù)方案如下
一種中斷處理方法,該方法包括步驟CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;若判斷結(jié)果為否,則從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
一種中斷處理裝置,包括中斷處理請(qǐng)求接收單元,用于接收硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求;表項(xiàng)確定單元,用于在中斷處理請(qǐng)求接收單元接收到所述中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);表項(xiàng)判斷單元,用于判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;表項(xiàng)處理單元,用于在表項(xiàng)判斷單元的判斷結(jié)果為否時(shí),從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
一種中央處理器,包括上述中斷處理裝置。
一種處理設(shè)備,包括上述中央處理器。
本發(fā)明實(shí)施例技術(shù)方案中,CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,不再是直接從軟件指針當(dāng)前所指向的表項(xiàng)開始依次處理中斷向量查詢表中的各表項(xiàng),而是首先判斷軟件指針和硬件指針是否指向同一表項(xiàng),只有在軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)不相同時(shí),才執(zhí)行從軟件指針當(dāng)前所指向的表項(xiàng)開始依次處理中斷向量查詢表中的各表項(xiàng)的操作。由于硬件指針每針對(duì)一個(gè)表項(xiàng)完成內(nèi)容寫入操作后,硬件指針都會(huì)加一,因此在中斷向量查詢表中存在有效表項(xiàng)時(shí),這些有效表項(xiàng)應(yīng)為軟件指針當(dāng)前指向的表項(xiàng)以及軟件指針和硬件指針之間的表項(xiàng),若軟件指針?biāo)赶虻谋眄?xiàng)與硬件指針?biāo)赶虻谋眄?xiàng)相同,則說明此時(shí)中斷向量查詢表中已經(jīng)沒有有效表項(xiàng)了,那么就可以退出此次中斷處理,因此能夠避免中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí),還要遍歷中斷向量查詢表中的各表項(xiàng)的操作,從而有效地節(jié)省了較多的處理資源。
圖1為現(xiàn)有技術(shù)中,中斷處理方法流程示意圖2為本發(fā)明實(shí)施例一中,中斷處理方法流程示意圖3為本發(fā)明實(shí)施例一中,中斷向量查詢表中的有效表項(xiàng)示意圖4為本發(fā)明實(shí)施例二中,中斷處理方法具體實(shí)現(xiàn)流程示意圖5為本發(fā)明實(shí)施例三中,中斷處理裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合各個(gè)附圖對(duì)本發(fā)明實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理具體實(shí)施方式
及其對(duì)應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)地闡述。
實(shí)施例一
如圖2所示,為本發(fā)明實(shí)施例一中的中斷處理方法流程示意圖,其具體處理流程如下
步驟21,CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);
當(dāng)處理設(shè)備啟動(dòng)時(shí),將針對(duì)中斷向量查詢表的軟件指針和硬件指針分別進(jìn)行初始化,使其均指向中斷向量查詢表的第一個(gè)表項(xiàng)。
硬件進(jìn)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作時(shí),在中斷向量查詢表的表項(xiàng)中寫入相應(yīng)內(nèi)容(需要接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的通道號(hào),以及需要在通道中執(zhí)行的操作),并設(shè)置中斷狀態(tài)寄存器的值,然后硬件以中斷的方式通知處理設(shè)備的CPU,即硬件向處理設(shè)備的 CPU發(fā)送中斷處理請(qǐng)求,處理設(shè)備的CPU進(jìn)入中斷處理程序,讀取中斷狀態(tài)寄存器的值,然后將中斷狀態(tài)寄存器的值歸位。
在處理設(shè)備的CPU進(jìn)行中斷處理時(shí),可以直接執(zhí)行步驟21,即確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)。此外,由于處理設(shè)備的CPU 有時(shí)會(huì)發(fā)生誤判的情況,即在硬件未發(fā)生收發(fā)數(shù)據(jù)包的操作時(shí),誤認(rèn)為硬件發(fā)生了數(shù)據(jù)收發(fā)數(shù)據(jù)包操作,從而進(jìn)入中斷處理程序,浪費(fèi)了較多的處理資源。為了解決該問題,可以在執(zhí)行步驟21之前,先根據(jù)讀取出的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效,若判斷出全局中斷有效,則執(zhí)行步驟21,即確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng),若判斷出全局中斷無效,則可以直接退出此次中斷處理程序,從而避免了由于CPU誤判造成的浪費(fèi)資源的問題。
其中,中斷狀態(tài)寄存器的值中,預(yù)先設(shè)置某一位或幾位用來標(biāo)識(shí)全局中斷是否有效,預(yù)先設(shè)置的某一位或幾位可以稱為全局中斷標(biāo)識(shí)位,CPU判斷中斷狀態(tài)寄存器的值中的全局中斷標(biāo)識(shí)位的值是否為標(biāo)識(shí)全局中斷有效的值(例如值1能夠標(biāo)識(shí)全局中斷有效,值 0標(biāo)識(shí)全局中斷無效),若是,則CPU確認(rèn)全局中斷有效,否則,CPU確認(rèn)全局中斷無效。
當(dāng)處理設(shè)備的硬件頻繁的執(zhí)行收發(fā)數(shù)據(jù)包操作時(shí),可能會(huì)存在下述情況中斷向量查詢表中的各表項(xiàng)都為有效表項(xiàng),此時(shí)硬件無法再針對(duì)中斷向量查詢表進(jìn)行寫入內(nèi)容的操作。這種情況可以稱為中斷向量查詢表溢出,若中斷向量查詢表溢出,則硬件后續(xù)進(jìn)行收發(fā)數(shù)據(jù)包操作時(shí),就無法再向中斷向量查詢表的表項(xiàng)中寫入相應(yīng)內(nèi)容。為了解決該問題,可以在執(zhí)行步驟21之前,先根據(jù)讀取出的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出,若判斷出中斷向量查詢表未溢出,則執(zhí)行步驟21,即確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng),若判斷出中斷向量查詢表溢出,則可以清空中斷向量查詢表,然后執(zhí)行步驟21。
其中,中斷狀態(tài)寄存器的值中,預(yù)先設(shè)置某一位或幾位用來標(biāo)識(shí)溢出中斷是否有效,預(yù)先設(shè)置的某一位或幾位可以稱為溢出中斷標(biāo)識(shí)位,CPU判斷中斷狀態(tài)寄存器的值中的溢出中斷標(biāo)識(shí)位的值是否為標(biāo)識(shí)溢出中斷有效的值(例如值1能夠標(biāo)識(shí)溢出中斷有效,值 0標(biāo)識(shí)溢出中斷無效),若是,則CPU確認(rèn)中斷向量查詢表溢出,否則,CPU確認(rèn)中斷向量查詢表未溢出。
如果處理設(shè)備的CPU進(jìn)入中斷處理程序,那么就會(huì)在處理完中斷向量查詢表的所有有效表項(xiàng)后才退出此次中斷處理程序,但是在CPU未退出此次中斷處理程序之前,硬件可能會(huì)不斷的向中斷向量查詢表的表項(xiàng)中寫入內(nèi)容,如果此時(shí)中斷向量查詢表溢出,則硬件會(huì)將中斷狀態(tài)寄存器的值中的溢出中斷標(biāo)識(shí)位置為標(biāo)識(shí)溢出中斷有效的值,但是由于此時(shí)CPU未退出此次中斷處理程序,因此CPU不能感測(cè)到溢出中斷有效,CPU會(huì)繼續(xù)處理中斷向量查詢表中的各有效表項(xiàng),若處理完中斷向量查詢表的所有有效表項(xiàng),CPU退出此次中斷處理程序,此時(shí)CPU發(fā)現(xiàn)中斷狀態(tài)寄存器的值中的溢出中斷標(biāo)識(shí)位為標(biāo)識(shí)溢出中斷有效的值,則會(huì)進(jìn)行溢出處理,即清空中斷向量查詢表,但是此次中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng),因此清空中斷向量查詢表的操作會(huì)浪費(fèi)較多的處理資源。此外,如果在中斷向量查詢表溢出時(shí),CPU只是清空中斷向量查詢表,但是緩存設(shè)備中各有效通道(即由于中斷向量查詢表溢出,硬件未能向中斷向量查詢表中寫入的內(nèi)容所對(duì)應(yīng)的通道)中的接收緩存描述符和發(fā)送緩存描述符依然存在,這樣就會(huì)使得這些通道后續(xù)無法繼續(xù)進(jìn)行收發(fā)數(shù)據(jù)包的操作,從而引發(fā)處理異常。
針對(duì)該問題,本發(fā)明實(shí)施例一提出,在判斷出中斷向量查詢表溢出時(shí),可以不再執(zhí)行清空中斷向量查詢表的操作,而是清空緩存設(shè)備中每個(gè)有效通道的接收緩存描述符和發(fā)送緩存描述符,從而不僅能夠避免中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí),清空中斷向量查詢表的操作浪費(fèi)較多的處理資源的問題,也能夠釋放緩存設(shè)備中的存儲(chǔ)空間,避免處理異常。
步驟22,判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;
步驟23,若判斷結(jié)果為否,則從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
初始時(shí),軟件指針和硬件指針都會(huì)指向中斷向量查詢表中的第一個(gè)表項(xiàng)(即表一中的表項(xiàng)0),硬件完成一個(gè)通道的接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的處理之后,會(huì)觸發(fā)處理設(shè)備的CPU進(jìn)入中斷處理程序,此時(shí)中斷向量查詢表中的軟件指針?biāo)赶虻谋眄?xiàng)一定是有效表項(xiàng),處理設(shè)備的硬件依次向中斷向量查詢表的各表項(xiàng)中寫入相應(yīng)內(nèi)容(通道號(hào)和需要在該通道執(zhí)行的操作),每次向表項(xiàng)中寫入相應(yīng)內(nèi)容后,該表項(xiàng)由無效表項(xiàng)轉(zhuǎn)為有效表項(xiàng),然后使對(duì)應(yīng)的硬件指針加一,硬件指針加一后會(huì)指向下一個(gè)表項(xiàng),因此通常狀況下,軟件指針當(dāng)前所指向的表項(xiàng)和軟件指針與硬件指針之間的表項(xiàng),即為需要CPU進(jìn)行處理的有效表項(xiàng)。
例如,如圖3所示,在CPU進(jìn)入中斷處理程序時(shí),軟件指針指向中斷向量查詢表中的表項(xiàng)1,硬件指針指向中斷向量查詢表中的表項(xiàng)7,因此表項(xiàng)1至表項(xiàng)6為有效表項(xiàng),其他表項(xiàng)為無效表項(xiàng)。
本發(fā)明實(shí)施例一提出,當(dāng)軟件指針和硬件指針指向同一表項(xiàng)時(shí),表明該中斷向量查詢表中不存在有效表項(xiàng),均為無效表項(xiàng),因此可以不進(jìn)行處理,從而節(jié)省了較多的處理資源;當(dāng)軟件指針和硬件指針指向不同表項(xiàng)時(shí),表明該中斷向量查詢表中存在有效表項(xiàng),因此 CPU對(duì)有效表項(xiàng)進(jìn)行處理,即從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
本發(fā)明實(shí)施例一中,對(duì)中斷向量查詢表中各表項(xiàng)的處理可以但不限于包括按照該表項(xiàng)中的內(nèi)容,對(duì)相應(yīng)通道進(jìn)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的處理。
由于硬件是依次向中斷向量查詢表的各表項(xiàng)中寫入內(nèi)容,所以正常情況下,軟件指針當(dāng)前所指向的表項(xiàng)以及軟件指針與硬件指針之間的表項(xiàng)都應(yīng)該是有效表項(xiàng),而不應(yīng)該出現(xiàn)無效表項(xiàng),也就是說,中斷向量查詢表中的各有效表項(xiàng)必須是連續(xù)的,中間不能出現(xiàn) “跳躍”的情況,若軟件指針當(dāng)前所指向的表項(xiàng)以及軟件指針與硬件指針之間的表項(xiàng)中出現(xiàn)了無效表項(xiàng),則說明硬件發(fā)生了寫入異常,因此,在執(zhí)行步驟23時(shí),若發(fā)現(xiàn)軟件指針當(dāng)前所指向的表項(xiàng)以及軟件指針與硬件指針之間的表項(xiàng)中出現(xiàn)了無效表項(xiàng),則記錄硬件異常信息,后續(xù)可以根據(jù)記錄的硬件異常信息來監(jiān)測(cè)硬件是否出現(xiàn)了寫入異常的情況,從而跟蹤硬件的工作狀態(tài)。
由上述處理過程可知,本發(fā)明實(shí)施例技術(shù)方案中,CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,不再是直接從軟件指針當(dāng)前所指向的表項(xiàng)開始依次處理中斷向量查詢表中的各表項(xiàng),而是首先判斷軟件指針和硬件指針是否指向同一表項(xiàng),只有在軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)不相同時(shí),才執(zhí)行從軟件指針當(dāng)前所指向的表項(xiàng)開始依次處理中斷向量查詢表中的各表項(xiàng)的操作。由于硬件指針每針對(duì)一個(gè)表項(xiàng)完成內(nèi)容寫入操作后,硬件指針都會(huì)加一,因此在中斷向量查詢表中存在有效表項(xiàng)時(shí),這些有效表項(xiàng)應(yīng)為軟件指針當(dāng)前指向的表項(xiàng)以及軟件指針和硬件指針之間的表項(xiàng),若軟件指針?biāo)赶虻谋眄?xiàng)與硬件指針?biāo)赶虻谋眄?xiàng)相同,則說明此時(shí)中斷向量查詢表中已經(jīng)沒有有效表項(xiàng)了,那么就可以退出此次中斷處理,因此能夠避免中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí),還要遍歷中斷向量查詢表中的各表項(xiàng)的操作,從而有效地節(jié)省了較多的處理資源。
下面給出更為具體的實(shí)施方式。
實(shí)施例二
如圖4所示,為本發(fā)明實(shí)施例二中的中斷處理方法具體實(shí)現(xiàn)流程示意圖,其具體處理流程如下
步驟41,處理設(shè)備啟動(dòng)時(shí),將針對(duì)中斷向量查詢表的軟件指針和硬件指針分別進(jìn)行初始化,使其均指向中斷向量查詢表的第一個(gè)表項(xiàng)(即表一中的表項(xiàng)0);
步驟42,硬件進(jìn)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作時(shí),在中斷向量查詢表的表項(xiàng)中寫入相應(yīng)內(nèi)容(需要接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的通道號(hào),以及需要在通道中執(zhí)行的操作),并設(shè)置中斷狀態(tài)寄存器的值,然后以中斷的方式通知處理設(shè)備的CPU,即向處理設(shè)備的CPU發(fā)送中斷處理請(qǐng)求;
步驟43,處理設(shè)備的CPU進(jìn)入中斷處理程序,讀取中斷狀態(tài)寄存器的值,然后將中斷狀態(tài)寄存器的值歸位;
步驟44,根據(jù)讀取的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出,若判斷結(jié)果為是,則執(zhí)行步驟45,否則,執(zhí)行步驟46 ;
步驟45,清空每個(gè)有效通道的接收緩存描述符和發(fā)送緩存描述符,然后轉(zhuǎn)至步驟 414 ;
步驟46,根據(jù)步驟43讀取的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效,若判斷結(jié)果為是,則執(zhí)行步驟47,否則,執(zhí)行步驟414 ;
步驟47,在進(jìn)行中斷處理時(shí),確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);
步驟48,判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同,若判斷結(jié)果為是,則執(zhí)行步驟414,否則,執(zhí)行步驟49 ;
步驟49,提取中斷向量查詢表中軟件指針當(dāng)前所指向的表項(xiàng)中所存儲(chǔ)的內(nèi)容;
步驟410,根據(jù)提取出的內(nèi)容,判斷該表項(xiàng)是否為有效表項(xiàng),若判斷結(jié)果為是,則執(zhí)行步驟412,否則,執(zhí)行步驟411 ;
步驟411,記錄硬件異常信息,并將軟件指針加一,然后轉(zhuǎn)至步驟48 ;
步驟412,根據(jù)從判斷出的有效表項(xiàng)中提取出的內(nèi)容進(jìn)行相應(yīng)的處理(例如接收數(shù)據(jù)包處理或發(fā)送數(shù)據(jù)包處理);
步驟413,在步驟412處理完成后,將軟件指針加一,指向下一個(gè)表項(xiàng),然后轉(zhuǎn)至步驟48 ;
步驟414,退出此次中斷處理程序。
由上述處理過程可知,本發(fā)明實(shí)施例技術(shù)方案中,在判斷出中斷向量查詢表溢出后,不是去清空中斷向量查詢表,而是清空每個(gè)有效通道的接收緩存描述符和發(fā)送緩存描述符,可以釋放緩存設(shè)備中的存儲(chǔ)空間,避免引發(fā)處理異常,也能夠避免資源浪費(fèi)問題;在判斷出全局中斷有效后,不是從當(dāng)前軟件指針?biāo)傅谋眄?xiàng)開始,在中斷向量查詢表中依次處理有效表項(xiàng),而是首先判斷軟件指針指向的表項(xiàng)是否與硬件指針指向的表項(xiàng)相同,在軟件指針指向的表項(xiàng)與硬件指針指向的表項(xiàng)不同時(shí),才對(duì)中斷向量查詢表中的各表項(xiàng)進(jìn)行處理,直至軟件指針指向的表項(xiàng)與硬件指針指向的表項(xiàng)相同,從而有效避免了中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí)依然執(zhí)行遍歷中斷向量查詢表的操作,節(jié)省了較多的處理資源;另外,在上述處理過程中,還可以記錄硬件異常信息,為定位硬件問題提供幫助。
實(shí)施例三
相應(yīng)的,本發(fā)明實(shí)施例三提供了一種中斷處理裝置,其結(jié)構(gòu)如圖5所示,包括
中斷處理請(qǐng)求接收單元51,用于接收硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求;
表項(xiàng)確定單元52,用于在中斷處理請(qǐng)求接收單元51接收到所述中斷處理請(qǐng)求后, 確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);
表項(xiàng)判斷單元53,用于判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;
表項(xiàng)處理單元M,用于在表項(xiàng)判斷單元53的判斷結(jié)果為否時(shí),從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
較佳地,所述中斷處理裝置還包括
第一讀取單元,用于在表項(xiàng)確定單元52確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,讀取中斷狀態(tài)寄存器的值;
全局中斷判斷單元,用于根據(jù)第一讀取單元讀取出的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效;
所述表項(xiàng)確定單元52,具體用于在全局中斷判斷單元判斷出全局中斷有效時(shí),確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)。
較佳地,所述中斷處理裝置還包括
第二讀取單元,用于在表項(xiàng)確定單元52確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,讀取中斷狀態(tài)寄存器的值;
中斷溢出判斷單元,用于根據(jù)第二讀取單元讀取出的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出;
所述表項(xiàng)確定單元52,具體用于在中斷溢出判斷單元判斷出中斷向量查詢表未溢出時(shí),確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)。
更佳地,所述中斷處理裝置還包括描述符清空單元,用于在中斷溢出判斷單元判斷出中斷向量查詢表溢出時(shí),清空緩存設(shè)備中各有效通道的接收緩存描述符和發(fā)送緩存描述符。
相應(yīng)的,本發(fā)明實(shí)施例三提供了一種中央處理器,至少包括上述中斷處理裝置。
此外,本發(fā)明實(shí)施例三還提供一種處理設(shè)備,至少包括上述中央處理器。其中,只要是能夠存儲(chǔ)中斷向量查詢表,并能夠根據(jù)中斷向量查詢表進(jìn)行中斷處理的設(shè)備都在本發(fā)明實(shí)施例三提出的處理設(shè)備的保護(hù)范圍內(nèi)。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種中斷處理方法,其特征在于,包括中央處理器CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;若判斷結(jié)果為否,則從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
2.如權(quán)利要求1所述的方法,其特征在于,在確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,還包括讀取中斷狀態(tài)寄存器的值;并根據(jù)讀取出的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效;若判斷出全局中斷有效,則執(zhí)行確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)的操作。
3.如權(quán)利要求1所述的方法,其特征在于,在確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,還包括讀取中斷狀態(tài)寄存器的值;并根據(jù)讀取出的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出;若判斷出中斷向量查詢表未溢出,則執(zhí)行確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)的操作。
4.如權(quán)利要求3所述的方法,其特征在于,還包括若判斷出中斷向量查詢表溢出,則清空緩存設(shè)備中各有效通道的接收緩存描述符和發(fā)送緩存描述符。
5.一種中斷處理裝置,其特征在于,包括中斷處理請(qǐng)求接收單元,用于接收硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求;表項(xiàng)確定單元,用于在中斷處理請(qǐng)求接收單元接收到所述中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);表項(xiàng)判斷單元,用于判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;表項(xiàng)處理單元,用于在表項(xiàng)判斷單元的判斷結(jié)果為否時(shí),從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。
6.如權(quán)利要求5所述的裝置,其特征在于,還包括第一讀取單元,用于在表項(xiàng)確定單元確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,讀取中斷狀態(tài)寄存器的值;全局中斷判斷單元,用于根據(jù)第一讀取單元讀取出的中斷狀態(tài)寄存器的值,判斷全局中斷是否有效;所述表項(xiàng)確定單元,具體用于在全局中斷判斷單元判斷出全局中斷有效時(shí),確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)。
7.如權(quán)利要求5所述的裝置,其特征在于,還包括第二讀取單元,用于在表項(xiàng)確定單元確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)之前,讀取中斷狀態(tài)寄存器的值;中斷溢出判斷單元,用于根據(jù)第二讀取單元讀取出的中斷狀態(tài)寄存器的值,判斷中斷向量查詢表是否溢出;所述表項(xiàng)確定單元,具體用于在中斷溢出判斷單元判斷出中斷向量查詢表未溢出時(shí), 確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng)。
8.如權(quán)利要求7所述的裝置,其特征在于,還包括描述符清空單元,用于在中斷溢出判斷單元判斷出中斷向量查詢表溢出時(shí),清空緩存設(shè)備中各有效通道的接收緩存描述符和發(fā)送緩存描述符。
9.一種中央處理器,其特征在于,包括權(quán)利要求5 8中任一權(quán)利要求所述的中斷處理直ο
10.一種處理設(shè)備,其特征在于,包括權(quán)利要求9所述的中央處理器。
全文摘要
本發(fā)明公開了一種中斷處理方法及裝置、中央處理器以及處理設(shè)備,該方法包括步驟中央處理器CPU在接收到硬件執(zhí)行接收數(shù)據(jù)包或發(fā)送數(shù)據(jù)包的操作后發(fā)送的中斷處理請(qǐng)求后,確定中斷向量查詢表中軟件指針當(dāng)前指向的表項(xiàng)以及硬件指針當(dāng)前指向的表項(xiàng);判斷軟件指針當(dāng)前指向的表項(xiàng)與硬件指針當(dāng)前指向的表項(xiàng)是否相同;若判斷結(jié)果為否,則從軟件指針當(dāng)前指向的表項(xiàng)開始,對(duì)所述中斷向量查詢表中的各表項(xiàng)依次進(jìn)行處理,直至軟件指針與硬件指針指向同一個(gè)表項(xiàng)。采用本發(fā)明技術(shù)方案,解決了現(xiàn)有技術(shù)中中斷向量查詢表中的各表項(xiàng)均為無效表項(xiàng)時(shí),遍歷中斷向量查詢表中的各表項(xiàng)浪費(fèi)了非常多的處理資源的問題。
文檔編號(hào)G06F13/24GK102521177SQ20111040360
公開日2012年6月27日 申請(qǐng)日期2011年12月7日 優(yōu)先權(quán)日2011年12月7日
發(fā)明者鄧彬 申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司