[408计算机组成原理] 第五章 中央处理器 5.5 指令流水线(一)

在这里插入图片描述

一、前言

①CPU第一节

学习了CPU整体的宏观上的结构(CU+ALU),以及了解其要实现的功能:指令控制(取指令、分析指令、执行指令)、操作控制、时间控制、数据加工、中断相应;进步一部了解了CU和ALU的工作过程,CU:取址:指令由PC加1自动的完成取址操,指令的分析:PC的内容送入IR,IR将操作码部分送入指令译码器,指令译码的结果送入微操作信号发生器 ,同时时序控制信号和状态信号也同时送入微操作信号发生器,在这些控制信号的控制下,微操作信号发生器发出相应的控制信号(PCout,PCin,MDRin,MDRout等),执行指令:在操作信号的控制下,指令开始按着顺序执行;(CU中所需要用到的寄存器:PC、MAR、MDR、IR);ALU:实现数据的加工,其所要用到的寄存器有(通用寄存器组、PSW保存运算后的标志位、ACC、移位寄存器、暂存寄存器

②CPU第二节

了解了指令的执行过程,指令周期,机器周期,时钟周期的基本概念,应当能够理解出这几个概念上的区别,进一步探究了指令在每个不同的指令周期其数据的流向。

③CPU的第三节

进一步探究CPU内部的数据如何流向,数据通路的功能和结构;在第二节探究的数据流向是一个笼统的流向,对于取址周期,研究其数据流向只给出其PC被传入地址总线,总线将数据运送至MAR,根据MAR取出数据,通过数据总线将指令取到IR,这是一个笼统的数据流向的过程,在第三节研究的数据流向,是PC的数据是如何结合控制信号一步一步传向MAR的;PC要将地址送给MAR,首先由控制器发出PCout的信号以及MARin的信号,PC的内容才会被送入MAR。在第三节研究的数据通路是更微观方面的,即了解了寄存器和寄存器之间的数据通路寄存器和主存之间的数据通路寄存器和ALU之间等之间的是如何通过一系列的控制信号实现这些数据通路的;实现这些数据通路的结构有CPU内部总线型、专用数据通路型,CPU内部多总线型

④CPU的第四节

进一步探究控制信号的实现,在第三节我们说控制信号控制着数据通路,而控制信号是由CU来发出的,这一节就是研究CU是如何发出相应的控制信号,从而实现数据通路,实现指令的执行的。CU的实现有两种方式硬布线型、微程序控制方式。

硬布线型:由硬件直接实现控制信号的发出,研究好每一个微操作的执行周期,严格控制每个微操做的执行顺序,即由时序(CLK+执行周期)、操作码的译码结果(即是哪种指令信号)、状态标记(PSW等) 三者的严格控制,通过三者的逻辑表达式设计对应的硬件电路,从而实现微操作的有序进行,即实现微操作信号有序的被微操作信号发生器发出。

微程序控制方式:先了解几个概念,一条指令的执行要使用多个机器周期,每个机器周期内每个节拍都要执行不同的微操作,每个节拍可能并行执行多个微操作,一个节拍内的要执行的微操做合称为微指令,所有微指令组成一个微程序,即每一个微程序都对应着一个指令,所以采用存储微程序的思想,将每一条指令对应的微程序存储在CU中的控存(CM) 中,当前要执行的指令在IR中,IR将操作码部分送入微地址形成部件找到该条指令对应的微程序,微程序地址找到后是不可以直接被送入CM中的CMAR的,需要先送入时序控制电路,同时一些标识信号和CLK信号也要送入时序控制电路,时序控制电路在所有条件满足的情况下才将地址码部分送入CM中的CMAR,从而将微程序的起始地址取出放置在CMDR中;微指令由微操作控制字段和下地址字段组成,微操作控制字段产生相应的控制信号(PCout,PCin等),下地址字段指明下一个微指令地址

微指令操作控制字段编码方式有直接编码方式,其中每一位都标识一个微命令的控制信号,即每一个控制信号对应一个微命令。微命令有多少种类型,就得有多少位,会造成微指令字长会特别长。微指令的下一个地址如何得到的五种方法,硬件直接存储,操作码译码结果,CMAR自动加1,下地址字段给出、类似于跳转指令直接给出。

最后对比了两种方法:从适用(RSIC CPU,CSIC CPU),思想(逻辑电路,存储微程序),速度(快,慢),扩充性(难,容易)

⑤CPU第五节

接下去是进一步研究如何让CPU执行指令更快-----指令流水线的方式,指令流水的实现,CPU指令流水性能的评价指标(加速比,吞吐量),指令流水实现种可能会遇见的问题:结构冲突:同一个流水线阶段使用了同一个部件,类似于操作系统种的互斥问题,解决方法:停止等待或增加硬件部件(Cache指令和数据分离);数据冲突:下一条可能要用到的数据来自于前一条指令的执行结果,解决方法:延迟相关指令转化(旁路)技术编译优化指令运行顺序控制冲突:再遇到分支跳转指令,也会导致流水线断流,由于当前执行指令为跳转指令时,PC起始早就指向了下一条指令,而当得知为跳转指令,需要修改PC的值。解决办法:等待或预测。同时还了解了流水线的分类高级流水线

二、指令流水

2.1指令流水的基本概念

对于指令流水的实现,有两种方式,第一种是空间上的并行性:即设置多组执行功能相同的部件,让他们同时执行;另外一种是时间上的并行性:即将一个任务都分解为多个小问题,让每个小问题并行的被不同部件执行。一条指令的执行在之前我们是给其分成了四个阶段的(取指令、分析指令、执行指令、中断响应),而在这节我们将一条指令的执行也分成五个功能段或叫五个流水段(取指令,指令译码、指令执行,访存、写回

在这里插入图片描述
取指令阶段、分析指令和执行指令的阶段所需要用到的硬件功能部件是完全不同的,我们就可以采用这种流水线的方式,同一时间内执行多条指令。

2.2指令流水设计的实现

为了能够更好的实现指令流水,一般要让指令尽可能的是在一个时钟周期内完成,同时数据和指令也应该采用边界对其的方式,使得每次访存都可以在一个时钟周期内完成;同时指令的的长度也应该能够固定,若指令长度不一致,指令的译码会复杂,同时若指令的字长不一致,存储的位数不固定,访存取指令的时间不固定。所以经过这些要求,我们可以看出,对于CISC指令集来说,实现指令流水是很困难的,对于RISC精简指令集来说,就很容易,RISC指令的特点就是指令定长,指令都在一个周期内完成。

我们来一个金典的五段式的流水线结构,该结构是由MIPS提出来的RISC指令集流水线结构,看下其是如何实现指令流水的。

在这里插入图片描述
一共被分为了五个阶段,IF(取指令阶段)、ID(译码阶段)、EX(执行解读那)、M(访存阶段)、WB(写回阶段)我们可以看出每个阶段,指令执行各个阶段所需要的时间并不都相同,而为了流水线的设计方便,我们将每个阶段的时间都取为最大的耗时时间100ns,那有些阶段其是不到100ns就已经结束了,那该怎么控制它必须100ns呢?解决办法是,在每个阶段的后面都设置相应的寄存器,存储中间结果,只有到了100ns后,才从寄存器中取得上一步的结果;这些寄存器被称为流水段寄存器,各个流水段之间的寄存器,这也就是为什么对于RISC其所需要的寄存器数量多余CISC的原因。

2.3指令流水线的评价指标

①吞吐率

吞吐量的计算公式是 T P = N / T K TP=N/T_{K} TP=N/TK,就是用完成的总任务数量/完成N个任务数量的总时间,所以所谓的吞吐量算的就是每个时间单位内完成的任务数量

②加速比

加速比的计算公式是 S = T 0 / T K S=T_{0}/T_K S=T0/TK用不使用流水线技术所需要花费的时间/使用流水线花费的时间。对于 T 0 = N ∗ K ∗ Δ t T_0=N*K*\Delta t T0=NKΔt(K段流水线,N个任务,一个流水线 Δ t \Delta t Δt)对于 T K = k ∗ Δ t + ( N − 1 ) ∗ Δ = ( K + N − 1 ) ∗ Δ T_K=k*\Delta t+(N-1)*\Delta=(K+N-1)*\Delta TK=kΔt+(N1)Δ=(K+N1)Δ

2.4流水线中冒险问题(冲突问题)

①结构冲突

我们来看一下在指令流水线中的结构冲突问题,其实非常类似于操作系统中的互斥问题,在下图中,指令首先进行取址也就是从主存中取出指令,最后的运算结果也要写回MEM,也就是说在取址阶段和倒数第二个的访存阶段都需要使用到MEM,如果采用流水线方式的,就会造成同一个流水线周期的会同时使用到Mem,这就是出现的结构冲突。流水必须满足让每个周期内的所使用到的部件不相同;这就是所谓的流水线中的结构冲突问题。

在这里插入图片描述

解决办法,可以将指令存储和数据存储分割开来,这样就可以避免掉结构冲突,如下图所示,也可以让Instr3等待一个周期。

在这里插入图片描述

②数据冲突

流水线很容易导致数据冲突,如下所示,首先执行add指令,然后并行执行sub指令,而sub指令需要的数据来自r1,可是r1中数据正确被形成的时间是在add执行结束之后才能得到,若按着流水线的方式进行,还没等r1中的数据形成,sub就已经从r1中取走了脏数据,这就是数据冲突问题,很类似于操作系统中的同步问题。

在这里插入图片描述

解决办法

  • 延迟执行相关指令,等待r1的形成
  • 编译优化,将其他不冲突且不会产生数据冲突的执行先执行
  • 采用转化(旁路)技术;其实r1的结果取的时候没有必要非得等待add指令运行结束,其实在执行阶段结束就可以取得运行结果,将add运行中ALU中数据直接连线到sub的ALU前面,即不等待全部完成。

③控制冲突

由于指令一般是按着顺序依次执行,一旦执行的指令是跳转指令,而在流水线执行到知道该条指令为跳转指令前,跳转指令顺序后的一些指令可能已经通过流水进入了取址周期或者分析指令周期,当跳转指令执行完成跳转时,这些进入了取址周期或者分析指令周期的指令,应当被停止,所以就会产生流水线的断流,即控制冲突。

在这里插入图片描述

三、高级流水线技术

①超标量流水线技术

在这里插入图片描述
需要多个功能部件(多个ALU),执行顺序不能改变,编译优化技术要求较高。

②超流水线技术

在这里插入图片描述

执行顺序不能改变,编译优化技术要求较高。

③超长指令字技术

在这里插入图片描述

  • 37
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值