组成原理(十三):指令流水

学习重点

  1. 并行等级
  2. 指令流水原理
    • 指令二级流水
    • 指令六级流水
  3. 影响流水线性能的因素
    • 结构相关:资源冲突
    • 数据相关:指令重排序
    • 控制相关:转移指令
  4. 流水线能指标:
    • 吞吐率
    • 加速比
    • 效率
  5. 流水线多发技术:
    • 超标量技术
    • 超流水技术
    • 超长指令字
  6. 流水线结构:
    • 指令流水结构
    • 运算流水结构
    • 锁存器

1.提高机器速度

1.1 提高访存速度

高速芯片;Cache;多体并行

1.2 提高IO和主机之间的传送速度

中断, DMA, 通道, IO处理机, 多总线

1.3 提高运算器速度

高速芯片; 改进算法; 快速进位链

1.4 提高整机处理能力

高速器件;改进系统结构,开发系统并行性


2.系统的并行性

1.并行的概念:

  • 并发:两个或两个以上事件在同一事件段发生
  • 同时(并行):两个或两个以上事件在同一时刻发生,时间上相互重叠

2.并行性的等级

  • 过程级(程序、进程):粗粒度 ,软件实现
  • 指令级(指令之间,内部):细粒度,硬件实现

3.指令流水原理

3.1 串行指令与二级流水

指令的串行执行

指令的二级流水

3.2 影响指令流水效率加倍的因素

  1. 执行时间 > 取指时间
    通过指令部件缓冲区解决:

  2. 条件转移指令 对指令流水的影响

    • 必须等上条指令执行结束才能确定下条指令的地址,等待时间
    • 分支预测法:猜测法

3.3 指令六级流水

  • FI:取指令
  • DI:指令译码
  • CO:形成操作数
  • FO:取操作数
  • EI:执行
  • WO:结果写回(寄存器或内存)

4.影响指令流水线性能的因素

4.1 结构相关

不同指令争用同一功能部件产生资源冲突:FI,FO,WO

对寄存器,运算器的访问也会发生冲突

解决:

  • 停顿:加入气泡,往后移
  • 分立缓存:指令存储器和数据存储器分开,half结构
  • 指令预取:取指部件利用空闲时间将指令取到缓冲队列

4.2 数据相关

不同指令因重叠操作,可能改变操作数的 读/写 访问顺序

  1. 写后读:(RAW)
  2. 读后写:(WAR)
  3. 写后写:(WAW)

解决方法:

  • 后推法:推后指令的读或写,等到另一个指令的操作执行完毕再执行
  • 旁路技术(前向通道):前一个指令执行完后,不写回主存或寄存器,直接送入第二个指令

4.3 控制相关

条件转移指令引起:

示例:第三条指令是转移指令

  • 指令3 执行(EI)时,直接转移到指令15
  • 导致中间 4~15 的指令全都不执行,造成损失

5.流水线性能(指标)

5.1 吞吐率

单位时间内 流水线 所完成指令输出结果 的数量

  • m*Δt:第一条流水线执行完毕时间
  • 之后每个时间段都有一条指令执行完毕
  • 示意图见5.3

5.2 加速比

阿姆达尔定律

加速比=未用指令流水时间/使用了指令流水时间

示意图见5.3

5.3 效率

流水线各功能段的利用率


6.流水线多发技术

6.1 超标量技术

  • 每个时钟周期内可并发多条独立指令,配置多个功能部件
  • 不能调整指令的执行顺序:通过编译优化技术,把可并行执行的指令搭配起来

示意图:

6.2 超流水技术

一个时钟周期内再分段(3段)

一个时钟周期内一个功能部件使用多次(3次)

不能调整指令的执行顺序:靠编译程序解决优化问题

每个时钟之间都有锁存器

  • 保存前一阶段结果
  • 为下一阶段提供操作数据和信号

6.4 超长指令字技术

  1. 由编译程序 将多条能并行操作的指令组合成一条
  2. 具有多个操作码字段超长指令字 (几百位)

7.流水线结构

7.1 指令流水

完成一条指令分为6段,每段需要一个时钟周期(不同CPU不同)

每段之间需要加上锁存器,理想情况下提高6倍速度

7.2 运算流水

完成 浮点加减运算,大致可分为对阶,尾数求和,规格化三个阶段


原文地址:https://www.cnblogs.com/kenshine/p/14517142.html