摘要:流水线的关键在于“重叠执行”,因此如果这个条件不能够满足,流水线就会被破坏。这种破坏主要来自3种情况。
流水线的关键在于“重叠执行”,因此如果这个条件不能够满足,流水线就会被破坏。这种破坏主要来自3种情况。
1.转移指令
因为前面的转移指令还没有完成,流水线无法确定下一条指令的地址,因此也就无法向流水线中添加这条指令。从这里的分析可以看出,无条件跳转指令是不会影响流水线的。
2.共享资源访问的冲突
共享资源访问的冲突也就是后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器,这也会使得流水线失败。为了避免冲突,就需要把相互有关的指令进行阻塞,这样会引起流水线效率的下降。一般地,指令流水线级数越多,越容易导致数据相关,阻塞流水线。
当然,也可以在编译系统上进行设置,当发现相邻的语句存在资源共享冲突的时候,在两者之间插入其他语句,将两条指令进入流水线的时间拉开,以避免错误。
3.响应中断
当有中断请求时,流水线也会停止。流水线响应中断有两种方式,一种是立即停止现有的流水线,称为精确断点法,这种方法能够立即响应中断,缩短了中断响应时间,但是增加了中央处理器的硬件复杂度。
还有一种是在中断时,在流水线内的指令继续执行,停止流水线的入口,当所有流水线内的指令全部执行后,再执行中断处理程序,这种方式称为不精确断点法。这种方式的中断响应时间较长,优点是实现控制简单。
相关推荐:
软考备考资料免费领取
去领取