计组第九章 控制单元的功能

第九章 控制单元的功能

以指令的解释功能为例来讲控制单元CU的功能

9.1 微操作命令的分析

完成一条指令分 4 个工作周期:取指周期、间址周期、执行周期、中断周期

微操作就是比指令更小的命令,都是CU发出的,下面表格中的微操作也都是CU控制执行的

我们假设指令是定长的,通过一次存取指令就能将指令从存储器中取出送到CPU指定的寄存器当中

9.1.1. 取指周期

微指令 说明
PC→MAR→地址线(→M) PC将要取的指令地址送到存储器
实际上就应该给MAR,M是没有寄存器存储地址的,地址线暂存给MAR,M需要地址的时候再读取MAR的
1→R CU将读操作送给存储器
M(MAR)→MDR 存储器将取出的指令送到MDR
M(MAR)的意思应该是主存利用MAR里面的地址
MDR→IR MDR将指令传给指令寄存器
OP(IR)→CU IR将指令的操作码部分传给CU
(PC) + 1 → PC CU控制的

一般CU要的就是操作码部分?IR只是将操作码给了CU,但是地址码仍然在IR中

9.1.2. 间址周期

上面说了,地址码部分仍然在IR中,因此间址周期是从IR开始的

微操作 说明
AD(IR)→MAR IR中的指令形式地址传给MAR再传给存储器
1→R CU将读操作命令给存储器,1应该就是读操作的指令数在内存内部是有RD和WR寄存器的,R=1表示读,W=1表示写
M(MAR)→MDR 存储器取出地址之后传给MDR
MDR→AD(IR) MDR将操作数的地址传给IR的地址码部分

9.1.3. 执行周期

执行周期比较复杂,指令不一样,功能也不一样

我们这里对指令进行分类

(1) 非访存指令

指令 说明 微操作
CLA clear ACC,清0ACC 0→ACC
COM 取反 ACC非→ACC
SHR 算术右移,左边补上的是原来的符号位 L(ACC)→R(ACC),ACC0→ACC0,就是将原来的符号位写回到最高位
CSL 循环左移 R(ACC)→L(ACC),ACC0→ACCn
STP 停机指令 0→G,计算机有个停机标志,置0即停机

(2) 访存指令

指令 微操作
ADD X 将地址X中的数取出与ACC中相加再存到ACC中
Ad(IR) → MAR 地址仍然是在IR中的
1 → R
M(MAR) → MDR
(ACC) + (MDR) → ACC
STA X 存数指令 X地址的数据存到ACC中
ACC中的数据存到X中
Ad(IR) → MAR
1 → W 将写的指令传给主存
ACC → MDR
MDR→M(MAR)
LDA X X中的数据加载到ACC中
Ad(IR) → MAR
1 → R
M(MAR) → MDR
MDR → ACC

(3) 转移指令

指令 微操作 说明
JMP X 无条件转 Ad(IR) → PC
BAN X 条件转移 image-20221225094543176 条件转移有很多种,这里使用BAN X
负则转,如果上一条指令的结果是负数,就跳转到X地址的指令
上一条指令的运算结果是在ACC中的,判断正负就看最高位A0即可
三类指令的指令周期
指令类型 周期 说明
非访存 image-20221225095001682 不访存,自然没有间址周期
直接访存 image-20221225095001682
间接访存 image-20221225095041505
转移 image-20221225095001682
间接转移 image-20221225095041505

(4) 中断周期

中断周期干了三件事:保存断点,形成中断服务程序入口地址,关中断

下面给出的微操作就是要完成这三个任务

任务 微操作 说明
保存断点 0→MAR(程序断点存入"0"地址)
(SP) - 1 → MAR(程序断点进栈)
保存断点就是将断点送入到内存单元中,有两种方式
1. 程序断点存入"0"地址 2. 程序断点进栈
二者在操作上唯一的不同就是:断点保存的地址不同(前提是在这个模型机中,堆栈也是内存的一部分)
1 → W
PC → MDR 程序断点原在PC中的
MDR → M(MAR)
形成中断服务程序入口地址 中断识别程序入口地址M→PC 这是软件查询法
向量地址 → PC 这是硬件查询法
关中断 0 → EINT EINT置0,就关中断了

9.2 控制单元的功能

简而言之,就是发出各种控制命令,控制整个CPU系统包括内部的各个部件 完整有序的进行

9.2.1. 控制单元的外特性

image-20221225101751561

下面我们对输入信号和输出信号做分析

(1) 输入信号

输入信号 说明
时钟 CU受时钟控制,微操作命令在指定的时间点发出
一个时钟脉冲,发一个操作命令或一组需同时执行的操作命令
指令寄存器 OP(IR)→CU,仅仅是将操作码送到CU,地址仍在IR,控制信号 与操作码有关
标志 CU受标志控制,比如说条件转移指令所需要判断的条件就是标志
外来信号 来自CPU外部的信号也会进入CU,比如INTR中断请求HRQ总线请求

(2) 输出信号

输出信号 指令举例 说明
CPU内的各种控制信号
控制CPU内部的部件做相应的操作
Ri→Rj 寄存器之间的数据传输
(PC)+1→PC
ALU +-与 或 CPU内部运算器执行的操作
乘法和除法也是一个个加法减法完成的,所以没有乘除法信号
送至控制总线的信号
控制IO 总选 存储体的信号
MREQ 访问存储体控制信号,存储体那章讲过 Memory Request
IO/M 访IO/存储体的控制信号,低电平是IO,高电平是存储体
RD 存储器读命令
WR 存储器写命令
INTA 中断响应信号,CPU发出中断源的中断请求
HLDA 总线响应信号

9.2.2. 控制信号举例

(1) 不采用 CPU 内部总线的方式

也就是CPU内部的各个部件采用分散连接的方式,而不是总线连接

① CPU的内部结构

image-20221225104015208

我们先来分析一下各个连接之间的说明

起点 终点 说明
PC MAR 取指令,PC要将指令地址送到MAR(取数据的地址是保存在IR中的)
MAR M MAR要将地址送给内存
M MDR 从内存中取出来的地址或者数据送到MDR中
MDR IR 取出来的地址从MDR送到IR
AC 如果是取数指令,取回来的数据送到ACC中
ALU 假如是加法指令,取回来的数据可能直接被送到ALU了
MAR 间址寻址,内存中取出来的是操作数的地址,还要再送给MAR去取数
事实上,在取值周期,IR和MDR中都有了指令,就包括间址周期中需要的地址,因此可以从MDR中拿地址,也可以从IR中拿地址,这里选择前者
由此可以看出为什么要MDR了,因为MDR保存的种类很多,因此先统一保存到MDR中,在CU的控制下再送给响应的部件
IR CU 指令寄存器IR的操作码部分要送给CU进行译码
时钟 CU 时钟控制CU发出控制信号
CU 控制信号 CU发出控制信号
控制信号 ALU 控制信号控制ALU操作
ALU AC ALU的计算结果保存在ACC中
② 以ADD @X为例展示微操作命令的分析
a. 取指周期

取指周期就是将指令送到CU,从PC开始,CU结束,最终PC还要+1

image-20221225105339390

  • 从C0到C4依次执行,并且这几个指令都是CU发出的
  • 最终是送到CU的,CU进行译码也在取指阶段完成
b. 间址周期

image-20221225110402700

  • 间址周期就是取出操作数的地址,操作数的地址是X

  • 取指周期后,指令在IR和MDR中都有了,其中X也在两个部件之中,这里我们假设以MDR为开始,将地址送到MAR

  • 间址周期是将操作数的地址送到MAR以便执行周期取数,起点是MDR,终点是MAR

  • 执行次序是 C5 C1 C2 C3

  • 间址周期是将操作数的地址送到IR的地址码中,以便执行周期使用,起点是MDR,终点是IR

    注意,这里不能认为终点是MAR,MDR直接将地址传给MAR,应该先传给IR,执行周期再利用IR的地址码取数,当然也可以直接从MDR中取地址

c. 执行周期

image-20221225110430887

说明
目的 利用IR中的地址部分取出数据到ALU中与AC中的数据相加,结果保存在AC中
地址 在间址周期或者取址周期后,操作数的地址保存在MDR或者IR的地址码部分,用哪个都可以,这里假设使用MDR中的地址,也就是MDR直接将地址给MAR
顺序 C5 C1 C2 C7 C6(67顺序可颠倒) CU发出控制信号 C8

(2) 采用 CPU 内部总线方式

① CPU内部总线结构

image-20221225111359207

说明:

ALU是组合电路,不具有保存功能,因此添加Y和ACC寄存器来保存操作数,Z来保存结果

② 以ADD @X为例展示微操作命令的分析
a. 取指周期

image-20221225112159486

注意 PCo的意思是PC out输出

目的:将PC中保存地址存储的指令取出来送到CU进行译码

行为 微操作/说明
PC→MAR→地址线 PCo MARi
CU发出读命令 1→R 1送给了存储器的读寄存器
数据线→MDR 取回来的指令送给MDR
MDR→IR MDRo IRi MDR将指令给IR
OP(IR)→CU IR将操作码送给CU进行译码
(PC) +1 → PC
b. 间址周期

image-20221225112524106

行为 微操作/说明
MDR→MAR→地址线 MDRo MARi,这里是将形式地址→MAR,也可以从IR中拿
CU发出读命令 1→R 1送给了存储器的读寄存器
数据线→MDR 取回来的指令送给MDR
MDR→IR MDRo IRi MDR将有效地址→IR
c. 执行周期

image-20221225113457968

行为 微操作/说明
MDR→MAR→地址线 MDRo MARi
CU发出读命令 1→R 1送给了存储器的读寄存器
数据线→MDR 取回来的指令送给MDR
MDR→Y MDRo Yi MDR将操作数给Y
AC→ALU ACo ALUi
(AC) + (Y) → Z
Z→ACC 指令最终的结果要保存在ACC中的

9.2.3. 多级时序系统

前面将解释指令的周期分为取指,间址,执行,中断周期,实际上,这些周期都是机器周期

(1) 机器周期

① 机器周期的概念

所有指令执行过程中的一个基准时间

② 确定机器周期需考虑的因素

每条指令的执行 步骤,每一步骤 所需的 时间

将每个步骤划分到机器周期中

③ 基准时间的确定

通常情况下:

  • 以完成 最复杂 指令功能的 微操作 的 时间 为准

  • 实际上,最复杂的,或者是时间最长的是访存操作

    取指,间址,执行阶段都需要访存

    因此,以 访问一次存储器 的时间 为基准

  • 指令字长 = 存储字长,取指周期 = 机器周期

实际上,在一个机器周期中还要进行很多操作,比如取指周期要进行各种赋值,数据传送

这些操作也是有一定的先后顺序的,在机器周期的内部也要有多个时钟周期,时钟控制微操作的执行顺序

机器周期和时钟周期是不一样的!

(2) 时钟周期(节拍、状态)

  • 一个机器周期内可完成若干个微操作(如果这些微操作是可以并行执行的)
  • 每个微操作需一定的时间,有些微操作在一个时钟周期内完成,有些微操作可能花费多个时钟周期,比如对内存的访问
  • 将一个机器周期分成若干个时间相等的 时间段(节拍、状态、时钟周期),由时钟周期控制在一个机器周期内部微操作的先后顺序
  • 时钟周期是控制计算机操作的最小单位时间
  • 用时钟周期控制产生一个或几个微操作命令(几个微操作命令一般是指这些微操作可以并行执行)

我们来看下面的示意图

我们利用CLK时钟来产生节拍信号

image-20221225124008819

  • 不同的节拍是有先后顺序的
  • 节拍分为T0到T3,然后用不同的节拍控制部件操作

一个大的指令周期分为若干个机器周期,一个机器周期分为若干个节拍(时钟周期),节拍就是控制计算机操作的最小单位时间

  • 比如指令周期分为 取址 间址 执行 中断周期
  • 每个 机器周期 再分为节拍,控制微操作,比如PC的值赋给MAR等

指令周期,机器周期,节拍(时钟周期)就构成了计算机的 多级时序系统

(3) 多级时序系统

指令周期、机器周期、节拍(状态)组成多级时序系统

一个指令周期包含若干个机器周期、一个机器周期包含若干个时钟周期

指令周期和机器周期的划分都是不一定的,有的可能一样,有的不一样

image-20221225124601475

CU就是根据节拍发出微操作的指令的,每个指令周期,机器周期是如何划分,每个节拍发出什么微操作指令,都是CU解析指令后自动进行的

(4) 机器速度与机器主频的关系

机器的 主频 f(时钟周期的倒数) 越快 机器的 速度也越快 吗?

这是有前提的:

  • 两台机器都采用非流水方式

  • 在指令周期所含机器周期相同

  • 在机器周期所含时钟周期数 相同 的前提下

  • 两机 平均指令执行速度之比 等于 两机主频之比

    image-20221225145041719

  • 机器速度 不仅与 主频有关 ,还与机器周期中所含 时钟周期(主频的倒数)数 以及指令周期中所含 的 机器周期数有关

  • 即使这两个一样,一台采用流水,一台采用非流水,结果也是不一样的

9.2.4. 控制方式

控制单元CU控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程。由于不同指令所对应的微操作数及其复杂程度不同,因此每条指令和每个微操作所需的执行时间也不岗。通常将如何形成控制不同微操作序列所采用的时序控制方式称作CU的控制方式。常见的控制方式有同步控制、异步控制、联合控制和人工控制四种。

简单来说,控制方式是指 产生不同微操作命令序列所用的时序控制方式

(1) 同步控制方式

这种方式使用的比较多

  • 同步控制方式是指 任一微操作均由 统一基准时标 的时序信号控制
  • 一定有一个统一的,定宽定距的时钟作为标准,每一个微操作都是在这个时钟的控制下,在指定的节拍产生

image-20221225145849724

如果机器内的存储器其存取周期不统一,那么只有把最长的存取周期作为机器周期,才能采用同步控制,否则取指令和取数时间不同,无法用统一的基准。又比如有些不访存的指令,执行周期的微操作较少,无须4个节拍。因此,为了提高CPU 的效率,在同步控制中又有三种方案。

① 采用定长的机器周期

也就是说,每个机器周期含有相同数量的节拍数

  • 最长 的微操作序列最复杂 的微操作作为 标准
  • 可能会造成时间浪费
② 采用不定长的机器周期

​ 这种方案每个机器周期内的节拍数可以不等,这种控制方式可解决微操作执行时间不统一的问题。

​ 通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决

image-20221225150202602

image-20221225150233626

③ 采用中央控制和局部控制相结合的方法

在讲总线的时候已经讲到了

如果一条指令本身的执行时间就比较长,如何缩短呢?

可以采用中央控制与局部控制相结合的方式

image-20221225150835311

图中可以看到,执行周期比较长,延长的部分用局部控制节拍

在设计局部控制线路时需注意两点:

  • 其一,使局部控制的每一个节拍T*的宽度与中央控制的节拍宽度相同

  • 其二,将局部控制节拍作为中央控制中机器节拍的延续插入到中央控制的执行周期内,使机器以同样的节奏工作,保证了局部控制和中央控制的同步

  • T*的多少可根据情况而定,对于乘法,当操作数位数固定后,T*的个数也就确定了。

    而对于浮点运算的对阶操作,由于移位次数不是一个固定值,因此T的个数不能事先确定。

  • 以乘法指令为例,第一个机器周期采用中央控制的的节拍控制取指令操作,接着仍用中央控制的T0、T1、T2,节拍去完成将操作数从存储器中取出并送至寄存器的操作,然后转局部控制,用局部控制节拍T*完成重复加和移位的操作。

不是很懂?每一个节拍T*的宽度与中央控制的节拍宽度相同,既然这样为啥不要中央控制呢?

(2) 异步控制方式

  • 异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,执行每条指令和每个操作需要多少时间就占用多少时间。
  • 这种方式微操作的时序由专门的应答线路控制,即当CU发出执行某一微操作的控制信号后,等待执行部件完成了该操作后发回“回答”(或“结束"”)信号,再开始新的微操作,使 CPU 没有空闲状态
  • 但因需要采用各种应答电路,故其结构比同步控制方式复杂。

(3) 联合控制方式

  • 同步控制和异步控制相结合就是联合控制方式。
  • 这种方式对各种不同指令的微操作实行大部分统一、小部分区别对待的办法。
  • 例如,对每条指令都有的取指令操作,采用同步方式控制;
  • 对那些时间难以确定的微操作,如lO操作,则采用异步控制,以执行部件送回的“回答”信号作为本次微操作的结束。

(4) 人工控制方式

人工控制是为了调机和软件开发的需要,在机器面板或内部设置--些开关或按键,来达到人工控制的目的。

  1. Reset复位键

    按下Reset键,使计算机处于初始状态。当机器出现死锁状态或无法继续运行时,可按此键。若在机器运行时按此键,将会破坏机器内某些状态而引起错误,因此要慎用。有些微机未设此键,当机器死锁时,可采用停电后再加电的办法重新启动计算机。

  2. 连续或单条执行转换开关

    由于调机的需要,有时需观察执行完一条指令后的机器状态,有时又需要观察连续运行程序后的结果,设置连续或单条执行转换开关,能为用户提供这两种选择。

  3. 符合停机开关

    有些计算机还配有符合停机开关,这组开关指示存储器的位置,当程序运行到与开关指示的地址相符时,机器便停止运行,称为符合停机。

posted @ 2023-09-13 16:40  Crispy·Candy  阅读(134)  评论(0编辑  收藏  举报