06 动态分支预测技术 多指令流出技术 指令调度与循环展开

目录

动态分支预测技术

概念

分支预测的有效性取决于

动态分支预测技术的目的

分支预测表 BHT

1个预测位

2个预测位

BHT实现

分支目标缓冲器BTB

多指令流出技术

工作动机

多流出处理机的两种基本风格

超标量

超长指令字

超流水线处理机

指令调度与循环展开

概念

指令调度

循环展开

作用

概念

好处

循环展开和指令调度的注意事项

指令级并行总结


  1. 动态分支预测技术

    1. 概念

      1. 在程序运行时, 根据分支指令过去的表现来预测其将来的行为
    2. 分支预测的有效性取决于

      1. 预测的准确性
      2. 预测正确和不正确两种情况下的分支开销
    3. 动态分支预测技术的目的

      1. 尽快预测分支是否成功
      2. 尽快找到分支目标地址
    4. 分支预测表 BHT

      1. 1个预测位

        1. 上次成功就预测下次也成功, 反之也是
      2. 2个预测位

        1. 精准度很高了
        2. 研究表明2位和n位(n>2)的预测准确度差不多
      3. BHT实现

        1. BHT可以跟分支指令一起存放在指令Cache中
        2. 也可以用一块专门的硬件来实现
    5. 分支目标缓冲器BTB

      1. 具体目标: 将分支的开销降为0
      2. 具体方法: 分支目标缓冲
      3. 改进BTB: 降低访存开销  
  2. 多指令流出技术

    1. 工作动机

      1. 实际CPI=理想CPI+各种冲突引入的停顿
      2. 前面所有讲到的流水线都是单流出的, 即CPI=1
      3. 本节目的: 让理想CPI<1
    2. 多流出处理机的两种基本风格

      1. 超标量

        1. 每个时钟周期流出的指令条数不固定
        2. n-流出
        3. 06 动态分支预测技术 多指令流出技术 指令调度与循环展开_第1张图片
        4. 限制超标量流水线性能发挥的因素
          1. load指令
          2. 分支延迟
      2. 超长指令字

        1. 每个时钟周期流出的指令条数是固定的, 构成一条长指令或一个指令包
        2. 把可以并行执行的多条指令组装成一条很长的指令
        3. 操作槽
          1. 指令字被分割成一些字段, 每个字段称为一个分隔槽
        4. 缺点
          1. 指令长度增加
            1. 指令字中的操作槽并非总能填满
          2. 采用了锁步机制
            1. 任何一个操作部件出现停顿时, 整个处理机都要停顿
    3. 超流水线处理机

      1. 在一个时钟周期内, 分时流出多条指令
      2. 06 动态分支预测技术 多指令流出技术 指令调度与循环展开_第2张图片
  3. 指令调度与循环展开

    1. 概念

      1. ILP: 指令级并行
      2. 基于软件的静态开发方法
    2. 指令调度

      1. 概念
        1. 一般由编译器完成
        2. 找出不相关的指令序列, 让他们在流水线上重叠并行执行
    3. 循环展开

      1. 作用

        1. 编译时, 指令调度减少整个指令序列在流水线上的执行时间
        2. 指令调度可以跨越分支边界
        3. 提高执行过程中的有效操作的比例
      2. 概念

        1. 把循环体的代码复制多次并顺序排放, 然后相应调度循环的结束条件
      3. 好处

        1. 减少分支指令
      4. 为了消除指令之间的相关性, 可以使用寄存器换名技术
    4. 循环展开和指令调度的注意事项

      1. 确保正确性
      2. 注意有效性
      3. 使用不同的寄存器
      4. 删除多余的测试指令和分支指令, 并对循环结束代码和新的循环体代码进行相应的修正
      5. 注意对存储器数据的相关性分析
      6. 注意新的相关性
  4. 指令级并行总结

    1. 指令级并行最主要的技术是流水线
    2. 超标量技术: 多条流水线并行工作
    3. 超流水线技术: 将流水线的一个环节再细分为子环节
    4. 超长指令字技术: 将多条指令合并成一个长指令执行

你可能感兴趣的:(计算机系统结构)