反压流水线设计

1
流水线的时间并行
在本公众号的另一篇文章《芯片性能小谈——时间并行》中提到,流水线设计是完美的时间并行。因为流水线上每一级的处理都是一个时钟周期的延时,并且一动则全动,每一级的延时可以完美的掩盖起来,最高实现与流水级数相同数量的请求并行度。
在这里插入图片描述
如上图所示,在现代经典的cpu处理中,流水线级数被广泛应用,cpu的各个处理环节可以看作流水线上的一个stage。在单发射单处理单元的最简单处理器中,同一时间内最高同时可以支持5条指令的执行。如果没有指令冲突,资源冲突等可能导致断流的场景,基本可以认为每一个时钟周期都可以完成一条指令的处理。

当然,除了CPU,只要是一个周期无法完成的功能,在性能优先的设计中,为了提高吞吐率,都可以采用流水线技术来对功能路径进行切分,比如乘法器等。
2
流水线的stage划分
我们知道,流水线的分割线是一组寄存器,这条分割线放在哪个位置完全由设计者决定。一般来说,划分流水线的时候主要有以下三点考虑:

  1. 如果流水线切割的子功能抽象层次较高,最好按完整的功能来进行流水线划分,比如CPU的各个执行环节。
  2. 流水线最好划分在数据通路上位宽较小的地方,以节省寄存器数量和面积。在流水线上可以有许多的数据路径,数据路径会有中间结果和最终结果。那么这个时候就可以选择性地进行切割。比如一个1024bit 2选1的数据选择器,如果将流水线划分划在选择器的输入端,那么将占用2x1024=2048bit的寄存器以及1个1bit的选择信号。而如果将流水线划分在选择器的输出端,那么只需要102
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
反压(Back Pressure)是指在五级流水线RISC-V处理器中,流水线最后一级的反压信号可能会一直串扰到最前一级,造成严重的时序问题。这种情况需要使用一些比较高级的技巧来解决这类反压时序问题。 具体来说,在流水线中,当执行阶段的指令需要等待访存阶段的指令完成时,就会产生反压。这是因为访存阶段的指令需要访问内存或者外设,可能需要较长的时间来完成,而执行阶段的指令需要等待这个结果才能继续执行。如果反压信号一直传递到取值阶段,就会导致取值阶段无法继续取指令,从而造成流水线停顿和性能下降。 为了应对反压问题,设计者可以采用一些技术手段,如插入空闲周期、进行指令重排、增加缓存等,来减少或消除反压引起的停顿和时序问题。通过优化流水线设计和调度,可以尽量减少反压对性能的影响。 总之,反压是指在五级流水线RISC-V处理器中,流水线最后一级的反压信号可能会一直串扰到最前一级,造成严重的时序问题,设计者需要采取相应的技术手段来解决这类反压时序问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [手把手教你设计CPU-RISC-V处理器读书笔记1:流水线](https://blog.csdn.net/qq_38374491/article/details/119346547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值