《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。


网课

计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili


笔记

《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客


课后习题答案

计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客


哈尔滨工业大学计组实验

计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客

计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客


第十章 控制单元的设计

10.1 组合逻辑设计

特点:

  • 思路清晰,简单明了
  • 线路庞杂,调试困难,修改困难
  • 速度快(RISC)

10.1.1 组合逻辑控制单元CU框图

  • 将计算机的时钟接入节拍发生器,频率为主频,产生多个节拍信号,在每个节拍信号时钟的起始段CU可以产生控制命令。
  • 将存放在IR的n位操作码经过一个译码电路产生 2 n 2^n 2n个输出,每对应一种操作码便会有一个输出送至CU;
  • 输入还包括一系列标志信号
  • 在每一个节拍会输出一个或多个控制信号。多个表示这些指令能并行操作或者在一个时钟周期内可以完成。

在这里插入图片描述

10.1.2 微操作的节拍安排

假设机器采用同步控制,每个机器周期包含3个节拍。

在这里插入图片描述

(1)安排微操作时序的原则

  1. 有些微操作的次序是不容改变的
  2. 将被控制对象不同的微操作尽可能安排在同一个节拍内(尽量并行),以节省时间。
  3. 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序(可以分为上升沿和下降沿开始)。

(2)取指周期微操作的节拍安排
在这里插入图片描述

T0:PC->MAR, 1->R

T1: M(MAR)->MDR, (PC)+1->PC

T2: MDR->IR, OP(IR)->ID

(3)间址周期微操作的节拍安排

在这里插入图片描述

T0: Ad(IR)→MAR, 1→R

T1: M(MAR)→MDR

T2: MDR→Ad(IR)

(3)执行周期微操作的节拍安排

  1. 清除累加器指令CLA

该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0T2的任一节拍内,其余节拍空,例如:

在这里插入图片描述

  1. 累加器ACC取反指令COM

此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0T2的任一节拍内,其余节拍空,例如:

在这里插入图片描述

  1. 算术右移一位指令SHR

在这里插入图片描述

  1. 循环左移一位指令CSL
    在这里插入图片描述

  2. 停机指令STP

在这里插入图片描述

  1. 加法指令 ADD X

在这里插入图片描述

  1. 存数指令 STA X

在这里插入图片描述

  1. 取数指令 LDA X

在这里插入图片描述

  1. 无条件转移指令 JMP X

在这里插入图片描述

  1. 有条件转移(负则转)指令 BAN X

在这里插入图片描述

(4)中断周期微操作的节拍安排

保存断点、形成中断服务程序的入口地址、关中断
在这里插入图片描述

10.1.3 组合逻辑设计步骤

首先根据指令微操作的节拍安排列出微操作命令的操作时间表,然后写出每一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式

画出相应的组合逻辑电路图

(1)列操作时间表

在这里插入图片描述

  • I:间址周期的标志,有效则进入到间址周期,否则直接进入执行阶段,对应最后取指两行;
  • 间址周期可能有多个,用IND为间址周期标志;

(2)写微操作命令的最简逻辑表达式

在这里插入图片描述

(3)画出微操作命令的逻辑图

在这里插入图片描述

在设计逻辑图时要考虑门的扇入系数和逻辑级数。如果采用现成芯片,还需选择芯片型号。

10.2 微程序设计

组合逻辑电路线路结构十分庞杂,调试困难,为了克服这些缺点,可采用微程序设计方案。

10.2.1 微程序设计思想的产生(存储逻辑)

将一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。然后把这些微程序存到一个控制存储器中,用寻找用户程序机器指令的方法来寻找每个微程序中的微指令。由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号(若该位为1,表示该控制信号有效;若该位为0,表示此控制信号无效),因此,逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作。

微程序控制单元的核心部件是一个控制存储器。

微程序设计省去了组合逻辑设计过程中对逻辑表达式的化简步骤,无须考虑逻辑门级数和门的扇入系数,使设计更简便,而且由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改,甚至增删机器指令,有利于计算机仿真。

10.2.2 微程序控制单元框图及工作原理

(1)机器指令对应的微程序

一条机器指令对应一个微程序,由有顺序的几条微指令组成。

在这里插入图片描述

(2)微程序控制单元基本框图

在这里插入图片描述

  • 控制存储器:核心,存放微程序,只读;
  • CMAR:是控制存储器地址寄存器,用来存放欲读出的微指令地址;
  • CMDR:是控制存储器数据寄存器,用来存放从控存读出的微指令;
  • 微地址形成部件:形成微程序在控制存储器的首地址,接受来自IR的操作码字段;
  • 顺序逻辑:控制形成下一条微指令的地址(从微地址形成部件和下地址中选出一个送给CMAR)。其输入与微地址形成部件、微指令的下地址字段以及外的标志有关。

微指令基本格式

  • 操作控制字段:发出各种控制信号;

  • 顺序控制字段:下条微指令的地址(简称下地址),以控制微指令序列的执行顺序。
    在这里插入图片描述

10.2.3 微指令的编码方式

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

每一位代表一个微操作命令,“1” 表示控制信号有效,“0”表示控制信号无效。

在这里插入图片描述

  • 含义清晰,而且只要微指令从控存读出,即刻可由控制字段发出命令,速度快。
  • 但由于机器中微操作命令甚多,可能使微指令操作控制字段达几百位,造成控存容量极大。

(2)字段直接编码方式

是将微指令的操作控制字段分成若千段,将一组互斥的微操作命令放在一个字

段内,通过对这个字段译码,便可对应每一个微命令。

(因靠字段直接译码发出微命令,又称显式编码)

在这里插入图片描述

  • 可用较少的二进制信息表示较多的微操作命令信号。例如,3位二进制代码译码后可表示7个互斥的微命令,留出一种状态表示不发微命令。
  • 由于增加了译码电路,使微程序的执行速度稍微减慢。

(3)字段间接编码方式

一个字段译码结果还与其他字段译码结果有关。

(由于不是靠字段直接译码发出微命令,又称隐式编码)

在这里插入图片描述

  • 进一步缩短微指令字长
  • 削弱了微指令的并行控制能力

(4)混合编码

把直接编码和字段编码(直接或间接)混合使用,以便能综合考虑微指令的字长、灵活性和执行微程序的速度等方面的要求。

(5)其他

微指令中还可设置常数字段,用来提供常数、计数器初值等。常数字段还可以和某些解释位配合,如解释位为0,表示该字段提供常数;解释位为1,表示该字段提供某种命令,使微指令更灵活。

10.2.4 微指令序列地址的形成

顺序逻辑从多个来源中选出正确的微指令地址送入CMAR。

后续微指令地址形成原理图:

在这里插入图片描述

  1. (CMAR)+1 -> CMAR
  2. 微指令的下地址字段
  3. 指令寄存器OP字段(通过微地址形成部件)
  4. 硬件形成的微程序入口地址

(1)直接由微指令的下地址字段指出

又称断定方式。

在这里插入图片描述

(2)根据机器指令的操作码形成

在这里插入图片描述

(3)增量计数器法

在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即 ( C M A R ) + 1 → C M A R (CMAR)+1\rightarrow CMAR (CMAR)+1CMAR来形成后续微指令的地址。

(4)分支转移

根据各种标志来决定下一条微指令的地址。

微指令格式:

在这里插入图片描述

  • 转移方式:指明判别条件
  • 转移地址:指明转移成功后的去向

(5)通过测试网络形成

将顺序控制分为高位低位,高位不变,低位字段通过一个测试网络,由测试源(状态和条件)对低位地址进行变换,之后和高位地址合在一起,形成一个新的微指令地址,送入CMAR中。

在这里插入图片描述

可以用于微程序在小范围内的条件转移。

(6)由硬件产生微程序地址

  • 当开机后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址即为取指周期微程序的入口地址。

  • 当有中断请求时,若条件满足,CPU响应中断进入中断周期,此时需中断现行程序,转至对应中断周期的微程序。由于设计控制单元时已安排好中断周期微程序的入口地址,故响应中断时,可由硬件产生中断周期微程序的入口地址。

  • 当出现间接寻址时,也可由硬件产生间址周期微程序的入口地址。

10.2.5 微指令格式

(1)水平型微指令

特点:一次能定义并执行多个并行操作的微命令。

例如:直接编码、字段直接编码、字段间接编码以及直接和字段混合编码。

(2)垂直型微指令

特点:采用类似机器指令操作码的方式,在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。通常一条微指令有12个微命令,控制12种操作。

对比:

①水平型微指令比垂直型微指令并行操作能力强、效率高、灵活性强。

②水平型微指令执行一条机器指令所需的微指令数目少,因此速度比垂直型微指令的速度快。

③水平型微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令正相反它以较长的微程序结构换取较短的微指令结构。

④水平型微指令与机器指令差别较大,垂直型微指令与机器指令相似。

10.2.6 静态微程序设计和动态微程序设计

静态:CPU的指令集事先设计好,不再修改,保存在ROM里;

动态:可以修改或拓展计算机系统的指令集,增加指令。通过修改微程序的方式,在控制存储器中写入新的指令所对应的执行阶段的微程序,实现对指令集的扩展。有利于仿真,采用EPROM作为控制存储器。

10.2.7 毫微程序设计

微程序可看作是解释机器指令的,毫微程序可看作是解释微程序的,而组成毫微程序的毫微指令则是用来解释微指令的。采用毫微程序设计计算机的优点是用少量的控制存储器空间来达到高度的并行。

毫微程序控制存储器的基本组成

在这里插入图片描述

10.2.8 串行微程序控制和并行微程序控制

并行与与指令二级流水相似。

在这里插入图片描述

10.2.9 微程序设计举例

(1)写出对应机器指令的微操作及节拍安排

  1. 取指阶段的微操作及节拍安排
  • 指令取至IR后,微程序控制需由操作码形成执行阶段微程序的入口地址。

  • 在取指微程序中,除第一条微指令外,其余微指令的地址均由上一条微指令的下地址字段直接给出,因此上述每一条微指令都需要增加一个将微指令下地址字段送至CMAR的微操作,记作 Ad(CMDR) -> CMAR,而这一操作只能由下一个时钟周期T的上升沿将地址打入CMAR内。

  • 至于取指微程序的最后一条微指令,其后续微指令的地址是由微地址形成部件形成的,而且也只能由下一个T的上升沿将该地址打入CMAR中,即微地址形成部件 -> CMAR。为了反映该地址与操作码有关,故记作OP(IR) -> 微地址形成部件 -> CMAR

在这里插入图片描述

T0: PC→MAR, 1→R

T1: Ad(CMDR)→CMAR

T2: M(MAR)→MDR, (PC)+1→PC

T3: Ad(CMDR)→CMAR

T4: MDR→IR, OP(IR)→微地址形成部件(编码器)

T5: OP(IR)→微地址形成部件→CMAR

所有微指令均由T的上升沿打入CMDR中。

  1. 执行阶段的微操作及节拍安排

执行阶段的微操作由操作码性质而定,同时也需要考虑后续微指令地址的形成问题。

① CLA 指令

在这里插入图片描述

② COM 指令

在这里插入图片描述

③ SHR 指令

在这里插入图片描述

④ CSL 指令

在这里插入图片描述

⑤ STP 指令

在这里插入图片描述

⑥ ADD 指令

在这里插入图片描述

⑦ STA 指令

在这里插入图片描述

⑧ LDA 指令

在这里插入图片描述

⑨ JMP 指令

在这里插入图片描述

⑩ BAN 指令

在这里插入图片描述

(2)确定微指令格式

  1. 微指令的编码方式

  2. 后续微指令地址的形成方式

  3. 微指令字长

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

(3)编写微指令码点

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

友人帐_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值