流水线动态调度的Scoreboarding算法

Scoreboarding主要有三个组成部分:

1.指令状态:

IS:check for structural/WAW hazard; stall issue until clear;
RO:read operands if no RAW hazards
EX:followed by notification to scoreboard
WR: Write result
这里表示着流水线的四个周期。

2.功能单元状态,有九个部分组成:

BUSY 用来显示这个单元是否正在被占用。
fi 目的寄存器地址,只有一个
fj 源寄存器地址,有两个
fk 另一个源寄存器地址
oj 生产 fj 的功能单元
ok 生产 fk 的功能单元
Rj flag显示 fj 是否ready
Rk flag显示 fk 是否ready

3.寄存器结果状态:

用来显示这个寄存器将会被哪一个功能单元所写。
如果空白表示没有等待的指令将会写这个寄存器。

下面举个例子。
这里写图片描述
这是初始状态也就是cycle0状态。
cycle1:
这里写图片描述
instruction 1进入了IS状态。
寄存器F6将要被写。Rk功能单元就绪。
cycle2:
这里写图片描述
instruction 1进入了RO状态。
这里由于FUS只有一个interger load单元,所以instruction 2指令进不来。由于scoreboarding算法是顺序的,所以instruction 2指令进不来就导致了i2其后的指令都进不来。
cycle4:
这里写图片描述
直到cycle4,instruction 1已经被执行完,因此寄存器结构状态的F6没有指令要写它了(因为已经写完了)。所以F6清空。
cycle5:
这里写图片描述
同上面的。
为什么instruction 3不同时进入呢。因为流水线是不允许同时进入IS这个操作的,会导致结构冒险。
cycle6:
这里写图片描述
此时instruction 3进入IS状态。但此时寄存器F2待写。寄存器F0也进入待写状态。
cycle7:
这里写图片描述
注意到此时,为什么instruction 3不前进呢?原因就在于我们上面所说的这个F2寄存器被占用着呢,所以Rj处于未就绪状态,所以是不能读操作数的。
cycle8:
这里写图片描述
同样此时instruction 3也没有前进。下一步就能前进了。
此时instruction 4也没有前进,但下一步就能前进了。
但此时instruction 5也应该进入IS。因为其有操作单元。
然后就是按照刚才所说的方法调度就行了。
【图片来源:sjtu计算机体系结构李超老师的ppt。侵删。】

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值