控制器

需熟练掌握 CPU 在执行指令时是如何控制信号控制各个部件的,这个过程偶尔会在大题中考察。还需了解硬布线控制器和微程序控制器的概念,可能在选择题中考察。

主要功能

控制器是计算机系统的指挥中心,控制器的主要功能有:

  • 指令解码:CPU 从存储器取出一个指令后,控制器负责解码这个指令,以确定要执行的操作和涉及的操作数。
  • 生成控制信号:基于解码的指令,控制器生成一系列的控制信号,这些信号会驱动其他计算机部分(如算术逻辑单元、寄存器和存储器)按预期执行相应的操作。
  • 时序控制:通过先后发出不同的控制信号,确保指令的逻辑正确被执行,

根据控制器产生微操作控制信号方式的不同,控制器可以分为硬布线控制器和微程序控制器。

组成

31
OP 码
地址码
指令
译码器
时序发生器
操作控制器
控制信号
C1
C2
C3
地址寄存器
地址寄存器
MAR
PC
30
40
···
···
10
77
7
66
6
100
5
70
地址
数据
107
106
AND
105
JMP
104
STO
103
ADD
102
LAD
101
MOV
地址
数据
R1, R3
101
R2, (R3)
R1, 2
R1, 6
R0, R1
地址码
ALU
数据缓冲寄存器
状态字寄存器
R1
R2
R3
R4
MDR
PSW
数据
cache
指令
cache
数据总线 DBUS
指令总线 IBUS
运算器
运算器
控制器

要理解控制器的组成,就要从其功能出发,大体来说,控制器的组成也可以分为三个组件:

  • 指令控制器:负责取指和译码,并且形成下一条指令的地址。
  • 时序控制器:产生计算机运行所需的各种时序信号。控制指令的执行节奏,确保各个部件协调工作。
  • 控制信号发生器:根据指令译码器的输出,产生具体的控制信号。这些控制信号用于控制计算机各个部件的微操作。

指令控制器

CS
IP
地址加法器
输入/输出
控制电路
指令寄存器
指令译码器
B8
01
23
BB
00
03
D8
89
D8
01
· · ·
· · ·
内存
地址总线
数据总线
mov ax, 0123H
mov bx, 0003H
mov ax, bx
add ax, bx
指令控制器

指令控制器由 CS:IP 获取当前要执行的指令地址。 其中 CS 为程序段寄存器,标记了进程代码段(.code)的开始,IP 为指令指针寄存器,标记了当前指令在代码段内的偏移。

获取当前指令地址后,输入输出控制电路从内存中读取指令放入指令寄存器中。 然后修改 IP 寄存器的值,使 CS:IP 指向下一条指令的地址。

时序控制器

时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是 CPU 的主频;而倍频定义单元则定义了 CPU 主频是存储器频率(总线频率)的几倍。

晶体振荡器利用石英晶体的压电效应,当施加电压时,晶体在特定频率下可以产生稳定的振荡。 晶体振荡器产生精确的频率信号,作为电子设备的时钟源。这个时钟信号就像一个“节拍器”,控制着设备内部各个部件的协调运作。

T1
T2
T3
T4
T2
T3
T4
T1
CPU 周期
(取指令)
CPU 周期
(执行指令)
指令周期
时钟
周期

晶体振荡器产生的频率信号直接决定了电子设备的时钟周期。一个指令周期中包含 取指令 和 执行指令 这两个 CPU 周期,而 CPU 周期又由多个时钟周期组成。


假设当前要执行 MOV R1, [addr] 这条指令,其功能就是找到内存中 addr 地址的数据,并且将其传输到寄存器 R1 中,这条指令的执行包含以下几个步骤:

  1. 将地址传入 MAR 中。
  2. 存储器从 MAR 中读取地址,并且读取数据,存入 MDR。
  3. 从 MDR 中取出数据,通过 CPU 内的数据总线传输到寄存器 R1 中。

上述过程的执行需要保证严格的时序关系,先后关系不可颠倒,否则会导致指令执行的出错。

通过这个简单的例子是为了说明这样一个原理:在 CPU 内部,一条指令的执行也会被拆分为若干的子过程,这些子过程需要满足严格的时序关系,而这种时序关系就是由时序控制器进行控制的。

控制信号发生器

指令译码器
数据总线
地址总线
控制总线
输入设备
主存
输出设备
控制信号发生器
CPU 内的控制信号
至系统总线的控制信号
CPU

控制信号发生器负责接收指令译码器的结果,并且在每个时钟周期内产生 控制信号

其中控制信号可以是 CPU 内的控制信号,通过 CPU 内总线传输至 CPU 内其他部件。 也可以是 CPU 外的控制信号,发送至系统的控制总线,用于协调计算机其他设备与 CPU 的交互。

控制信号

控制信号是由控制信号发生器生成和发出的电信号,这些信号用于指挥 CPU 内部的各种操作。例如,控制信号可以指示算术逻辑单元(ALU)执行加法还是减法,或者指示寄存器进行读写操作。

类型

其实控制信号的种类很多,但就目前阶段而言,会考察的可以被总结为三类控制信号:

  • 读写信号:对内存或 IO 设备进行读写,比如 MemRMemW
  • 寄存器选择信号:选择特定的寄存器进行读写操作,比如 PCinPCout
  • 操作码信号:示算术逻辑单元(ALU)执行哪种运算,如加法、减法、与、或等。
R4
R3
R2
R1
Internal Bus
T1
ALU
MAR
MDR
Control Unit
IR
External Bus
MARout
PC
MARin
MDRout
MDRin
PCout
PCin
Memory
MemOp
ALUop (such as add, sub)
IRin
MUX
Word Length
MUXop
T2
T1out
T1in
T2out
T2in
0
1

寄存器传送语言

控制信号决定了计算机指令的执行顺序和数据流动。计算机内部组件根据控制信号执行相应操作,数据流动通常用寄存器传输语言(RTL)描述。

除了控制信号外,常常也需要我们用 RTL 描述数据流动,试题中的 RTL 一般需符合如下规范:

  1. 用 R 表示寄存器 R 的内容;
  2. 用 M[addr] 表示读取主存单元 addr 的内容;
  3. 传送方向用 “←” 表示,传送源在右,传送目的在左;
  4. 读取主存中的内容

指令执行的控制信号

指令的执行包含取指、译码、执行、写回阶段,在这四个阶段中控制单元会发出不同的控制信号,以实现指令的执行。

以指令ADD R0, (R1)为例,说明一下指令执行阶段四个阶段的控制信号。

取指和译码阶段

在该阶段中:PC 提供了当前需要读取指令的地址,从相应地址读取指令后,增加 PC 的值,使其指向下一条指令的地址,接着通过译码部件完成译码。

该阶段主要包含如下表所示的控制信号:

时钟功能控制信号解释
C1MAR ← PCPCout, MARin从 PC 中读取指令地址至 MAR 中
C2MDR ← M(MAR)MemR, MDRin存储器从 MAR 地址所在的内存单元读取数据
并加载到 MDR 中
C3MUXop ← PCIncrPCIncr在二路选择器中生成值 1 添加入 ALU 的一端
C4T2 ← PC + 1MARout, T2in, AddALU 计算下一条指令的地址
C5PC ← T2T2out, PCin将计算得到的地址加载进 PC 中
C6指令译码由指令译码器件完成
执行和写回阶段

通过译码得到的控制信号,可以控制指令的执行和写回,对于 ADD R0, (R1) 为例,该阶段包含如下控制信号:

时钟功能控制信号解释
C7MAR ← R1R1out,MARin将 R1 中的内容加载进 MAR
C8MDR ← M(MAR)MemR, MDRin存储器从 MAR 地址所在的内存单元读取数据
并加载到 MDR 中
C9T1 ← R0R0out, T1in将 R0 的内容存储在暂存器 T1
C10T2 ← MDR + T1MDRout, MUXop,Add, T2inMDR的内容存储进入ALU另一个入口
执行加法操作
并将结果存储进入T2
C11R0 ← T2T2out, R0in将计算结果写回 R0

注意

为什么需要暂存器 T1?

采用了单数据总线的系统,无法在一个时钟周期同时将两个不同的数字同时添加到 ALU 的两端,在一个时钟周期内 ALU 两端会接受到相同的数据,所以必须要在当前时钟周期暂存一个数据,在下一个时钟周期再向 ALU 添加另一个数据。

ALU 的输出端也可能有一个暂存器,也是为了避免数据传输时在单总线结构上出现的数据冲突。

种类

控制器的种类分为硬布线控制器和微程序控制器,这里了解即可。简而言之,硬布线控制器就是通过硬件的方式实现控制信号的输出,微程序控制器对指令的 OP 字段进行进一步编码,通过软件的方式实现控制信号的输出。

硬布线控制器

定义:硬布线控制器是通过组合逻辑电路来实现的,通常使用逻辑门、多路复用器、解码器等组合电路元件。

特点

  • 性能:因为是硬件实现,所以通常速度较快。
  • 固定功能:一旦设计和实现完成,修改它就比较困难,需要改变物理电路。
  • 设计复杂性:对于复杂的控制逻辑,硬布线控制器可能会变得非常复杂,难以设计和验证。

微程序控制器

定义:微程序控制器基于存储的微指令集来实现控制逻辑。它使用一块称为“控制存储器”或“微指令存储器”的特殊存储器来存储微指令。每一个微指令定义了一系列的控制信号。

特点

  • 灵活性:由于控制逻辑是存储在存储器中的,所以更改控制逻辑只需要更改存储的微指令,而无需更改硬件。
  • 简化设计:对于复杂的控制逻辑,使用微指令可能会简化设计和验证过程。
  • 性能:通常比硬布线控制器慢,因为它需要从控制存储器中读取微指令。
  • 易于修改和扩展:添加新的指令或修改现有的指令相对容易。

指令、微指令、微命令

微命令是计算机硬件控制的基础指令,用于控制某些硬件单元完成某种操作。

一条机器指令对应一个微程序,一个微程序由数条微指令构成,每个微指令可以包含数个微命令。

微指令编码方式

下地址
操作控制
控制信号
下地址
操作控制
译码
译码
译码
直接编码方式
字段直接编码方式
  1. 直接编码方式

微指令中的微命令字段中每位都代表一个微命令。

  1. 字段直接编码方式

将微指令的微命令字段分为若干小段,把互斥行微命令组合在同一字段中,把相容性微命令组合在不同字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义。