第十章 控制单元的设计

第十章 控制单元的设计

 

10.1 组合逻辑设计

10.1.1 组合逻辑控制单元框图

 1. 操作码译码

  CU的外特性包含一系列输入信号和输出信号 (如下图),其中指令的操作码是决定控制单元发出不同控制信号的关键。为了简化控制单元的逻辑,将存放在IR的n位操作码经过一个译码电路产生2 n ^n n个输出,这样,每对应一种操作码便有一个输出送至CU。当然,若指令的操作码长度可变,指令译码线路将更复杂。
在这里插入图片描述

 2. 节拍发生器

  控制单元的时钟输入实际上是一个脉冲序列,其频率即为机器的主频,它使CU能按一定的节拍 (T) 发出各种控制信号。节拍的宽度应满足数据信息通过数据总线从源到目的所需的时间。以时钟为计数脉冲,通过一个计数器,又称节拍发生器,便可产生一个与时钟周期等宽的节拍序列。
在这里插入图片描述

  如果将指令译码和节拍发生器从CU中分离出来,便可得简化的控制单元框图,如下图所示。
在这里插入图片描述

10.1.2 微操作的节拍安排

假设:
  (1) 机器采用同步控制
  (2) 每个机器周期包含3个节拍
  (3) CPU内部结构如下图所示,其中MAR 和 MDR分别直接与地址总线和数据总线相连,并假设IR的地址码部分与MAR之间有通路
在这里插入图片描述
原则:
  (1) 微操作的先后顺序不得随意更改
  (2) 被控对象不同的微操作尽量安排在一个节拍内完成
  (3) 占用时间较短的微操作尽量安排在一个节拍内完成,并允许有先后顺序

 1. 取指周期微操作的节拍安排

  根据原则(2),T 0 _0 0节拍可安排两个微操作: PC→MAR,1→R。
  根据原则(2),T 1 _1 1节拍可安排 M(MAR )→MDR 和 (PC)+1→PC 两个微操作。
  T 2 _2 2节拍可安排 MDR→IR,考虑到指令译码时间较短,根据原则(3),可将指令译码OP(IR)→ID也安排在T 2 _2 2节拍内。
在这里插入图片描述

 2. 间址周期微操作的节拍安排

在这里插入图片描述

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

  (1) 非访存指令

   ① 清除累加器指令 CLA
     该指令在执行周期只有一个微操作,按同步控制的原则,此操作可安排在T 0 _0 0~T 2 _2 2的任一节拍内,其余节拍空。
在这里插入图片描述
   ② 累加器取反指令 COM
     同理,累加器取反操作可安排在T 0 _0 0~T 2 _2 2的任一节拍中。
在这里插入图片描述
   ③ 算术右移一位指令 SHR
在这里插入图片描述
   ④ 循环左移一位指令 CSL
在这里插入图片描述
   ⑤ 停机指令 STP
在这里插入图片描述

  (2) 访存指令

   ① 加法指令 ADD X
在这里插入图片描述
   ② 存数指令 STA X
在这里插入图片描述
   ③ 取数指令 LDA X
在这里插入图片描述

  (3) 转移类指令

   ① 无条件转移指令 JMP X
在这里插入图片描述
   ② 有条件转移 (负则转) 指令 BAN X
在这里插入图片描述

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

  在执行周期的最后时刻,CPU要向所有中断源发中断查询信号,若检测到某个中断源有请求,并且未被屏蔽又被排队选中,则在允许中断的条件下,CPU进入中断周期,此时CPU由中断隐指令完成下列操作 (假设程序断点存入主存0号地址单元内)
在这里插入图片描述
  此外,CPU进人中断周期,由硬件置 “0” 允许中断触发器EINT,即关中断。

10.1.3 组合逻辑设计步骤

  采用组合逻辑设计控制单元时,首先根据上述10条指令微操作的节拍安排,列出微操作命令的操作时间表,然后写出每一个微操作命令 (控制信号) 的逻辑表达式,最后根据逻辑表达式画出相应的组合逻辑电路图。

 1. 列出微操作命令的操作时间表

  下面几个表列出了上一节的10条机器指令中的6条指令的微操作命令的操作时间表。
  表中FE 、IND和EX为CPU工作周期标志,T 0 _0 0~T 2 _2 2为节拍,I为间址标志,在取指周期的T 2 _2 2时刻,若测得I=1,则IND触发器置 “1” 标志进入间址周期;若I=0,则EX触发器置 “1”,标志进入执行周期。同理,在间址周期的T 2 _2 2时刻,若测得IND=0 (表示一次间接寻址),则EX触发器置“ 1”,进入执行周期;若测得 IND=1 (表示多次间接寻址),则继续间接寻址。在执行周期的T 2 _2 2时刻,CPU要向所有中断源发中断查询信号,若检测到有中断请求并且满足响应条件,则INT触发器置 “1”,标志进入中断周期。表中未列出 INT触发器置 “1” 的操作和中断周期的微操作。
  表中第一行对应6条指令的操作码,代表不同的指令。若某指令有表中所列的微操作命令,其对应的空格内为1。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  注: 由于表格大小限制,出现了一点错误,执行周期中的COM和JMP的操作没有写出来,执行周期主要关注其他指令的微操作。

 2. 写出微操作命令的最简逻辑表达式

  纵览上表便可列出每一个微操作命令的初始逻辑表达式,经化简、整理便可获得能用现成电路实现的微操作命令逻辑表达式。例如:
在这里插入图片描述

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

  对应每一个微操作命令的逻辑表达式都可画出一个逻辑图。例如:
在这里插入图片描述
  采用组合逻辑设计方法设计控制单元的特点:
   (1) 思路清晰,简单明了
   (2) 但因为每一个微操作命令都对应一个逻辑电路,因此一旦设计完毕便会发现,这种控制单元的线路结构十分庞杂,也不规范,犹如一棵大树,到处都是不规整的枝权,而且指令系统功能越全,微操作命令就越多,线路也越复杂,调试就更困难
   (3) 但是组合逻辑设计方法速度快,随着指令数量少的RISC的出现,组合逻辑设计仍然是设计计算机的一种重要方法
  为了克服上述两条缺点,可采用微程序设计方案。
 

10.2 微程序设计

10.2.1 微程序设计思想的产生

  微程序设计思想是英国剑桥大学教授M.V.Wilkes在1951年首先提出的。
  为了克服组合逻辑控制单元线路庞杂的缺点,他大胆设想采用与存储程序相类似的方法,来解决微操作命令序列的形成。Wilkes 提出:
  将一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。
  然后把这些微程序存到一个控制存储器中,用寻找用户程序机器指令的方法来寻找每个微程序中的微指令。由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号 (若该位为1,表示该控制信号有效;若该位为0,表示此控制信号无效),因此,逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作。
  可见,微程序控制单元的核心部件是一个控制存储器。由于执行一条机器指令必须多次访问控制存储器,以取出多条微指令来控制执行各个微操作,因此要求控制存储器的速度较高。
  微程序设计省去了组合逻辑设计过程中对逻辑表达式的化简步骤,无须考虑逻辑门级数和门的扇入系数,使设计更简便,而且由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改、甚至增删机器指令,有利于计算机仿真。

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

 1. 机器指令对应的微程序

  采用微程序设计方法设计控制单元的过程就是编写每一条机器指令的微程序,它是按执行每条机器指令所需的微操作命令的先后顺序而编写的,因此,一条机器指令对应一个微程序,如下图所示。图中每一条机器指令都与一个以操作性质命名的微程序对应。
  由于任何一条机器指令的取指令操作是相同的,因此将取指令操作的命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出送至指令寄存器中,如下图所示的取指周期微程序。此外,如果指令是间接寻址,其操作也是可以预测的,也可先编出对应间址周期的微程序。当出现中断时,中断隐指令所需完成的操作可由一个对应中断周期的微程序控制完成。这样,控制存储器中的微程序个数应为机器指令数再加上对应取指、间接寻址和中断周期的3个微程序。
在这里插入图片描述

 2. 微程序控制单元的基本框图

  下图示意了微程序控制单元的基本组成。图中点画线框内为微程序控制单元,与控制单元CU相比,它们都有相同的输人,如指令寄存器、各种标志和时钟,输出也是输至CPU内部或系统总线的控制信号。
  点画线框内的控制存储器 (简称控存) 是微程序控制单元的核心部件,用来存放全部微程序;CMAR是控存地址寄存器,用来存放欲读出的微指令地址;CMDR是控存数掘寄在器,用来存放从控存读出的微指令;顺序逻辑是用来控制微指令序列的,具体就是控制形成下―条微指令 (即后续微指令) 的地址,其输人与微地址形成部件 (与指令寄存器相连) 微指令的下地址字段以及外来的标志有关。有关微指令序列地址的形成将在10.2.4节中介绍。
在这里插入图片描述
  微指令的基本格式如下图所示,共分两个字段,一个为操作控制字段,该字段发出各种控制信号;另一个为顺序控制字段,它可指出下条微指令的地址 (简称下地址),以控制微指令序列的执行顺序。

 3. 工作原理

  假设有一个用户程序如下所示,它存于以2000H为首地址的主存空间内。
在这里插入图片描述
  首先将用户程序的首地址送至PC,然后进入取指阶段。

(1)取指阶段

  ① 将取指周期微程序首地址M→CMAR
  ② 取微指令
  将对应控存M地址单元中的第一条微指令读到控存数据寄存器中,记作CM(CMAR)→CMDR
  ③ 产生微操作命令。
  第一条微指令的操作控制字段中为 “1” 的各位发出控制信号,如 PC→MAR,1→R,命令主存接收程序首地址并进行读操作。
在这里插入图片描述
  ④ 形成下一条微指令的地址
  此微指令的顺序控制字段指出了下一条微指令的地址为M +1,将 M+1送至CMAR,即Ad(CMDR)→CMAR。
  ⑤ 取下一条微指令
  将对应控存M+1地址单元中的第二条微指令读到CMDR中,即CM(CMAR)→CMDR
  ⑥ 产生微操作命令
  由第二条微指令的操作控制字段中对应 “1” 的各位发出控制信号,如M(MAR)→MDR使对应主存2000H地址单元中的第一条机器指令从主存中读出送至MDR中
在这里插入图片描述

  ⑦ 形成下一条微指令的地址
  将第二条微指令下地址字段指出的地址M+2送至CMAR,即Ad(CMDR)→CMAR
以此类推,直到取出取指周期最后一条微指令,并发出微操作命令为止。此时第一条机器指令 “LDA X” 已存至指令寄存器IR中。
在这里插入图片描述

(2)执行阶段

  ① 取数指令微程序首地址的形成
  当取数指令存入IR后,其操作码OP(IR)直接送到微地址形成部件,该部件的输出即为取数指令微程序的首地址P,且将P送至CMAR,记作OP(IR)→微地址形成部件→CMAR
  ② 取微指令
  将对应控存P地址单元中的微指令读到CMDR中,即 CM(CMAR)→CMDR
  ③ 产生微操作命令
  由微指令操作控制字段中对应 “1” 的各位发出控制信号,如Ad(IR )→MAR,1→R,命令主存读操作数
在这里插入图片描述
  ④ 形成下一条微指令的地址
将此条微指令下地址字段指出的P+1送至CMAR,即 Ad(CMDR)→CMAR
  ⑤ 取微指令,即 CM(CMAR)→CMDR。
  ⑥ 产生微操作命令。
  以此类推,直到取出取数指令微程序的最后一条微指令P+2,并发出微操作命令。至此即完成了将主存X地址单元中的操作数取至累加器AC的操作。
在这里插入图片描述
在这里插入图片描述
  这条微指令的顺序控制字段为M,即表明CPU又开始进人下一条机器指令的取指周期,控存又要依次读出取指周期微程序的逐条微指令,发出微操作命令,完成将第二条机器指令 “ADD Y” 从主存取至指令寄存器IR中…….
  微程序控制单元就是这样,通过逐条取出微指令,发出各种微操作命令,从而实现从主存逐条取出、分析并执行机器指令,以达到运行程序的目的。

  由此可见,对微程序控制单元的控存而言,内部信息一旦按所设计的微程序被灌注后,在机器运行过程中,只需具有读出的性能即可,故可采用ROM。
  此外,在微程序的执行过程中,关键问题是如何由微指令的操作控制字段形成微操作命令,以及如何形成下一条微指令的地址。这是微程序设计必须解决的问题,它们与微指令的编码方式和微地址的形成方式有关。

10.2.3 微指令的编码方式 (控制方式)

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

  在微指令的操作控制字段中,每一位代表一个微操作命令,这种编码方式即为直接编码方式。上面所述的用控制字段中的某位为 “1” 表示控制信号有效 (如打开某个控制门),以及某位为 “0” 表示控制信号无效 (如不打开某个控制门) 就是直接控制方式,如下图所示。这种方式含义清晰,而且只要微指令从控存读出,即刻可由控制字段发出命令,速度快。但由于机器中微操作命令甚多,可能使微指令操作控制字段达几百位,造成控存容量极大。
在这里插入图片描述

 2. 字段直接编码方式

  这种方式就是将微指令的操作控制字段分成若干段,将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,便可对应每一个微命令,如下图所示。这种方式因靠字段直接译码发出微命令,故又有显式编码之称。
  数据通路中的微操作之间存在两种关系:相容和互斥。相容微操作是指在数据通路中能同时进行的微操作,对应的微命令称为相容微命令;互斥微操作是指在数据通路中不能同时进行的微操作,对应的微命令称为互斥微命令。
  把互斥的放在同段,相容的放在不同段,这样就可以同时发出很多微操作,让这些微操作同时执行,一条微指令中最多可同时发出的微操作数就是微命令字段的个数。
在这里插入图片描述
  采用字段直接编码方法可用较少的二进制信息表示较多的微操作命令信号。例如,3位二进制代码译码后可表示7个互斥的微命令,留出一种状态表示不发微命令,与直接编码用7位表示7个微命令相比,减少了4位,缩短了微指令的长度。但由于增加了译码电路,使微程序的执行速度稍微减慢。
  至于操作控制字段应分几段,与需要并行发出的微命令个数有关,若需要并行发出8个微命令,就可分8段。每段的长度可以不等,与具体要求互斥的微命令个数有关,若某类操作要求互斥的微命令仅有6个,则字段长度只需安排3位即可。

 3. 字段间接编码方式

  这种方式一个字段的某些微命令还需由另一个字段中的某些微命令来解释,如下图所示。图中字段1译码的某些输出受字段2译码输出的控制,由于不是靠字段直接译码发出微命令,故称为字段间接编码,又称隐式编码。
在这里插入图片描述

  这种方法虽然可以进一步缩短微指令字长,但因削弱了微指令的并行控制能力,因此通常用作字段直接编码法的一种辅助手段。

 4. 混合编码

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

10.2.4 微指令序列地址的形成

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

  这种方式又称为断定方式。

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

  当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成。微地址形成部件实际是一个编码器,其输人为指令操作码,输出就是对应该机器指令微程序的首地址。它可采用PROM (可编程只读存储器) 实现,以指令的操作码作为PROM的地址,而相应的存储单元内容就是对应该指令微程序的首地址。

 3. 增量计数器法

  仔细分析发现,在很多情况下,后续微指令的地址是连续的,因此对于顺序地址,微指令可采用增量计数法,即(CMAR)+1→CMAR 来形成后续微指令的地址。

 4. 分支转移

  当遇到条件转移指令时,微指令出现了分支,必须根据各种标志来决定下一条微指令的地址。微指令的格式如下:
在这里插入图片描述
  其中,转移方式指明判别条件,转移地址指明转移成功后的去向,若不成功则顺序执行。也有的转移微指令中设两个转移地址,条件满足时选择其中一个转移地址;条件不满足时选择另一个转移地址。

 5. 通过测试网络形成

  微指令的地址还可通过测试网络形成,如下图所示。图中微指令的地址分两部分,高段h为非测试地址,由微指令的H段地址码直接形成;低段l为测试地址,由微指令的L段地址码通过测试网络形成。
在这里插入图片描述

 6. 由硬件产生微程序入口地址

  当电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输人微指令的地址,这个地址即为取指周期微程序的人口地址。
  当有中断请求时,若条件满足,CPU 响应中断进人中断周期,此时需中断现行程序,转至对应中断周期的微程序。由于设计控制单元时已安排好中断周期微程序的入口地址,故响应中断时,可由硬件产生中断周期微程序的入口地址。
  同理,当出现间接寻址时,也可由硬件产生间址周期微程序的入口地址。

  综合上述各种方法,可得出形成后续微指令地址的原理图,如下图所示。图中多路选择器可选择以下4路地址。
   ① (CMAR)+1一CMAR
   ② 微指令的下地址字段。
   ③ 指令寄存器 (通过微地址形成部件)
   ④ 微程序入口地址。
在这里插入图片描述

10.2.5 微指令格式

1. 水平型微指令

  一次能定义并执行多个并行操作,如直接编码、字段直接编码、字段间接编码、直接和字段混合编码。
例如直接编址,可以同时让多个微操作命令对应的位置为 “1”。
在这里插入图片描述

2. 垂直型微指令

类似机器指令操作码的方式,由微操作码字段规定微指令的功能。通常一条微指令有1-2个微命令,控制1-2种操作。这种方法不强调并行性。

3. 两种微指令格式的比较

  (1) 水平型微指令比垂直型微指令并行操作能力强,灵活性强
  (2) 水平型微指令执行一条机器指令所要的微指令数目少,速度快
  (3) 水平型微指令用较长的微指令结构换取较短的微程序结构 (例如直接编址,每个微操作命令对应一位,指令长度很长;但是由于可以并行,微程序很短),垂直型指令正好相反
  (4) 水平型微指令与机器指令差别大

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

  静态微程序无须改变,采用ROM。
  动态通过改变微指令和微程序改变机器指令,有利于仿真,但对用户要求很高,采用EPROM (可擦除可编程只读存储器)。

10.2.7 毫微程序设计

1. 毫微程序设计的基本概念

  微程序设计用微程序解释机器指令;
  毫微程序设计用毫微程序解释微程序;
  毫微指令与微指令的关系好比微指令与机器指令的关系。

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

  毫微程序设计采用两级微程序的设计方法。第一级微程序为垂直型微指令,并行功能不强,但有严格的顺序结构,由它确定后续微指令的地址,当需要时可调用第二级。第二级微程序为平型微指令,具有很强的并行操作能力,但不包含后续微指令的地址。第二级微程序执行完毕又返回到第一级微程序。两级微程序分别放在两级控制存储器内。下图示意了毫微程序控制存储器的基本组成。
在这里插入图片描述
  图中CMAR 1 _1 1为第一级控存地址寄存器,CMDR 1 _1 1存放从第一级控制存储器中读出的微指令,如果该微指令只产生一些简单的控制信号,则可以通过译码,直接形成微操作命令,不必调用第二级。如果需调用第二级控制存储器时,则将毫微程序的地址送至CMAR 2 _2 2,然后由从第二级控制存储器中读出的微指令去直接控制硬件。值得注意的是,垂直型微指令不是和水平型微指令一条一条地对应,而是由水平型微指令 (称为毫微指令) 组成的毫微程序去执行垂直型微指令的操作。毫微指令与微指令的关系就好比微指令与机器指令的关系一样。
  二级控制存储器虽然能减少控制存储器的容量,但因有时一条微指令要访问两次控制存储器,影响了速度。

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值