自学内容网 自学内容网

第五章-(五)指令流水线

1.指令流水的定义

一条指令的执行过程可以分成多个阶段(或过程)。 根据计算机的不同,具体的分法也不同。

  • 取指:根据PC内容访问主存储器,取出一条指令送到IR中。
  • 分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的 内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。

执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通 用寄存器或主存中。

 2.执行方式

2.1顺序执行方式

 

2.2一次重叠执行方式

2.3二次重叠执行方式

总耗时T = 3t + (n-1)×t = (2+n)t

3.流水线的表示方法

4.性能指标

4.1吞吐率

对比操作系统

  • 装入时间:第一条指令从取指一直到结束需要的时间。
  • 排空时间:最后一条指令从开始到结束需要的时间。 

2.加速比

3.效率

5.指令流水线影响因素分类

五段式流水线 

每个功能段的时间保持一致,以最长的功能段时间为准

比如都取为100ns=80ns (可能是最长的IF耗时)+  20ns (流水段寄存器锁存时长)。

流水线的每一个功能段部件后面都要有一个缓冲寄存器,或称为锁存器其作用是保存本流水段的执行结果,提供给下一流水段使用。

 CPU中有两种Cache,第一种Cache专门储存指令,第二种Cache专门储存数据 

  1. 取指(IF):取指通常能在指令cache中取指,而不在主存中取指,取出指令放在指令寄存器IR中,PC+“1”。
  2. 译码&取数(ID):控制器中的ID对OP(IR)进行译码,然后从通用寄存器组中读出操作数放到ID段锁存器。
  3. 执行/计算地址(EX):执行运算操作或者计算有效地址。
  4. 访存(MEM):根据有效地址从主存中取数或运算的结果可能需要写回主存,故对主存进行读写操作(只有load/store指令访问主存),但理想中该阶段是对数据cache操作。
  5. 写回(WB):将运算的结果写回寄存器堆。

注:RISC架构中,译码/取数阶段所用到的操作数已经在通用寄存器中了,Imm为用于存储立即数的锁存器。

上表分析:

  • 算类指令有很多情况:比如ADD(立即数和寄存器相加,ID段时放在IMM和A)ADD(两个寄存器相加,放在A和B)
  • 在RISC中,只有load和store才能访问主存,其他指令的操作数都来自寄存器或含有立即数。
  • 注意取数指令和存数指令的区别和共同点,两者都需要计算有效地址并访问数据cache;load最后要将结果写回寄存器,而store指令不需要。
  • 条件转移指令:ARM架构的汇编格式:beq  Rs, Rt,偏移量     功能:当(Rs)==(Rt),(PC)+指令字长+偏移量×指令字长=PC;否则(PC)+指令字长=PC;同理bnq是不等时进行此操作
  • 要求“按序发射,按序完成”,所以如果上一条指令在ID段发生冲突,下一条指令IF段要在上一条指令的ID段同时进行,因为上一条指令取指后放在IF段锁存器中,在上一条指令的ID段没进行前不能被覆盖。

6.影响流水线的因素

1. 结构相关(资源冲突)

2. 数据相关(数据冲突)

3. 控制相关(控制冲突)

6.1结构相关

结构相关(资源冲突)

由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。

6.2数据相关(数据冲突)

数据冒险可分为三类: 

  1. 写后读(RAW,read after writer):当前指令将数据写入寄存器后,下一条指令才能从该寄存器读取数据。
  2. 读后写(WAR)
  3. 写后写(WAW):否则下一条指令在当前指令之前写,将使寄存器的值不是最新值。

数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况, 则这两条指令即为数据相关。

如图:下面的数据都基于r1,当上面没有输出时,下面不用操作,如果操作操作就会产生数据冲突。

解决办法:

上面是硬件阻塞

还可以用NOP,空指令(如下图)

解决办法

2.数据旁路技术。

3.编译优化:通过编译器调 整指令顺序来解决数据相关。 

6.3控制相关(控制冲突)

当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。

解决办法这里都是针对于转移指令

7.流水线的分类

7.1部件功能级、处理机级和处理机间级流水线

  • 根据流水线使用的级别的不同,流水线可分为部件功能级流水线、处理机级流水线和处理机间流水线。
  • 部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶 差、对阶、尾数相加以及结果规格化等4个子过程。
  • 处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程。
  • 处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放 在与下一个处理机所共享的存储器中。

7.2单功能流水线和多功能流水线

  • 按流水线可以完成的功能,流水线可分为单功能流水线和多功能流水线。
  • 单功能流水线指只能实现一种固定的专门功能的流水线;
  • 多功能流水线指通过各段间的不同连接方式可以同时或不同时地实现多种功能的流水线。

8.流水线的多发技术

8.1超标量技术

同一时刻发出

8.2超流水技术

8.3超长指令字

不同时刻发出 

上图的时钟周期是原本的时钟周期,新的时钟周期是原来的三分之一,即提高了时钟频率。

流水线技术与超流水线技术没有本质的区别CPI也是为1超流水线技术只是划分了更多的功能段,将时钟周期变短。

超流水线技术虽然提高了CPU的主频,但是也带来了很大的副作用:

首先,细分后的每一个阶段都要在其后使用锁存器锁存,因此将一个阶段细分为N的子阶段并不能让单位时间减少到s/N, 而是s/N + d, 其中d为锁存器的反应时间。这实际上就是增加了多余的时间消耗。

其次,随着流水线级数的加深,一旦分支预测出现错误,会导致CPU中大量的指令作废,这样的消耗是十分巨大的。


原文地址:https://blog.csdn.net/2203_75970230/article/details/142503826

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!