2011-01-25 124 views
1

如果在長時間指令中CPU收到中斷,會發生什麼情況? CPU會執行整個指令還是僅執行其中的一部分?處理器在中斷時如何處理指令

+1

你是什麼意思的「長指令」?所有的CPU指令都是原子的,從處理器的角度來看,它們佔用最小的時間單位。或者我在課上錯過了什麼? :) – Jakob 2011-01-25 14:09:29

回答

1

從一個程序員的角度,任一特定的指令引退,以及其所有的副作用致力於寄存器/存儲器或它不是(和它的彷彿指令根本沒有執行)。指令退休的整個目的是保證在外部事件(如中斷)的情況下對程序狀態進行連貫的觀察。

特別值得一提的是,爲什麼指令會按順序退出,這樣外部觀察者仍然可以查看CPU的體系結構狀態,就好像它正在按順序執行指令一樣。

這也有例外,特別是REP字符串類的說明。

我相信這是你問到的問題,但如果不是的話,那麼讓我問你:你怎麼會看到一條指令從任何地方「部分」執行?

1

就我所知,它取決於處理器和指令。更具體地說,它取決於處理器是否以及何時對未決中斷進行採樣。如果處理器只在完成當前指令後才尋找掛起的中斷,那麼顯然沒有東西會中斷中間的指令。但是,如果長指令正在執行,那麼在指令執行期間多次採樣中斷可能是有益的(延遲方式)。這有一個缺點 - 在這種情況下,你必須恢復由於指令的部分執行而對寄存器和標誌所做的所有更改,因爲在中斷完成後,你必須返回並重新發出該指令。

(來源:維基http://en.wikipedia.org/wiki/Interrupt