写在前面:
- 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
一、组合逻辑控制单元框图
下图示出了控制单元的外特性,其中指令的操作码是决定控制单元发出不同控制信号的关键。为了简化控制单元的逻辑,将存放在IR的n位操作码经过一个译码电路产生个输出这样,每对应一种操作码便有一个输出送至CU。当然,若指令的操作码长度可变,指令译码线路将更复杂。
控制单元的时钟输入实际上是一个脉冲序列,其频率即为机器的主频,它使CU能按一定的节拍(T)发出各种控制信号。节拍的宽度应满足数据信息通过数据总线从源到目的所需的时间。以时钟为计数脉冲,通过一个计数器(又称节拍发生器),便可产生一个与时钟周期等宽的节拍序列。如果将指令译码和节拍发生器从CU中分离出来,便可得简化的控制单元框图。
二、微操作的节拍安排
1、安排原则
假设机器采用同步控制,每个机器周期包含3个节拍,而且CPU内部结构如下图所示,其中MAR和MDR分别直接和地址总线和数据总线相连,并假设IR的地址码部分与MAR之间有通路。
安排微操作节拍时应注意以下3点:
①有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺序。
②凡是被控制对象不同的微操作,若能在一个节拍内执行,应尽可能安排在同一个节拍内以节省时间。
③如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许这些微操作有先后次序。
下面根据上一章介绍的10条指令为例进行节拍安排。
2、取指周期微操作的节拍安排
(1)根据原则②,节拍可安排两个微操作:PC→MAR,1→R。
(2)根据原则②,节拍可安排两个微操作:M(MAR)→MDR,(PC)+1→PC。
(3)节拍可安排MDR→IR,考虑到指令译码时间较短,根据原则③,可将指令译码OP(IR)-ID也安排在
节拍内。
(4)实际上(PC)+1→PC操作也可安排在节拍内,因为一旦PC→MAR后,PC的内容就可修改。
①M(MAR)→MDR:从主存取数据,用时较长,必须保证用一个时钟周期完成。
②MDR→IR:CPU内部寄存器间的数据传送,速度很快,用一个时钟周期完成它绰绰有余,可以紧接着安排另一条微命令。
3、间址周期微操作的节拍安排
(1)节拍可安排两个微操作:Ad(IR)→MAR,1→R。
(2)节拍可安排M(MAR)→MDR。
(3)节拍可安排MDR→Ad(IR)。
4、执行周期微操作的节拍安排
(1)非访存指令:
①清除累加器指令CLA:
(空)
(空)
![]()
②累加器取反指令COM:
(空)
(空)
![]()
③算数右移一位指令SHR:
(空)
(空)
![]()
,
④循环左移一位指令SCL:
(空)
(空)
![]()
,
⑤停机指令STP:
(空)
(空)
![]()
(2)访存指令:
①加法指令ADD X:
Ad(IR)→MAR,1→R
M(MAR)→MDR
(AC)+(MDR)→AC(该操作实际包括(AC)→ALU,(MDR)→ALU,ALU→AC)
②存数指令STA X:
Ad(IR)→MAR,1→W
AC→MDR
MDR→M(MAR)
③取数指令LDA X:
Ad(IR)→MAR,1→R
M(MAR)→MDR
MDR→AC
(3)转移类指令:
①无条件转移指令JMP X:
(空)
(空)
Ad(IR)→PC
②有条件转移(负则转)指令BAN X:
(空)
(空)
![]()
5、中断周期微操作的节拍安排
在执行周期的最后时刻,CPU要向所有中断源发中断查询信号,若检测到某个中断源有请求,并且未被屏蔽又被排队选中,则在允许中断的条件下,CPU进人中断周期,此时CPU由中断隐指令完成下列操作(假设程序断点存入主存0号地址单元内):
0→MAR,1→W
PC→MAR
MDR→M(MAR),向量地址→PC
关中断,将允许中断触发器清零,记作0→EINT(该操作可直接由硬件线路完成)
三、组合逻辑设计步骤
1、列出微操作命令的操作时间表
2、写出微操作命令的最简逻辑表达式
以M(MAR)→MDR微操作命令为例,可写出其逻辑表达式:
3、画出微操作命令的逻辑图
以M(MAR)→MDR微操作命令为例,可画出其逻辑图: