中斷和輪詢到底區別在哪?


CPU要和外設進行通信,可以采用輪詢和中斷兩種方式。因為輪詢方式需要CPU輪詢外設,查詢外設是否發生中斷,效率不高顯而易見。於是增加了如下圖的中斷系統來減輕CPU負擔,但是這樣做效率就高了嗎?本質上,采用中斷系統后,CPU仍然需要每隔一小段時間去查詢中斷控制寄存器TCON的各位狀態,以判斷是否有外設中斷發生,否則CPU仍舊無法知道外設的當前狀態。

如上所述,中斷和輪詢,好像又沒啥區別,CPU仍舊擺脫不了查詢的命運。但是你知道讓CPU直接和各個外設逐一溝通,和讓CPU只與中斷控制系統機構溝通,效率是完全不一樣的。為了證明我的推斷,我們假設,CPU外接20個不同的設備,這20個外設中在某一刻有兩個外設同時中斷,正好這個時候CPU來查看外設的狀態,如果是輪詢方式,CPU需要一一遍歷20種不同的外設控制器,才能判斷哪些外設剛才申請過中斷,哪些外設沒有申請中斷。如果采用中斷方式處理呢?CPU只需查詢一下中斷標志位,處理最高優先級的那個中斷,其他的事情全交給中斷系統去處理,效率提高了20倍!

從中,我們也可以發現一個現象,不論硬件設計如何巧妙,軟件產品如何復雜,在設計原則上仍然是在不斷的做加法。

 

圖1.  89C51單片機中斷系統的硬件框圖

備注: 從上圖中,我們看到89C51只有五個中斷源,外接的設備比較少。現代CPU對中斷系統進行了擴展,中斷系統的中斷寄存器也更加豐富了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM