蜂鸟E203学习笔记(三)——流水线结构

握手和反压

首先介绍握手协议 valid-ready握手协议

  • valid先发起请求
    在这里插入图片描述
  • ready先发出请求
    在这里插入图片描述
  • 同时发出请求
    在这里插入图片描述

仔细观察上述3幅时序图,我们了解valid-ready握手机制需要注意三件事:

  • valid与ready不可过度依赖,比如valid不可以等待ready到达再拉高,ready也不可以等待valid到达再拉高,他俩彼此可以互相独立发出请求拉高;
  • valid拉高时与有效数据同步,时钟要对齐;
  • 当数据计算好后,valid可以拉高等待ready拉高,但是每当握手成功之后,数据需要更新,如果此时没有新的有效数据,valid要拉低。

反压:当入口流量大于出口流量,这时候就需要反压,或者,当后级未准备好时,如果本级进行数据传递,那么它就需要反压前级,所以此时前级需要将数据保持不动,直到握手成功才能更新数据。而反压在多级流水线中就变得稍显复杂,原因在于,比如我们采用三级流水设计,如果我们收到后级反压信号,我们理所当然想反压本级输出信号的寄存器,但是如果只反压最后一级寄存器,那么会面临一个问题,就是最后一级寄存器数据会被前两级流水冲毁,导致数据丢失,引出数据安全问题,所以我们此时需要考虑反压设计。

  • 不带存储体的反压
    也就是后级反压信号对本级模块中所有流水寄存器都进行控制,由于不包含存储体,为了保证数据安全性,后级反压信号可以同时反压本模块中所有流水寄存器。
    优点:节省面积资源
    缺点:寄存器端口控制复杂
    适用情况:流水线深度较大时

  • 带存储体的逐级反压
    如果流水级数不深,可以在每一需要握手交互模块增加存储体,原理上相当于,如果后级发出反压信号,可以直接对本级流水线数据源头进行反压,其余中间级不需控制,但后级需要包含RAM或FIFO等存储体,可以接收流水,并需设置水线(water line),确定反压时间,防止数据溢出,保证数据安全性。
    优点:各级流水寄存器端口控制简单
    缺点:需要额外存储体
    适用情况:流水线深度较小,每一模块都包含存储体时

  • 取消握手
    取消握手意味着流水线中的每一级并不会与其下一级进行握手,可能会造成功能错误。因此需要配合重执行、预留大缓存。

  • 加入前向旁路缓冲区
    这是一种面积换时序的方法,增加一个额外的缓存表项使反向的握手信号时序路径中断,但是前向路径不受影响。蜂鸟E203处理器在设计中采用此方法,有效地解决了多处反压造成的时序瓶颈。

流水线中的冲突

资源冲突

资源复用或者流水线停顿来解决资源冲突。

数据冲突

数据冲突是指不同指令之间的操作数存在着数据相关性的冲突。常见的数据相关性如下:

  • WAR(Write-After-Read,先读后写)相关性:后序执行的指令需要写回的结果寄存器索引与前序执行的指令需要读取的源操作数寄存器索引相同造成的数据相关性。后序指令一定不能比与他与WAR相关性的前序指令先执行。
  • WAW相关性:后序指令一定不能比与他与WAW相关性的前序指令先执行,否则前序指令在把结果写进寄存器组时就会将其覆盖。
  • RAW相关性:后序指令一定不能比与他与RAW相关性的前序指令先执行,否则就会读回错误的源操作数。

很容易理解,其中WAR和WAW都可以通过寄存器命名的形式避免。寄存器重命名可以在Tomasulo算法中通过保留站ROB(Re-Order Buffer)完成,也可以通过物理引擎。
Tomasulo算法
RAW相关性是不可以通过寄存器重命名的方法去除,只能等待前边指令执行结束。为了尽量减少停顿带来的损失,使用动态调度的方法:

  • 采用数据旁路传播技术,尽可能让前序指令的计算结果更快传播给后续相关指令的操作数
  • 尽可能让其他无关的指令继续顺利执行
  • T算法由于保留站保留了操作数,无法具有很高的深度。
  • 最新的高性能处理器普遍采用在每个运算单元前配置乱序发射队列的方式,发射队列只追踪RAW相关性,而并不存放操作数,因此流水线很深的时候。在发射队列中的之林一旦接触相关性之后,再从发射队列中发射出来,读取物理寄存器组,然后发送给运算单元,开始计算。

蜂鸟E203处理器流水线

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kelinnn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值