【王道】计算机组成原理 知识点总结5——中央处理器

5 中央处理器

5.1 CPU的功能和基本结构

5.1.1 CPU的功能
  1. 组成

    中央处理器(CPU)由运算器和控制器组成。

    • 控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令;

    • 运算器的功能是对数据进行加工

  2. 功能

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

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

    • 功能:协调并控制计算机各部件执行程序的指令序列,基本功能如下:
      • 分析指令:操作码译码(分析本条指令要完成什么操作);产生操作数的有效地址。
      • 执行指令:根据分析指令得到的“操作命令”和“操作数地址”,形成操作信号控制序列,控制运算器、存储器以及I/O设备完成相应操作
      • 中断处理:管理总线及输入输出;处理异常情况(如掉电)和特殊请求(如打印机请求打印字符)。
    • 组成:
      • 程序计数器(PC)。用于指出欲执行指令在主存中的存放地址。CPU根据PC的内容去主存中取指令。因程序中指令(通常)是顺序执行的,所以PC有自增功能。容量:log2存储容量
      • 指令寄存器(IR)。用于保存当前正在执行的那条指令。容量:指令字长
      • 指令译码器。仅对操作码字段进行译码,向控制器提供特定的操作信号。
      • 存储器地址寄存器(MAR)。用于存放要访问的主存单元的地址。容量:log2存储容量
      • 存储器数据寄存器(MDR)。用于存放向主存写入的信息或从主存读出的信息。容量:存储字长
      • 时序系统。用于产生各种时序信号,它们都由统一时钟(CLOCK)分频得到。
      • 微操作信号发生器。根据IR的内容(指令)、PSW的内容(状态信息)及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。
  3. 基本架构图

    【王道】计算机组成原理 知识点总结5——中央处理器_第1张图片

    • 用户可见寄存器:通用寄存器组、程序状态字寄存器、程序计数器;可对这类寄存器编程

    • 用户不可见的寄存器:存储器地址寄存器、存储器数据寄存器、指令寄存器、暂存寄存器;不可对这类寄存器编程

5.2 指令执行过程

5.2.1 指令周期
  1. 概念

    • 指令周期:CPU从主存中取出并执行一条指令的时间称为指令周期,不同指令的指令周期可能不同。

    • 机器周期:也称节拍或T周期,指令周期常用若干机器周期来表示,它是CPU操作的最基本单位

    • 时钟周期:一个机器周期包含若干时钟周期。

    【王道】计算机组成原理 知识点总结5——中央处理器_第2张图片

    图(a)为定长的机器周期,每个机器周期包含4个节拍(T);图(b)所示为不定长的机器周期,每个机器周期包含的节拍数可以为4个,也可以为3个。

    每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等

  2. 指令周期流程

    一个完整的的指令周期应包括取指、间址、执行和中断4个周期。

    image-20230830113543461

    ​ 上述4个工作周期都有CPU访存操作,只是访存的目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数,中断周期是为了保存程序断点。

    ​ 为了区别不同的工作周期,在CPU内设置4个标志触发器FE、IND、EX和INT,它们分别对应取指、间址、执行和中断周期,并以“1”状态表示有效,分别由1→FE、1→IND、1→EX和1→NT这4个信号控制。

5.2.2 指令周期的数据流
  1. 取指周期

    任务:取指周期的任务是根据PC中的内容从主存中取出指令代码并存放在IR中

    数据流:

    【王道】计算机组成原理 知识点总结5——中央处理器_第3张图片

    • PC-①->MAR-②->地址总线-③->主存

      • 当前指令地址送至存储器地址寄存器,记做:(PC)→ MAR
    • CU发出读命令-④->控制总线-⑤->主存

      • CU发出读信号,经控制总线传到主存,记做:1→R
    • 主存-⑥->数据总线-⑦->MDR-⑧->IR (存放指令)

      • 将MAR所指主存内容经数据总线送入MDR,记做:M(MAR)→MDR

      • 将MDR中的内容(此时是指令)送入IR,记做:(MDR)→IR

    • CU发出控制信号-⑨->PC内容加1

      • CU发出控制信号,形成下一条指令地址,记做:(PC)+1→PC
  2. 间址周期

    任务:间址周期的任务是取操作数有效地址。

    数据流:

    【王道】计算机组成原理 知识点总结5——中央处理器_第4张图片

    • Ad(IR) (或MDR)-①->MAR-②->地址总线-③->主存

      • 将指令的地址码送入MAR,记做:Ad(IR)→ MAR或Ad(MDR)→ MAR
    • CU发出读命令-④->控制总线-⑤->主存

      • CU发出控制信号,启动主存做读操作,记做:1→R
    • 主存-⑥->数据总线-⑦->MDR (存放有效地址)

      • 将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR)→ MDR

      • 将有效地址送至指令的地址码字段,记做:(MDR)→ Ad(IR)

    其中,Ad(IR)表示取出IR中存放的指令字的地址字段

  3. 执行周期

    执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。

    不同指令的执行周期操作不同,因此没有统一的数据流向。

  4. 中断周期

    任务:处理中断请求。暂停当前任务去完成其他任务,为了能够恢复当前任务,需要保存断点。

    ​ 一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。

    数据流:

    【王道】计算机组成原理 知识点总结5——中央处理器_第5张图片

    • CU控制将SP减1,SP-①->MAR-②->地址总线-③->主存

      • CU控制将SP减1,修改后的地址送入MAR记做:(SP)-1 → SP,(SP)→ MAR

        本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a→MAR

    • CU发出写命令-④->控制总线-⑤->主存

      • CU发出控制信号,启动主存做写操作,记做:1→ W
    • PC-⑥->MDR-⑦->数据总线-⑧->主存 (程序断点存入主存)

      • 将断点(PC内容)送入MDR,记做:(PC)→ MDR
    • CU (中断服务程序的入口地址) -⑨->PC

      • CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→PC
5.2.3 指令执行方案

​ 一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。

  1. 单指令周期

    • 特点:对所有指令都选用相同的执行时间来完成,指令之间串行执行

      指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。

    • 时钟周期:时钟周期取决于执行时间最长的指令的执行时间。

      对于那些本来可以在更短时间内完成的指令,要使用较长的周期来完成,会降低整个系统的运行速度。

  2. 多指令周期

    • 特点:对不用类型的指令选用不同的执行步骤来完成,指令之间串行执行
    • 时钟周期:可选用不同个数的时钟周期来完成不同指令的执行过程,需要更复杂的硬件设计
  3. 流水线方案

    • 特点:指令之间并行执行。
    • 时钟周期:在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。

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

5.3.1 数据通路的功能
  1. 数据通路:数据在功能部件之间传送的路径。

    数据通路描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,这些都需要加以控制。

  2. 构成:包括数据通路上流经的部件,如ALU、通用寄存器、状态寄存器、异常和中断处理逻辑等。

    数据通路由控制部件控制,控制部件根据每条指令功能的不同生成对数据通路的控制信号。

  3. 功能:实现CPU内部的运算器与寄存器及寄存器之间数据交换

5.3.2 数据通路的基本结构
  1. 基本结构类型

    • CPU 内部单总线方式:将所有寄存器的输入和输出端连接到一条公共通路上
      • 结构比较简单,但数据传输存在较多的冲突现象,性能较低
    • CPU内部三总线方式:将所有寄存器入的输入和输出端连接到多条公共通路上
      • 同时在多个总线上传送不同的数据,效率提高
    • 专用数据通路方式:根据指令执行过程中的数据和地址的流动方向安排连接线路
      • 避免使用共享的总线,性能较高,但硬件量大
  2. CPU内部单总线数据通路

    【王道】计算机组成原理 知识点总结5——中央处理器_第6张图片

    • 寄存器之间的数据传送

      寄存器之间的数据传送可通过CPU 内部总线完成。

      上图中,以PC寄存器为例,把PC内容送至MAR,实现传送操作的流程及控制信号为

      (PC)→Bus						PCout有效,PC内容→总线
      Bus→MAR							MARin有效,总线→MAR
      
    • 主存与CPU之间的数据传送

      主存与CPU之间的数据传送也要借助CPU内部总线完成。

      以CPU从主存读取指令为例,实现传送操作的流程及控制信号为

      (PC)→Bus→MAR					PCout和MARin有效,现行指令地址→MAR
      1→R								CU发读命令(过控制总线发出,图中未画出)
      MEM(MAR)→MDR					MDRin有效
      MDR→Bus→IR						MDRout和IRin有效,现行指令→IR
      
    • 执行算术或逻辑运算

      执行算术或逻辑操作时,由于ALU本身是没有内部存储功能的组合电路,因此如要执行加法运算,相加的两个数必须在ALU的两个输入端同时有效。

      以一条加法指令为例,微操作序列及控制信号为:

      Ad(IR)→Bus→MAR					MDRout和MARin有效
      1→R								CU发读命令
      MEM(MAR)→MDR			  		MDRin有效
      MDR→Bus→Y						MDRout和Yin有效,操作数→Y
      (ACC)+(Y)→Z						ACCout和ALUin有效,CU向ALU发送加命令
      Z→ACC							Zout和ACCin有效,结果→ACC
      

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

5.4.1 控制器的结构和功能
  1. 控制器的结构

    下图介绍了计算机硬件系统的五大功能部件及其连接关系。它们通过数据总线、地址总线和控制总线连接在一起,其中点画线框内的是控制器部件。

    【王道】计算机组成原理 知识点总结5——中央处理器_第7张图片

    • 运算器部件通过数据总线与内存储器、输入设备和输出设备传送数据。
    • 输入设备输出设备通过接口电路与总线相连接。
    • 内存储器、输入设备和输出设备地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据。
    • 控制器部件数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号。
  2. 控制的功能

    • 从主存中取出一条指令,并指出下一条指令在主存中的位置
    • 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。
    • 指挥并控制 CPU、主存、输入和输出设备之间的数据流动方向
5.4.2 硬布线控制器

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

  1. 硬布线控制单元图

    ​ 指令的操作码是决定控制单元发出不同操作命令(控制信号)的关键。为了简化控制单元(CU)的逻辑,将指令的操作码译码节拍发生器从CU分离出来,便可得到简化的控制单元图,如下图所示。

    【王道】计算机组成原理 知识点总结5——中央处理器_第8张图片

    • 输入:

      • 指令译码器译码产生的指令信息
      • 时序系统产生的机器周期信号和节拍信号。
      • 来自执行单元的反馈信息即标志
    • 输出:

      • CPU内部的控制信号:寄存器之间的数据传输、PC的修改、控制ALU进行相应的运算

      • 到控制总线的控制信号:

        到存储器:访存控制信号MREQ、读命令RD、写命令WR
        到I/O设备:访问I/O设备的控制信号IO
        中断响应信号INTA、总线响应信号HLDA

  2. 硬布线控制器的微操作

    微操作命令分析。控制单元具有发出各种操作命令(控制信号)序列的功能。这些命令与指令有关,而且必须按一定次序发出,才能使机器有序地工作。

    ​ 执行程序的过程中,对于不同的指令,控制单元需发出各种不同的微操作命令。一条指令分为3个工作周期:取指周期、间址周期和执行周期。下面分析各个子周期的微操作命令。

    • 取指周期的微操作命令。无论是什么指令,取指周期都需有下列微操作命令:

      (PC)→MAR					现行指令地址→MAR
      1→R							命令存储器读
      M(MAR)→MDR					现行指令从存储器中读至MDR
      (MDR)→IR					现行指令→IR
      OP(IR)→IR					指令的操作码→CU译码
      (PC)+1→PC					形成下一条指令的地址
      
    • 间址周期的微操作命令。间址周期完成取操作数地址的任务,具体微操作命令如下:

      Ad(IR)→MAR					将指令字中的地址码(形式地址)→MAR
      1→R							命令存储器读
      M(MAR)→MDR					将有效地址从存储器读至MDR
      
    • 执行周期的微操作命令。执行周期的微操作命令视不同指令而定。

      a.非访存指令。

      CLA							清ACC
      COM							取反
      SHR							算术右移
      CSL							循环左移
      STP							停机指令
      

      b.访存指令

      ADD X						加法指令
      Ad(IR)→MAR,1→R
      M(MAR)→MDR
      (ACC)+(MDR)→ACC
      STA X						存数指令
      Ad(IR)→MAR,1→W
      (ACC)→MDR
      LDA X						取数指令
      

      c.转移指令

      JMP X						无条件转移指令
      BAN X						条件转移指令(负则转)
      
  3. CPU的控制方式:产生不同微操作命令序列所用的时序控制方式。

    • 同步控制方式。所谓同步控制方式,是指系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号。通常以最长的微操作序列和最烦琐的微操作作为标准,采取完全统一的、具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令。

      同步控制方式的优点是控制电路简单,缺点是运行速度慢。

    • 异步控制方式。异步控制方式不存在基准时标信号,各部件按自身固有的速度工作,通过应答方式进行联络。

      异步控制方式的优点是运行速度快,缺点是控制电路比较复杂。

    • 联合控制方式。联合控制方式是介于同步、异步之间的一种折中。这种方式对各种不同的指令的微操作实行大部分采用同步控制、小部分采用异步控制的办法。

  4. 硬布线控制器设计步骤

    【王道】计算机组成原理 知识点总结5——中央处理器_第9张图片

    • 分析每个阶段的微操作序例
    • 选择CPU的控制方式
    • 安排微操作时序
    • 电路设计
5.4.3 微程序控制器

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

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

    ​ 微程序设计思想就是将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令

    ​ 这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。

    • 微命令与微操作
      • 一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的、不可再分解的操作。
      • 在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令称为微命令,它是构成控制序列的最小单位。
      • 微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程。
      • 微命令有相容性和互斥性之分。
        • 相容性微命令是指那些可以同时产生、共同完成某一些微操作的微命令;
        • 而互斥性微命令是指在机器中不允许同时出现的微命令。
    • 微指令与微周期
      • 微指令是若千微命令的集合。存放微指令的控制存储器的单元地址称为微地址。
        • 操作控制字段,又称微操作码字段,用于产生某一步操作所需的各种操作控制信号
        • 顺序控制字段,又称微地址码字段,用于控制产生下一条要执行的微指令地址。
      • 微周期是指执行一条微指令所需的时间,通常为一个时钟周期。
    • 主存储器与控制存储器
      • 主存储器用于存放程序和数据,在CPU外部,用RAM实现
      • 控制存储器 (CM) 用于存放微程序,在CPU内部,用ROM实现
    • 程序与微程序
      • 程序是指令的有序集合,用于完成特定的功能
      • 微程序是微指令的有序集合,一条指令的功能由一段微程序来实现
    • 寄存器区分
      • 地址寄存器 (MAR)。用于存放主存的读/写地址。
      • 微地址寄存器 (CMAR)。用于存放控制存储器的读/写微指令的地址,
      • 指令寄存器 (IR)。用于存放从主存中读出的指令。
      • 微指令寄存器(CMDR或μIR)。用于存放从控制存储器中读出的微指令。
  2. 微程序控制器组成和工作过程

    • 微程序控制器的基本组成

      【王道】计算机组成原理 知识点总结5——中央处理器_第10张图片

      • 控制存储器。它是微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可用只读存储器ROM构成
      • 微指令寄存器。用于存放从CM中取出的微指令,它的位数同微指令字长相等
      • 微地址形成部件。用于产生初始微地址和后维微地址,以保证微指令的连续执行
      • 微地址寄存器。接收微地址形成部件送来的微地址,为在CM中读取微指令作准备
    • 微程序控制器的工作过程

      • ①执行取微指令公共操作。具体的执行是:在机器开始运行时,自动将取指微程序的入口地址送入CMAR,并从CM中读出相应的微指令送入CMDR。取指微程序的入口地址一般为CM的0号单元,当取指微程序执行完后,从主存中取出的机器指令就已存入指令寄存器中
      • ②由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入CMAR
      • ③从CM中逐条取出对应的微指令并执行。
      • ④执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续第①步,以完成取下一条机器指令的公共操作。
    • 微程序和机器指令

      ​ 一条机器指令对应一个微程序。由于任何机器指令的取指令操作都是相同的,因此可将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出并送至指令寄存器。

  3. 微指令的编码方式

    ​ 微指令的编码方式又称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长。

    • 直接编码(直接控制)方式

      • 编码方式:微指令的微命令字段中每位都代表一个微命令。选用或不选用某个微命令,只要将表示该微命令的对应位设置成1或0即可。每个微命令对应并控制数据通路中的一个微操作。

      ​ 微指令的直接编码方式如下图所示。

      image-20230830162448872

      • 优点:简单、直观,执行速度快,操作并行性好
      • 缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控制存储器容量极大
    • 字段直接编码方式

      • 编码方式:将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义与其他字段无关。

      【王道】计算机组成原理 知识点总结5——中央处理器_第11张图片

      • 优点:可以缩短微指令字长

      • 缺点:因为要通过译码电路后再发出微命令,因此比直接编码方式慢

      • 分段原则:

        ①互斥性微命令分在同一段内,相容性微命今分在不同段内。

        ②每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间

        ③一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作

    • 字段间接编码方式

      • 编码方式:一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,因此称为字段间接编码,又称隐式编码。

      • 优点:可进一步缩短微指令字长

      • 缺点:但因削弱了微指令的并行控制能力,因此通常作为字段直接编码方式的一种辅助手段。

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

    后继微地址的形成主要有以下两大基本类型:

    • 直接由微指令的下地址字段指出。微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后维微指令的地址,这种方式又称断定方式

    • 根据机器指令的操作码形成。机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成

    • 其他方式:

      ①增量计数器法,即(CMAR)+1→CMAR,适用于后继微指令的地址连续的情况
      ②根据各种标志决定微指令分支转移的地址。
      ③通过测试网络形成。
      ④由硬件直接产生微程序入口地址,

  5. 微指令的格式

    微指令格式与微指令的编码方式有关,通常分水平型微指令和垂直型微指令两种。

    • 水平型微指令

      从编码方式看,直接编码、字段直接编码、字段间接编码和混合编码都属于水平型微指令。一条水平型微指令定义并执行几种并行的基本操作,指令字中的一位对应一个控制信号,有输出时为1,否则为0。

      image-20230830163629631

      • 优点是微程序短,执行速度快
      • 缺点是微指令长,编写微程序较麻烦
    • 垂直型微指令

      垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能。一条垂直型微指令只能定义并执行一种基本操作

      image-20230830163745115

      • 微指令短、简单、规整,便于编写微程序
      • 微程序长执行速度慢,工作效率低
    • 混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作。

      微指令较短,仍便于混合型微指令编写;微程序也不长,执行速度加快。

    • 水平型微指令和垂直型微指令的比较

      比较 水平微指令 垂直微指令
      并行能力
      执行时间
      微指令字长短 指令字较长;微程序短 微指令字较短;微程序长
      编程难易程度 简单
  6. 微程序控制单元的设计步骤

    • 写出对应机器指令的微操作命令及节拍安排。
    • 确定微指令格式。
    • 编写微指令码点。
  7. 硬布线和微程序控制器的特点

    对比 微程序控制器 硬布线控制器
    工作原理 微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可 微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时产生
    执行速度
    规整性 较规整 烦琐、不规整
    应用场合 CISC CPU RISC CPU
    易扩充性 易扩充修改 困难

5.5 异常和中断机制

5.5.1 异常和中断的基本概念
  1. 异常:由CPU内部产生的意外事件被称为异常,有些教材中也称内中断

    是CPU执行一条指令时,由CPU在其内部检测到的、与正在执行的指令相关的同步事件;

  2. 中断:由来自CPU外部的设备向CPU发出的中断请求被称为中断,通常用于信息的输入和输出,有些教材中也称外中断。

    是一种典型的由外部设备触发的、与当前正在执行的指令无关的异步事件。

5.5.2 异常和中断的分类
  1. 异常的分类

    • 故障(Fault)

      • 定义:指在引起故障的指令启动后、执行结束前被检测到的异常事件。

      • 例:指令译码时,出现“非法操作码”;取数据时,发生**“缺段”或“缺页"**;执行整数除法指令时,发现“除数为0”等。

      • 处理:内核程序修复后会把CPU使用权还给应用程序,让它继续执行。(如缺页中断)

        对于“非法操作码”和“除数为0”等,因为无法通过异常处理恢复故障,必需终止程序。

    • 自陷(Trap)

      • 定义:也称陷阱或陷入,它是预先安排的一种“异常”事件,就像预先设定的“陷阱”一样。
      • 例:“断点调试”、单步跟踪、系统调用
      • 处理:CPU在执行完自陷指令后,自动根据不同“陷阱”类型进行相应的处理,然后返回到自陷指令的下一条指令执行。注意,当自陷指令是转移指令时,并不是返回到下一条指令执行,而是返回到转移目标指令执行。

      故障和自陷异常属于软件中断(程序性异常);终止和外中断属于硬件中断

    • 终止(Abort)

      • 定义:由致命错误起,内核程序无法修复该错误,一股直接终止该应用程序。
      • 例:如控制器出错、存储器校验错误、总线错误等;此时,只能调出中断服务程序来重启系统。
  2. 中断的分类

    ​ 中断是指来自CPU外部、与CPU执行指令无关的事件引起的中断,包括IO设备发出的IO中断(如键盘输入、打印机缺纸等),或发生某种特殊事件(如用户按Esc键、定时器计数时间到)等。

    ​ 外部I/O设备通过特定的中断请求信号线向CPU提出中断请求,CPU每执行完一条指令就检查中断请求信号线,如果检测到中断请求,则进入中断响应周期。

    • 可屏蔽中断

      ​ 指通过可屏蔽中断请求线INTR向CPU发出的中断请求。CPU可以通过在中断控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它,被屏蔽的中断请求将不被送到CPU。

    • 不可屏蔽中断

      ​ 指通过专门的不可屏蔽中断请求线NMI向CPU发出的中断请求,通常是非常紧急的硬件故障,如电源掉电等。这类中断请求信号不可被屏蔽,以让CPU快速处理这类紧急事件。

  3. 中断和异常的不同点

    • “缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的,而中断不和任何指令相关联,也不阻止任何指令的完成。
    • 异常的检测由CPU自身完成,不必通过外部的某个信号通知CPU。对于中断,CPU必须通过中断请求线获取中断源的信息,才能知道哪个设备发生了何种中断。
5.5.3 异常和中断响应过程

​ CPU对异常和中断响应的过程可分为:关中断、保存断点和程序状态、识别异常和中断并转到相应的处理程序。

  1. 关中断

    在保存断点和程序状态期间,不能被新的中断打断,因此要禁止响应新的中断,即关中断。

    通常通过设置**“中断允许”(IF)触发器**来实现,

    • 若IF置为1,则为开中断,表示允许响应中断;
    • 若IF置为0,则表示关中断,表示不允许响应中断。
  2. 保存断点和程序状态

    ​ 为了能在异常和中断处理后正确返回到被中断的程序继续执行,必须将程序的断点(返回地址)送到栈或特定寄存器中。通常保存在栈中,这是为了支持异常或中断的嵌套。

    ​ 异常和中断处理后可能还要回到被中断的程序继续执行,被中断时的程序状态字寄存器PSWR的内容也需要保存在栈或特定寄存器中,在异常和中断返回时恢复到PSWR中。

  3. 识别异常和中断并转到相应的处理程序

    异常和中断源的识别有软件识别和硬件识别两种方式。

    • 软件识别方式是指CPU设置一个异常状态寄存器,用于记录异常原因。操作系统使用一个统一的异常或中断查询程序,按优先级顺序查询异常状态寄存器,以检测异常和中断类型,先查询到的先被处理,然后转到内核中相应的处理程序。
    • 硬件识别方式又称向量中断,异常或中断处理程序的首地址称为中断向量,所有中断向量都存放在中断向量表中。每个异常或中断都被指定一个中断类型号。在中断向量表中,类型号和中断向量一一对应,因而可以根据类型号快速找到对应的处理程序。

5.6 指令流水线

5.6.1 指令流水线的基本概念

​ 可从两方面提高处理机的并行性:

​ ①时间上的并行技术,将一个任务分解为几个不同的子阶段,每个阶段在不同的功能部件上并行执行,以便在同一时刻能够同时执行多个任务,进而提升系统性能,这种方法被称为流水线技术

​ ②空间上的并行技术,在一个处理机内设置多个执行相同任务的功能部件,并让这些功能部件并行工作,这样的处理机被称为超标量处理机

  1. 指令流水的定义

    ​ 一条指令的执行过程可以分为以下5个阶段:

    • 取指(IF):从指令存储器或Cache 中取指令。
    • 译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数。
    • 执行/计算地址(EX):执行运算操作或计算地址。
    • 访存(MEM):对存储器进行读写操作。
    • 写回(WB):将指令执行结果写回寄存器堆。

    ​ 把k+1条指令的取指阶段提前到第k条指令的译码阶段,从而将第k+1条指令的译码阶段与第k条指令的执行阶段同时进行,如图所示。

    【王道】计算机组成原理 知识点总结5——中央处理器_第12张图片

    ​ 理想情况下,每个时钟周期都有一条指令进入流水线,每个时钟周期都有一条指令完成,每条指令的时钟周期数(即CPI)都为1。

    为了利于实现指令流水线,指令集应具有如下特征:

    • 1)指令长度应尽量一致,有利于简化取指令和指令译码操作。否则,取指令所花时间长短不一,使取指部件极其复杂,且也不利于指令译码。
    • 2)指令格式应尽量规整,尽量保证源寄存器的位置相同,有利于在指令未知时就可取寄存器操作数,否则须译码后才能确定指令中各寄存器编号的位置。
    • 3)采用Load/Store指令,其他指令都不能访问存储器,这样可把Load/Store指令的地址计算和运算指令的执行步骤规整在同一个周期中,有利于减少操作步骤。
    • 4)数据和指令在存储器中“对齐”存放。这样,有利于减少访存次数,使所需数据在一个流水段内就能从存储器中得到。
  2. 流水线的表示方法

    通常用时空图来直观地描述流水线的执行情况。

    【王道】计算机组成原理 知识点总结5——中央处理器_第13张图片

    ​ 在时空图中,横坐标表示时间,它被分割成长度相等的时间段T;纵坐标为空间,表示当前指令所处的功能部件。

    ​ 只有大量连续任务不断输入流水线,才能充分发挥流水线的性能,而指令的执行正好是连续不断的,非常适合采用流水线技术。对于其他部件级流水线,如浮点运算流水线,同样也仅适合于提升浮点运算密集型应用的性能,对于单个运算是无法提升性能的。

5.6.2 流水线的基本实现

​ 在单周期实现中,这5个功能段是串连在一起的,如下图所示。

【王道】计算机组成原理 知识点总结5——中央处理器_第14张图片

​ 虽然不是所有指令都必须经历完整的5个阶段,但只能以执行速度最慢的指令作为设计其时钟周期的依据,单周期CPU的时钟频率取决于数据通路中的关键路径(最长路径),因此单周期CPU指令执行效率不佳。

  1. 流水线的数据通路

    一个5段流水线数据通路如下图所示。

    【王道】计算机组成原理 知识点总结5——中央处理器_第15张图片

    • IF段包括程序计数器(PC)、指令存储器、下条指令地址的计算逻辑;
    • ID段包括操作控制器、取操作数逻辑、立即数符号扩展模块;
    • EX段主要包括算术逻辑单元(ALU)、分支地址计算模块;
    • MEM段主要包括数据存储器读写模块;
    • WB段主要包括寄存器写入控制模块。

    每个流水段后面都需要增加一个流水寄存器,用于锁存本段处理完成的数据和控制信号,以保证本段的执行结果能在下个时钟周期给下一流水段使用。

  2. 流水线的控制信号

    【王道】计算机组成原理 知识点总结5——中央处理器_第16张图片

    每个流水寄存器中保存的信息包括:

    • ①后面流水段需要用到的所有数据信息,包括PC+4、指令、立即数、目的寄存器、ALU运算结果、标志信息等,它们是前面阶段在数据通路中执行的结果,
    • ②前面传递过来的后面各流水段要用到的所有控制信号。
  3. 流水线的执行过程

    ​ 由于流水线的特殊结构,所有指令都需要完整经过流水线的各功能段,只不过某些指令在某些功能段内没有任何实质性的操作,只是等待一个时钟周期,这也就意味着单条指令的执行时间还是5个功能段时间延迟的总和。

    • 取指(IF)

      从存储器中根据程序计数器PC的值取出一条指令,并将其放入指令寄存器IR中,同时更新PC的值为下一条指令的地址。

    • 译码/读寄存器(ID)

      对IR中的指令进行译码,确定指令的类型、操作码和操作数,以及要使用的寄存器或立即数。如果是转移指令,还要计算转移目标地址和判断转移条件。

    • 执行/计算地址(EX)

      根据指令的类型和操作码,对ID阶段读出的操作数进行相应的运算或操作,如加减乘除、逻辑运算、移位等。运算结果暂存在ALU输出寄存器中。

    • 访存(MEM)

      如果指令需要访问存储器,如加载或存储指令,那么在这个阶段用EX阶段计算出的有效地址从存储器中读出或写入数据。如果是分支指令,还要判断是否需要更新PC的值为转移目标地址。

    • 写回(WB)

      将EX或MEM阶段得到的结果写回到目标寄存器中,完成一条指令的执行。

5.6.3 流水线的冒险与处理

​ 在指令流水线中,可能会遇到一些情况使得流水线无法正确执行后续指令而引起流水线阻塞或停顿,这种现象称为流水线冒险。

  1. 结构冒险(资源冲突)

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

    【王道】计算机组成原理 知识点总结5——中央处理器_第17张图片

    解决办法:

    • 前一指令访存时,使后一条相关指令(以及其后续指令)暂停一个时钟周期。
    • 资源重复配置:单独设置数据存储器指令存储器,使取数和取指令操作各自在不同的存储器中进行。
  2. 数据冒险(数据冲突)

    在一个程序中,下一条指令会用到当前指令计算出的结果,此时这两条指令发生数据冲突。

    • 写后读(ReadAfterWrite,RAW)相关:表示当前指令将数据写入寄存器后,下一条指令才能从该寄存器读取数据。否则,先读后写,读到的就是错误(旧)数据。
    • 读后写(WriteAfterRead,WAR)相关:表示当前指令读出数据后,下一条指令才能写该寄存器。否则,先写后读,读到的就是错误(新)数据。
    • 写后写(WriteAfterWrite,WAW)相关:表示当前指令写入寄存器后,下一条指令才能写该寄存器。否则,下一条指令在当前指令之前写,将使寄存器的值不是最新值。
    【王道】计算机组成原理 知识点总结5——中央处理器_第18张图片

    解决办法:

    • 把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。

      可分为硬件阻塞(stall) 和软件插入“NOP”两种方法。

    • 数据旁路技术(转发机制):从执行阶段结果出来后送回ALU输入端

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

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

    当流水线遇到转移指令和其他改变PC值的指令,必需等待分支处理结果而造成断流时,会引起控制相关。

    【王道】计算机组成原理 知识点总结5——中央处理器_第19张图片

    解决办法:

    • 转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根据历史情况动态调整)
    • 预取转移成功和不成功两个控制流方向上的目标指令
    • 加快和提前形成条件码
    • 提高转移方向的猜准率
5.6.4 流水线的性能指标
  1. 流水线的吞吐率(TP)

    吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。其公式如下:
    T P = n T k TP=\frac {n} {T_k} TP=Tkn
    式中, n n n是任务数, T K T_K TK是处理完n个任务所用的总时间。

    【王道】计算机组成原理 知识点总结5——中央处理器_第20张图片

    设k为流水段的段数,Δt为时钟周期,在输入流水线任务连续的情况下,一条k段流水线能在k+n-1个时钟周期完成n个任务。流水线吞吐率为
    T P = n ( k + n − 1 ) Δ t TP=\frac {n} {(k+n-1)Δt} TP=(k+n1)Δtn
    连续输入的任务数 n → ∞ n\to\infty n时,得到最大吞吐率为 T P m a x = 1 / Δ t TP_{max}=1/Δt TPmax=1/Δt

  2. 流水线的加速比(S)

    完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。

    流水线加速比的基本公式为
    S = T 0 T k S=\frac{T_0}{T_k} S=TkT0
    式中, T 0 T_0 T0表示不使用流水线的总时间; T k T_k Tk表示使用流水线的总时间。

    【王道】计算机组成原理 知识点总结5——中央处理器_第21张图片

    一条k段流水线完成n个任务所需的时间为 T k = ( k + n − 1 ) Δ t T_k=(k+n-1)Δt Tk=(k+n1)Δt。顺序执行n个任务时,所需的总时间为 T 0 = k n Δ t T_0=knΔt T0=knΔt。将 T 0 T_0 T0 T k T_k Tk代入上式,得到流水线加速比为
    S = k n Δ t ( k + n − 1 ) Δ t = k n k + n − 1 S=\frac{knΔt}{(k+n-1)Δt}=\frac{kn}{k+n-1} S=(k+n1)ΔtknΔt=k+n1kn
    连续输入的任务数 n → ∞ n\to\infty n时,得到最大加速比为 S m a x = k S_{max}=k Smax=k

  3. 效率

    流水线的设备利用率称为流水线的效率。

    【王道】计算机组成原理 知识点总结5——中央处理器_第22张图片

    在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比。

5.6.5 高级流水线技术
  1. 超标量流水线技术

    也称动态多发射技术,每个时钟周期内可并发多条独立指令,以并行操作方式将两条或多条指令编译并执行。

    【王道】计算机组成原理 知识点总结5——中央处理器_第23张图片
    • 要配置多个功能部件

    • 指令是按顺序发射执行,不能调整指令的执行顺序

    • 通过编译优化技术,把可并行执行的指令搭配起来

  2. 超长指令字技术

    也称静态多发射技术,由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达几百位),为此需要采用多个处理部件

    【王道】计算机组成原理 知识点总结5——中央处理器_第24张图片
  3. 超流水线技术

    在流水线一个时钟周期再划分多个功能段,通过提高流水线主频的方式来提升流水线性能。

    【王道】计算机组成原理 知识点总结5——中央处理器_第25张图片

    但是流水线级数越多,用于流水寄存器的开销就越大,因而流水线级数是有限制的,并不是越多越好。

    • 超流水线CPU在流水线充满后,每个时钟周期还是执行一条指令,CPI=1,但其主频更高;
    • 多发射流水线CPU每个时钟周期可以处理多条指令,CPI<1,相对而言,多发射流水线成本更高,控制更复杂。

5.7 多处理器的基本概念

5.7.1 SISD、SIMD、MIMD的基本概念
  1. 单指令流单数据流(SISD)结构

    • 特性:在一段时间内仅执行一条指令,按指令流规定的顺序串行执行指令流中的若干条指令。

      各指令序列只能并发、不能并行,每条指令处理一两个数据;不是数据级并行技术

    • 硬件构成:传统的串行计算机结构,一个处理器和一个存储器;若采用指令流水线,需设置多个功能部件,采用多模块交叉存储器

    前面介绍的内容多属于SISD结构

  2. 单指令流多数据流(SIMD)结构

    • 特性:一个指令流同时对多个数据流进行处理,一般称为数据级并行技术。

      各指令序列只能并发、不能并行,但每条指令可同时处理很多个具有相同特征的数据

    • 硬件组成:一个指令控制部件(CU)+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器

      每个处理单元虽然执行的都是同一条指令,但是每个单元都有自己的地址寄存器,这样每个单元就都有不同的数据地址。不同处理单元执行的同一条指令所处理的不同数据

    SIMD在使用for循环处理数组时最有效,比如,一条分别对16对数据进行运算的SIMD指令,如果在16个ALU中同时运算,则只需要一次运算时间就能完成运算。

    SIMD在使用case或switch语句时效率最低,此时每个执行单元必须根据不同的数据执行不同的操作

  3. 多指令流单数据流(MISD)结构

    多条指令并行执行,处理同一个数据。现实中不存在这种计算机。

  4. 多指令流多数据流(MIMD)结构

    MIMD是指同时执行多条指令分别处理多个不同的数据,MIMD分为多计算机系统多处理器系统

    • 特性:各指令序列并行执行,分别处理多个不同的数据;是一种线程级并行、甚至是线程级以上并行技术
    • 多计算机系统
      • 特性:各计算机之间,不能通过存取指令直接访问对方的存储器,只能通过“消息传递”相互传送数据
      • 硬件组成:由多台计算机组成,因此拥有多个处理器+多个主存储器;每台计算机拥有各自的私有存储器,物理地址空间相互独立
    • 多处理器系统
      • 特性:各处理器之间,可以通过存取指令,访问同一个主存储器,可通过主存相互传送数据
      • 硬件组成:一台计算机内,包含多个处理器+一个主存储器;多个处理器共享单一的物理地址空间
  5. 向量处理器:向量处理器是SIMD的变体,是一种实现了**直接操作一维数组(向量)**指令集的CPU,而串行处理器只能处理单一数据集。

    • 基本理念:将从存储器中收集的一组数据按顺序放到一组向量寄存器中,然后以流水化的方式对它们依次操作,最后将结果写回寄存器。
    • 向量处理器在特定工作环境中极大地提升了性能,擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量
    • 硬件组成:多个处理单元,多组“向量寄存器”;主存储器应采用“多个端口同时读取”的交叉多模块存储器;主存储器大小限定了机器的解题规模,因此要有大容量的、集中式的主存储器
5.7.2 硬件多线程的基本概念

​ 为了减少线程切换过程中的开销,便诞生了硬件多线程。在支持硬件多线程的CPU中,必须为每个线程提供单独的通用寄存器组、单独的程序计数器等,线程的切换只需激活选中的寄存器,从而省略了与存储器数据交换的环节,大大减少了线程切换的开销。

​ 硬件多线程有3种实现方式:细粒度多线程、粗粒度多线程和同时多线程(SMT)。

  1. 细粒度多线程

    多个线程之间轮流交叉执行指令,多个线程之间的指令是不相关的,可以乱序并行执行。

    处理器能在每个时钟周期切换线程。

  2. 粗粒度多线程

    仅在一个线程出现了较大开销的阻塞时,才切换线程,如Cache 缺失。

    阻塞时,新线程的指令开始执行前需要重载流水线,线程切换的开销比细粒度多线程更大。

  3. 同时多线程

    同时多线程(SMT)在同一个时钟周期中,发射多个不同线程中的多条指令执行。

    Intel 处理器中的超线程(Hyper-threading)就是同时多线程SMT,即在一个单处理器或单个核中设置了两套线程状态部件,共享高速缓存和功能部件。

细粒度多线程 粗粒度多线程 同时多线程(SMT)
指令发射 各个时钟周期,轮流发射多个线程的指令 连续几个时钟周期,都发射同一线程的指令序列,流水线阻塞时,切换另一个线程 一个时钟周期内,同时发射多个线程的搭令
线程切换频率 每个时钟周期切换一次线程 只有流水线阻塞时才切换一次线程
线程切换代价 高,需要重载流水线
并行性 指令级并行,线程间不并行 指令级并行,线程间不并行 指令级并行,线程级并行

​ 三种硬件多线程方式的调度示例:

【王道】计算机组成原理 知识点总结5——中央处理器_第26张图片

5.7.3 多核处理器的基本概念

​ 多核处理器是指将多个处理单元集成到单个CPU中,每个处理单元称为一个核(core)。

​ 每个核可以有自己的Cache,也可以共享同一个Cacheo所有核一般都是对称的,并且共享主存储器,因此多核属于共享存储的对称多处理器。下图是不共享Cache的双核CPU结构。

【王道】计算机组成原理 知识点总结5——中央处理器_第27张图片

​ 在多核计算机系统中,如要充分发挥硬件的性能,必须采用多线程(或多进程)执行,使得每个核在同一时刻都有线程在执行。

​ 多核上的多个线程是在物理上并行执行的,是真正意义上的并行执行,在同一时刻有多个线程在并行执行。而单核上的多线程是一 种并发的多线程交错执行,实际上在同一时刻只有一个线程在执行

5.7.4 共享内存多处理器的基本概念
  1. 定义

    具有共享的单一物理地址空间的多处理器被称为共享内存多处理器(SMP)

    处理器通过存储器中的共享变量互相通信,所有处理器都能通过存取指令访问任何存储器的位置。注意,即使这些系统共享同一个物理地址空间,它们仍然可在自己的虚拟地址空间单独地运行程序。

  2. 分类

    • 统一存储访问(UMA)多处理器

      • 定义:每个处理器对所有存储单元的访问时间是大致相同的,即访问时间与哪个处理器提出访存请求及访问哪个字无关

      • 结构:CPU通过前端总线和北桥芯片相连,越来越多的CPU对前端总线的争用使得前端总线成为瓶颈。

      • 分类:根据处理器与共享存储器之间的连接方式,分为基于总线、基于交叉开关网络和基于多级交换网络连接等几种处理器。

    • 非统一存储访问(NUMA)多处理器

      • 定义:某些访存请求要比其他的快,具体取决于哪个处理器提出了访问请求以及访问哪个字,这是由于主存被分割并分配给了同一机器上的不同处理器或内存控制器。

      • 结构:内存控制器被集成到CPU内部,每个CPU都有独立的内存控制器。每个CPU都独立连接到一部分内存,CPU直连的这部分内存被称为本地内存。

      • 分类:处理器中不带高速缓存时,被称为NC-NUMA;处理器中带有一致性高速缓存时,被称为CC-NUMA。

      在NUMA架构下,内存的访问出现了本地和远程的区别,访问本地内存明显要快于访问远程内存。

你可能感兴趣的:(王道计算机组成原理知识点总结,考研,学习)