如果在长指令的中间CPU收到中断会发生什么?CPU 会执行整个指令还是只执行部分指令?
问问题
484 次
2 回答
1
据我所知,这取决于处理器和指令。更具体地说,它取决于处理器是否以及何时对未决中断进行采样。如果处理器只在完成当前指令后寻找未决中断,那么显然没有任何东西会在中间中断一条指令。但是,如果正在执行一条长指令,则在指令执行期间多次采样中断可能是有益的(延迟方面)。这样做有一个缺点——在这种情况下,您必须恢复由于指令的部分执行而对寄存器和标志所做的所有更改,因为在中断完成后,您必须返回并重新发出该指令.
(来源:维基百科,http ://en.wikipedia.org/wiki/Interrupt )
于 2011-01-25T16:26:12.433 回答
1
从程序员的角度来看,要么一条特定的指令被淘汰,它的所有副作用都提交给寄存器/内存,要么没有(就好像这条指令根本没有执行)。指令引退的全部目的是保证在发生外部事件(例如中断)时程序状态的一致视图。
这就是指令按顺序退出的原因,因此外部观察者仍然可以查看 CPU 的体系结构状态,就好像它正在执行顺序指令一样。
对此也有例外,特别是 REP 字符串类指令。
我相信这是您所问的,但如果不是,那么让我问您:您如何观察到指令是从任何地方“部分”执行的?
于 2011-01-25T17:24:14.197 回答