计算机组成原理知识点汇总(考研用)——第五章:中央处理器

计算机组成原理知识点汇总(考研用)——第五章:中央处理器

 本文参考于《2021年计算机组成原理考研复习指导》(王道考研),《计算机组成原理》
思维导图:
在这里插入图片描述

文章目录

5.中央处理器

5.1 CPU的功能和基本结构

 5.1.1 CPU的功能

  中央处理器(CPU)由运算器和控制器组成。其中,控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。CPU的具体功能包括:
  (1)指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制
  (2)操作控制:一条指令的功能往往由若干操作信号的组合来实现。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
  (3)时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号
  (4)数据加工:对数据进行算术和逻辑运算
  (5)中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理

 5.1.2 CPU的基本结构

  中央处理器主要由运算器和控制器两大部分组成
在这里插入图片描述

  1.运算器

  运算器接收从控制器送来的命令并执行相应的动作,对数据进行加工和处理。运算器是计算机对数据进行加工处理的中心,它主要由算术逻辑单元(ALU)、暂存寄存器、累加寄存器(ACC)、通用寄存器组、程序状态字寄存器(PSW)、移位器、计数器(CT)等组成。
  (1)算术逻辑单元:主要功能是进行算术/逻辑运算
  (2)暂存寄存器:用于暂存从主存读来的数据,该数据不能放在通用寄存器中,否则会破坏其原有内容。 暂存寄存器对应用程序员是透明的。
  (3)累加寄存器:它是一个通用寄存器,用于暂时存放ALU运算的结果信息,也可作为加法运算的一个输入端
  (4)通用寄存器组:如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等。SP是堆栈指针,用于指示栈顶的地址。
  (5)程序状态字寄存器:保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志OF、符号标志SF、零标志ZF、进位标志CF等。PSW中的这些位参与并决定微操作的形成
  (6)移位器:对操作数或运算结果进行移位运算
  (7)计数器:控制乘除运算的操作步数

  2.控制器

  控制器是整个系统的指挥中枢,在控制器的控制下,运算器、存储器和输入/输出设备等功能部件构成一个有机的整体,根据指令的要求指挥全机的协调工作。控制器的基本功能是执行指令,每条指令的执行是由控制器发出的一组微操作实现的
  控制器有硬布线控制器和微程序控制器两种类型。
  控制器由程序计数器(PC)、指令寄存器(IR)、指令译码器、存储器地址寄存器MAR、存储器数据寄存器MDR、时序系统和微操作信号发生器等组成
  (1)程序计数器:用于指出下一条指令在主存中的存放地址。CPU根据PC的内容去主存中取指令。因程序中指令通常是顺序执行的,所以PC有自增功能
  (2)指令寄存器:用于保存当前正在执行的那条指令。
  (3)指令译码器:仅对操作码字段进行译码,向控制器提供特定的操作信号
  (4)存储器地址寄存器:用于存放要访问的主存单元的地址
  (5)存储器数据寄存器:用于存放向主存写入的信息或从主存读出的信息
  (6)时序系统:用于产生各种时序信号,它们都由统一时钟(CLOCK)分频得到
  (7)微操作信号发生器:根据IR的内容(指令),PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
  控制器的工作原理是根据指令操作码、指令的执行步骤(微命令序列)和条件信号来形成当前计算机各部件要用到的控制信号。


  CPU内部寄存器大致可分为两类:一类是用户可见的寄存器,可对这类寄存器编程,如通用寄存器组、程序状态字寄存器;另一类是用户不可见的寄存器,对用户是透明的,不可对这类寄存器编程,如存储器地址寄存器、存储器数据寄存器、指令寄存器



  例题:条件转移指令执行时所依据的条件来自()
  A.指令寄存器  B.标志寄存器
  C.程序计数器  D.地址寄存器

  答案:B;

  例题:在所谓的n位CPU中,n是指()
  A.地址总线线数  B.数据总线线数
  C.控制总线线数  D.I/O线数

  答案:B;数据总线的位数与处理器的位数相同,它表示CPU一次能处理的数据的位数,即CPU的位数

  例题:下面有关程序计数器PC的叙述中,错误的是()
  A.PC中总是存放指令地址
  B.PC的值由CPU在执行指令过程中进行修改
  C.转移指令时,PC的值总是修改位转移指令的目标地址
  D.PC的位数一般和存储器地址寄存器MAR的位数一样

  答案:C;

  例题:间址周期结束时,CPU内寄存器MDR中的内容为()
  A.指令  B.操作数地址  C.操作数  D.无法确定

  答案:B;间址周期的作用是取操作数的有效地址,因此间址周期结束后,MDR中的内容为操作数地址

  例题:某计算机的主存空间为4GB,字长为32位,按字节编址,采用32位字长指令字格式。若指令按字边界对齐存放,则程序计数器PC和指令寄存器IR的位数至少分别是

  答案:30、32;

  例题:CPU中有哪些专用寄存器

  答案:PSW、PC、IR、MAR、MDR(注意ACC是通用寄存器

5.2 指令执行过程

 5.2.1 指令周期

  CPU从主存中取出并执行一条指令的时间称为指令周期, 不同指令的指令周期可能不同。指令周期常用若干机器周期来表示,一个机器周期又包含若干时钟周期(也称节拍或T周期,它是CPU操作的最基本单位)。 每个指令周期内的机器周期数可以不等,每个机器周期内的节拍数也可以不等。
在这里插入图片描述
  (a)为定长的机器周期,每个机器周期包含4个节拍(T);(b)为不定长的机器周期,每个机器周期包含的节拍数可以为4个,也可以为3个。
  对于无条件转移指令JMP X,在执行时不需要访问主存,只包含取指阶段(包括取指和分析)和执行阶段,所以其指令周期仅包含取指周期和执行周期。
  对于间接寻址的指令,为了取操作数,需要先访问一次主存,取出有效地址,然后访问主存,取出操作数,所以还需包括间址周期。间址周期介于取指周期和执行周期之间。
  当CPU采用中断方式实现主机和I/O设备的信息交换时,CPU在每条指令执行结束前,都要发中断查询信号,若有中断请求,则CPU进入中断响应阶段,又称中断周期。 一个完整的指令周期应包括取指、间址、执行和中断4个周期
在这里插入图片描述
  上述4个工作周期都有CPU访存操作,只是访存的目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点。
  为了区别不同的工作周期,在CPU内设置4个标志触发器FE、IND、EX、INT,分别对应取指、间址、执行和中断周期,以1表示有效,分别由1——>FE、1——>IND、1——>EX、1——>INT这4个信号控制。


  中断周期中的进栈操作是将SP减1,这和传统意义上的进栈操作相反,原因是计算机的堆栈中都是向低地址增加,所以进栈操作是减1而不是加1

  机器周期可看作是所有指令执行过程中的一个基准时间,机器内的各种操作大致可归属为对CPU内部的操作和对主存的操作两大类,由于CPU内部的操作速度较快,CPU访存的操作时间较长,因此通常以访问一次存储器的时间定为基准时间较为合理,这个基准时间就是机器周期。 因此在存储字长等于指令字长的情况下,取指周期也可看作机器周期。


 5.2.2 指令周期的数据流

  数据流是根据指令要求依次访问的数据序列。在指令执行的不同阶段,要求依次访问的数据序列是不同的。而且对于不同的指令,它们的数据流往往也是不同的。

  1.取指周期

  取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中
  取指周期的数据流如图
在这里插入图片描述
  PC中存放的是指令的地址,根据此地址从内存单元中取出的是指令,并存放在指令寄存器IR中,取指令的同时,PC加1。
  取指周期的数据流向如下:
在这里插入图片描述

  2.间址周期

  间址周期的任务是取操作数有效地址。 以一次间址为例,将指令中的地址码送到MAR并送至地址总线,此后CU向存储器发读命令,以获取有效地址并存至MDR
在这里插入图片描述
  间址周期的数据流向如下:
在这里插入图片描述

  3.执行周期

  执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。不同指令的执行周期操作不同,因此没有统一的数据流向。

  4.中断周期

  中断周期的任务是处理中断请求。假设程序断点存入堆栈中,并用SP指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据,数据流如图:
在这里插入图片描述
  中断周期的数据流向如下:
在这里插入图片描述

 5.2.3 指令执行方案

  一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。可选用3种不同方案来安排指令的执行步骤。

  1.单指令周期

  对所有指令都选用相同的执行时间来完成,称为单指令周期方案。 此时每条指令都在固定的时钟周期内完成,指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。 因此,指令周期取决于执行时间最长的指令的执行时间。 对于那些本来可以在更短时间内完成的指令,要使用这个较长的周期来完成,会降低整个系统的运行速度。

  2.多指令周期

  对不同类型的指令选用不同的执行步骤来完成,称为多指令周期方案。 指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。但可选用不同个数的时钟周期来完成不同指令的执行过程, 指令需要几个周期就为其分配几个周期,而不再要求所有指令占用相同的执行时间。

  3.流水线方案

  指令之间可以并行执行的方案,称为流水线方案, 其追求的目标是力争在每个时钟脉冲周期完成一条指令的执行过程(只在理想情况下才能达到该效果)。这种方案通过在每个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。


  例题:指令()从主存中读出
  A.总是根据PC
  B.有时根据PC,有时根据转移指令
  C.根据MAR
  D.有时根据PC,有时根据MAR

  答案:A;执行转移指令后也需将目标指令地址传到PC中。CPU根据PC中的内容去主存存取指令。

  例题:下列说法中,正确的是()
  1.指令字长等于机器字长的前提下,取指周期等于机器周期
  2.指令字长等于存储字长的前提下,取指周期等于机器周期
  3.指令字长和机器字长的长度没有任何关系
  4.为了硬件设计方便,指令字长都和存储字长一样大

  答案:2,3

  例题:指令和数据都存于存储器中,CPU如何区分它们?

  答案:虽然指令和数据都是以二进制代码形式存放在存储器中,但CPU可根据指令周期的不同阶段判断从存储器中取出的二进制代码是指令还是数据。在取指阶段通过访问存储器可将指令取出,在执行阶段通过访问存储器可将操作数取出。


5.3 数据通路的功能和基本结构

 5.3.1 数据通路的功能

  数据在功能部件间传送的路径称为数据通路。 路径上的部件称为数据通路部件, 如ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等。数据通路描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,这些都需要加以控制。
  数据通路中专门进行数据运算的部件称为执行部件或功能部件。数据通路由控制部件控制。数据通路的功能是实现CPU内部的运算器与寄存器及寄存器之间的数据交换。

 5.3.2 数据通路的基本结构

  数据通路的基本结构主要有以下几种:
  (1)CPU内部单总线方式将所有寄存器的输入端和输出端都连接到一条公共通路上。 这种结构较为简单,但数据传输存在较多的冲突现象,性能较低。连接各部件的总线只有一条时,称为单总线结构;CPU中有两条或更多的总线时,构成双总线结构或多总线结构。 下图所示为CPU内部总线的数据通路和控制信号:
在这里插入图片描述
  在图中,规定各部件用大写字母表示,字母加in表示该部件的允许输入控制信号;字母加out表示该部件的允许输出控制信号
  (2)CPU内部三总线方式将所有寄存器的输入端和输出端都连接到多条公共通路上, 相比之下单总线中一个时钟周期内只允许传一个数据,因而指令执行效率很低,因此采用多总线方式,同时在多个总线上传送不同的数据,提高效率。
  (3)专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路,避免使用共享的总线,性能较高,但硬件量大。


  内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线


  1.寄存器之间的数据传送

  寄存器之间的数据传送可通过CPU内部总线完成。以PC为例,把PC内容送至MAR,实现传送操作的流程及控制信号为:
  PC——>Bus     PCout有效,PC内容送总线
  Bus——>MAR    MARin有效,总线内容送MAR

  2.主存与CPU之间的数据传送

  主存与CPU之间的数据传送也要借助CPU内部总线完成。以CPU从主存读取指令为例,实现传送操作的流程及控制信号为:
  PC——>Bus——>MAR    PCout和MARin有效,现行指令地址——>MAR
  1——>R    CU发读命令
  MEM(MAR)——>MDR    MDRin有效
  MDR——>Bus——>IR    MDRout和IRin有效,现行指令——>IR

  3.执行算术或逻辑运算

  执行算术或逻辑操作时,由于ALU本身是没有内部存储功能的组合电路,因此如要执行加法运算,相加的两个数必须在ALU的两个输入端同时有效。 暂存器Y即用于该目的。先将一个操作数经CPU内部总线送入暂存器Y保存,Y的内容在ALU的左输入端始终有效,再将另一个操作数经总线直接送到ALU的右输入端。 这样两个操作数都送入了ALU,运算结果暂存在暂存器Z中。 (设置暂存器Z的原因是:ALU的输出不能直接与内部总线相连,因为其输出又会通过总线反馈到ALU的输入,影响运算的正确性)
  Ad(IR)——>Bus——>MAR    MDRout和MARin有效
  1——>R    CU发读命令
  MEM——>数据线——>MDR    操作数从存储器——>数据线——>MDR
  MDR——>Bus——>Y    MDRout和Yin有效,操作数——>Y
  (ACC)+(Y)——>Z    ACCout和ALUin有效,CU向ALU发加命令,结果——>Z
  Z——>ACC    Zout和ACCin有效,结果——>ACC

  数据通路结构直接影响CPU内各种信息的传送路径,数据通路不同,指令执行过程的微操作序列的安排也不同,它关系着微操作信号形成部件的设计


  例题:采用CPU内部总线的数据通路与不采用CPU内部总线的数据通路相比,()
  A.前者性能较高  B.后者的数据冲突问题较严重
  C.前者的硬件量大,实现难度高  D.以上说法都不对

  答案:D;采用CPU内部总线方式的数据通路的特点:结构简单,实现容易,性能较低,存在较多的冲突现象;不采用CPU内部总线方式的数据通路的特点:结构复杂,硬件量大,不易实现,性能高,基本上不存在数据冲突现象

  例题:在这里插入图片描述
  答案:注意取指和译码阶段之后是执行阶段,时钟应该从C5开始

在这里插入图片描述

  例题:
在这里插入图片描述

  答案:在这里插入图片描述

  例题:在这里插入图片描述

在这里插入图片描述

  答案:在这里插入图片描述

  例题:在这里插入图片描述

  答案:在这里插入图片描述
在这里插入图片描述

  例题:下图是一个简化了的CPU与主存连接结构示意图(图中省略了所有的多路选择器)。其中有一个累加寄存器(ACC)、一个状态数据寄存器和其他4个寄存器:主存地址寄存器(MAR)、主存数据寄存器(MDR)、程序寄存器(PC)和指令寄存器(IR),各部件及其之间的连线表示数据通路,箭头表示信息传递方向。
要求:
(1)请写出图中a、b、c、d 4个寄存器的名称。
(2)简述图中取指令的数据通路。
(3)简述数据在运算器和主存之间进行存/取访问的数据通路。
(4)简述完成指令LDA X的数据通路(X为主存地址,LDA的功能为(X)→ACC)。
(5)简述完成指令ADD Y的数据通路(Y为主存地址,ADD的功能为(ACC)+(Y)→ACC)。
(6)简述完成指令STA Z的数据通路(Z为主存地址,STA的功能为(ACC)→Z)。
在这里插入图片描述

  答案:(1)MDR、IR、MAR、PC
  (2)PC——>MAR——>主存——>MDR——>IR
  (3)存储器读(读取的数据放在ACC中):MAR(先置数据地址),M——>MDR——>ALU——>ACC
  存储器写(被写的数据在ACC):MAR(先置数据地址),ACC——>MDR——>M
  (4)X——>MAR——>主存——>MDR——>ALU——>ACC
在这里插入图片描述

  例题:某机主要功能部件如图下图所示,其中M为主存,MDR为主存数据寄存器,MAR为主存地址寄存器,IR为指令寄存器,PC为程序计数器,R0——R3为通用寄存器,C,D为暂存器。 (1)请补充各部件之间的主要联结线,并注明数据流动方向 (2)画出“ADD(R1),(R2)+”指令周期流程图。该指令的含义是进行求和运算,源操作数地址在R1中,目标操作数寻址方式为自増型寄存器间接寻址方式(先取地址后加1),并将相加结果写回R2寄存器。
在这里插入图片描述

  答案:(1)
在这里插入图片描述
(2)((R1))+((R2))——>(R2),将源操作数和目的操作数相加送到MDR,随之送到以前目的操作数所在内存的地址。最后将寄存器R2的内容加1:(R2)+1——>R2
在这里插入图片描述

  例题:在这里插入图片描述
  答案:在这里插入图片描述

  例题:在这里插入图片描述
  答案:(1)PC作为ALU的一个输入的同时作为MAR的输入。
  C1:(PC)——>MAR,(PC)——>R1
  C2:(PC)+1——>R2,M(MAR)——>MDR
  C3:(MDR)——>IR
  C4:  R2——>PC
  (2)Ad(IR)——>R1;
    (ACC)+(R1)——>R2
    (R2)——>ACC

  例题:
在这里插入图片描述
  答案:(1)R0~R3,PC。因为采用了单总线结构,因此若无暂存器T,则ALU的A、B端口会同时获得两个相同的数据,使数据通路不能正常工作
  (2)3,2;
  (3)信号SRout所控制的部件是一个三态门,用于控制移位器与总线之间数据通路的连接与断开
  (4)1,2,3,5,8
  (5)6——>9;7——>4
  (6)因为每条指令的长度为16位,按字节编址,所以每条指令占用2个内存单元,顺序执行时,下条指令地址为(PC)+2。MUX的一个输入端为2,可便于执行(PC)+2操作


  MUX为多路选择器,此题中为二路选择器,可实现(PC)+2功能;二路选择器选择控制端s为0时选择A,为1时选择B,PC送T,s为0,选2,实现(PC)+2;



5.4 控制器的功能和工作原理

 5.4.1 控制器的结构和功能

  下图表示计算机硬件系统的五大功能部件及其连接关系。它们通过数据总线、地址总线和控制总线连接在一起。
在这里插入图片描述
  其主要连接关系为:
  (1)运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据
  (2)输入设备和输出设备通过接口电路与总线相连接
  (3)内存储器、输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据
  (4)控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。
  控制器是计算机系统的指挥中心,控制器的主要功能有:
  (1)从主存中取出一条指令,并指出下一条指令在主存中的位置
  (2)对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作
  (3)指挥并控制CPU、主存、输入和输出设备之间的数据流动方向
  根据控制器产生微操作控制信号的方式的不同,控制器可分为硬布线控制器和微程序控制器, 两类控制器中的PC和IR是相同的,但确定和表示指令执行步骤的办法以及给出控制各部件运行所需要的控制信号的方案是不同的。

 5.4.2 硬布线控制器

  硬布线控制器的基本原理是根据指令的要求、当前的时序及外部和内部的状态,按时间的顺序发送一系列微操作控制信号。它由复杂的组合逻辑门电路和一些触发器构成,因此又称组合逻辑控制器。

  1.硬布线控制单元图

  指令的操作码是决定控制单元发出不同操作命令(控制信号)的关键。 为了简化控制单元CU的逻辑,将指令的操作码译码和节拍发生器从CU分离出来,便可得到简化的控制单元图:
在这里插入图片描述
  CU的输入信号来源如下:
  (1)经指令译码器译码产生的指令信息。 现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,因此指令的操作码字段是控制单元的输入信号,它与时钟配合产生不同的控制信号。
  (2)时序系统产生的机器周期信号和节拍信号。 为了使控制单元按一定的先后顺序、一定的节奏发出各个控制信号,控制单元必须受时钟控制,即一个时钟脉冲使控制单元发送一个操作命令,或发送一组需要同时执行的操作命令。
  (3)来自执行单元的反馈信息即标志。 控制单元有时需依赖CPU当前所处的状态产生控制信号,如BAN指令,控制单元要根据上条指令的结果是否为负来产生不同的控制信号。

  上图中,节拍发生器产生各机器周期中的节拍信号,使不同的微操作命令Ci(控制信号)按时间的先后发出。个别指令的操作不仅受操作码控制,还受状态标志控制,因此CU的输入来自操作码译码电路ID、节拍发生器及状态标志,其输出到CPU内部或外部控制总线上。


  控制单元还接收来自系统总线(控制总线)的控制信号,如中断请求、DMA请求。


  2.硬布线控制器的时序系统及微操作

  (1)时钟周期。
  用时钟信号控制节拍发生器,可以产生节拍,每个节拍的宽度正好对应一个时钟周期。在每个节拍内机器可完成一个或几个需同时执行的操作。
  (2)机器周期。
  机器周期可视为所有指令执行过程中的一个基准时间。 不同指令的操作不同,指令周期也不同。访问一次存储器的时间是固定的,因此通常以存取周期作为基准时间,即内存中读取一个指令字的最短时间作为机器周期。 在存储字长等于指令字长的前提下,取指周期也可视为机器周期。
  在一个机器周期里可完成若干微操作, 每个微操作都需一定的时间,可用时钟信号来控制产生每个微操作命令。
  (3)指令周期
  (4)微操作命令分析。
  控制单元具有发出各种操作命令(控制信号)序列的功能。这些命令与指令有关,而且必须按一定次序发出,才能使机器有序地工作。
  执行程序的过程中,对于不同的指令,控制单元需发出各种不同的微操作命令。一条指令分为3个工作周期:取指周期、间址周期和执行周期。 下面分析各个子周期的微操作命令。
  a.取指周期的微操作命令。无论是什么指令,取指周期都需有下列微操作命令:
  PC——>MAR    现行指令地址——>MAR
  1——>R    命令存储器读
  M(MAR)——>MDR    现行指令从存储器中读至MDR
  MDR——>IR    现行指令——>IR
  OP(IR)——>CU    指令的操作码——>CU译码
  (PC)+1——>PC    形成下一条指令的地址

  b.间址周期的微操作命令。间址周期完成取操作数地址的任务,具体微操作命令如下:
  Ad(IR)——>MAR  将指令字中的地址码(形式地址)——>MAR
  1——>R    命令存储器读
  M(MAR)——>MDR    将有效地址从存储器读至MDR

  c.执行周期的微操作命令。执行周期的微操作命令视不同指令而定。
  非访存指令:
  CLA  清ACC  0——>ACC
  COM  取反   A C C ‾ \overline{ACC} ACC——>ACC
  SHR  算术右移  L(ACC)——>R(ACC),ACC0——>ACC0
  CSL  循环左移  R(ACC)——>L(ACC),ACC0——>ACCn
  STP  停机指令  0——>G(停机标志位)

  访存指令
  ADD X  加法指令:
  Ad(IR)——>MAR
  1——>R
  M(MAR)——>MDR
  (ACC)+(MDR)——>ACC

  STA X  存数指令:
  Ad(IR)——>MAR
  1——>W
  ACC——>MDR
  MDR——>M(MAR)

  LDA X  取数指令:
  Ad(IR)——>MAR
  1——>R
  M(MAR)——>MDR
  MDR——>ACC

  转移指令:
  JMP X  无条件转移:
  Ad(IR)——>PC

  BAN X  条件转移(负则转)
  A0·Ad(IR)+ A 0 ‾ \overline{A0} A0·(PC)——>PC

  3.CPU的控制方式

  控制单元控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程。 由于不同指令所对应的微操作数及复杂程度不同,因此每条指令和每个微操作所需的执行时间也不同。主要有以下3种控制方式:
  (1)同步控制方式
  同步控制方式,指系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号。 通常以最长的微操作序列和最烦琐的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令。 同步控制方式的优点是控制电路简单,缺点是运行速度慢。
  (2)异步控制方式
  异步控制方式不存在基准时标信号,各部件按自身固有的速度工作,通过应答方式进行联络。 异步控制方式的优点是运行速度快,缺点是控制电路比较复杂。
  (3)联合控制方式
  联合控制方式是介于同步、异步之间的一种折中。 这种方式对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法。

  4.硬布线控制单元设计步骤

  硬布线控制单元设计步骤包括:
  (1)列出微操作命令的操作时间表。
  先根据微操作节拍安排,列出微操作命令的操作时间表。操作时间表中包括各个机器周期、节拍下的每条指令完成的微操作控制信号。
  下表中列出了CLA、COM、SHR等10条机器指令微操作命令的操作时间表:
在这里插入图片描述
  I为间址标志,在取指周期的T2时刻,若测得I=1,则IND触发器置1,标志进入间址周期;若I=0,则EX触发器置1,标志进入执行周期。同理,在间址周期的T2时刻,若测得IND=0(表示一次间接寻址),则EX触发器置1,进入执行周期;若测得IND=1(表示多次间接寻址),则继续间接寻址。在执行周期的T2时刻,CPU要向所有中断源发中断查询信号,若检测到有中断请求并满足响应条件,则INT触发器置1,标志进入中断周期。

  (2)进行微操作信号综合。
  在列出微操作时间表后,即可对它们进行综合分析、归类,根据微操作时间表可写出各微操作控制信号的逻辑表达式并进行适当简化。表达式一般包括下列因素:
  微操作控制信号=机器周期^节拍 ^脉冲 ^操作码 ^机器状态条件
  根据微操作时间表便可列出每个微操作命令的初始逻辑表达式,经化简、整理可获得能用现有门电路实现的微操作命令逻辑表达式
  例如,根据上表可写出M(MAR)——>MDR微操作命令的逻辑表达式:
在这里插入图片描述

  (3)画出微操作命令的逻辑图。
  根据逻辑表达式可画出对应每个微操作信号的逻辑电路图,并用逻辑门电路实现。
  例如,M(MAR)——>MDR的逻辑表达式所对应的逻辑图如图:
在这里插入图片描述

 5.4.3 微程序控制器

  微程序控制器采用存储逻辑实现,即把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中,微操作信号由微指令产生。

  1.微程序控制的基本概念

  微程序设计思想就是将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令。 这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。目前,大多数计算机都采用微程序设计技术。
  微程序设计技术涉及的基本术语如下:
  (1)微命令与微操作
  一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作。 在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位。 例如,打开或关闭某个控制门的电位信号、某个寄存器的打入脉冲等。微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程。
  微命令有相容性和互斥性之分。 相容性微指令是指那些可以同时产生、共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。 相容和互斥都是相对的,一个微命令可以和一些微命令相容,和另一些微命令互斥。


  在组合逻辑控制器中也存在微命令和微操作这两个概念,它们并非只是微程序控制器的专有概念


  (2)微指令和微周期
  微指令是若干微命令的集合。存放微指令的控制存储器的单元地址称为微地址。 一条微指令通常至少包含两大部分信息:
  a.操作控制字段,又称微操作码字段,用于产生某一步操作所需的各种操作控制信号。
  b.顺序控制字段,又称微地址码字段,用于控制产生下一条要执行的微指令地址。
  微周期通常指从控制存储器中读取一条微指令并执行相应的微操作所需的时间。

  (3)主存储器与控制存储器
  主存储器用于存放程序和数据,在CPU外部,用RAM实现;控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现。

  (4)程序与微程序
  程序是指令的有序集合,用于完成特定的功能;微程序是微指令的有序集合,一条指令的功能由一段微程序来实现。
  微程序和程序是两个不同的概念。微程序是由微指令组成的,用于描述机器指令。微程序实际上是机器指令的实时解释器,是由计算机设计者事先编制好并存放在控制存储器中的,一般不提供给用户。对于程序员来说,计算机系统中微程序的结构和功能是透明的。 而程序最终由机器指令组成,是由软件设计人员事先编制好并存放在主存或辅存中的。

  应注意区分以下寄存器:
  a.地址寄存器MAR:用于存放主存的读/写地址
  b.微地址寄存器CMAR用于存放控制存储器CM的读/写微指令的地址
  c.指令寄存器IR:用于存放从主存中读出的指令
  d.微指令寄存器CMDR或μIR:用于存放从控制存储器中读出的微指令

  2.微程序控制器组成和工作过程

  (1)微程序控制器的基本组成
在这里插入图片描述

  上图所示为一个微程序控制器的基本结构,主要画出了微程序控制器比组合逻辑控制器多出的部件,包括:
  a.控制存储器
  它是微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可用只读存储器ROM构成
  b.微指令寄存器CMDR
  用于存放从CM从取出的微指令,它的位数同微指令字长相等。
  c.微地址形成部件
  用于产生初始微地址和后继微地址,以保证微指令的连续执行
  d.微地址寄存器CMAR
  接收微地址形成部件送来的微地址,为在CM中读取微指令作准备。

  (2)微程序控制器的工作过程
  微程序控制器的工作过程实际上就是在微程序控制器的控制下计算机执行机器指令的过程,可描述如下:
  a.执行取微指令公共操作
  在机器开始运行时,自动将取指微程序的入口地址送入CMAR,并从CM中读出相应的微指令送入CMDR。取指微程序的入口地址一般为CM的0号单元。 当取指微程序执行完后,从主存中取出的机器指令就已存入指令寄存器IR中。
  b.由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入CMAR。
  c.从CM中逐条取出对应的微指令并执行
  d.执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续a,以完成取下一条机器指令的公共操作。
  以上是一条机器指令的执行过程,如此周而复始,直到整个程序执行完毕。

  (3)微程序和机器指令
  通常,一条机器指令对应一个微程序。由于任一条机器指令的取指令操作都是相同的,因此可将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出并送至指令寄存器。
  此外,也可编出对应间址周期的微程序和中断周期的微程序。这样,控制存储器中的微程序个数应为机器指令数再加上对应取指、间址和中断周期等共用的微程序数。


  若指令系统中具有n种机器指令,则控制存储器中的微程序数至少是n+1(1为公共的取指微程序)


  3.微指令的编码方式

  微指令的编码方式又称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号。 编码的目标是在保证速度的情况下,尽量缩短微指令字长。
  (1)直接编码(直接控制)方式
在这里插入图片描述

  直接编码法无须进行译码,微指令的微命令字段中每个位都代表一个微命令。 设计微命令时,选用或不选用某个微命令,只要将表示该微命令的对应位设置成1或0即可。每个微命令对应并控制数据通路中的一个微操作。
  这种编码的优点是简单、直观,执行速度快,操作并行性好; 缺点是微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控制存储器容量极大。

  (2)字段直接编码方式
在这里插入图片描述
  将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其他字段无关, 这就是字段直接编码方式。
  这种方式可缩短微指令字长,但因为要通过译码电路后再发出微命令,因此比直接编码方式慢。
  微命令字段分段的原则:
  a.互斥性微命令分在同一段内,相容性微命令分在不同段内
  b.每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
  c.一般每个小段还要留出一个状态,表示本字段不发出任何微命令。 因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作。

  (3)字段间接编码方式
  一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,因此称为字段间接编码,又称隐式编码。 这种方式可以进一步缩短微指令字长,但因削弱了微指令的并行控制能力,因此通常作为字段直接编码方式的一种辅助手段。

  4.微指令的地址形成方式

  后继微地址的形成主要有以下两大基本类型:
  (1)直接由微指令的下地址字段指出
  微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称断定方式。
  (2)根据机器指令的操作码形成
  机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。 (微地址形成部件实际上是一个编码器,其输入为指令操作码,输出就是对应该机器指令微程序的首地址)

  实际上,微指令序列地址的形成方式还有以下几种:
  a.增量计数器法,即(CMAR)+1——>CMAR,适用于后继微指令的地址连续的情况
  b.根据各种标志决定微指令分支转移的地址
  c.通过网络测试形成
  d.由硬件直接产生微程序入口地址
  电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址即为取指周期微程序的入口地址。

  5.微指令的格式

  微指令格式与微指令的编码方式有关,通常分为水平型微指令和垂直型微指令两种。
  (1)水平型微指令
  从编码方式看,直接编码、字段直接编码、字段间接编码和混合编码都属于水平型微指令。 水平型微指令的基本指令格式如图:
在这里插入图片描述
  指令字中的一位对应一个控制信号,有输出时为1,否则为0。一条水平型微指令定义并执行几种并行的基本操作。
  水平型微指令的优点是微程序短, 执行速度快;缺点是微指令长,编写微程序较麻烦。
  (2)垂直型微指令
  垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能, 其基本的指令格式如图:
在这里插入图片描述
  一条垂直型微指令只能定义并执行一种基本操作。
  垂直型微指令格式的优点是微指令短、简单、规整,便于编写微程序;缺点是微程序长, 执行速度慢,工作效率低。
  (3)混合型微指令
  在垂直型的基础上增加一些不太复杂的并行操作。 微指令较短,仍便于编写;微程序也不长,执行速度加快。
  (4)水平型微指令和垂直型微指令的比较如下:
  a.水平型微指令并行操作能力强、效率高、灵活性强;垂直型微指令则较差
  b.水平型微指令执行一条指令的时间短;垂直型微指令执行的时间长
  c.由水平型微指令解释指令的微程序,具有微指令字较长但微程序短的特点;垂直型微指令则相反,其微指令字较短而微程序长。
  d.水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对容易掌握

  6.微程序控制单元的设计步骤

  微程序控制单元设计的主要任务是编写各条机器指令所对应的微程序。具体的设计步骤如下:
  (1)写出对应机器指令的微操作命令及节拍安排
  无论是组合逻辑设计还是微程序设计,对应相同的CPU结构,两种控制单元的微操作命令和节拍安排都是极相似的。如微程序控制单元在取指阶段发出的微操作命令及节拍安排如下:
  T0  PC——>MAR,1——>R
  T1  M(MAR)——>MDR,(PC)+1——>PC
  T2  MDR——>IR,OP(IR)——>微地址形成部件
  与硬布线控制单元相比,只在T2节拍内的微操作命令不同。微程序控制单元在T2节拍内要将指令的操作码送至微地址形成部件,即OP(IR)——>微地址形成部件,以形成该条机器指令的微程序首地址。 而硬布线控制单元在T2节拍内要将指令的操作码送至指令译码器,以控制CU发出相应的微命令,即OP(IR)——>ID
  若把一个节拍T内的微操作安排在一条微指令中完成,上述微操作对应3条微指令。但由于微程序控制的所有控制信号都来自微指令,而微指令又存在控制存储器中,因此欲完成上述这些微操作,必须先将微指令从控制存储器中读出,即必须先给出这些微指令的地址。在取指微程序中,除第一条微指令外,其余微指令的地址均由上一条微指令的下地址字段直接给出,因此上述每条微指令都需增加一个将微指令下地址字段送至CMAR的微操作,记为Ad(CMDR)——>CMAR。 取指微程序的最后一条微指令,其后继微指令的地址是由微地址形成部件形成的,即微地址形成部件——>CMAR。 为了反映该地址与操作码有关,因此记为OP(IR)——>微地址形成部件——>CMAR
  综上所述,考虑到需要形成后继微指令地址,上述分析的取指操作共需6条微指令完成:
  T0  PC——>MAR,1——>R
  T1  Ad(CMDR)——>CMAR
  T2  M(MAR)——>MDR,(PC)+1——>PC
  T3  Ad(CMDR)——>CMAR
  T4  MDR——>IR
  T5  OP(IR)——>微地址形成部件——>CMAR

  执行阶段的微操作命令及节拍安排,分配原则类似。与硬布线控制单元微操作命令的节拍安排相比,多了将下一条微指令地址送至CMAR的微操作命令,即Ad(CMDR)——>CMAR。其余的微操作命令与硬布线控制单元相同。


  造成上述结论的原因是:每执行完一条微指令后要得到下一条微指令的地址


  (2)确定微指令格式
  微指令格式包括微指令的编码方式、后继微指令地址的形成方式和微指令字长等。
  根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。由微指令数确定微指令的顺序控制字段的位数。最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长。

  (3)编写微指令码点
  根据操作控制字段每位代表的微操作命令,编写每条微指令的码点

  7.动态微程序设计和毫微程序设计

  (1)动态微程序设计
  在一台微程序控制的计算机中,假如能根据用户的要求改变微程序,则这台机器就具有动态微程序设计功能。
  动态微程序的设计需要可写控制寄存器的支持,否则难以改变微程序的内容。实现动态微程序设计可采用可擦除可编程只读存储器EPROM
  (2)毫微程序设计
  微程序可看作是解释机器指令的,毫微程序可看作是解释微程序的,而组成毫微程序的毫微指令则是用来解释微指令的。
  在普通的微程序计算机中,从主存取出的每条指令是由放在控制存储器中的微程序来解释执行的,通过控制线对硬件进行直接控制。
  若硬件不由微程序直接控制,而是通过存放在第二级控制存储器中的毫微程序来解释的,这个第二级控制存储器就称为毫微存储器,直接控制硬件的是毫微微指令。
  毫微程序设计采用两级微程序的设计方法。第一级微程序为垂直型微指令,并行功能不强,但有严格的顺序结构,由它确定后续微指令的地址,当需要时可调用第二级。第二级微程序为水平型微指令,具有很强的并行操作能力,但不包含后续微指令的地址。第二级微程序执行完毕后又返回到第一级微程序。

  8.硬布线和微程序控制器的特点

  (1)硬布线控制器的特点:
  硬布线控制器的优点是由于控制器的速度取决于电路延迟,所以速度快;缺点是由于将控制部件视为专门产生固定时序控制信号的逻辑电路,所以把用最少元件和取得最高速度作为设计目标,一旦设计完成,就不可能通过其他额外修改添加新功能。
  (2)微程序控制器的特点
  微程序控制器的优点是同组合逻辑控制器相比,微程序控制器具有规整性、灵活性、可维护性等一系列优点;缺点是由于微程序控制器采用了存储程序原理,所以每条指令都要从控制存储器中取一次,影响速度。
在这里插入图片描述


  例题:在微程序控制器中,形成微程序入口地址的是()
  A.机器指令的地址码字段  B.微指令的微地址码字段
  C.机器指令的操作码字段  D.微指令的微操作码字段

  答案:C;执行公用的取指微程序从主存中取出机器指令后,由机器指令的操作码字段指出各个微程序的入口地址(初始微地址)

  例题:某带中断的计算机指令系统共有101种操作,采用微程序控制方式时,控制存储器中相应最少有()个微程序

  答案:103

  例题:通常情况下,一个微程序的周期对应一个()
  A.指令周期  B.主频周期
  C.机器周期  D.工作周期

  答案:A;

  例题:下列部件属于控制部件的是()
  1.指令寄存器  2.操作控制器  3.PC  4.状态条件寄存器

  答案:B;

  例题:若某机主频为200MHz,每个指令周期平均为2.5个CPU周期,每个CPU周期平均包括2个主频周期
  (1)该机平均指令执行速度为多少MIPS
  (2)若主频不变,但每条指令平均包括5个CPU周期,每个CPU周期又包含4个主频周期,平均指令执行速度又为多少MIPS
  (3)由此可得出什么结论

  答案:(1)40MIPS;(2)10MIPS;(3)指令的复杂程度会影响指令的平均执行速度

  例题:(1)若存储器容量为64K x 32位,指令字长、存储字长、机器字长相等,指出主机中各寄存器的位数
  (2)写出硬布线控制器完成STA X(X为主存地址)指令发出的全部微操作命令及节拍安排
  (3)若采用微程序控制,还需增加哪些微操作

  答案:(1)
在这里插入图片描述
  答案中出现了ALU,有的架构中ALU具有完整结构,包含寄存器且挂在内部总线上
在这里插入图片描述

  例题:假设某机器有80条指令,平均每条指令由4条微指令组成,其中有一条取指微指令是所有指令公用的。已知微指令长度为32位,请估算控制存储器CM容量

  答案:1KB;总的微指令条数为241条,存储单元的个数为2的n次幂,因此CM容量为256x32位

  例题:某机共有52个微操作控制信号,构成5个相斥类的微命令组,各组分别包含5、8、2、15、22个微命令。已知可判定的外部条件有两个,微指令字长28位
  (1)按水平型微指令格式设计微指令,要求微指令的下地址字段直接给出后继微指令地址
  (2)指出控制存储器的容量

  答案:(1)条件测试位取2位(判断测试字段属于顺序控制字段的一部分,用直接编码方式,2个外部条件需用2位表示)
在这里插入图片描述
  (2)控存的字长就是微指令字长,总容量2^8 x 28位


5.5 指令流水线

 5.5.1 指令流水线的基本概念

  计算机的流水线把一个重复的过程分解为若干子过程,每个子过程与其他子过程并行执行。 由于采用流水线技术只需增加少量硬件就能把计算机的运算速度提高几倍,因此成为计算机中普遍采用的一种并行处理技术

  1.指令流水的定义

  一条指令的执行过程可分成多个阶段(或过程),如:
在这里插入图片描述
  取指:根据PC内容访问主存,取出一条指令送到IR中
  分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数
  执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中
  当多条指令在处理器中执行时,可以采取以下三种方式:
  (1)顺序执行方式
  指令按顺序执行,前一条指令执行完后,才启动下一条指令。
在这里插入图片描述
  设取指、分析、执行三个阶段的时间都相等,用t表示,顺序执行n条指令所用的时间T为:
  T=3nt
  传统冯诺依曼机采用顺序执行方式,又称串行执行方式。其优点是控制简单,硬件代价小;缺点是执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行, 各功能部件的利用率很低。例如取指时内存忙,而指令执行部件空闲。

  (2)一次重叠执行方式
  这种方式同时进行第k条指令的执行阶段和第k+1条指令的取值阶段
在这里插入图片描述
  采用此种方式时,执行n条指令所用的时间为:
  T=(1+2n)t
  采用一次重叠方式的优点是,程序的执行时间缩短了1/3,各功能部件的利用率明显提高。但为此需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂

  (3)二次重叠执行方式
  为了进一步提高指令的执行速度,可把取k+1条指令提前到分析第k条指令的期间完成,而将分析第k+1条指令与执行第k条指令同时进行。
在这里插入图片描述
  执行n条指令所用的时间:
  T=(2+n)t
  与顺序执行方式相比,采用二次重叠执行方式能够使指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。
  若每条指令需通过4个或5个执行步骤完成,则可采取3次或4次重叠执行方式

  2.流水线的表示方法

  通常用时空图来描述流水线的工作过程,如:
在这里插入图片描述
  在时空图中,横坐标表示时间,即输入流水线中的各个任务在流水线中所经过的时间。流水线中各个流水段的执行时间都相等时,横坐标就被分割成相等长度的时间段。纵坐标表示空间,即流水线的每个流水段(对应各执行部件)
  在上图中,第一条指令I1在时刻t0进入流水线,在时刻t4流出流水线。每经过一个△t时间,便有一条指令进入流水线,从时刻t4开始有一条指令流出流水线

  3.流水线方式的特点

  (1)把一个任务(一条指令或一个操作)分解为几个有联系的子任务,每个子任务由一个专门的功能部件来执行,并依靠多个功能部件并行工作来缩短程序的执行时间
  (2)流水线每个功能段部件后面都要有一个缓冲存储器,或称锁存器,其作用是保存本流水段的执行结果,供给下一流水段使用。
  (3)流水线中各功能段的时间应尽量相等,否则将引起堵塞、断流
  (4)只有连续不断地提供同一种任务时才能发挥流水线的效率,所以在流水线中处理的必须是连续任务。在采用流水线方式工作的处理机中,要在软件和硬件设计等多方面尽量为流水线提供连续的任务。
  (5)流水线需要有装入时间与排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指最后一个任务进入流水线到输出流水线的时间

 5.5.2 流水线的分类

  按照不同的分类标准,可以把流水线分成多种不同的种类。下面从几个不同的角度介绍流水线的基本分类方法:

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

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

  2.单功能流水线和多功能流水线

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

  3.动态流水线和静态流水线

  按同一时间内各段间的连接方式,流水线可分为静态流水线和动态流水线。
  静态流水线指在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
  动态流水线指在同一时间内,当某些段正在实现某种运算时,另一些段却正在进行另一种运算。 这样对提高流水线效率有好处,但会使流水线控制变得很复杂。

  4.线性流水线和非线性流水线

  按流水段的各个功能段之间是否有反馈信号,流水线可分为线性流水线与非线性流水线。
  线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。非线性流水线存在反馈回路,从输入到输出的过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算。

  流水线的每个子过程由专用的功能段实现,各功能段所需的时间应尽量相等。否则,时间长的功能段将成为流水线的瓶颈

 5.5.3 影响流水线的因素

  影响流水线性能的因素主要有两方面:资源冲突和相关问题
  由于多条指令在同一时刻争用同一资源而形成的冲突称为资源冲突, 有以下两种解决办法:
  (1)前一指令访存时,使后一条相关指令(以及其后续指令)暂停一个时钟周期
  (2)单独设置数据存储器和指令存储器,使两项操作各自在不同的存储器中进行。
  在此主要讨论相关问题,流水线中的相关问题是指相邻指令间存在某种关联,使指令流水线出现停顿,降低了流水线的效率。主要有数据相关和控制相关两类。

  1.数据冲突(数据冒险)

  在一个程序中,下一条指令会用到这一条指令计算出的结果,此时这两条指令即为数据冒险。 当多条指令重叠处理时就会发生冲突,解决的办法有:
  (1)把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行,这种方法称为后推法, 可分为硬件阻塞(stall)和软件插入"NOP"指令两种方法
  (2)设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行,这称为数据旁路技术
  (3)通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关。

  2.控制冲突(控制冒险)

  一条指令要确定下一条指令的位置,例如在执行转移、调用或返回等指令时会改变PC值,而造成断流,会引起控制冒险。控制相关主要是由转移指令引起的。 解决的办法有:
  (1)对转移指令进行分支预测,尽早生成转移目标地址。 分支预测分为简单(静态)预测和动态预测。 静态预测总是预测条件不满足,即继续执行分支指令的后续指令。动态预测根据程序执行的历史情况,进行动态预测调整,有较高的预测准确率
  (2)预取转移成功和不成功两个控制流方向上的目标指令。
  (3)加快和提前形成条件码
  (4)提高转移方向的猜准率


  Cache缺失的处理过程也会引起流水线阻塞


 5.5.4 流水线的性能指标

  衡量流水线性能的主要指标有吞吐率、加速比和效率。以下以线性流水线为例分析流水线的主要性能指标,分析方法和公式也适用于非线性流水线

  1.流水线的吞吐率

  在指令级流水线中,吞吐率是指在单位时间内流水线所完成的任务数量,或输出结果的数量。
  TP=n/Tk
  TP为流水线吞吐率,n是任务数,Tk是处理完n个任务所用的时间
  下图所示为各段执行时间都相等的流水线时空图
在这里插入图片描述
  在输入流水线中的任务连续的理想情况下,一条k段线性流水线能在k+n-1个时钟周期内完成n个任务。
  流水线的实际吞吐率为:
在这里插入图片描述
  连续输入的任务数n——>∞时,最大吞吐率为
在这里插入图片描述

  2.流水线的加速比

  完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比,称为流水线的加速比
  设T0表示不使用流水线时的执行时间,即顺序执行所用的时间;Tk表示使用流水线时的执行时间,则计算流水线加速比(S)的基本公式为:
  S=T0/Tk
  若流水线各段执行的时间都相等,则对于一条k段流水线:
在这里插入图片描述
  连续输入的任务数n——>∞时,最大加速比为
在这里插入图片描述

  3.流水线的效率

  流水线的设备利用率称为流水线的效率。在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积,与n个任务所用的时间及k个流水段所围成的时空区总面积之比。 因此,流水线的效率包含了时间和空间两个因素。
  n个任务占用的时空区有效面积就是顺序执行n个任务所使用的总时间T0,而n个任务所用的时间与k个流水段所围成的时空区总面积为kTk,其中Tk是流水线完成n个任务所使用的总时间,因此流水线效率E:
在这里插入图片描述
  流水线的各段执行时间均相等,当连续输入的任务数n——>∞时,最大效率为Emax=1;


  流水段越多,指令执行不一定越快:
  流水段越多:
  (1)流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大
  (2)流水段间控制逻辑变多、变复杂。用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑将随流水段的增加而大增,这可能导致用于流水线之间控制的逻辑比段本身的控制逻辑更为复杂


 5.5.5 超标量流水线的基本概念
  1.超标量流水线技术

  每个时钟周期内可并发多条独立指令,即以并行操作方式将两条或多条指令编译并执行,为此需配置多个功能部件
  超标量计算机不能调整指令的执行顺序,因此通过编译优化技术,把可并行执行的指令搭配起来,挖掘更多的指令并行性
在这里插入图片描述

  2.超流水线技术

  在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次。超流水线技术将一些流水线寄存器插入到流水线段中,好比将流水线再分段
  不能调整指令的执行顺序,靠编译程序解决优化问题。
在这里插入图片描述

  3.超长指令字

  由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字,为此需要采用多个处理部件


  例题:下列关于流水CPU基本概念的描述中,正确的是()
  A.流水CPU是以空间并行性为原理构造的处理器
  B.流水CPU一定是RISC机器
  C.流水CPU一定是多媒体CPU
  D.流水CPU是一种非常经济而实用的时间并行技术

  答案:D;空间并行即资源重复,主要指多个功能部件共同执行同一任务的不同部分,典型的如多处理机系统。时间并行即时间重叠,让多个功能部件在时间上相互错开,轮流重叠执行不同任务的相同部分

  例题:下列关于超标量流水线特性的叙述中,正确的是()
  1.能缩短流水线功能段的处理时间  2.能在一个时钟周期内同时发射多条指令  3.能结合动态调度技术提高指令执行并行性

  答案:2,3;超标量是指在CPU中有一条以上的流水线,并且每个时钟周期内可以完成一条以上的指令,其实质是以空间换时间。 它不影响流水线功能段的处理时间。静态调度:依靠编译器对代码进行静态调度,以减少相关和冲突。它不是在程序执行的过程中,而是在编译期间进行代码调度和优化,对相关的处理方法在程序执行过程中始终不变。通过把相关的指令拉开距离来减少可能产生的停顿。动态调度:在程序的执行过程中,依靠专门硬件对代码进行调度。超标量机能同时对若干条指令进行译码,将可以并行执行的指令送往不同的执行部件,在程序运行期间,由硬件通常是状态记录部件和调度部件来完成指令调度。

  例题:下列关于指令流水线数据通路的叙述中,错误的是()
  A.包含生成控制信号的控制部件
  B.包含算术逻辑运算部件ALU
  C.包含通用寄存器组和取指部件
  D.由组合逻辑电路和时序逻辑电路组合而成

  答案:A;五阶段流水线可分为取指IF、译码/取数ID、执行EXC、存储器读MEM、写回Write Back;数字系统中,各个子系统通过数据总线连接形成的数据传送路径称为数据通路,包括PC,ALU,通用寄存器组、取指部件等,不包括控制部件

  例题:关于流水线技术的说法中,错误的是()
  A.超标量技术需要配置多个功能部件和指令译码电路等
  B.与超标量技术和超流水线技术相比,超长指令字技术对优化编译器要求更高,而无其他硬件要求
  C.流水线按序流动时,在RAW、WAR和WAW中,只可能出现RAW相关
  D.超流水线技术相当于将流水线再分段,从而提高每个周期内功能部件的使用次数

  答案:B;超长指令字技术对Cache的容量要求更大,因为需要执行的指令长度也许会很长。流水线按序流动,肯定不会出现先读后写WAR和写后写WAW相关,只可能出现没有等到上一条指令写入,当前指令就去读寄存器的错误(此时可采用旁路相关来解决)。指令取操作数的动作一定在写回结果之前,故在按序流动的普通流水线中,先进入流水线的指令的取操作数和写回结果的动作一定位于后续指令写回结果的动作之前,故不可能出现WAR、WAW相关。唯一可能的数据相关问题是后续指令在前一指令写回结果之前读相关的操作数,即RAW相关。 而在非按序流动的流水线中,允许后进入流水线的指令超过先进入流水线的指令而先流出流水线,故三种数据相关问题都有可能出现

  例题:现有四级流水线,分别完成取指令、指令译码并取数、运算、回写四步操作,假设完成各部操作的时间依次为100ns,100ns,80ns,50ns
  (1)流水线的操作周期应设置为多少
  (2)试给出相邻两条指令发生数据相关的例子(假设在硬件上不采取措施),试分析第二条指令要推迟多少时间进行才不会出错
  (3)若在硬件设计上加以改进,至少需推迟多少时间

  答案:(1)100ns;
  (2)两条指令发生数据相关冲突的例子如下:
  ADD R1,R2
  SUB R4,R1
  发生写后读RAW相关;SUB指令先读R1,ADD指令后写入R1,发生数据冲突。若不采取措施,需推迟200ns
  (3)100ns


  RAR:两条连续的指令读取相同的寄存器时,会产生读后读相关,这种相关不会影响流水线

  RAW:假设指令j是在指令i后面执行的指令,RAW表示指令i将数据写入寄存器后,指令j才能从这个寄存器中读取数据。若指令j在指令i写入寄存器前尝试读出该寄存器内容,将得到不正确的数据
  RAW为某条指令要读取上一条指令所写入的寄存器的情况,按序流动的流水线只可能出现这种相关

  WAR:假设指令j是在指令i后面执行的指令,WAR表示指令i读出数据后,指令j才能写这个寄存器,若指令j在指令i读出数据前就写该寄存器,将使指令i读出的数据不正确
  WAR为某条指令的上条指令要读该指令的输出寄存器的情况

  WAW:假设指令j是在指令i后面执行的指令,WAW表示指令i将数据写入寄存器后,指令j才能将数据写入该寄存器,若指令j在指令i写入数据之前写入该寄存器,将使该寄存器的值不是最新值
  WAW为某条指令的上条指令要写该指令的输出寄存器的情况


  例题:假设指令流水线分为取指IF、译码ID、执行EX、回写WB 4个过程,共有10条指令连续输入此流水线
  (1)画出指令周期流程图
  (2)画出非流水线时空图
  (3)画出流水线时空图
  (4)假设时钟周期为100ns,求流水线的实际吞吐量(单位时间执行完毕的指令数)

  答案:在这里插入图片描述
在这里插入图片描述

  例题:在这里插入图片描述

  答案:
在这里插入图片描述

  例题:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  答案:(1)FEFFH;(2)8;
  (3)I3的ID段被阻塞的原因是:因为I3与I1和I2都存在数据相关,需等到I1和I2将结果写回寄存器后,I3才能读寄存器内容,所以I3的ID段被阻塞;I4的IF段被阻塞的原因是:因为I4的前一条指令I3在ID段被阻塞,所以I4的IF段被阻塞。 (要求“按序发射,按序完成”,因此下一条指令的IF必须和上一条指令的ID并行,以免上一条指令发生冲突而导致下一条指令先执行完
  (4)在这里插入图片描述

  例题:在这里插入图片描述
在这里插入图片描述
  答案:(1)按字节编址;(2)4B;
  (3)由表可知,bne指令的机器代码为1446FFFAH,OFFSET为FFFAH,为-6;计算公式为(PC)+4+OFFSET x 4;
  (4)2,3,4,6;6;当前循环的第5条指令与下次循环的第1条指令虽然有数据相关,但由于第6条指令后有三个时钟周期的阻塞,因而消除了此数据相关

  例题:假设对于上题中的计算机M和程序P的机器代码,M采用页式虚拟存储管理;P开始执行时,(R1)=(R2)=0,(R6)=1000,其机器代码已调入主存但不在Cache中;数组A未调入主存,且所有数组元素在同一页,并存储在磁盘的同一个扇区。
  (1)P执行结束时,R2的内容是多少
  (2)M的指令Cache和数据Cache分离。若指令Cache共有16行,Cache和主存交换的块大小为32B,则其数据区的容量是多少?若仅考虑程序段P的执行,则指令Cache的命中率是多少
  (3)P在执行过程中,哪条指令的执行可能发生溢出异常?哪条指令的执行可能产生缺页异常?对于数组A的访问,需要读磁盘和TLB至少各几次

  答案:(1)1000;(2)512B;(1000x6-1)/(1000x6)=99.98%
  (4)指令4;指令3;1;1001(第一次访问A[0]时会先查一次TLB,然后产生缺页,处理完缺页中断后,会重新访问A[0],此时又查TLB。缺页中断处理后,返回到产生缺页中断的指令处重新执行


  • 16
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happy19991001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值