中斷方式與輪詢方式比較
中斷的基本概念
程序中斷通常簡(jiǎn)稱中斷,是指CPU在正常運(yùn)行程序的過(guò)程中,由于預(yù)選安排或發(fā)生了各種隨機(jī)的內(nèi)部或外部事件,使CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為相應(yīng)的服務(wù)程序去處理,這個(gè)過(guò)程稱為程序中斷。
二、80x86微處理器的中斷80x86微處理器的中斷類型一般分為2類,即由于執(zhí)行某些指令引起的軟中斷和由處理器以外其他控制電路發(fā)出中斷請(qǐng)求信號(hào)引起的硬中斷。CPU要從主程序轉(zhuǎn)入中斷服務(wù)程序,必須知道該中斷服務(wù)程序的入口地址,即中斷向量。80x86為CPU的PC機(jī)共有256個(gè)中斷向量。
中斷的一般過(guò)程:
主程序只是在設(shè)備A,B,C數(shù)據(jù)準(zhǔn)備就緒時(shí),才去處理A,B,C,進(jìn)行數(shù)據(jù)交換。在速度較慢的外圍設(shè)備準(zhǔn)備自己的數(shù)據(jù)時(shí),CPU照常執(zhí)行自己的主程序。在這個(gè)意義上說(shuō),CPU和外圍設(shè)備的一些操作是并行地進(jìn)行的,因而同串行進(jìn)行的程序查詢方式相比,計(jì)算機(jī)系統(tǒng)的效率是大大提高了。如下圖:
實(shí)際的中斷過(guò)程還要復(fù)雜一些,下圖示出了中斷處理過(guò)程的詳細(xì)流程圖.當(dāng)CPU執(zhí)行完—條現(xiàn)行指令時(shí),如果外設(shè)向CPU發(fā)出中斷請(qǐng)求、那么CPU在滿足響應(yīng)條件的情況下,將發(fā)出中斷響應(yīng)信號(hào),與此同時(shí)關(guān)閉中斷(“中斷屏蔽”觸發(fā)器置“1”),表示CPU不再受理另外—個(gè)設(shè)備的中斷。這時(shí)、CPU將尋找中斷請(qǐng)求源是哪個(gè)設(shè)備。并保存CPU自己的程序計(jì)數(shù)器(Pc)的內(nèi)容.然后,它將轉(zhuǎn)移到處理該中斷源的中斷服務(wù)程序.CPU在保存現(xiàn)場(chǎng)信息,設(shè)備(如文換數(shù)據(jù))以后.將恢復(fù)現(xiàn)場(chǎng)信息.在這些動(dòng)作完成以后,開放中斷(“中斷屏蔽”觸發(fā)器置‘o”),并返網(wǎng)到原來(lái)被中斷的主程序的下一條指令。
(1)盡管外界中斷請(qǐng)求是隨機(jī)的,但CPU只有在當(dāng)前一條指令執(zhí)行完畢后,即轉(zhuǎn)入公操作時(shí)才受理設(shè)備的中斷請(qǐng)求,這樣才不致于使當(dāng)前指令的執(zhí)行受到干擾。公操作是指一條指令執(zhí)行結(jié)束后CPU所進(jìn)行的操作,如中斷處理、直接內(nèi)存?zhèn)魉?、取下條指令等。外界中斷請(qǐng)求信號(hào)通常存放在接口中的中斷源鎖存器里,并通過(guò)中斷請(qǐng)求線連至CPU,每當(dāng)一條指令執(zhí)行到末尾,CPU便檢查中斷請(qǐng)求信號(hào)。若中斷請(qǐng)求信號(hào)為“1”,則CPU轉(zhuǎn)入“中斷周期”,受理外界中斷。(2)為了在中斷服務(wù)程序執(zhí)行完畢以后正確地返回到原來(lái)主程序被中斷的斷點(diǎn)(PC內(nèi)容)而繼續(xù)執(zhí)行主程序,必須把程序計(jì)數(shù)器PC的內(nèi)容,以及當(dāng)前指令執(zhí)行結(jié)束后CPU的狀態(tài)(包括寄存器的內(nèi)容和一些狀態(tài)標(biāo)志位)都保存到堆棧中去。這些操作叫做保存現(xiàn)場(chǎng)。(3)當(dāng)CPU響應(yīng)中斷后,正要去執(zhí)行中斷服務(wù)程序時(shí),可能有另一個(gè)新的中斷源向它發(fā)出中斷請(qǐng)求。為了不致造成混亂,在CPU的中斷管理部件中必須有一個(gè)中斷屏蔽觸發(fā)器,它可以在程序的控制下置“1”(設(shè)置屏蔽),或置“0”(取掉屏蔽)。只有在中斷屏蔽標(biāo)志為“0”時(shí),CPU才可以受理中斷。當(dāng)一條指令執(zhí)行完畢CPU接受中斷請(qǐng)求并作出響應(yīng)時(shí),它一方面發(fā)出中斷響應(yīng)信號(hào)INTA,另一方面把中斷屏蔽標(biāo)志置“1”,即關(guān)閉中斷。這樣,CPU不能再受理另外的新的中斷源發(fā)來(lái)的中斷請(qǐng)求。只有在CPU把中斷服務(wù)程序執(zhí)行完畢以后,它才重新使中斷屏蔽標(biāo)志置“0”,即開放中斷,并返回主程序。因此,中斷服務(wù)程序的最后必須有兩條指令,即開中斷指令和返主指令,同時(shí)在硬件上要保證返主指令執(zhí)行以后才受理新的中斷請(qǐng)求。(4)中斷處理過(guò)程是由硬件和軟件結(jié)合來(lái)完成的。如在前圖中,中斷周期由硬件實(shí)現(xiàn),而中斷服務(wù)程序由機(jī)器指令序列實(shí)現(xiàn)。后者除執(zhí)行保存現(xiàn)場(chǎng)、恢復(fù)現(xiàn)場(chǎng)、開放中斷并返回主程序任務(wù)外,對(duì)要求中斷的設(shè)備進(jìn)行服務(wù),使其同CPU交換一個(gè)字的數(shù)據(jù),或作其他服務(wù)。
輪詢方式的基本概念
輪詢(Polling)I/O方式或程序控制I/O方式,是讓CPU以一定的周期按次序查詢每一個(gè)外設(shè),看它是否有數(shù)據(jù)輸入或輸出的要求,若有,則進(jìn)行相應(yīng)的輸入/輸出服務(wù);若無(wú),或I/O處理完畢柏,CPU就接著查詢下一個(gè)外設(shè)。
所需硬件:外設(shè)接口提供狀態(tài)端口、數(shù)據(jù)端口
軟件機(jī)制:應(yīng)用程序必須定時(shí)查詢各個(gè)接口的狀態(tài)端口,判斷是否需要輸入、輸出數(shù)據(jù),如果需要,則通過(guò)數(shù)據(jù)端口進(jìn)行數(shù)據(jù)操作。
特點(diǎn):CPU通過(guò)執(zhí)行指令主動(dòng)對(duì)外部設(shè)備進(jìn)行查詢,外部設(shè)備處于被動(dòng)地位。
上圖為一般過(guò)程。
輪詢方式與中斷方式的比較
速度
程序控制方式:
硬件的速度指標(biāo):由于“程序控制方式”完全采用軟件的方式對(duì)外設(shè)接口進(jìn)行控制,所以它的硬件操作只是普通的端口讀寫,并無(wú)特別之處,其速度指標(biāo)由總線傳輸速度、端口的響應(yīng)速度共同決定。
對(duì)于這種外設(shè)控制方式,速度指標(biāo)關(guān)鍵在于軟件。
中斷處理方式:
中斷處理方式本身所作的原子操作解釋和程序控制方式是一致的。
只不過(guò)因?yàn)榧尤肓酥袛嗾?qǐng)求和響應(yīng)機(jī)制,對(duì)狀態(tài)端口的讀取變成了在中斷響應(yīng)過(guò)程中對(duì)中斷號(hào)的讀取,對(duì)狀態(tài)端口的判斷變成了對(duì)中斷入口地址的確定。
從本質(zhì)上來(lái)說(shuō),中斷處理方式和程序控制方式本身的速度指標(biāo)一致,沒(méi)有大的差別。
可靠性
程序控制方式:
由于硬件不支持中斷方式,因此操作系統(tǒng)把CPU控制權(quán)交給應(yīng)用程序后,只要應(yīng)用程序不交還CPU控制權(quán),操作系統(tǒng)就始終不能恢復(fù)對(duì)CPU的控制(無(wú)定時(shí)中斷)。應(yīng)用程序與操作系統(tǒng)都是軟件模塊,操作系統(tǒng)屬于核心模塊,它們之間存在交接CPU控制權(quán)的關(guān)系。正是由于這樣的關(guān)系,一旦使用對(duì)外設(shè)的“程序控制方式”時(shí),應(yīng)用程序出現(xiàn)死鎖,則操作系統(tǒng)永遠(yuǎn)無(wú)法恢復(fù)對(duì)系統(tǒng)的控制。應(yīng)用程序的故障通過(guò)外設(shè)控制方式波及到作為核心模塊的操作系統(tǒng),因此,根據(jù)關(guān)聯(lián)可靠性指標(biāo)的計(jì)算可知,“程序控制方式”的關(guān)聯(lián)可靠性指標(biāo)很低。
中斷處理方式:
由于提供定時(shí)中斷,操作系統(tǒng)可以在應(yīng)用程序當(dāng)前時(shí)間片結(jié)束后通過(guò)中斷服務(wù)程序重新獲得對(duì)CPU的控制權(quán)。應(yīng)用程序的故障不會(huì)波及到操作系統(tǒng),因此,中斷處理方式的關(guān)聯(lián)可靠性指標(biāo)高。
可擴(kuò)展性
程序控制方式:
由于所有應(yīng)用程序中都包含對(duì)端口的操作,一旦硬件接口的設(shè)計(jì)發(fā)生變化,則所有應(yīng)用程序都必須進(jìn)行修改,這會(huì)使修改費(fèi)用升高很多倍。因此,程序控制方式會(huì)使相關(guān)硬件模塊的局部修改指標(biāo)相對(duì)較低。
中斷處理方式:
應(yīng)用程序不直接操作端口,對(duì)端口的操作是由中斷服務(wù)程序來(lái)完成的。如果某個(gè)硬件接口的設(shè)計(jì)發(fā)生了變化,只需要修改它相關(guān)的中斷服務(wù)程序即可。因此,中斷處理方式使得相關(guān)硬件模塊的局部修改指標(biāo)較高。
生命期
“程序控制方式”(CPU查詢方式)在早期的計(jì)算機(jī)系統(tǒng)中能夠滿足應(yīng)用需求;但是隨著外部設(shè)備種類的增多、速度差異的加大,這種方式逐漸成為系統(tǒng)性能提高的障礙。它的生命期只限于早期計(jì)算機(jī)階段,因?yàn)楫?dāng)時(shí)外部設(shè)備少,且都是低速設(shè)備,到8位機(jī)出現(xiàn)以后,這種外設(shè)控制方式(體系結(jié)構(gòu))被淘汰。
“中斷處理方式”(外設(shè)請(qǐng)求方式)能夠協(xié)調(diào)CPU與外設(shè)間的速度差異,能夠協(xié)調(diào)各種外設(shè)間的速度差異,提高系統(tǒng)的工作效率(速度指標(biāo))。使應(yīng)用程序與外設(shè)操作基本脫離開來(lái),降低了程序的設(shè)備相關(guān)性(關(guān)聯(lián)可靠性指標(biāo)、局部修改指標(biāo))。雖然目前某些快速設(shè)備相互間的通信沒(méi)有通過(guò)CPU,也沒(méi)有使用中斷處理方式,但是對(duì)于慢速設(shè)備、設(shè)備故障的處理來(lái)說(shuō),中斷處理方式仍然是最有效的。無(wú)論將來(lái)計(jì)算機(jī)系統(tǒng)中的元件怎樣變化,只要存在慢速設(shè)備與快速CPU之間的矛盾,使用中斷處理方式都是適合的。即便不使用中斷服務(wù)程序,中斷的概念也會(huì)保持很久。在短時(shí)期內(nèi),計(jì)算機(jī)系統(tǒng)還無(wú)法在所有領(lǐng)域離開人工交互操作,人的操作速度一定比機(jī)器的處理速度慢,因此慢速設(shè)備將仍然保持存在(但這不是慢速設(shè)備存在的唯一原因)。正因?yàn)榇嬖谶@樣的需求,中斷處理方式具有較長(zhǎng)的生命期。
-
cpu
+關(guān)注
關(guān)注
68文章
10914瀏覽量
213157 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41799
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
單片機(jī)中斷和CPU輪詢的區(qū)別
請(qǐng)問(wèn)STM32 DMA方式和中斷方式查詢之間有什么區(qū)別?
單片機(jī)中斷與CPU的輪詢有什么區(qū)別
對(duì)單片機(jī)通信方式(中斷和輪詢)的理解
![對(duì)單片機(jī)通信<b class='flag-5'>方式</b>(<b class='flag-5'>中斷</b>和<b class='flag-5'>輪詢</b>)的理解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論