Arm 处理器如何检测到发生了异常?

Arm 处理器如何检测到发生了异常?,arm,computer-architecture,processor,Arm,Computer Architecture,Processor,处理器如何检测到发生异常?检查点在哪里?处理器是否在每个F-D-E周期后进行异常检查或类似检查?如果它是特定于处理器的,那么它在arm中是如何发生的? 示例:当我们断言IRQ或FIQ行时,系统何时去检查该行 每个处理器在硬件级别都有标志寄存器(也称为状态寄存器)来表示异常。寄存器中的位将硬连线,以便通知异常。接下来的指令将基于这些寄存器执行。实际上没有任何检查点。异常信号可以在管道的任何阶段触发。作为一对例子,在执行阶段被零除,在解码阶段未知指令,等等。。。每当发生这些异常时,将刷新管道,并使用

处理器如何检测到发生异常?检查点在哪里?处理器是否在每个F-D-E周期后进行异常检查或类似检查?如果它是特定于处理器的,那么它在arm中是如何发生的?
示例:当我们断言IRQ或FIQ行时,系统何时去检查该行

每个处理器在硬件级别都有标志寄存器(也称为状态寄存器)来表示异常。寄存器中的位将硬连线,以便通知异常。接下来的指令将基于这些寄存器执行。

实际上没有任何检查点。异常信号可以在管道的任何阶段触发。作为一对例子,在执行阶段被零除,在解码阶段未知指令,等等。。。每当发生这些异常时,将刷新管道,并使用相应向量表条目的地址更新程序计数器(PC)。底线是处理器不会定期检查是否存在异常。当发出异常信号时,它会立即处理该异常。

但cpu何时会去检查状态寄存器?它会在每个周期之后检查异常吗?如果是这样的话,我无法在arm的13个周期中看到任何异常检查。您可以查看此图以供参考,因为异常处理将在处理器本身上进行硬连线,因此不要认为您可以在启动下一条指令之前查找检查异常的指令周期。我在霍尔的一本x86书中读到了这一点。这对ARM来说应该没有什么不同,一切都是内置的硬件;阅读ARM,特别是第2.8节中关于中断处理的内容。谢谢blacklung!但是处理器什么时候去检查异常信号呢?它不会定期检查信号。当异常信号被断言时,该过程在下一个时钟周期被触发。因此,一个非常简单的时间线(可能有点不切实际,但仍然是一个好的模型)将类似于C0(时钟周期0):断言异常信号,C1:刷新管道,C2:将PC设置为向量表条目地址并从该点继续执行