《计算机组成原理》第十章:控制单元的设计【知识点总结】

本章以十条机器指令为例,介绍控制单元的两种设计方法,旨在使读者初步掌握设计控制单元的思路,为今后设计计算机打下初步基础。

1. 组合逻辑设计

1.1 组合逻辑控制单元框图

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

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


1.2 微操作的节拍安排

假设机器采用同步控制,每个机器周期包含3个节拍,而且CPU内部结构如下图所示,其中MAR和MDR分别直接和地址总线和数据总线相连,并假设IR的地址码部分与MAR之间有通路。
在这里插入图片描述
安排微操作节拍时应注意以下3点:

  • 有些微操作的次序是不容改变的,故安排微操作节拍时必须注意微操作的先后顺序
  • 凡是被控制对象不同的微操作,若能在一个节拍内执行,应尽可能安排在同一个节拍内,以节省时间
  • 如果有些微操作所占的时间不长,应该将它们安排在一个节拍内完成,并且允许操作有先后次序
    按上述3条原则,以第九章分析的10条指令为例,其微操作的节拍安排如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

1.3 组合逻辑设计步骤

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

  • 1. 列出微操作命令的操作时间表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    当然,在设计逻辑图的时候要考虑门的扇入系数和逻辑级数。如果采用现成芯片,还需选择芯片型号
    采用组合逻辑设计方法设计控制单元,思路清晰,简单明了,但因为每一个微操作命令都对应一个逻辑电路,因此一旦设计完毕便会发现,这种控制单元的线路结构十分庞杂,也不规范。而且指令系统功能越全,微操作命令就越多,线路也越复杂,调试就更困难。
    为了克服这些缺点,可采用微程序设计方案。


2. 微程序设计


2.1 微程序设计思想的产生

微程序设计思想是英国剑桥大学教授M.V.Wilkes在1951年首先提出来的,为了克服组合逻辑控制单元线路庞杂的缺点,他大胆设向采用与存储程序相类似的方法,来解决微操作命令序列的形成。

Wilkes提出,将一条机器指令编写一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。然后把这些微程序存到一个控制存储器中,用寻找用户程序机器指令的方法来寻找每个微程序中的微指令。由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号(若该位为1,表示该控制信号有效;若该位为0,表示此控制信号无效),因此逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作。可见,微程序控制单元的核心部件是一个控制存储器。由于执行一条机器指令必须多次访问控制存储器以取出多条微指令来控制执行多条微指令来控制执行各个微操作,因此要求控制存储器的速度较高。但是在那时候电子器件的生成水平有限,因此这个微程序
设计思想并未实现,直到1964年的4月,世界上第一台微程序设计的机器IBM 360才研制成功。

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


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

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

2. 微程序控制单元的基本框图
下图示意了微程序控制单元的基本组成。
在这里插入图片描述
图中点画线框内为微程序控制单元,其中的控制存储器(控存)是微程序控制单元的核心部件,用来存放全部微程序,CMAR是控存地址寄存器,用来存放欲读出的微指令地址;CMDR是控存数据寄存器,用来存放从控存读出的微指令;顺序逻辑是用来控制微指令序列的,具体就是控制形成下一条微指令(后续微指令)的地址,其输入与微地址形成部件(指令寄存器相连)、微指令的下地址字段以及外来标志有关。
微指令的基本格式如下图所示,共分两个字段,一个为操作控制字段,该字段发出各种控制信号,另一个为顺序控制字段,它可指出下条微指令的地址,以控制微指令序列的执行顺序。
在这里插入图片描述

3. 工作原理
假设有一个用户程序如下所示,它存于2000H为首地址的主存空间内。

LDA X
ADD Y
STA A
STP

下面会结合不同机器指令所对应的机器微程序(图10.4)和微程序控制单元的基本组成(图10.5),分析运行上述程序时微程序控制单元的工作原理。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.3 微指令的编码方式

微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以及形成控制信号,主要有以下几种:

  • 1. 直接编码(直接控制)方式
    在微指令的操作控制字段中,每一位代表一个微操作命令,这种编码方式即为直接编码方式。如下图所示,这种方式含义清晰,而且只要微指令从控存中读出,即刻可由控制字段发出命令,速度快。但由于机器中微指令操作命令很多,可能使微指令操作控制字段达几百位,造成控存容量极大。在这里插入图片描述

  • 2. 字段直接编码方式
    这种方式就是将微指令的操作控制字段分成若干段,将一组互斥的微操作命令放在一个字段内,通过对这个字段译码,便可对应每一个微命令,如下图所示,这种方式因靠字段直接译码发出微命令,故又有显式编码之称。
    在这里插入图片描述
    采用字段直接编码方法可用较少的二进制信息表示较多的微操作命令信号。例如,3位二进制代码译码后可表示7个互斥的微命令,留出一种状态表示不发微命令,与直接编码用7位来表示7个微命令相比,减少了4位,缩短了微指令的长度。但由于增加了译码电路,使微程序的执行速度稍微减慢

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

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

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


2.4 微指令序列地址的形成

在这里插入图片描述
由上图可见,后续微指令的地址大致由两种方式形成。

  • 1. 直接由微指令的下地址字段指出(这种方式也成为断定方式)
    比如下图中的大部分微指令的下地址字段直接指出了后续微指令的地址
    在这里插入图片描述

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

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


2.5 微指令格式

微指令格式与微指令的编码方式有关,通常分为水平型微指令垂直型微指令两种。

  • 1. 水平型微指令
    水平型微指令的特点是一次能定义并执行多个并行操作的微指令。从编码方式来看,直接编码、字段直接or间接编码以及混合编码都属于水平型微指令。

  • 2. 垂直型微指令
    垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令字中,设置微操作码字段,由微操作码规定微指令的功能

比较:
水平型微指令 比 垂直型微指令 并行操作能力强、效率高、灵活性强
水平型微指令 比 垂直型微指令 执行一条机器指令所需的微指令数目少,因此速度更快
水平型微指令用较短的微程序结构换取较长的微指令结构,而垂直型微指令是用较长的微程序结构换取较短的微指令结构**
水平型微指令与机器指令差别较大,垂直型微指令与机器指令差别较小


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

通常指令系统是固定的,对应每一条机器指令的微程序是计算机设计者事先编好的,因此一般微程序无须改变,这种微程序设计技术称为静态微程序设计,其控制存储器一般采用ROM。
如果可以通过改变微指令和微程序来改变机器的指令系统,这种微程序设计技术称为动态微程序设计,控制存储器采用EPROM(带电可编程的只读存储器,可以改变其中的指令和程序)。


2.7 毫微程序设计

微程序用来解释机器指令毫微程序用来解释微程序,而组成毫微程序的毫微指令则是用来解释微指令的。
机器指令 <——微程序(微指令) <—— 毫微程序(毫微指令)

采用毫微程序设计的计算机的优点是用少量的控制存储器空间来达到程序高度的并行

毫威程序设计采用两级微程序的设计方法。
第一级微程序为垂直型微指令,并行功能不但有严格的顺序结构,有它确定后续微指令的地址,当需要时可调用第二级。
第二级微程序为水平型微指令,具有很强的并行操作能力,但不包含后续微指令的地址。
在这里插入图片描述
在这里插入图片描述


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

在这里插入图片描述


2.9 微程序设计举例

暂时没看了

1. 深入掌握CPU的工作原理,包括ALU、控制器、寄存器、存储器等部件的工作原理; 2. 熟悉和掌握指令系统的设计方法,并设计简单的指令系统; 3. 理解和掌握小型计算机的工作原理,以系统的方法建立起整机概念; 4. 理解和掌握基于VHDL语言和TEC-CA硬件平台设计模型机的方法。 二、设计要求   参考所给的16位实验CPU的设计与实现,体会其整体设计思路,并理解该CPU的工作原理。在此基础上,对该16位的实验CPU(称为参考CPU)进行改造,以设计得到一个8位的CPU。总的要求是将原来16位的数据通路,改成8位的数据通路,总的要求如下: 将原来8位的OP码,改成4位的OP码; 将原来8位的地址码(包含2个操作数),改成4位的地址码(包含2个操作数)。   在上述总要求的基础上,对实验CPU的指令系统、ALU、控制器、寄存器、存储器进行相应的改造。具体要求如下: 修改指令格式,将原来指令长为16位的指令格式改成8位的指令长格式; 设计总共16条指令的指令系统。此指令系统可以是参考CPU指令系统的子集,但参考CPU指令系统中A组和B组中的指令至少都要选用2条。此外,常见的算术逻辑运算、跳转等指令要纳入所设计的指令系统; 设计8位的寄存器,每个寄存器有1个输入端口和2个输出端口。寄存器的数量受控于每一个操作数的位数,具体要看指令格式如何设计设计8位的ALU,具体要实现哪些功能与指令系统有关。设计时,不直接修改参考CPU的VHDL代码,而是改用类似之前基础实验时设计ALU的方式设计设计8位的控制逻辑部件,具体结合指令功能、硬布线逻辑进行修改; 设计8位的地址寄存器IR、程序计数器PC、地址寄存器AR; 设计8位的存储器读写部件。由于改用了8位的数据通路,不能直接采用DEC-CA平台上的2片16位的存储芯片,需要按照基础实验3的方法设计存储器。此种方法不能通过DebugController下载测试指令,因此测试指令如何置入到存储器中是一个难点。设计时,可以考虑简单点地把指令写死在存储器中(可用于验证指令的执行),然后用只读方式读出来;或者考虑在reset的那一节拍里,实现存储器中待测试指令的置入; (可选项)设计8位的数据寄存器DR; (可选项)不直接设计存储器RAM,而是采用DEC-CA平台上的2片16位的存储芯片.在实现了第9个要求的基础上,实现由Debugcontroller置入待测试指令; (可选项)顶层实体,不是由BDF方式画图实现,而是用类似基础实验4(通用寄存器组)中设计顶层实体的方式,用VHDL语言来实现。 (可选项)自己设想   利用设计好的指令系统,编写汇编代码,以便测试所有设计的指令及指令涉及的相关功能。设计好测试用的汇编代码后,然后利用Quartus II软件附带的DebugController编写汇编编译规则。接着,利用DebugController软件把汇编编译之后的二进制代码置入到所采用的存储器中,并对设计好的8位CPU进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值