写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。
计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili
《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客
《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客
《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客
《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客
《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客
计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客
计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客
计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客
计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客
计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客
特点:
假设机器采用同步控制,每个机器周期包含3个节拍。
(1)安排微操作时序的原则
- 有些微操作的次序是不容改变的
- 将被控制对象不同的微操作尽可能安排在同一个节拍内(尽量并行),以节省时间。
- 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序(可以分为上升沿和下降沿开始)。
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)执行周期微操作的节拍安排
该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0∼T2的任一节拍内,其余节拍空,例如:
此操作可安排在 T 0 ∼ T 2 T_0\sim T_2 T0∼T2的任一节拍内,其余节拍空,例如:
(4)中断周期微操作的节拍安排
首先根据指令微操作的节拍安排列出微操作命令的操作时间表,然后写出每一个微操作命令(控制信号)的逻辑表达式,最后根据逻辑表达式
画出相应的组合逻辑电路图。
(1)列操作时间表
(2)写微操作命令的最简逻辑表达式
(3)画出微操作命令的逻辑图
在设计逻辑图时要考虑门的扇入系数和逻辑级数。如果采用现成芯片,还需选择芯片型号。
组合逻辑电路线路结构十分庞杂,调试困难,为了克服这些缺点,可采用微程序设计方案。
将一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。然后把这些微程序存到一个控制存储器中,用寻找用户程序机器指令的方法来寻找每个微程序中的微指令。由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号(若该位为1,表示该控制信号有效;若该位为0,表示此控制信号无效),因此,逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作。
微程序控制单元的核心部件是一个控制存储器。
微程序设计省去了组合逻辑设计过程中对逻辑表达式的化简步骤,无须考虑逻辑门级数和门的扇入系数,使设计更简便,而且由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改,甚至增删机器指令,有利于计算机仿真。
(1)机器指令对应的微程序
一条机器指令对应一个微程序,由有顺序的几条微指令组成。
(2)微程序控制单元基本框图
微指令基本格式
(1)直接编码(直接控制)方式
每一位代表一个微操作命令,“1” 表示控制信号有效,“0”表示控制信号无效。
(2)字段直接编码方式
是将微指令的操作控制字段分成若千段,将一组互斥的微操作命令放在一个字
段内,通过对这个字段译码,便可对应每一个微命令。
(因靠字段直接译码发出微命令,又称显式编码)
(3)字段间接编码方式
一个字段译码结果还与其他字段译码结果有关。
(由于不是靠字段直接译码发出微命令,又称隐式编码)
(4)混合编码
把直接编码和字段编码(直接或间接)混合使用,以便能综合考虑微指令的字长、灵活性和执行微程序的速度等方面的要求。
(5)其他
微指令中还可设置常数字段,用来提供常数、计数器初值等。常数字段还可以和某些解释位配合,如解释位为0,表示该字段提供常数;解释位为1,表示该字段提供某种命令,使微指令更灵活。
顺序逻辑从多个来源中选出正确的微指令地址送入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响应中断进入中断周期,此时需中断现行程序,转至对应中断周期的微程序。由于设计控制单元时已安排好中断周期微程序的入口地址,故响应中断时,可由硬件产生中断周期微程序的入口地址。
当出现间接寻址时,也可由硬件产生间址周期微程序的入口地址。
(1)水平型微指令
特点:一次能定义并执行多个并行操作的微命令。
例如:直接编码、字段直接编码、字段间接编码以及直接和字段混合编码。
(2)垂直型微指令
特点:采用类似机器指令操作码的方式,在微指令字中,设置微操作码字段,由微操作码规定微指令的功能。通常一条微指令有12个微命令,控制12种操作。
对比:
①水平型微指令比垂直型微指令并行操作能力强、效率高、灵活性强。
②水平型微指令执行一条机器指令所需的微指令数目少,因此速度比垂直型微指令的速度快。
③水平型微指令用较短的微程序结构换取较长的微指令结构,垂直型微指令正相反它以较长的微程序结构换取较短的微指令结构。
④水平型微指令与机器指令差别较大,垂直型微指令与机器指令相似。
静态:CPU的指令集事先设计好,不再修改,保存在ROM里;
动态:可以修改或拓展计算机系统的指令集,增加指令。通过修改微程序的方式,在控制存储器中写入新的指令所对应的执行阶段的微程序,实现对指令集的扩展。有利于仿真,采用EPROM作为控制存储器。
微程序可看作是解释机器指令的,毫微程序可看作是解释微程序的,而组成毫微程序的毫微指令则是用来解释微指令的。采用毫微程序设计计算机的优点是用少量的控制存储器空间来达到高度的并行。
毫微程序控制存储器的基本组成
并行与与指令二级流水相似。
(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)编写微指令码点