第五章 中央处理器

CPU的功能和组成

CPU的功能

中央处理器(Central Processing Unit)是计算机的核心部件,通常简称为CPU,控制计算机自动完成取指令和执行指令任务

CPU对整个计算机系统的运行是极其重要的

CPU的基本功能:
指令控制

  • 程序的顺序控制
  • 将指令从内存中取到CPU里,并决定下条要执行的指令的地址
  • CPU内与指令控制功能相关的部件:
    • 程序计数器PC(Program Counter),又名指令计数器、指令地址计数器或指令指针
      • 用于确定下一条指令的地址
      • 在程序开始执行前,将程序的第一条指令所在的 内存单元地址送入PC
      • 顺序执行指令时,CPU将自动修改PC的内容,加上指令的长度,使其保持将要执行的下一条指令的地址
      • 执行转移类操作时,将程序的后继指令的地址送入PC
    • (内存)地址寄存器MAR/AR(Address Register)
      • 保存当前CPU所访问的内存单元或I/O接口的地址
      • 连接到地址总线
      • 由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止
    • (内存)数据寄存器MDR/DR(Data Register),缓冲寄存器
      • CPU和数据总线的缓冲
      • 功能:
        输入缓冲:暂存由内存单元或I/O接口读出的指令或数据
        输出缓冲:暂存向内存单元或I/O接口存入的数据
      • 作用:
        CPU和内存、外部设备接口之间信息传送的中转站
        补偿CPU和内存、外设接口之间操作速度的差别
        作为内存操作数的缓冲参加CPU的运算

操作控制

  • 指令取出后,CPU依其操作码字段和形式地址字段解释指令,指出是何操作、如何得到操作数地址
  • CPU产生每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
  • CPU内与操作控制功能相关的部件:
    • 指令寄存器IR(Instruction Register)
      • 保存当前正在执行的一条指令的二进制代码
      • 指令执行时,指令首先被从内存取到缓冲寄存器中,然后再传送至指令寄存器
      • 指令寄存器中操作码字段就是指令译码器的输入
    • 指令译码器ID(Instruction Decoder):翻译指令
    • 操作控制器:产生操作信号

时序控制

  • 控制操作信号的有效时间
  • 在CPU内设置:时序发生器
    数据加工
  • 通过算术或逻辑运算将原始信息转换成所需的结果
  • CPU内与数据加工功能相关的部件
    • ALU(算术逻辑运算单元)
    • 浮点运算器
    • 通用寄存器组
    • 状态条件寄存器
      • 通常作为程序状态字寄存(PSWR: Program Status Word Register)的一部分
      • 功能:
        保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码
        进位标志(C)
        溢出标志(V)
        零标志(Z)
        负标志(N)
        保存中断和系统工作状态等信息
        控制位

CPU的基本组成

  1. 控制器
  2. 运算器
  3. cache
  4. 芯片级总线

控制器
性质:控制部件
组成:程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器
功能:协调和指挥整个计算机系统的操作(指令控制、操作控制、时序控制)

  • 取指:从内存中取出一条指令,并指出下一条指令在内存中的位置
  • 分析:对指令进行译码或测试,并产生相应的操作控制信号
  • 执行:指挥并控制CPU、内存和输入/输出设备之间的数据传送以及对数据的加工

运算器
性质:执行部件
组成:算术逻辑运算单元(ALU)、寄存器组、 状态条件寄存器
功能:数据加工

  • 算术运算
  • 逻辑运算与逻辑测试

CPU中的主要寄存器
程序计数器(PC)
指令寄存器(IR)
内存数据寄存器(MDR)
内存地址寄存器(MAR)
通用寄存器(R0~R3)
程序状态字寄存器(PSWR)

各个寄存器的位数和什么因素相关呢?

  • 程序计数器(PC)和PC位数相同
  • 指令寄存器(IR)和指令长度有关
  • 内存数据寄存器(MDR)和数据总线宽度有关
  • 内存地址寄存器(MAR)存储空间地址长度有关
  • 通用寄存器(R0~R3)没有限定长度,和字长有关
  • 程序状态字寄存器(PSWR)不限定

例题

例题

操作控制器与时序产生器

操作控制器的功能:
根据不同的指令产生不同的控制信号,以便控制何时打开/关闭数据通路,从而完成取指令和执行指令的控制

操作控制器可分为两种类型:

时序逻辑型 ---->硬布线控制器(组合逻辑控制器)

用组合逻辑电路产生固定时序控制信号
控制信号形成部件是由门电路组成的复杂树形网络
优点:速度快
缺点:时序控制信号形成部件的结构不规整,设计、调试、维护困难,难以实现设计自动化
存储逻辑型---->微程序控制器(存储逻辑控制器)

采用存储逻辑实现
微操作信号代码化,将每条机器指令转化为一段微程序并存入控制存储器中,微操作控制信号由微指令产生(软件不可见)
优点:设计规整,调试、维护及更新、扩充指令方便,易于实现自动化设计
缺点:指令执行速度比硬布线控制器

时序产生器 (Timer Generator,TG) :
产生并发出计算机所需要的时序控制信号
对各种操作信号实施时间上的控制

5.2 指令周期

指令周期

指令周期

  • CPU从内存取出并执行一条指令的时间
  • 连续两次发送取指令地址之间的间隔时间
  • 取指时间+执行时间

时钟周期(节拍脉冲、节拍周期或T周期)

  • 操作的最基本时间单位
  • 一个指令周期由多个时钟周期构成

CPU周期(机器周期)

  • CPU与内存交换一次信息的时间

不同机器中术语的含义未必相同:现代计算机已较少采用三级时序系统,机器周期的概念逐渐消失(机器周期=时钟周期)

指令周期、时钟周期、CPU周期的关系
指令周期、时钟周期、CPU周期的关系

指令的执行过程

取指阶段
取操作数阶段
执行阶段

取指阶段(fetch)
每条指令的第一个CPU周期都是取指周期

  • 从内存指定单元取出当前指令送至CPU内的指令寄存器IR
  • 修改程序计数器PC,以便取下一条指令
  • 对指令的操作码字段进行译码测试,以便确定下一步进行何种操作

取指阶段

分析指令
—按指令规定内容执行指令

不同指令的操作步骤数
和具体操作内容差异很大

—检查有无中断请求

若无,则转入下一条指令的执行过程
形成下一条指令地址

指令周期的概念
指令周期 :CPU从内存取出一条指令并执行完这条指令的时间总和

CPU周期 :又称机器周期,从内存读取一个指令字的最短时间

时钟周期:又称T周期节拍脉冲,是处理操作的最基本单位,一个CPU周期包含若干个T周期

1个指令周期 = 若干个CPU周期
1个CPU周期 = 若干个时钟周期

在这里插入图片描述
在这里插入图片描述

MOV指令

MOV是RR型指令,需要两个CPU 周期
在第一个CPU周期,即取指令阶段:

• ① 从指存取出指令
• ② 对程序计数器PC加1,以便为取下一条指令做好准备
• ③ 对指令操作码进行译码或测试,以便确定进行什么操作

在第二个CPU周期,即执行指令阶段,完成两个通用寄存器R0、R1之间的数据传送操作

在这里插入图片描述
取指周期

① 程序计数器PC中装入第1条指令地址101(八进制)
② PC的内容被放到指令地址总线ABUS(I)上,对指存进行译码,并启动读命令
③ 从101号地址读出的MOV指令通过指令总线IBUS装入指令寄存器IR
④ 程序计数器内容加1,变成102,为取下一条指令做好准备
⑤ 指令寄存器中的操作码(OP)被译码
⑥ CPU识别出是MOV指令

执行周期

① 操作控制器(OC)送出控制信号到通用寄存器,选择R1(10)作源寄存器,选择R0作目标寄存器
② OC送出控制信号到ALU,指定ALU做传送操作
③ OC送出控制信号,打开ALU输出三态门,将ALU输出送到数据总线DBUS上
④ OC送出控制信号,将DBUS上的数据打入到数据缓冲寄存器DR(10)
⑤ OC送出控制信号,将DR中的数据打入到目标寄存器R0,R0的内容由00变为10

LAD指令

LAD指令是RS型指令,共需要三个CPU周期

第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将操作数的地址送往地址寄存器并完成地址译码
第3个CPU周期从内存取出操作数装入通用寄存器

LAD指令的执行周期

① 操作控制器OC发出控制命令打开IR输出三态门,将指令中的直接地址码6放到数据总线DBUS上
② OC发出操作命令,将地址码6装入数存地址寄存器AR
③ OC发出读命令,将数存6号单元中的数100读出到DBUS上
④ OC发出命令,将DBUS上的数据100装入缓冲寄存器DR
⑤ OC发出命令,将DR中的数100装入通用寄存器R1,原来R1中的数10被冲掉

ADD指令

ADD指令是RR型指令,共需要两个CPU周期

第1个是取指周期,与MOV指令相同
第2个是执行周期,执行加操作

在这里插入图片描述
ADD指令的执行周期

① 操作控制器OC送出控制命令到通用寄存器,选择R1做源寄存器,R2做目标寄存器
② OC送出控制命令到ALU,指定ALU做R1(100)和R2(20)的加法操作
③ OC送出控制命令,打开ALU输出三态门,运算结果120放DBUS上
④ OC送出控制命令,将DBUS上数据打入缓冲寄存器DR,ALU产生的进位信号保存在状态寄存器PSW中
⑤ OC送出控制命令,将DR(120)装入R2,R2中原来的内容20被冲掉

STO指令

STO指令是RS型指令,共需要三个CPU周期

第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将操作数的地址(R3)=30送往地址寄存器并完成地址译码
第3个CPU周期将(R2)=120写入到30号单元

在这里插入图片描述STO指令的执行周期

① 操作控制器OC送出操作命令到通用寄存器,选择R3内容(30)做数据存储器的单元地址
② OC发出操作命令,打开通用寄存器输出三态门,将地址30放到DBUS上
③ OC发出操作命令,将地址30打入AR,并进行数存地址译码
④ OC发出操作命令到通用寄存器,选择(R2)=120,作为数存的写入数据
⑤ OC发出操作命令,打开通用寄存器输出三态门,将120放到DBUS上
⑥ OC发出操作命令,将数据120写入数存30号单元,它原来的数据40被冲掉

JMP指令

JMP指令是无条件转移指令,共需要两个CPU周期

第1个CPU周期为取指令阶段,和MOV指令相同
第2个CPU周期将地址101送入程序计数器PC

在这里插入图片描述
JMP指令的执行周期

① OC发出操作控制命令,打开指令寄存器IR的输出三态门,将IR中的地址码101发送到DBUS上
② OC发出操作控制命令,将DBUS上的地址码101打入到程序计数器PC中,PC中的原来内容106被更换

*重点题型:CPU参数计算

CPU相关性能参数的计算

用方框图语言表示指令周期

在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期

方框 :代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作
菱形 :通常用来表示某种判别或测试,时间上它依附于紧接它的前面一个方框的CPU周期,
不单独占用一个CPU周期
符号“~”代表一个公操作

在这里插入图片描述

重点例题:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.3 时序产生器和控制方式

指令周期 :CPU从内存取出一条指令并执行完这条指令的时间总和

CPU周期 :又称机器周期,CPU从内存读取一条指令字的所需的最短时间
时钟周期 :称为T周期或节拍脉冲,是处理操作的最基本单位,一个CPU周期包含若干个T周期

1个指令周期 = 若干个CPU周期
1个CPU周期 = 若干个时钟周期

思考题:
用二进制码表示的指令和数据都放在内存里,CPU是如何识别出它们是数据还是指令呢?

从时间上来说:
取指令事件发生在指令周期的第一个CPU周期中,取数据事件发生在指令周期的后面几个CPU周期中
从空间上来说:
如果取出的是指令,一定送往指令寄存器IR,如果取出的是数据,一定送往运算器

时序信号

  1. 时序信号:使计算机准确、迅速、有条不紊地工作
  2. 时序信号产生器:给计算机各部件提供工作所需的时间标志
  3. 操作控制器利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作

总结:

  1. 计算机的协调动作需要时间标志,而且需要采用多级时序体制,而时间标志是由时序信号体现的

  2. 组成计算机硬件的器件特性决定了时序信号最基本的体制:电位-脉冲制

在这里插入图片描述

硬布线控制器的三级时序体制

主状态周期
一个触发器的状态持续时间,包含若干节拍电位
节拍电位
一个节拍电位表示一个CPU周期的时间
节拍脉冲(T周期)
一个节拍电位包含若干个节拍脉冲

三级时序图
在这里插入图片描述
微程序控制器的二级时序体制
在这里插入图片描述
节拍电位

节拍电位:把一个机器周期分为若干个相等的时间段,每一个时间段对应一个电位信号,称为节拍电位信号
节拍的宽度:取决于CPU完成一次基本操作的时间

工作脉冲

在节拍中执行的有些操作需要同步定时脉冲
节拍内可设置一个或几个工作脉冲,作为各种同步脉冲的来源
工作脉冲的宽度只占节拍电位宽度的1/n,并处于节拍的末尾

CPU周期、节拍电位、节拍脉冲的时序关系

在这里插入图片描述
时序信号产生器

微程序控制器中使用的时序信号产生器的组成:

时钟源
环形脉冲发生器
节拍脉冲和读写时序
启停控制逻辑

在这里插入图片描述
启停控制逻辑

运行标志触发器Cr的Q=1,使原始信号变为CPU所需的时序信号
运行标志触发器Cr的Q=0,封锁原始信号
总清信号CLR使Cr的Q=0

在这里插入图片描述
启停控制逻辑-启动
启动:启动信号为低电平时,在T40的后沿将1打入Cr
在这里插入图片描述
启停控制逻辑-停机

停机:停机信号为低电平时,在T40的后沿将0打入Cr

在这里插入图片描述

控制方式

控制方式:控制不同操作序列时序信号的方法

-同步控制
-异步控制
-联合控制

同步控制方式

在任何情况下,已定的指令在执行时所需的CPU周期数和时钟周期数都固定不变。

根据不同情况,同步控制方式可选取如下方案:

(1)采用完全统一的机器周期执行各种不同的指令
(2)采用不定长机器周期
(3)中央控制与局部控制结合

在这里插入图片描述

完全同步控制方式
采用完全统一的、具有相同时间间隔和相同数目的节拍电位作为机器周期来运行各种不同的指令

在这里插入图片描述
采用不定长机器周期

将大多数操作安排在一个较短的机器周期内完成,对某些时间较长的操作,则采取延长机器周期的方法来解决

延长机器周期:
在这里插入图片描述
中央控制与局部控制结合

将大部分指令安排在固定的机器周期完成
对少数复杂指令采用另外的时序进行定时

异步控制方式

一般采用两条控制线,即请求线和回答线

异步控制方式小结

每条指令、每2个.异操作步控控制信制号方需式要多少时间就占用多少时间
每条指令的指令周期可由多少不等的机器周期数组成
用这种方式形成的操作控制序列没有固定的CPU周期数(节拍电位)或严格的时钟周期(节拍脉冲)与之同步

联合控制方式

同步控制和异步控制相结合的方式

情况1: 
大部分操作序列安排在固定的机器周期中,
对某些时间难以确定的操作则以执行部件的“回答”信号作为本次操作的结束
情况2:
机器周期的节拍脉冲数固定,但是各条指令周期的机器周期数不固定

控制器组成总结
• 指令部件

程序计数器PC
指令寄存器
指令译码器

• 时序部件

脉冲源及启停逻辑
时序信号形成部件
控制方式

在这里插入图片描述

5.4 微程序控制器

微程序控制原理

微程序控制的基本思想

将微操作控制信号按一定规则进行信息编码形成控制字(微指令),一条机器指令对应一段“程序”该程序存放在控制存储器中,当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作因为“程序”的执行结果是实现一条机器指令的功能,所以称为“指令的微程序”

数字计算机可分为控制部件执行部件

控制器
运算器、存储器、外围设备(IO设备)

控制部件与执行部件的一种联系,就是通过控制线。控制部件通过控制线向执行部件发出各种控制命令,通常吧这种控制命令叫做微命令,而执行部件接受微命令后所进行的操作,叫做微操作

微命令和微操作

微命令 :控制部件通过控制线向执行部件发出各种控制命令

微操作 :执行部件接受微命令后所进行的操作。

微操作可分为 相容性相斥性 两种

相容性:在同时或同一个 CPU 周期内可以并行执行的微操作
相斥性:不能在同时或不能在同一个CPU 周期内并行执行的微操作

在这里插入图片描述
微指令和微程序

微指令 :在机器的一个 CPU 周期中,一组实现一定操作功能的微命令的组合,构成一条微指令
微程序 :微指令序列为微程序

机器指令和微指令的关系:
每条机器指令由一段微指令编程的微程序来解释执行

在这里插入图片描述

微指令的基本格式
在这里插入图片描述
操作控制:用来发出管理和指挥全机工作的控制信号
顺序控制:用来决定如何形成下一条微指令的地址

在这里插入图片描述
节拍电位信号和节拍脉冲信号

节拍电位信号的持续时间都是一个 CPU 周期

节拍脉冲由环形脉冲发生器产生,一个节拍电位持续时间正好包容若干个节拍脉冲

微程序控制器的组成

控制存储器:用来存放实现全部指令系统的微程序,是一种高速存储器

微地址:控存单元的地址
控存的一个单元的内容即控制字代表了某一个节拍的一组微操作控制信号的信息

微程序控制器主要由控制存储器微指令寄存器地址转移逻辑 组成

在这里插入图片描述

微程序控制器工作过程

实质上就是在微程序控制器的控制下,计算机执行机器指令的过程

从控存中取出一段取机器指令用的微程序,称为取指微程序,该微程序完成从主存中读取机器指令并送往指令寄存器

机器指令操作码通过微地址形成部件,产生对应的微程序入口地址,并送入微地址寄存器

逐条取出对应的微指令,每一条微指令提供一个微命令序列,控制有关的微操作。

执行完对应于一条机器指令的一段微程序后,返回到取指微程序的入口,以便取出下一条机器指令。不断重复,直至程序执行完毕。

举例:
假定数
a 和 b 已存放在 R1 和 R2 两寄存器中,数 6 存放在 R3 寄存器中。
算法要求先进行a+b+6 运算,然后判断结果有无进位;当进位标志 Cy=1 不减 6 ,当 Cy=0 ,减 6 ,从而可以获得正确的结果。

在这里插入图片描述
可以看到,十进制加法微程序流程图由四条微指令组成,每一条微指令用一个长方框表示。

第一条微指令为“取指”周期。
它是一条专门用来取机器指令的微指令,任务有三:

①从内存取出一条机器指令,并将指令放到指令寄存器R。在我们的例子中,取出的是“十进制加法”指令。
②对程序计数器加1,做好取下一条机器指令的准备。
③对机器指令的操作码用P,进行判别测试,然后修改微地址寄存器内容,给出下一条微指令的地址。

在我们所示的微程序流程图中,每一条微指令的地址用数字示于长方框的右上角。注意,菱形符号代表判别测试,它的动作依附于第一条微指令。第二条微指令完成a十b运算。第三条微指令完成a十b十6运算,同时又进行判别测试。不过这一次的判别标志不是P而是P2,P2用来测试进位标志Cy。根据测试结果,微程序或者转向公操作,或者转向第四条微指令。当微程序转向公操作(用符号~表示)时,如果没有外围设备请求服务,那么又转向取下一条机器指令。与此相应,第三条微指令和第四条微指令的下一个微地址就又指向第一条微指令,即“取指”微指令。

chat例子:
好的,以下是一个简单的微指令和微命令的例子,使用真正的二进制代码表示:

假设有一条指令需要将寄存器A中的值加上10,并将结果写入寄存器B中。为了执行这条指令,CPU需要生成一系列的微指令,并将它们发送给各个控制器和寄存器以完成操作。下面是这些微指令的二进制代码表示:

微指令1:
10101000 00000001 00000000

解释:

  • 前8位代表微指令的操作码,这里是10101000,用于打开内存读使能信号
  • 接下来的8位代表地址总线的值,这里是00000001,表示要读取寄存器A的值
  • 最后的8位代表数据总线的值,这里是00000000,表示不需要向数据总线输出任何数据。

微指令2:
11000000 00000010 00000000

解释:

  • 前8位代表微指令的操作码,这里是11000000,用于将从内存中读取到的值输入到ALU的A端口
  • 接下来的8位代表地址总线的值,这里是00000010,表示要读取常数10的值
  • 最后的8位代表数据总线的值,这里是00000000,表示不需要向数据总线输出任何数据

微指令3:
11100000 00000011 00000000

解释:

  • 前8位代表微指令的操作码,这里是11100000,用于将常数10和寄存器A中的值相加
  • 接下来的8位代表地址总线的值,这里是00000011,表示要向ALU输出结果
  • 最后的8位代表数据总线的值,这里是00000000,表示不需要向数据总线输出任何数据

微指令4:
10110000 00000100 00000000

解释:

  • 前8位代表微指令的操作码,这里是10110000,用于将ALU的输出写入到寄存器B中
  • 接下来的8位代表地址总线的值,这里是00000100,表示要将结果写入寄存器B
  • 最后的8位代表数据总线的值,这里是00000000,表示不需要向数据总线输出任何数据

在这个例子中,每个微指令都由3个字节组成,分别表示操作码、地址和数据。每个微指令包含了多个微命令,例如打开内存读使能信号、将地址发送到地址总线上等等。这些微命令通过组合形成微指令,最终实现了指令所需的各项操作。


**CPU周期与微指令周期的关系**

在串行方式的微程序控制器中:
`微指令周期=读出微指令的时间+执行该条微指令的时间`

为了保证整个机器控制信号的同步,可以将一个`微指令周期`设计的恰好和 CPU 周期时间相等

![在这里插入图片描述](https://img-blog.csdnimg.cn/7ebb9c8bacb640118763de53296234d7.png)
在前600ns 内进行运算,在 600ns 时间末尾运算完毕,T<sub>4</sub> 上升沿将运算结果打入某个寄存器。同时,用 T<sub>4</sub> 间隔读取下条微指令,经 200ns 延迟,下条微指令从 ROM 读出,并用 T<sub>1</sub> 上升沿打入到 μIR 。如果忽略触发器翻转延迟,下一条微指令的微命令信号从 T<sub>1</sub> 上升沿开始有效,
直到下一条微指令读出后打入 μIR 为止。

**总结**

1. 一条机器指令对应一个微程序,这个微程序是由若干条微指令序列组成的。简言之,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令进行解释和执行。
2. 从指令与微指令,程序与微程序,地址与微地址的一一对应关系来看,前者与内存储器有关,后者与控制存储器有关。
3. 每一个 CPU 周期对应一条微指令。机器指令和微指令的关系总结

## 5.5 微程序设计技术

**微指令结构的设计目标**


有利于缩短微指令字长度
有利于减小控制存储器的容量
有利于提高微程序的执行速度
有利于对微指令的修改
有利于提高微程序设计的灵活性

### 微命令编码

微指令的一般格式为:
![在这里插入图片描述](https://img-blog.csdnimg.cn/3010ebaf87bf4f61889160b80d3d086d.png)

微命令编码,即操作控制字段设计方法:


直接表示法
编码表示法
混合表示法

**直接表示法(不译法)**

在微指令的操作控制字段中每一个微命令都用一位信息表示,对应于一种微操作。设计微指令时,选用或不选用某个微命令,只要将表示该微命令的相应位设置成 1 或 0 。


优点是简单、直观、执行速度快,微命令的并行控制能力强,编制的微程序短;
缺点是微指令字长

**编码表示法(字段编译法)**
把一组`相斥性` 的微命令信号组成一个小组( 即一个字段 ),然后通过小组 (字段)译码器对每一个微命令信号进行译码,译码输出作为操作控制信号。


优点是使微指令字大大缩短
缺点是由于增加译码电路,使微程序的执行速度稍稍减慢

**编码的原则**

1. 相斥性命令分在同一字段内,相容性命令分在不同的字段内 。前者可提高信息位的利用率,缩短微指令字长;后者有利于实现并行操作,加快指令的执行速度。
2. 一般将同类操作中互斥的微命令划分在同一个字段中。
3. 每个小字段包含的信息位不能太多,一般不超过位,否则将增加译码线路的复杂性和译码时间。

> # \*重点题型:微指令编码格式
>
> [微指令编码格式](https://blog.csdn.net/weixin_51340156/article/details/112277552)

**例如**:

> 某机器指令系统总共需要256 个微命令
> 采用直接表示法,微指令的操作控制字段需 256 位
> 采用编码表示法,如将控制字段分成 4 位一段,共 16段,每个字段经一个译码器输出,可获得 16 个微命令,总共 16 段就可获得 256 个微命令。微指令的操作控制字段仅 64 位。

**混合表示法**

把`直接表示法`与`编码表示法`混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方
面的要求。在微指令中还可附设一个常数字段。该常数可作为操作数送入 ALU 运算,也可作为计数器初值用来控制微程序循环次数。

### 微地址的形成方法

根据机器指令操作码找到相应机器指令所对应的微程序的入口地址

后继微地址的产生


计数器方式
多路转移

**计数器方式**
与用PC 产生机器指令地址的方法相类似

在顺序执行微指令时,后继微地址由现行微地址加上一个增量来产生

在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。

![在这里插入图片描述](https://img-blog.csdnimg.cn/badb74fe52c14e32a4a999947cef7dae.png)

`优点`:微指令的顺序控制字段较短,微地址产生机构简单
`缺点`:多路并行转移功能较弱,速度较慢,灵活性较差

**多路转移方式**
一条微指令具有多个转移分支的能力称为多路转移。
在多路转移方式中:

1. 当微程序 不产生分支 时,后继微地址直接由微指令的`顺序控制字段`给出
2. 当微程序 出现分支 时,有若干“后选”微地址可供选择:即按顺序控制字段的`判别测试`标志和`状态条件`信息来选择其中一个微地址
3. “状态条件”有 n 位标志,可实现微程序 2<sup>n</sup> 路转移,涉及微地址寄存器的 n 位

特点:能以较短的顺序控制字段配合,实现多路并行转移,灵活性好,速度较快,但转移地址逻辑需要用组合逻辑方法实现

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a68db57b60e4941a02693deff56f7cd.png)

### 微指令格式

微指令的编译方法是决定微指令格式的主要因素


水平型微指令
垂直型微指令

**水平型微指令**
一次能定义并执行多个并行操作微命令的微指令
格式如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/cdbea0871a324ad192dbbc8062ebf7cd.png)

按照控制字段的编码方法不同,水平型微指令分为三种:


1 )全水平型 不译码法 微指令
2 )字段译码法(编码表示法)水平型微指令
3 )直接和译码相混合的水平型微指令

**垂直型微指令**
在微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能
其结构类似于机器指令的结构

实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构

举例:
设:微指令字长为16 位,微操作码 3位。

![在这里插入图片描述](https://img-blog.csdnimg.cn/e1ebc5d42666499e8676531829a0ba6f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/ce84527c08504d11a2c0e077c55f6edc.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/c557ca40513641b2b8574510bb932342.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4f59475419e54013bc9c68a704ce0073.png)

**水平型微指令与垂直型微指令的对比:**

1. 水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
2. 水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
3. 由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。
4. 水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。

**动态微程序设计**

1. 静态微程序设计
对应于一台计算机的机器指令只有一组微程序,这一组微程序设计好之后,一般无须改变而且也不好改变 。
2. 动态微程序设计
采用E<sup>2</sup>PROM 作为控制存储器,可以通过改变微指令和微程序来改变机器的指令系统 。因而可在一台机器上实现不同类型的指令系统。这种技术又称为仿真其它机器指令系统。

## 5.5 硬布线控制器

• 硬布线控制器是早期设计计算机的一种方法。
• 基本思想:把控制部件看作为产生`专门固定时序控制信号`的逻辑电路,逻辑电路以使用`最少元件`和`取得最高操作速度`为设计目标。
• 这种逻辑电路是一种由`门电路`和`触发器`构成的`复杂树形网络`,故称之为硬`布线控制器`。

**硬布线控制器的设计过程**

绘制指令的流程图 :

1. 以指令的执行过程为线索,按指令类型分类,将每条指令归纳为一个微操作序列,根据操作的先后顺序画出指令流程图。
2. 列出微操作时间表 :把指令流程图中的微操作序列合理地安排在各个机器周期的相应节拍和脉冲中去,使它们在执行的时间上不发生冲突。
3. 微操作的逻辑综合 :以每个微操作为单位进行“同类项合并”,就是把不同指令在不同周期状态,不同节拍和不同条件下所需要的同一微操作用逻辑关系式综合起来,然后加以简化使逻辑表达式更为合理。
4. 电路实现 :按照最后得到的逻辑表达式组,可用一系列组合逻辑电路加以实现。

![在这里插入图片描述](https://img-blog.csdnimg.cn/3d072e68e444461e82ee9d984dc4071e.png)**微操作的逻辑综合**
在硬布线控制器中,某一微操作控制信号由`布尔代数表达式`描述的输出函数产生。

设计方法和过程:
根据所有机器指令流程图,寻找出产生同一个微操作信号的所有条件,并与适当的节拍电位和节拍脉冲组合,从而写出其布尔代数表达式并进行简化,然后用门电路或可编程器件来实现。

**特别注意** :控制信号是电位有效还是脉冲有效,如果是脉冲有效,必须加入节拍脉冲信号进行相“与”。

**硬布线控制器的评价和时序**


速度快
电路设计太复杂
增加功能不太可能
采用三级时序

**硬布线控制器和微程序控制器的比较1**

硬布线控制器与微程序控制器相同之处:

1. 根据指令操作码和时序信号,产生各种控制信号,以便正确地建立各种数据通路,完成取指令和执行指令的控制。
2. 硬布线控制的优点是由于控制器的速度取决于电路延迟,所以速度较快。
3. 硬布线控制的主要缺点是由于将控制部件看成专门产生固定时序控制信号的逻辑电路,所以把用最少元件和取得最高速度作为设计目标。一旦设计完成,不可能通过其他的修改添加新功能。
4. 微程序控制的主要优点是,同硬布线控制器相比,具有规整性、灵活性、可维护性等一系列优点。
5. 微程序控制的主要缺点是由于微程序控制器采用了存储程序原理,所以每条指令都要从控存中取一次,因此影响了速度。

## 5.6 流水CPU

### 并行处理技术

并行性包含两种含义:


同时性:指两个以上事件在 同一时刻 发生;
并发性:指两个以上事件在 同一时间间隔 内发生。

–时间并行
–空间并行
–时间并行+空间并行

### 流水 CPU 的结构

并行处理技术的三种形式

1. `时间并行`指时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。时间并行性概念的实现方式就是采用流水处理部件 。
2. `空间并行`空间并行指资源重复,以“数量取胜”为原则来大幅度提高计算机的处理速度。
3. `时间并行+空间并行`指时间重叠和资源重复的综合应用,既采用时间并行性,也采用空间并行性

**流水计算机的系统组成**

现代流水计算机的系统中CPU 按流水线方式组织,通常由三部分组成:指令部件、指令队列、执行部件。这三个功能部件可以组成一个 3 级流水线。
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf0fda5863374feea934879940b0bd40.png)
**执行部件的配合**

为了使存储器的存取时间能与流水线的其他各过程段的速度相匹配,一般都采用`多体交叉存器`。
通常采用并行的运算部件以及部件流水线的工作方式来解决 执行段的速度匹配问题 。

1. 将执行部件分为定点执行部件和浮点执行部件两个可并行执行的部分, 分别处理定点运算指令和浮点运算指令;
2. 在浮点执行部件中,又有浮点加法部件和浮点乘除部件,它们也可以同时执行不同的指令;
3. 浮点运算部件都以流水线方式工作。

**流水CPU的时空图**
为了实现流水,首先把输入的任务或过程 分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行。当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现了子任务级的并行性。

![在这里插入图片描述](https://img-blog.csdnimg.cn/8b94b402d9b944e4afacd99fe9745fb6.png)
`IF`取指令
`ID`指令译码
`EX`:执行运算
`WB`:结果写回

![在这里插入图片描述](https://img-blog.csdnimg.cn/bda9d9492ccd4e1ead7cf88360b0efcf.png)对于非流水计算机来说,上一条指令的4 个子过程全部执行完毕后才能开始下一条指令。因此,每 4 个机器周期才有一个输出结果。

![在这里插入图片描述](https://img-blog.csdnimg.cn/d771b2377d664304ae051c0900aca1ec.png)对流水计算机来说,上一条指令与下一条指令的四个子过程在时间上可以重叠执行。因此,当流水线满载时,每一个时钟周期就可以输出一个结果。

![在这里插入图片描述](https://img-blog.csdnimg.cn/8f6ba3277d784effa2d1184dcbf85bfa.png)
由图可见:在8 个单位时间内,非流水 CPU 仅可执行 2 条指令;而流水 CPU 执行了 5 条指令;超标量流水 CPU 则执行了 10 条指令。
因此,流水 CPU 显然具有更强大的数据吞吐能力。

**流水线分类**
`指令流水线` 指指令处理步骤的并行。将指令流的处理过程划分为取指令、译码、执行、写回等几个并行处理的过程段。

`算术流水线` 指运算操作步骤的并行。如流水加法器、流水乘法器、流水除法等。

`处理机流水线` 又称为`宏流水线`,是指程序步骤的并行。由一串级联的处理机构成流水线的各个阶段,每台处理机负责某一特定的任务。

### 流水线中的主要问题

流水过程中通常会出现以下三种相关冲突使流水线断流


–资源相关
–数据相关
–控制相关

`资源相关`是指多条指令进入流水线后,在同一机器时钟周期内争用同一个功能部件所发生的冲突。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c651b4b8cb514b49ab465bae8b1b31aa.png)

**解决资源相关冲突的办法**

1. 执行 IF 过程时,若存在资源相关,则采用延迟 IF法避开相关。
2. 增设一个存储器,将指令和数据分别放在两个存储器中。或采用多端口存储器结构。
![在这里插入图片描述](https://img-blog.csdnimg.cn/95e8663bf72d4e77b42a2a546bccebf4.png)**数据相关**

在一个程序中,如果必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是 `数据相关` 的。

由于多条指令的重叠处理,当后继指令所需的操作数,刚好是前一指令的运算结果时,便发生数据相关冲突。

![在这里插入图片描述](https://img-blog.csdnimg.cn/2914a4c8450241d1b1bceb3d27f67f33.png)
**解决数据相关冲突的办法**
在流水CPU 的运算器中设置若干运算结果缓冲寄存器,暂时保留运算结果,以便于后继指令直接使用,这称为:`“向前”或定向传送技术`。

**控制相关**

控制相关冲突是由转移指令引起的。当执行转移指令时,依据转移条件的产生结果,可能会顺序取下条指令;也可能转移到新的目标地址取指令,从而使流水线`发生断流` 。
为了减小转移指令对流水线性能的影响,常用以下两种转移处理技术:


–延迟转移法
–转移预测法

**延迟转移法**
由编译程序重排指令序列来实现。基本思想是“先执行再转移 ”,即:发生转移取时并不排空指令流水线,而是让紧跟在转移指令 Ib 之后已进入流水线的少数几条指令继续完成。如果这些指令是与 Ib 结果无关的有用指令,那么延迟损失时间片正好得到了有效的
利用。

**转移预测法**
用硬件方法来实现,依据指令过去的行为来预测将来的行为。通过使用 转移取 和 顺序取 两路指令预取队列器以及目标指令 cache ,可将转移预测提前到取指阶段进行,以获得良好的效果。

### 奔腾 CPU

不考,略

## 5.7 RISC CPU

### RISC 机器的特点

RISC的三个基本要素


一个有限的简单的指令集
CPU 配备大量的通用寄存器
强调对指令流水线的优化
```

RISC机器的特征

⑴使用等长指令,典型长度是 4 个字节 (32 位)。
⑵寻址方式少且简单,一般为 2 、 3 种,最多不超过 4种,绝不出现存储器间接寻址方式。
⑶只有取数指令和存数指令访问存储器。指令中最多出现 RS 型指令,绝不出现 SS 型指令。
⑷指令集中的指令数目一般少于 100 种,指令格式一般少于 4 种。
⑸指令功能简单,控制器多采用硬布线方式,以期更快的执行速度。
⑹平均而言,所有指令的执行时间为一个处理时钟周期。
⑺指令格式中用于指派整数寄存器的个数不少于 32个,用于指派浮点数寄存器的个数不少于 16 个。
⑻强调通用寄存器资源的优化使用。
⑼支持指令流水并强调指令流水的优化使用。
⑽RlSC 技术的复杂性在它的编译程序,因此软件系统开发时间比 CISC 机器长。

在这里插入图片描述