408五级流水线强化课笔记

408强化课录播五级流水线相关内容笔记

  • 指令流水线基本概念:简单的概念题
  • 指令流水线基本实现:指令按序发射,按序完成
  • 各种冒险:结合MIPS指令序列分析并处理冒险
  • 超标量和动态流水线:简单的概念题

五级流水线

五级流水线的设计是为了通过并行提高处理器的吞吐量。
img
图片来自CSAPP。
一个指令通常被划分为五个阶段:

  • 取指(IF)
  • 译码(ID)
  • 执行(EX)
  • 访存(MEM)(如果需要的话)
  • 写回(WB)(如果需要的话)
    总体的图如下
    image

结构冒险(考的少)

一个被请求的资源仍处于忙碌状态。

多个阶段可能请求同一份资源,例如IF和MEM需要同一块Cache,就会发生结构冒险。
解决方法有:

  • 阻塞指令
  • 把指令Cache和数据Cache分离

数据冒险

需要等待上一个指令完成数据读写。

img
如上图所示,因为指令I1对寄存器R1的写操作发生在WB写回阶段,因此指令I2在ID译码阶段需要读寄存器时,R1的值还没有被写回,这就是数据冒险。
核心特点:两条指令,先写后读同一个寄存器。如果某条指令写了一个寄存器,则要观察后面三条指令是否读了这个寄存器。(个人感觉可能画图更直观)
img
解决方案:

  • 硬件阻塞:将读寄存器的指令ID段阻塞若干时钟,直到写寄存器的指令完成WB。
  • 转发(旁路)技术:将写寄存器的数据直接转发给读寄存器的指令。但转发旁路不能解决Load指令写寄存器引发的Load-Use数据冒险

Load-Use数据冒险

Load指令把数据从内存读到寄存器,后面的指令需要用到这个寄存器的值。这种情况下,即使使用转发技术也无法解决数据冒险。
img

控制冒险

一些控制取决于上一条指令的结果。

img
转移类指令会更改PC,因此下一条指令不是I2而是其他,会产生控制冒险。
解决方案:

  • 硬件阻塞:将转移类指令后一条指令IF段阻塞3时钟

冒险总结

img

posted @ 2024-09-16 14:41  CauchyPt  阅读(56)  评论(0)    收藏  举报