写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第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)安排微操作时序的原则
- 有些微操作的次序是不容改变的
- 将被控制对象不同的微操作尽可能安排在同一个节拍内(尽量并行),以节省时间。
- 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序(可以分为上升沿和下降沿开始)。
(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)执行周期微操作的节拍安排
- 清除累加器指令CLA
该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0∼T2的任一节拍内,其余节拍空,例如:
- 累加器ACC取反指令COM
此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0∼T2的任一节拍内,其余节拍空,例如:
- 算术右移一位指令SHR
-
循环左移一位指令CSL
-
停机指令STP
- 加法指令 ADD X
- 存数指令 STA X
- 取数指令 LDA X
- 无条件转移指令 JMP X
- 有条件转移(负则转)指令 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。
后续微指令地址形成原理图:
- (CMAR)+1 -> CMAR
- 微指令的下地址字段
- 指令寄存器OP字段(通过微地址形成部件)
- 硬件形成的微程序入口地址
(1)直接由微指令的下地址字段指出
又称断定方式。
(2)根据机器指令的操作码形成
(3)增量计数器法
在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即 ( C M A R ) + 1 → C M A R (CMAR)+1\rightarrow CMAR (CMAR)+1→CMAR来形成后续微指令的地址。
(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)写出对应机器指令的微操作及节拍安排
- 取指阶段的微操作及节拍安排
-
指令取至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中。
- 执行阶段的微操作及节拍安排
执行阶段的微操作由操作码性质而定,同时也需要考虑后续微指令地址的形成问题。
① CLA 指令
② COM 指令
③ SHR 指令
④ CSL 指令
⑤ STP 指令
⑥ ADD 指令
⑦ STA 指令
⑧ LDA 指令
⑨ JMP 指令
⑩ BAN 指令
(2)确定微指令格式
-
微指令的编码方式
-
后续微指令地址的形成方式
-
微指令字长
(3)编写微指令码点