iT邦幫忙

2021 iThome 鐵人賽

DAY 22
1
Arm Platforms

ARM 組合語言:30天學習心得分享系列 第 22

Day 22 中斷的運用

在Day 20有稍微提到中斷機制,我們稍微深入說明一下,中斷其實也是種不浪費資源的方式,如果處理器一直處於很繁忙的狀態,很有可能造成處理器處理上的浪費,所以當中斷這個機制引進去之後,可以中斷某些等待中的任務,先讓處理器去處理其他更重要的任務,所以中斷機制還是有其必要性的。

中斷分成兩大類:
1.硬體中斷(Hardware Interrupt):
(1)遮罩式中斷(maskable interrupt):以遮罩的方式來關閉中斷封鎖暫存器。
(2)非遮罩中斷(non-maskable interrupt,NMI):無法通過在中斷封鎖暫存器時,設定位遮罩來關閉。。
(3)處理器間中斷(interprocessor interrupt):由處理器發出,被其它處理器接收。僅見於多處理器系統,以便於處理器間通信或同步。
(4)偽中斷(spurious interrupt):這種偽中斷,有可能是電路異常所產生的,這種偽中斷其實有時是被迫的。

2.軟體中斷(Software Interrupt):這種軟體中斷,簡單說,就是軟體因為異常,所以系統不得先不中斷軟體。

假設一個中斷,但卻讓機器處於一種確定狀態,則稱為精確中斷(precise interrupt),反之,則稱為非精確中斷。
精確中斷必須保證下列四個狀況:

1.程式計數器的值已經被儲存在已知位置,就是存檔完畢的意思。
2.程式計數器所指向的指令之前的所有指令已被執行完畢。
3.程式計數器所指向的指令之後的所有指令不可被執行。如果中斷訊號到來後而轉入處理前發生了任何針對暫存器/記憶體的更改,都必須予以還原。
4.程式計數器所指向的指令地執行狀態已知。

中斷儘管可以提高電腦處理效能,但過於密集的中斷請求/回應反而會影響系統效能。這類情形被稱作中斷風暴(interrupt storm)。其實,中斷機制還蠻很好用,在嵌入式語法裡面也常被使用,只要適當使用,基本上就能讓處理器發揮很好的任務處理效能。


上一篇
Day 21 例外及堆疊的處理方式
下一篇
Day 23 實時時鐘(real-time)與系統時鐘(system clock)
系列文
ARM 組合語言:30天學習心得分享30

尚未有邦友留言

立即登入留言