首页 . 理学 . 计算机科学技术 . 计算机体系结构 . 微体系结构

流水线例外

/pipeline exception/
条目作者吴瑞阳

吴瑞阳

最后更新 2022-01-20
浏览 253
最后更新 2022-01-20
浏览 253
0 意见反馈 条目引用

在流水线处理器中发生的、需要打断当前执行的一个信号。又称流水线异常。

英文名称
pipeline exception
所属学科
计算机科学技术

当流水线例外发生后,当前执行被打断,处理器自动进入更高的权限状态(如内核态),执行例外处理程序,处理例外,并在处理完成后,恢复原正常执行,或原执行不能恢复时进行报错。

当流水线例外发生时,应当等到触发该例外的指令到达较靠后的流水级,并在指令真正修改硬件状态之前,执行流水线例外的处理。流水线处理例外时,将清空当前流水线,将处理器设置为更高的权限状态,硬件保存部分例外现场,并根据例外类型,将对应的例外处理程序的入口装入流水线程序计数器中,从而使得处理器接下来执行例外处理程序。

根据发生例外的原因和来源,大致可分为外部事件、指令执行中的错误、数据完整性问题、地址转换异常、系统调用和陷入、需要软件修正的运算等几类。外部事件通常指流水线中断,外部设备需要中断当前执行,让流水线处理外部设备中的任务。流水线中断也是一种流水线例外。执行执行中的错误,通常包括指令不合法、访存指令地址错误、在低权限(如用户态)时使用需要高权限(如核心态)的指令等,导致当前程序不能继续执行,需要进行例外处理。数据完整性问题,通常指出现总线错误、存储器发生校验错误等可恢复或不可恢复的错误情况,此时应当进入例外处理函数,来寻求解决办法。地址转换异常,则是当存储管理单元对一个内存地址进行虚拟地址到物理地址映射时,没有找到对应的页表项时触发的,此时需要硬件或软件进行页表重填或页表无效处理。系统调用和陷入,指的是当前流水线中的程序故意使用特定指令,触发系统调用异常或陷入异常,将控制权交给操作系统,通常用于在低权限模式下申请使用部分高权限功能,例如文件读写操作等。需要软件修正的运算主要由浮点指令的执行产生,当某些操作数的运算产生硬件不能处理的结果时,触发异常,并由软件进行处理。

根据例外是否可以屏蔽,可分为不可屏蔽例外和可屏蔽例外。不可屏蔽例外发生时,流水线将必须处理该例外,执行例外处理函数。例如访存指令地址错误、系统调用等。可屏蔽例外,则指可以通过配置,即使发生了这种例外,流水线也可以无视该例外,不打断当前的执行。例如可屏蔽的中断可以通过中断控制器进行屏蔽,部分浮点例外也可以通过配置使得不需要触发流水线例外。

根据例外发生并处理后是否可以恢复原执行,可分为可恢复例外和不可恢复例外。可恢复例外在发生时,流水线需要精确保存例外现场,当例外处理函数执行完毕后,恢复原执行现场继续执行,可以使得原执行看起来就像没有发生过这个例外一样。不可恢复例外则包括重大的硬件错误、不可恢复的存储器校验错误等,当发生不可恢复例外时,流水线可以不保留精确的例外现场,而例外处理函数要结束之前程序的执行,并报告错误。

根据发生例外时流水线是否保存精确的现场,可分为非精确例外和精确例外。非精确的流水线例外发生时,不仅发生例外的原因、触发例外的指令等信息可能无法准确的保存下来,而且还可能有部分处理器状态被错误地修改,例外处理函数难以处理例外。精确的流水线例外发生时,流水线将严格保证例外发生前的指令都已经执行完成,而触发例外的指令及该指令之后的指令,都像没有执行过一样,不对处理器状态进行修改,并保存准确的例外原因、触发例外的指令等信息,从而使得例外处理完成后,可以返回到当前程序继续执行。在计算机体系结构发展早期,有部分处理器只实现了非精确例外,而现在处理器的绝大多数例外均为精确例外。

相关条目

阅读历史

    意见反馈

    提 交

    感谢您的反馈

    我们会尽快处理您的反馈!
    您可以进入个人中心的反馈栏目查看反馈详情。
    谢谢!