计算机组成指北(六)
第九章 控制单元的功能
掌握多级时序的概念,时钟周期,节拍
相对简单,要对CU的运行有一个基本的轮廓
到现在为止,我们已经介绍完了CPU的ALU、寄存器(存储器)、中断系统,只差CU模块还没有介绍。这一章我们就来介绍CPU的最后一个组成部分:CU控制单元。
控制单位的主要功能之一就是完成指令的解释。我们以CU分析和执行指令的过程为例,说明控制单元要完成哪些功能。
微操作命令的分析
微操作,即在指令执行过程中,由CU发出的指令,比整条操作指令小的多。我们现在分别从指令执行的不同阶段,来学习CU在此期间的作用。
在介绍指令系统时我们知道,完成一条指令分4个工作周期取指周期、间址周期、执行周期和中断周期。我们就按照这四个周期,来一一分析CU的功能。
取指周期
取指周期的过程可以归纳为以下几个微操作:
-
PC将指令地址送入地址寄存器MAR,通过地址总线发出
-
这里的R指的是控制寄存器,由控制寄存器传输信号给控制总线向主存发送读命令
-
将MAR所指的主存单元中的内容经过数据总线读入MDR内
-
MDR将内容送至指令寄存器IR内
-
CU对指令的操作码进行译码
-
PC形成下一条指令的地址。注意,只有且必须在取指周期递增一次PC。如果学过8086汇编语言,你就会知道CPU执行指令的过程是先将指令读入指令寄存器,然后递增IP指向下一条指令。那么递增这个操作,实际上就是在取指周期内完成的。
间址周期
间址周期完成取操作数有效地址的任务,具体操作如下:
-
将指令的形式地址送入MAR
-
启动读操作
-
将形式地址内的数据传回MDR
-
将MDR内的有效地址送至指令寄存器的地址字段
执行周期
执行周期的过程相对比较复杂。不同于取指周期和间址周期,执行周期会根据指令操作的差异而改变。我们将分别讨论非访存指令、访存指令和转移指令的微指令操作。
非访存指令
非访存指令比较简单,因为不涉及访存,所以不需要用到总线传输以及地址及数据寄存器。有以下指令是非访存的:
指令 | 功能 | 微指令操作 |
---|---|---|
CLA | 清除ACC的值 | |
COM | 将ACC内的值取反 | |
SHR | 算术右移 | |
CSL | 循环左移 | |
STP | 停机指令 | 是停机标志 |
访存指令
访存指令需要访问主存,所以一般都会涉及到总线传输,此时控制线输出的信号根据操作类型输出可读可写。
-
加法指令 ADD X
-
将指令寄存器的形式地址送入MAR
-
控制线输出读信号
-
主存读取MAR地址中的数据送回MDR
-
ACC中的值加上MDR中的数据,计算结果保存在ACC中
-
-
存数指令 STA X
-
将形式地址送入MAR
-
控制线输出写信号
-
将ACC内的值送入MDR内
-
将MDR中的数据写入主存中MAR的地址内
-
-
取数指令 LDA X
-
形式地址送入MAR
-
控制线输出读信号
-
将主存中MAR地址内的数据取出存放在MDR中
-
将MDR中的数据送入ACC,而不是与ACC内的值相加
-
转移指令
转移指令分为无条件转移和有条件转移,对应汇编中的jmp
和jz
等指令。要实现转移指令,一般涉及到对PC的修改。
-
无条件转移 JMP X
,直接将指令中的形式地址送入PC,因为
JMP
后跟着的操作数往往就是需要跳转执行的指令地址 -
条件转移 BAN X
,条件转移实际上是看ACC的首位是否为负数(对应高电平,因为符号位取1代表负数)。是负数则转移,否则不转移。
指令周期
各类指令对应的指令周期总结如下图:
只要查看有无间接过程,就能判断有无间址周期。否则,大部分指令只需要取指周期和执行周期。判断指令经过的具体周期后,就能根据细分的周期分析执行指令时需要的微指令。
中断周期
除了取指、间址、执行外,还有一类特殊的周期是中断周期。中断往往是由外部I/O设备对CPU发出的请求产生的,所以他们有特殊的微指令操作。
我们在第八章介绍中断系统时已经讨论过,在中断周期内执行的三个步骤:
- 保存程序断点
- 形成中断服务程序入口地址
- 关中断
以上三个步骤务必牢记。接下来我们就这三个步骤讨论CU在此过程中的作用。
保存断点
保存断点我们介绍了两种方法:将断点地址存于特殊的主存空间内(0号地址),入栈保存。相应的,他们的微指令操作也各不相同。
-
存入“0”地址
-
将0号地址送入MAR中
-
控制线输出写信号
-
将此时PC的内容,也即程序断点地址送入MDR中
-
将MDR的数据送入主存的0号地址
-
-
断点入栈
-
将栈顶指针(栈指针寄存器)的值减一,把此处的地址送入MAR
-
控制线发出写信号
-
程序断点地址送入MDR
-
把MDR的数据送入对应的栈空间
-
形成入口中断地址
形成入口地址我们也介绍了两种方式:硬件向量法与软件查询法
硬件向量法:,即直接把形成的向量地址送入PC即可
软件查询法:,此时PC跳转至软件查询法提供的中断识别程序M执行,程序M会再把入口的地址送入PC。注意这里并没有直接把中断的真正入口地址直接送给PC,而是分成了两步
关中断
关中断即把EINT置0即可。
微指令小结
通过以上对各个指令周期中CU输出的微指令分析,我们可以总结出CU的一些规律:
- 如果指令不访存,则不涉及总线传输、MDR和MAR。CU仅在CPU内输出简单的单步或双步信号。
- 如果指令访存,如取指、存数、断点保存等过程,一般要涉及到总线和主存寄存器的使用。首先要将需要取数/写数的地址送入MAR,再由控制寄存器设置相应的读写信号,接着就可以把要写的数据送入MDR或者把访存的数据存入MDR,最后再把MDR内的数据写入主存或者送入CPU的ACC内。
- 如果指令涉及转移,则一般还要用上PC寄存器。注意是有条件转移还是无条件转移。
控制单元的功能
以上微指令的分析流程想必大家都已经有了个大概的轮廓,但我们都只是基于符号表示给出了形式上的说明,本节我们就来学习在硬件上CU是如何驱动完成这些功能的。
我们先给出CU的一幅结构图。
我们根据这幅图来介绍与CU有关的输入信号和输出信号。
输入信号
由图可知,CU接受以下四个输入信号:
-
时钟
CU受时钟控制,一个时钟脉冲下,CU可以发送一个或者一组需要同时执行的操作命令。是驱动计算机运行的最基础信号,也是我们后续介绍多级时序系统的基础。
-
指令寄存器
即时,存储指令中操作码的信息。控制信号的发出依赖于操作码。
-
标志
CU还受标志控制,比如条件转移标志位
-
外来信号
比如INTR中断请求、HRQ总线请求等
输出信号
由图可知,CU输出的信号可分为两类:CPU内的各种控制信号和送至控制总线的信号。
-
CPU内的控制信号
如:寄存器之间的赋值操作
指令计数器递增
ALU中的+、-、与、或等各种算数控制信号
-
送至控制总线的信号
访存控制信号
访问IO/存储器的控制信号
读命令与写命令
中断响应信号
总线响应信号
举例
这里主要谈谈CPU中分散连接和采用CPU内总线通信的两种结构,简单的过一下。只要掌握了CU微指令流程其实就很简单。
下图是分散连接的一个示例:
可以看到这么做需要比较繁多的线路,如果我们引入CPU内部总线,就可以大大简化电路。
可以看到,引入内部总线后,CPU内各部件的通信只需要依赖于一根总线,而无须庞杂繁琐的各部件都连线。其中还有一点变化需要注意:ALU多了寄存器Y和Z,Y用来存放另一操作数,Z用来临时放计算结果,防止结果放入总线后又被ALU读入。
多级时序系统
终于来到了本章的重头戏——多级时序系统。别被这个高大上的名称吓到了,其实内容很简单,就是一个概念的套娃。指令周期>机器周期>时钟周期。
我们来学习一下机器周期和时钟周期的概念,就可以理解多级时序系统了。
机器周期
机器周期,即所有指令执行过程的一个基准时间。通常指的是完成一个特定功能所需的一系列时钟周期。例如,从内存中读取数据或写入数据可能需要多个时钟周期来完成。机器周期通常包括数据传输、地址访问、控制信号的建立等。
通常我们确定机器周期时,需要考虑每条指令的执行步骤和每一步骤所需的时间。一般来说,我们把完成最复杂指令功能的时间作为机器周期的基准时间。最复杂指令通常是访存操作,所以我们一般是以访问一次存储器的时间为基准。
如果指令字长=存储字长,那么取指周期=机器周期。
每个机器周期内部也有很多微操作,有先后顺序。所以机器周期内部也需要有多个时钟周期,由时钟控制微操作先后顺序。
时钟周期
时钟周期,又称节拍或者状态,是计算机中最基本的时间单位,可以用时钟周期控制产生一个或几个微操作的命令。
如果微操作可并行,则一个机器周期内可完成若干个微操作。
时钟周期与机器周期的关系如下图:
可以看到,时钟周期的每一个上升沿会给T0一个信号,微操作的下降沿又会激活下一个微操作。一组由时钟周期调控的微操作组成一个机器周期。
多级时序系统
机器周期、节拍(状态、时钟周期)组成多级时序系统,一个指令周期包含若干个机器周期,一个机器周期包含若干个时钟周期。
控制方式
产生一个微指令操作后,下一个指令什么时候产生呢?我们有几种控制方式:同步控制方式、异步控制方式、联合控制方式和人工控制方式。
我们主要介绍同步控制方式,这也是大多数计算机目前所在采用的控制方式。
同步控制方式
同步控制方式,即任一微操作均由统一基准时标的时序信号控制。它的特征是,一定有一个定宽定距的时钟。
同步控制方式有三种类别:
-
采用定长的机器周期
这种方式强制规定了机器周期内的节拍数相同,此时的机器周期以最长的微操作序列和最繁的微操作作为标准。这就导致了在一些相对简单的机器周期内,会产生空闲的节拍,即浪费了部分时钟周期。
-
采用不定长的机器周期
即机器周期内的节拍数不等,执行指令过程较短的话可以含较少的节拍,如果执行指令过程较长则可以延长节拍。
-
中央控制和局部控制相结合
还可以采用采用中央控制和局部控制相结合的方法,即执行较长的延长的周期由局部节拍进行控制。
异步控制方式
异步控制方式即一个微操作完成后,会给出一个应答信号。它没有基准时标信号和固定的周期节拍与严格的时钟同步,采用应答方式来控制。
联合控制方式
即同步和异步相结合的操作,常用与复杂的指令控制,如IO指令等。
人工控制方式
即人为参与程序运行调控,多用于程序调试,有以下三种方式:
- Reset,即重置程序。
- (2) 连续和单条指令执行转换开关,如8086汇编中的单步断点调试。
- 符合停机开关,用于计算机的故障处理和容错率展示。
……
……
第六部分到此结束!敬请阅读第七部分🌹