流水线中的精确异常

流水与精确异常

我们为什么需要精确异常?

  1. 冯诺依曼结构ISA的语义
  2. 帮助软件调试
  3. 使得异常恢复和进程重启更容易
  4. 可以在软件中加入trap

多周期与流水线

因为并不是所有指令的执行时间都是一样长的,能不能在流水线中实现多周期的思想,即用多个不同的功能单元花费不同数量的时钟周期。而在这些功能单元中指令的执行可以流水也可以不流水,这样就必须保证指令序以及确定精确异常,因为在某个阶段发现异常时,其之后的指令已经开始执行了,那么就需要将微体系结构的状态还原到异常发生之前的那个状态。

上图展示了我们之前的思路,在传统的单(指令执行)周期流水线中,当FMUL在EX阶段时,ADD不能处于EX阶段,进一步,ADD和FMUL的EX阶段的时钟周期必须一致,但是实际上ADD的EX阶段并不需要那么长的时间,这样就导致指令处理时间较长。那么如果进行多周期执行,当FMUL和ADD不存在相关时,ADD可以使用EX阶段不同的功能单元,从而不需要等待FMUL指令EX阶段的完成。

看起来不错,但是如果第一个FMUL在WB阶段出现异常了呢?这样除了需要处理异常外,我们必须消除后续已执行的指令所带来的对体系结构状态的影响,否则指令的序就出现了问题,这个系统就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值