2011-01-25 63 views
1

如果在长时间指令中CPU收到中断,会发生什么情况? CPU会执行整个指令还是仅执行其中的一部分?处理器在中断时如何处理指令

+1

你是什么意思的“长指令”?所有的CPU指令都是原子的,从处理器的角度来看,它们占用最小的时间单位。或者我在课上错过了什么? :) – Jakob 2011-01-25 14:09:29

回答

1

从一个程序员的角度,任一特定的指令引退,以及其所有的副作用致力于寄存器/存储器或它不是(和它的仿佛指令根本没有执行)。指令退休的整个目的是保证在外部事件(如中断)的情况下对程序状态进行连贯的观察。

特别值得一提的是,为什么指令会按顺序退出,这样外部观察者仍然可以查看CPU的体系结构状态,就好像它正在按顺序执行指令一样。

这也有例外,特别是REP字符串类的说明。

我相信这是你问到的问题,但如果不是的话,那么让我问你:你怎么会看到一条指令从任何地方“部分”执行?

1

就我所知,它取决于处理器和指令。更具体地说,它取决于处理器是否以及何时对未决中断进行采样。如果处理器只在完成当前指令后才寻找挂起的中断,那么显然没有东西会中断中间的指令。但是,如果长指令正在执行,那么在指令执行期间多次采样中断可能是有益的(延迟方式)。这有一个缺点 - 在这种情况下,你必须恢复由于指令的部分执行而对寄存器和标志所做的所有更改,因为在中断完成后,你必须返回并重新发出该指令。

(来源:维基http://en.wikipedia.org/wiki/Interrupt