第六章流水线不是流水账

RISC-V 第六章 流水线不是流水账

1.MIPS 5级流水线:取指、译码、执行、访存、写回;

2.流水线的本质

(1)面积换性能,空间换时间

(2)与流水线对应的另一种策略是状态机,状态机是流水线的取反,性能换面积,时间换空间

(3)流水线越深越好吗?

流水线变深的正面意义:工作频率越来越高、高性能,追求更高的主频获取更高的吞吐率和性能

负面意义:增加更多的面积开销、每一级流水线都需要握手,流水线最后一级的反压信号可能会一只串扰到前一级造成严重的时序问题、流水线加深,造成分支预测器对跳转指令的预测变得困难,若预测错误,还需要进行流水线冲刷,造成功耗的浪费和性能的损失。

3:流水线中的冲突:资源冲突与数据冲突

1:资源冲突解决办法常见的有复制硬件资源与流水线停顿的方法。

模块与模块之间采用了严谨的valid-ready握手接口(属于ICB协议),一旦某个模块当前不能够被使用(出现资源冲突),那么他会输出ready信号为低,从而无法完成握手

2:数据冲突

类型:WAR(读到错误值),WAW(后续写入的值被覆盖),RAW(读取到错误的值)

其中RAW属于真数据相关

 WAR与WAW可以通过寄存器重命名的技术来解决,但是RAW不可以。

 寄存器重命名技术:在Tomasulo算法中通过保留站和ROB完成,或者采用纯物理寄存器,目前不是很懂。

WAR:E200为按顺序派遣,按顺序写回的位架构,在指令派遣时就已经从通用寄存器中读取了源操作数,后续的写回操作不可能发生在读取数据之前,因此它不可能造成WAR相关性造成的数据冲突

在蜂鸟E200中,正在派遣的指令只可能与尚未执行完毕的长指令之间产生RAW和WAW相关性。

为了能检查出来长指令RAW与WAW相关性,蜂鸟使用了outstanding instruction track fifo(OITF),把已经被派遣出去但尚未写回的长指令信息存储在OITF中。

每条指令派遣时,都会将本指令的源操作数寄存器索引和结果寄存器索与OITF中的各个表项进行对比,从而判断本指令是否已经被派遣出,且尚未写回的长指令是否产生RAW与WAW的相关性

综上,蜂鸟E200对于数据相关性造成的冲突,只采取了流水线阻塞的方法,并没有将长指令的结果直接旁路给后续待派遣的指令。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值