5.4 控制器的功能和工作原理
5.4.1 控制器的结构和功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HXc7K0W0-1628143738149)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210419134639601.png)]](https://img-blog.csdnimg.cn/d34218adbbd94b50867f87bbc81cc2fd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjEyOTgzNA==,size_16,color_FFFFFF,t_70)
点画线框内的是控制器部件
运算器部件通过数据总线与内存储器,输入设备和输出设备传送数据
输入设备和输出设备通过接口电路与总线相连接
内存储器,输入设备和输出设备从地址总线接收地址信息,从控制总线得到控制信号,通过数据总线与其他部件传送数据
控制器部件从数据总线接收指令信息,从运算器部件接收指令转移地址,送出指令地址到地址总线,还要向系统中的部件提供它们运行所需要的控制信号
控制器是计算机系统的指挥中心,控制器的主要功能有:
- 从主存中取出一条指令,并指出下一条指令在主存中的位置
- 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作
- 指挥并控制CPU,主存,输入和输出设备之间的数据流动方向
根据控制器产生微操作控制信号的方式的不同,控制器可分为硬布线控制器和微程序控制器,两类控制器中的PC和IR是相同的,但确定和表示执行步骤的办法以及给出控制各部件运行所需要的控制信号的方案是不同的.
5.4.2 硬布线控制器
硬布线控制器的基本原理是根据指令的要求,当前的时序及外部和内部的状态,按时间的顺序发送一系列微操作控制信号.它由复杂的组合逻辑门电路和一些触发器构成,因此又称组合逻辑控制器
硬布线控制单元图
指令的操作码是决定控制单元发出不同操作命令(控制信号)的关键,为了简化控制单元(CU)的逻辑,将指令的操作码译码和节拍发生器从CU分离出来,便可得到简化的控制单元图
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-plABpW7J-1628143738152)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210421160403674.png)]](https://img-blog.csdnimg.cn/172bab3d340a47ddacf69f1d0701b348.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjEyOTgzNA==,size_16,color_FFFFFF,t_70)
CU的输入信号来源如下:
经指令译码器译码产生的指令信息.现行指令的操作码决定了不同指令在执行周期所需完成的不同操作,因此指令的操作码字段是控制单元的输入信号,它与时钟配合产生不同的控制信号
时序系统产生的机器周期信号和节拍信号,为了使控制单元按一定的先后顺序,一定的节奏发出各个控制信号,控制单元必须受时钟控制,即一个时钟脉冲使控制单元发送一个操作命令或发送一组需要同时执行的操作命令
来自执行单元的反馈信息即标志,控制单元有时需依赖CPU当前所处的状态产生控制信号,如BAN指令,控制单元要根据上条指令的结果是否为负来产生不同的控制信号
节拍发生器产生各机器周期中的节拍信号,使不同的微操作命令Ci(控制信号)按时间的先后发出.个别指令的操作不仅受操作码控制,还受状态标志控制, 因此CU的输入来自操作码译码电路ID,节拍发生器和状态标志,其输出到CPU内部或外部控制总线上.
根据指令操作码,目前的机器周期,节拍信号,机器状态条件,即可确定现在这个节拍下应该发出哪些"微命令"
注意: 控制单元还接收来自系统总线(控制总线)的控制信号,如中断请求,DMA请求
硬布线控制器的时序系统及微操作
- 时钟周期:用时钟信号控制节拍发生器,可以产生节拍,每个节拍的宽度正好对应一个时钟周期.在每个节拍内机器可完成一个或几个需同时执行的操作
- 机器周期: 机器周期可视为所有指令执行过程中的一个基准时间,不同指令的操作不同,指令周期也不同,访问一次存储器的时间是固定的,因此常常以存取周期作为基准时间.即内存中读取一个指令字的最短时间作为机器周期,在存储字长等于指令字长的前提下,取值周期也可视为机器周期. 在一个机器周期里可完成若干微操作,每个微操作都需一定的时间,可用时钟信号来控制产生每个微操作命令
- 指令周期:常常由若干个机器周期来表示,机器周期又称为CPU周期
- 微操作命令分析:控制单元具有发出各种操作命令(控制信号)序列的功能,这些命令与指令有关,而且必须按一定次序发出,才能使机器有序地工作
执行程序的过程中,对于不同的指令,控制单元需发出各种不同的微操作命令.一条指令分为3个工作周期:取指周期,间址周期和执行周期
取指周期的微操作命令,无论是什么指令,取指周期都需要下列微操作命令
- PC—>MAR 现行指令地址—>MAR
- I—>IR 命令存储器读
- M(MAR)—>MDR 现行指令从存储器中读至MDR
- MDR—>IR 现行指令---->IR
- OP(IR)—>CU 指令的操作码—>CU译码
- (PC)+1—>PC 形成下一条指令的地址
间址周期的微操作命令,间址周期完成取操作数地址的任务,具体微操作命令如下
- Ad(IR)—>MAR 将指令字中的地址码(形式地址)---->MAR
- I—>R 命令存储器读
- M(MAR)—>MDR 将有效地址从存储器读至MDR
执行周期的微操作命令.执行周期的微操作命令视不同指令而定
a. 非访存指令
- CLA 清ACC 0—>ACC
- COM 取反 A C C ‾ → A C C \overline{\mathrm{ACC}} \rightarrow \mathrm{ACC}ACC→ACC
- SHR 算术右移 L ( A C C ) → R ( A C C ) , A C C 0 → A C C 0 \mathrm{L}(\mathrm{ACC}) \rightarrow \mathrm{R}(\mathrm{ACC}), \mathrm{ACC}_{0} \rightarrow \mathrm{ACC}_{0}L(ACC)→R(ACC),ACC0→ACC0
- CSL 循环左移 R ( A C C ) → L ( A C C ) , A C C 0 → A C C n \mathrm{R}(\mathrm{ACC}) \rightarrow \mathrm{L}(\mathrm{ACC}), \mathrm{ACC}_{0} \rightarrow \mathrm{ACC}_{\mathrm{n}}R(ACC)→L(ACC),ACC0→ACCn
- STP 停机指令 0—>G
b.访存指令
ADD X 加法指令 Ad(IR)—>MAR
- I—>R
- M(MAR)—>MDR
- (ACC)+(MDR)---->ACC
STA X 存数指令 Ad(IR)—>MAR
- I —> W
- ACC —>MDR
- MDR—>M(MAR)
LDA X 取数指令 Ad(IR)—>MAR
- I—>R
- M(MAR)—>MDR
- MDR—>ACC
c.转移指令
- JMP X 无条件转移 Ad(IR)—>PC
- BAN X 条件转移(负则转) A 0 ⋅ A d ( I R ) + A ˉ 0 ⋅ ( P C ) → P C A_{0} \cdot A d(I R)+\bar{A}_{0} \cdot(P C) \rightarrow P CA0⋅Ad(IR)+Aˉ0⋅(PC)→PC
CPU的控制方式
控制单元控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程.由于不同指令所对应的微操作数及复杂程度不同,因此每条指令和每个微操作所需的执行时间也不同.主要有以下3种控制方式:
- 1)同步控制方式: 指系统有一个统一的时钟,所有的控制信号均来自这个统一的时钟信号.通常以最长的微操作序列和最繁琐的微操作作为标准,采取完全统一的,具有相同时间间隔和相同数目的节拍作为机器周期来运行不同的指令.同步控制方式的优点是控制电路简单,缺点是运行速度慢
- 2)异步控制方式:不存在基准时标信号,各部件按自身固有的速度工作,通过应答方式进行联络.异步控制方式的优点是运行速度快,缺点是控制电路比较复杂
- 3)联合控制方式:是介于同步,异步之间的一种折中.这种方式对各种不同的指令的微操作实行大部分采用同步控制,小部分采用异步控制的方式
硬布线控制单元设计步骤
1)分析每个阶段的微操作序列(取值,间址,执行,中断4个阶段)
2)选择CPU的控制方式(采用定长还是不定长的机器周期,每个机器周期有几个节拍)
3)如何用3个节拍完成整个机器周期内的所有的微操作
4)确定每个微操作命令的逻辑表达式,并用电路实现
假设采用同步控制方式(定长机器周期), 一个机器周期内安排3个节拍
硬布线控制器的特点:
指令越多,设计和实现就越复杂,因此一般对于RISC(精简指令集系统),如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难,由于使用纯硬件实现控制,因此执行速度很快,微操作控制信号由组合逻辑电路即时产生.
一条指令 包括:取指周期,间址周期,执行周期,中断周期.这些周期里面的操作可以分在时钟周期内完成
5.4.3 微程序控制器
微程序控制器采用存储逻辑实现,也就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器(控制存储器)中,微操作控制信号由微指令产生.
微程序控制的基本概念
微程序设计思想就是将每条机器指令编写成一个微程序,每个微程序包含若干微指令,每条微指令对应一个或几个微操作命令.这些微程序可以存到一个控制存储器中,用寻址用户程序及其指令的办法来寻址每个微程序中的微指令.目前,大多数计算机都采用微程序设计技术
机器指令—>微程序—>微指令(微操作码字段,微地址码字段)—>微操作命令
- 微命令和微操作.一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的,不可再分解的操作.在微程序控制的计算机中,将控制部件向执行部件发出各种控制命令称为微命令,它是构成控制序列的最小单位.例如,打开或关闭某个控制门的电位信号,某个寄存器的打入脉冲等.微命令和微操作是一一对应的.微命令是微操作的控制信号,微操作是微命令的执行过程
2)微指令与微周期: 微指令是若干微命令的集合,存放微指令的控制存储器的单元地址称为微地址.一条微指令通常至少包含两大部分信息:
操作控制字段,又称微操作码字段,用于产生某一步操作所需的各种操作控制信号
顺序控制字段,又称微地址码字段,用于控制产生下一条要执行的微指令地址.
微周期通常指从控制存储器中读取一条微指令并执行相应的微操作所需的时间.
3)主存储器和控制存储器:主存储器用于存放程序和数据,在CPU的外部,用RAM实现,控制存储器(CM)用于存放微程序,在CPU内部,用ROM实现.
4)程序与微程序:程序时指令的有序集合,用于完成特定的功能,微程序是微指令的有序集合,一条指令的功能由一段微程序来实现
微程序和程序是两个不同的概念,.微程序是由微指令组成的,用于描述机器指令;微程序实际上是机器指令的实时解释器,是由计算机设计者事先编制好并存放在控制存储器中的,一般不提供给用户.对于程序员来说,计算机系统中微程序的结构和功能是透明的,无需知道,而程序最终由机器指令组成,是由软件设计人员事先编制好并存放在主存或辅存中的.
- 地址寄存器(MAR):用于存放主存的读/写地址
6)微地址寄存器(CMAR):用于存放控制存储器的读/写微指令的地址
7)指令寄存器(IR):用于存放从主存中读出的指令
8)微指令寄存器(CMDR或μIR):用于存放从控制存储器中读出的微指令
微程序控制器的组成和工作过程
微程序控制器的基本组成
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vCiW56Vv-1628143738154)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210422140902129.png)]](https://img-blog.csdnimg.cn/a09579e80c1c41b1993213a6c657b74d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjEyOTgzNA==,size_16,color_FFFFFF,t_70)
1)控制存储器:微程序控制器的核心部件,用于存放各指令对应的微程序,控制存储器可用只读存储器ROM构成
2)微指令寄存器:用于存放从CM中取出的微指令,它的位数同微指令字长相等
3)微地址形成部件:用于产生初始微地址和后继微地址,以保证微指令的连续执行
4)微地址寄存器:接收微地址形成部件送来的微地址,为在CM中读取微指令作准备
微程序控制器的工作过程
微程序控制器的工作过程实际上就是微程序控制器的控制下计算机执行机器指令的过程:
- 执行取微指令公共操作.具体的执行是:在机器开始运行时,自动将取指微程序的入口地址送入CMAR,并从CM中读出相应的微指令送入CMDR,取指微程序的入口地址一般为CM的0号单元,当取指微程序执行完成后,当主存中取出的机器指令就已存入指令寄存器中
2)由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序的入口地址,并送入CMAR
3)从CM中逐条取出对应的微指令并执行
4)执行完对应于一条机器指令的一个微程序后,又回到取指微程序的入口地址,继续第1)步,以完成取下一条机器指令的公共操作
微程序和机器指令
通常,一条机器指令对应于一个微程序,由于任何一条机器指令的取指令操作都是相同的,因此可将取指令操作的微命令统一编成一个微程序,这个微程序只负责将指令从主存单元中取出并送至指令寄存器.
此外,也可编出对应间址周期的微程序和中断周期的微程序,这样,控制存储器中的微程序个数应为机器指令数再加上对应取指,间址和中断周期等共用的微程序数
注意: 若指令系统中具有n种机器指令,则控制存储器中的围城叙述至少是n+1(1为公共的取指微程序)
微指令的编码方式
微指令的编码方式又称微指令的控制方式,是指如何对微指令的控制字段进行编码,以形成控制信号,编码的目标是在保证速度的情况下,尽量缩短微指令字长
(1)直接编码(直接控制)方式
微指令的直接编码方式如下一图,直接编码法无须进行译码,微指令的微命令字段中每位都代表一个微命令.设计微指令时,选用或不选用某个微命令,只要将表示该微命令的对应位置改为1或0即可.每个微命令对应并控制数据通路中的一个微操作
这种编码的有点事简单,直观,执行速度快,操作并行性好;缺点是微指令字长过长,n个微命令就要求微指令的操作字段有n位,造成控制存储器容量极大
![ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6bdS4shR-1628143738156)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210422151040442.png)]](https://img-blog.csdnimg.cn/baa82cc506e44f01b52d617ff4764f88.png)
(2)字段直接编码方式
将微指令的微命令字段分成若干小字段,把互斥性微命令组合在同一字段中,把相容性微命令组合在不同字段中,每个字段独立编码,每种编码代表一个微命令且个字段编码含义单独定义,与其他字段无关,这就是字段直接编码方式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5kvCp0KT-1628143738158)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210422151828799.png)]](https://img-blog.csdnimg.cn/6fe63e7d350b407fb964d3dc40dd71fb.png)
方式可以缩短微指令字长,但因为要通过译码电路后再发出微命令,因此比直接编码方式慢. 微命令字段分段的原则:
- 互斥性微命令分在同一段内,相容性微命令分在不同段内
- 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
- 一般每个小段还要留出一个状态,表示本字段不发出任何微命令,因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作
(3)字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出的微命令,因此称为字段间接编码,又称隐式编码.这种方式可进一步缩短微指令字长,但因削弱了微指令的并行控制能力,因此通常作为字段直接编码方式的一种辅助手段
微指令的地址形成方式
后继微地址的形成主要有以下两种基本类型:
- 直接由微指令的下地址字段指出.微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称断定方式
2)根据机器指令的操作码形成.机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成.
实际上,微指令序列地址的形成方式还有以下几种:
增量计数器法,即(CMAR)+1—>CMAR,适用于后继微指令的地址连续的情况
根据各种标志决定微指令分支转移的地址
通过网络测试形成
由硬件直接产生微程序入口地址
电源加电后,第一条微指令的地址可由专门的硬件电路产生,也可由外部直接向CMAR输入微指令的地址,这个地址即为取指周期微程序的入口地址
微指令的格式
微指令格式与微指令的编码方式有关,通常分水平型微指令和垂直型微指令两种.
1)水平型微指令:从编码方式看,直接编码,字段直接编码,字段间接编码和混合编码都属于水平型微指令.水平型微指令的基本指令结构如下图所示,指令字中的一位对应一个控制信号,有输出时为1,否则为0.一条水平型微指令定义并执行几种并行的基本操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4fwvep2-1628143738158)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210422154658535.png)]](https://img-blog.csdnimg.cn/aaf78727dbb8465fb6e07a9ed7445ad0.png)
水平型微指令的优点是微程序短,执行速度快;缺点是微指令长,编写微程序较麻烦.
2)垂直型微指令:垂直型微指令的特点是采用类似机器指令操作码的方式,在微指令中设置微操作码字段,采用微操作码编译法,由微操作码编译法,由微操作码规定微指令的功能,其基本的指令格式如图5.15所示,一条垂直型微指令只能定义并执行一种基本操作
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0krXk0PD-1628143738159)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210422162725626.png)]](https://img-blog.csdnimg.cn/89e5929e6be6462b82fdfbb8cbe3f616.png)
垂直型微指令格式的优点是微指令短,简单,规整,便于编写微程序;缺点是微程序长,执行速度慢,工作效率低
3)混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作.微指令较短,仍便于编写,微程序也不长,执行速度加快.
4)水平型微指令和垂直型微指令的比较:
- 水平型微指令并行操作能力强,效率高,灵活性强;垂直型微指令则较差
- 水平型微指令执行一条指令的时间短;垂直型微指令执行的时间长
- 由水平型微指令解释指令的微程序,具有微指令字较长但微程序段的特点.垂直型微指令则与之相反,其微指令字较短而微程序长
- 水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对容易掌握
微程序控制单元的设计步骤
微程序控制单元设计的主要任务是编写各条机器指令所对应的微程序,具体的设计步骤如下:
1)写出对应机器指令的微操作命令及节拍安排.无论是组合逻辑设计还是微程序设计,对应相同的CPU结构,两种控制单元的微操作命令和节拍安排都是极相似的.如微程序控制单元在取指阶段发出的微操作命令及节拍安排如下:

与硬布线控制单元相比,只在T2街拍内的微操作命令不同,微程序控制单元在T2节拍内要将指令的操作码送至微地址形成部件,即OP(IR)—>微地址形成部件,以形成该条机器指令的微程序首地址.而硬布线控制单元在T2节拍内要将指令的操作码送至指令译码器,以控制CU发出相应的微命令,即OP(IR)—>ID
若将一个节拍T内的微操作安排在一条微指令中完成,上述微操作对应3条微指令,但由于微程序控制的所有控制信号都来自微指令,而微指令又存在控制存储器中,因此欲完成上述这些微操作,必须先将微指令从控制存储器中读出,即必须先给出这些微指令的地址.在取指微程序中,除第一条微指令外,其余微指令的地址均由上一条微指令的下地址字段直接给出,因此上述每条微指令都需增加一个将微指令下地址字段送至CMAR的微操作,记为Ad(CMDR)—>CMAR.取指微程序的最后一条微指令,其后继微指令的地址是由微地址形成部件形成的,即微地址形成部件—>CMAR.为了反映该地址与操作码有关,因此记为Ad(CMDR)—>CMAR,为了反映该地址与操作码有关,因此记为OP(IR)—>微地址形成部件—>CMAR
综上所述,考虑到需要形成后继微指令地址,上述分析的取指操作共需6条微指令完成:
T0 PC–>MAR, I—>R
T1 Ad(CMDR)–>CMAR
T2 M(MAR)–>MDR, (PC)+1—>PC
T3 Ad(CMDR)—>CMAR
T4 MDR—>IR
T5 OP(IR)—>微地址形成部件—>CMAR
执行阶段的微操作命令及节拍安排,分配原则类似,与硬布线控制单元微操作命令的节拍安排相比,多了将下一条微指令地址送至CMAR的微操作命令,即Ad(CMDR)—>CMAR,其余的微操作命令与硬布线控制单元相同
2)确定微指令格式.微指令格式包括微指令的编码方式,后继微指令地址的形成方式和微指令字长等
根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数.由微指令数确定微指令的顺序控制字段的位数,最后按操作控制字段位数和顺序控制字段位数就可确定微指令字长
3)编写微指令码点,根据操作控制字段每位代表的微操作命令,编写每条微指令的码点.
动态微程序设计和毫微程序设计
1)动态微程序设计:在一台微程序控制的计算机中,加入能根据用户的要求改变微程序,则这台机器就具有动态微程序设计功能.
动态微程序的设计需要可写控制寄存器的支持,否则难以改变微程序的内容.实现动态微程序设计可采用可擦除可编程只读存储器(EPROM)
2)毫微程序设计:在普通的微程序计算机中,从主存取出的每条指令是由放在控制存储器中的微程序来解释执行的,通过控制线对硬件进行直接控制
若硬件不由微程序直接控制,而是通过存放在第二级控制存储器中的毫微程序来解释的,这个第二级控制存储器就称为毫微存储器,直接控制硬件的是毫微微指令.
硬布线和微程序控制器的特点
1)硬布线控制器的特点:硬布线控制器的优点是由于控制器的速度取决于电路延迟,所以速度快,;缺点是由于将控制部件视为专门产生固定时序控制信号的逻辑电路,所以把用最少元件和取得最高速度作为设计目标,一旦设计完成,就不可能通过其他额外修改添加新功能
2)微程序控制器的特点:微程序控制器的优点是同组合逻辑控制器相比,微程序控制器具有规整性,灵活性,可维护性等一系列优点;缺点是由于微程序控制器采用了存储程序原理,所以每条指令都要从控制存储器取一次,影响速度.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-98mMxSJb-1628143738162)(C:\Users\93623\AppData\Roaming\Typora\typora-user-images\image-20210423094043498.png)]](https://img-blog.csdnimg.cn/fa7062b7447e4d38951892e87bf542a5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjEyOTgzNA==,size_16,color_FFFFFF,t_70)