Elastic(灵活的) Instruction Fetching

Elastic Instruction Fetching (ELF) 是一种混合机制,旨在解耦分支预测和指令取值,以减少流水线刷新和BTB缺失造成的空泡,同时提供性能提升。论文提出两种实现——L-ELF和U-ELF,相比于基准设计,L-ELF提升了3.7%的IPC,U-ELF提升了5.2%。通过在流水线稳定时采用解耦模式,而在刷新后恢复耦合模式,ELF能有效平衡延迟和效率。
摘要由CSDN通过智能技术生成

Elastic(灵活的) Instruction Fetching

  1. 摘要:

    • 背景:
      • 分支预测(生成取值的地址)和指令缓存访问不应该紧密耦合,从而当指令取值阶段由于Icache发生miss或者back-pressure(不确定)而停止时,分支预测器可以提前运行并生成之后的取值地址。利用这些地址可以进行不同的优化,例如指令预取,并且可以隐藏跳转分支会产生的流水线空泡
      • 指令取值和分支预测解耦和的缺点:会增加流水线深度,导致流水线刷新的成本增加;需要更大的BTB保存分支的目标地址,并且如果BTB未命中,也会增加额外的流水线空泡
    • 论文工作:
      • 提出了ELF(elastic fetching,灵活/弹性取值),一种混合的机制,能够解耦和分支预测和指令取值,并且最小化流水线刷新和BTB缺失而产生的额外的空泡
      • 提供了两种ELF的具有不同复杂度和性能的实现,性能相对于基准解耦和取值单元的设计提高了3.7%和5.2%
  2. 介绍:

    • 在高频率的设计中,一个周期无法足够用于访问大的BTB和BP,处理BTB表项内容,映射BP预测结果到BTB表项和最终计算下一个PC的地址
    • 解耦的BP在遇到I-cache未命中或者其它长延迟事件时,会将生成的取值地址放入一个解耦的队列中
    • 解耦和BP和Fetcher的优点:
      • 提前执行BP和BTB得到的取值地址可以用于提供更加精确的指令预取器
      • 在某些实现中,由于高频率的设计,如果BP预测分支跳转,则需要在流水线中插入一个或者多个空泡(在BTB命中的情况下也需要),来计算得到分支跳转的目标地址。通过解耦和BP和fetcher,分支地址可以被提前计算得到,从而掩盖一些空泡
    • 解耦和BP和Fetcher的缺点:
      • 需要一个更大的BTB结构,以获取预测跳转的分支的目标地址。如果使用解耦结构进行指令预取,此时BTB的覆盖范围需要比I-cache更大,即需要更大的BTB结构
      • 解耦会增加流水线深度(预测的时间更长了)。因此在解耦结构中,取值PC需要首先通过BP,然后在传递给I-cache。在耦合结构中,两者并行发生。这种情况下,分支预测错误代价也会增加
      • 流水线深度的增加也会发生在BTB发生缺失的关键路径上,这种情况下,在相关目标地址被译码/计算得到后,译码(或者之后的)阶段需要重新引导BP
    • 论文工作:ELF(elastic fetching)
      • 在稳定的状态时,解耦和BP和指令取值(Decoupled mode);在流水线刷新之后,重新耦合两者,以隐藏由于解耦和而增加的额外的延迟(Coupled mode)
      • L-ELF(limited elastic fetching):硬件成本较低,IPC提升3.7%
      • U-ELF(unlimited elastic fetching):硬件成本更高,IPC提升5.2%
  3. 解耦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值