pipeline之stage(二)

在真正的RISC IC的制成中,不会只有这五个stage。它可能存在多条pipeline,每条pipeline
有多个stage。如:
integer ALU:有5个stage;
FP/integer multiplication(浮点/integer乘):大概有11个stage


由于每条指令的the number of stages不同,就可也能够造成较多的问题:
1、有些指令是unpipeline,会造成structural hazard。
2、可能会造成同时有多条指令对register进行写操作。
3、可能会发生WAW hazard,就是后运行的指令反而先写。
4、会导致exception的发生顺序变化更大
5、会产生更严重的data hazard

第一种情况的解决方案就是增加hardware(function unit)
第二种情况的解决方案就是在ID OR MEM OR WB这三个stage中的任意一个stage中做检查,如果发现
前一条指令的写操作可能会跟当前的指令的写操作同时发生,那么就让当前的指令等一下。
第三种情况的解决方案就是在ID stage中做检查。
第四种情况的解决方案就是不管它,只要保证所有的execption都被正确的处理就行;
方案二:在chip中做一个buffer,用来存贮指令的结果值,这样当exception的顺序不对时,就可以
back到之前的指令,保证exception的处理顺序。
方案三:用软件来实现。
第五种情况的解决方案就是用forwarding来解决(没有办法完全消除掉)。

一个MIPS R4000真实芯片stage的划分:共分为8个。
IF、IS、RF、EX、DF、DS、TC、WB

IF:前半个instruction fetch,完成PC加4,和cache的初始化
IS:是后半个instruction fetch:完成从instruction cache中取指令
RF:就是进行instruction decode,将value从register中取出,并且做hazard checking
EX:
A、做运算,如:加减乘除
B、算memory的address
C、如果是branch,就去算target address,并检查跳转条件。

MEM被分成了三个:DF、DS、TC
DF:做data fetch的前半部分
DS:做data fetch的后半部分
TC:tag check,就是确认data cache 有没有hit。

WB:写回。



(完)

                                             [此为原创,转载请标明出处,谢谢!]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值