第第
6章章中央处理器中央处理器
6.1 中央处理器的功能和组成中央处理器的功能和组成
1.中央处理器的功能
中央处理器简称 CPU,它具有如下四方面的功能:
(1)程序的顺序控制。
(2)操作控制 产生 取出 并执 行指 令的 微操 作信号,并把各种操 作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
(3)时间控制 对各 种操 作实 施时 间上 的控 制。
(4)数据加工 对数 据进 行算 术运 算和 逻辑 运算处理。
2,中央处理器的组成
中央处理器由控制器、运算器和总线组成。
(1)控制器
控制器是全机的指挥中心,其基本功能就是执行指令。
控制器由程序计数器 PC、指令寄存器 IR、
地址寄存器 (AR)、数据寄存器 (DR)、指令译码器、时序系统和微操作信号发生器组成。
① 程序计数器 PC
用以指出下条指令在主存中的存放地址,
CPU根据 PC的内容去主存取得指令。因程序中指令是顺序执行的,所以 PC有自增功能。
② 指令寄存器 (IR),用来保存当前正在执行的一条指令的代码。
③ 地址寄存器 (AR),用来存放当前 CPU
访问内存单元的地址。
④ 数据寄存器 (DR),用来暂存由内存储器中读出或写如入内存的指令或数据。
⑤ 指令译码器, 分别对操作码字段、寻址方式字段、地址码字段进行译码,向控制器提供操作的特定信号。
⑥ 时序部件, 用来产生各种时序信号,
时序信号可分为 CPU周期信号、节拍周期信号和节拍脉冲信号,它们都是由统一时钟 CLOCK分频得到。
⑦ 微操作形成部件, 根据 IR的内容 (指令 )、
PSW的内容 (状态信息 )以及时序线路三方面的内容,产生控制整个计算机系统所需的各种控制信号。其结构有组合逻辑型和存储逻辑型。
(2)运算器
运算器由算术逻辑单元 (ALU)、通用寄存器、
程序状态字寄存器,数据暂存器、移位器等组成。它接收从控制 器送来的命令并执行响应的动作,负责对数据的加工和处理。
各组成部件的作用是:
· ① 算术逻辑单元 (ALU),用以进行双操作数的算术逻辑运算。
· ② 通 用寄存器组, 用来存放操作数 (包括源操作数、目的操作数及中间 结果 )和各种地址信息等。
③ 暂存器, 用来暂存从主存储器读出的数据,
这个数据是不能存 放在通用寄存器中,否则会破坏其原有的内容。
· ④ 程序状态字寄存器 (PSW),保留由算术逻辑运算指令或测试指令的结果建立的各种状态信息。
· ⑤ 移位器:在 ALU输出端设暂存器用来存放运算结果,它具有对运算结果进行移位运算的功能。
(3)总线与数据通路结构
① 内 部总线
CPU内部连节各寄存器的总线。
· ②系 统 总 线
系统总线是 CPU与主存储器 MM、外部设备接口相联的总线,它包括地址总线、数据总 线和控制总线。
CPU向地址总线提供访问主存单元或 I/O接口的地址。
CPU向数据总线发送或接收数据,以完成与主存单元或 I/ O接口之间的数据传送,主存 M
和 I/ O设备之间也可以通过数据总线传送数据。
CPU通过控制总线向主存或 I/ 0设备发出有关控制信号,或接收控制信号; I/ O没备也可以向控制总线发出控制信号。
6.2 指令的执行指令的执行
1.指令执行的周期
(1)取指周期
取指周期要解决两个问题:一是 CPU到哪个存储单元去取指令;二是如何形成后继指令地址。
指令地址由 PC给出,取出指令后 PC内容递增;当出现转移情况时,指令地址在执行周期被修改。
(2)取操作数周期
取操作数周期要解 决的问题是,计算操作数地址并取出操作数。
操作数有效地址的 形成由寻址方式确定。寻址方式不同,有效地 址获得的方式、过程不同,
提供操作数的途径 也不同。因此,取操作数周期所进行的操作对不同的寻址方式是不相同的。
(3)执行周期
执行周期的主要任务是完成由指令操作码规定的动作,包括传 送结果及记录状态信息。操作结果送到什么地 方由寻址方式确定;状态信息,主要是条件码,记录在 PSW中。若程序出现转移时,则在执行周期内还要决定转移地址。
因此,执行周期的操作对不同指令也不相同。
(4)指令周期
将一条指令从取出 到执行完成所需要的时间称为指令周期。
(5)指令周期与机器周期和时钟周期的关系
指令周期是完成一条指令所需的时间。包括取指令、分析指令和执行指令所需的全部时间。
指令周期划分为几个不同的阶段,每个阶段所需的时间,称为机器周期,又称为 CPU工作周期或基本周期,通常等于取指时间 (或访存时间 )。时钟周期是时钟频率的倒数,也可称为节拍脉冲或 T周期,是处理操作的最基本单位。
一个指令周期由若干个机器周期组成,
每个机器周期又由若干个时钟周期组成。
一个机器周期内包含的时钟周期个数决定于该机器周期内完成的动作所需的时间。一个指令周期包含的机器周期个数亦与指令所要求的动作有关,如单操作数指令,只需要一个取操作数周期,
而双操作数指令需要两个取操作数周期。
2.指令的执行
(1)指令的执行过程
① 取指令
根据指令计数器 PC提供的地址从主存储器中读取现行指令,送到主存数据缓冲器 MDR中。然后再送往 CPU内的指令寄存器 IR中。同时改变指令计数器的内容,
使之指向下一条指令地址或紧跟现行指令的立即数或地址码。
②取 操 作 数
如果是无操作数指令则可直接进入下一个过程。如果需要操作数则根据寻址方式计算地址,
然后到存储器中去 取操作数。如果是双操作数指令则需两个取数周期;
③执 行 操 作
根据操作码完成相 应的操作并根据目的操作数的寻址方式存结果。
(2)指令之间的衔接方式
指令之间的衔接方式有:串行的顺序执行方式、并行的重叠处理方式和流水执行方式。
3,指令执行的操作流程与微操作序列
每条指令的执行过程可以分解为一组操作序列。
“操作,是指功能部件级的动作,它是可以 再 分解的。
,操作,可进一步分解为一组微操作序列。,微操作,是指指令序列中最 基本 的,不可 再分 割的 动作。
若将每一条指令的执行过程都分解为一组操作序列,并将这些 操作按指令执行的周期分类归并就可得到指令 的操作流程。将指令的操作流程以流程图的形 式描述,就得到指令操作流程图,简称指令流程图。
·注意:根据CPU结构图写出指令操作流程图和微操作序列是考试的重点。
例 6.1 已知 CPU结构图如 P175图 6.8所示。
指令格式为:
31 24 23 21 20 18 17 16 15
0
op(8位 ) rs(3位 ) rs1(3位 ) mod(2位 ) imm/disp(16
位 )
目的寄存器为 rs。
源操作数的寻址方式由 mod决定:
mod =00 源操作数的地址 = rs1 (寄存器寻址 )
mod =01 源操作数 = (rs1)+ disp (变址寻址 )
mod =10 源操作数的地址 = (rs1) (寄存器间接寻址 )
mod =11 源操作数的地址 = (pc)+ disp (相对寻址 )
· (1) 画出 ADD,SUB,JC指令的执行流程
(JC为条件转移指令,当 C=1时转移;当 C=0时取下条指令 ),标出相应的微操作序列。
(2) 画出 load 指令的操作流程图,并标出相应的微操作序列。
load指令的功能是将源操作数 (源操作数有寄存器寻址、变址寻址和寄 存器 间接 寻址 三种 方式 )
送目的寄存器 rs;
(3)画出 store 指令的操作流程图,并标出相应的微操作序列。
store指令的功能是将目的寄存器 rs的内容送源操作数地址中 (源操作数有寄存器寻址、变址寻址和寄存器间接寻址三种方式 )。
(1)【例题答案】 ADD,SUB JC 指令的操作流程图如图所示。
PC→ AB
ADS(T1),M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1
mod =00 mod =01 mod =10 mod =11
N 计
rs1→ GR rs1→ GR,disp→ ALU(B) rs1→ GR C=1 算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) Y 地
+,ALU→ AR M(S=A),ALU→ AR disp→ ALU(B) 址
(pc)→ ALU(A)
+,ALU→ pc
AR→ AB
ADS(T1),M/IO=1,W/R=0 取数周期 cy3
DB→ DR
DR→ ALU(A)
rs → GR,(rs)→ ALU(B)
ADD SUB 取目的数、执行并送结果 cy4
+,ALU→ GR -, ALU→ GR
(2)【例题答案】 load 指令的操作流程图如图所示。
PC→ AB
ADS,M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1
mod =00 mod =01 mod =10
计
rs1→ GR rs1→ GR,disp→ ALU (B) rs1→ GR,算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) 地
+,ALU→ AR M(S=A),ALU→ AR 址
AR→ AB
ADS,M/IO=1,W/R=0 取数周期 cy3
DB→ DR
DR→ ALU(A)
rs → GR
取目的数并送结果 cy4
M(S=A),ALU→ GR
(3) 【例题答案】
store 指令的操作流程图如图 6.10 所示。
PC
→
AB
ADS
,
M/IO=1
,
W/R=0
取指周期
cy1
DB
→
IR
,
PC
+
1
mod =00
mod =01
mod =10
计
rs1
→
GR rs1
→
GR
,
disp
→
ALU(B) rs1
→
GR
,
算
cy2
(rs1)
→
ALU(A) (rs1)
→
ALU(A)
地
+,
ALU
→
AR M(S=A)
,
ALU
→
AR
址
rs
→
GR
(rs)
→
ALU(B)
M(S=B)
,
ALU
→
GR
rs
→
GR
,
(rs)
→
ALU(B)
取目的操作数
cy3
M(S=B)
,
ALU
→
DR
ADS
,
M/IO=1
,
W/R=1
执行并送结果
cy4
单条指令的操作流程图可从中抽取,如P290 题6.2、题6.9。
6.3 时序与控制时序与控制
1,控制器基本控制方式
(1)同步控制方式
所谓同步控制方式,就是系统有一个统一的时钟,所有的控制 信号均来自这个统一的时钟信号。
根据指令周期,CPU周期和节拍周期的长度固定与否,同步控制方式又可分为以下几种。
① 定 长指令周期 即 所有的指令执行时间都相等。若指令的繁简 差异很大,规定统一的指令周期,无疑会造成 太多的时间浪费,因此,定长指令周期的方式很少被采用。
②定 长 CPU周 期 这种方式中各 CPU周期都相等,一般都等于内存的存取周期。
而指令周期不固定,等于整数个 CPU周期。
③变长指令周期、变长 CPU周期 这种方式的指令周期长度不固定,而且 CPU
周期也不固定,不会造成时间浪费,但时序系统的控制比较复杂,要根据不同情况确定每个 CPU周期的节拍数。
(2)异步控制方式
异步控制方式中没有统一的时钟信号,各部件按自身固有的速 度工作,通过应答方式进行联 络, 常见的应答信号有准备好 Ready或等待
WAIT等,异步控制相对于同步要复杂。
CPU内部的操作采用同步方 式,CPU与内存和 I/ O设备的操作采用异步方式,这就带来一个同步方式与异步 方式如何过渡、如何衔接的问题。也就是说,当内存或 I/ O设备的 Ready
信号到达 CPU时,不可能恰好为 CPU脉冲源的整周期或节拍的整 周期,解决办法也是一种折衷方案,即联合控制方式。
(3)联合控制方式
联合控制方式是介于同步异步之间的一种折衷。在联合控制方式中,CPU并不是在任何时刻立即对来自内存和 I/ O接口的应答信号作出反应,而是在一个节拍 周期 的结 束 (下一个节拍周期的开始 )。也就是说,当 CPU进行内存的读写操作或进行 I/ O设备的数据传送时,是按同步方式插入一个 节拍周期或几个节拍周期,
直到内存或 I/ O设备的应答信号到达为止。联合控制方式是 CPU进行内存的读写操作和 I/ O
数据传送操作通常 采用的方式,较好的解决了同步与异步的衔接问题。
2,控制器的时序
(1)组合逻辑控制器的时序
采用同步控制方式的组合逻辑控制器的时序如图 6.1所示。
图 6.1 组合逻辑控制器的时序
(2)微程序控制器的时序系统
一个机器指令周期 包括一系列微周期,每个微周期给出固定的同 步脉冲,这就是微程序控制器的时序,它比组合逻辑控制器的时序要简单,
如图 6,所示。
T
0
T
1
T
2
微指令周期
微指令周期
图
6.2
微程序控制的三相控制时序
6.4 组合逻辑控制器组合逻辑控制器
组合逻辑控制器的核心部件就是微操作产生部件。微操作产生部件,是采用组合逻辑设计思想,以布尔代数为主要工具设计而成。它的输入信号来自指令译码器的输出、时序发生器的时序信号及程序运行的结果特征及状态。它的输出是一组带有时间标志的微操作控制信号。
每个微操作控制信号是指令、时序、结果特征及状态等的逻辑函数,可表示为:
微操作=周期 ·节拍 ·脉冲 ·指令码 ·其它条件
组合逻辑控制器的设计步骤:
①根据 CPU的结构图写出每条指令的操作流程图并分解成微操作序列
②选择合适的控制方式和控制时序
③对微操作流程图安排时序,排出微操作时间表
④根据操作时间表写出微操作的表达式
⑤根据微操作的表达式画出组合逻辑电路。
组合逻辑控制器的 核心部分比较繁琐、零乱,
设计效率较低,设 计过程十分麻烦,其结构也十分复杂,特别是 当指令系统比较庞大,操作码多,寻址方式多时,其复杂程度会成倍增加。
另外检查调试也比 较困难。而且设计结果用印制电路板 (硬连逻辑 )固定下来以后,就很 难 再修改与扩展。
但组合逻辑控制器 的最大优点是微操作控制信号产生的速度很快,只 需两 级门 (一级与、一级或 )的延时就可产生。 对于 指令 系统 比较 简单 的精简指令系统计算机 RISC,采用组合逻 辑 控制器,是比较合适 的,可以提高指令执行的速度,由于指令系统 简单,逻辑组成也不至于太复杂。
例 6.2 设计 ADD,SUB,JC指令的硬布线控制器 (组合逻辑控制器 )
【例题解答】
①根 据 CPU的结构图写出每条指令的操作流程图并分解成微操 作 序 列 (如图 6.8所示 )。
② 选同步控制方式和三级时序:
安排四个机器周期:取指周期 cy1、计算地址周期 cy2、取数周期 cy3、执行周期 cy4;每个机器周期安排二个节拍 T1和
T2,每个节拍中有一个节拍脉冲,时序如图 6.11所示:
cy1
cy2
cy3
cy4
T1
T2
P1
P2
取指周期
计算地址周期
取数周期
执行周期
指令周期
图
6.11
三级时序系统
① 为微操作序列安排时序如图 6.12所示 (将打入寄存器的控制信号安排在 T2节拍的下降沿,其它控制信号在 T1,T2中一直有效 )。
PC→ AB
ADS(T1),M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1(T2)
mod =00 mod =01 mod =10 mod =11
N 计
rs1→ GR rs1→ GR,disp→ ALU(B) rs1→ GR,C=1 算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) Y 地
+,ALU→ AR(T2) M(S=A),ALU→ AR(T2) disp→ ALU(B) 址
(pc)→ ALU(A)
+,ALU→ pc(T2)
AR→ AB
ADS(T1),M/IO=1,W/R=0 取数周期 cy3
DB→ DR(T2)
DR→ ALU(A)
rs → GR,(rs)→ ALU(B)
ADD SUB 取目的数、执行并送结果 cy4
+,ALU→ GR(T2) -, ALU→ GR(T2)
图 6.12 ADD,SUB,JC 指令的操作流程的时序安排
④列出操作时间表
根据图 6.12的操作流程安排的时间表如表 6.2所示。
表6.2 ADD、SUB、JC 指令的操作时间表
表6.2 ADD、SUB,JC 指令的操作时间表
微操作
CY1 CY2 CY3 CY4
PC
→
AB ALL
PC
→
ALU
C
IRIR
1617
ADS=1(T1) ALL
IRIRIRIR 16171617
+
RW/
=0
ALL
IRIRIRIR 16171617
+
IO M/
=1
ALL
IRIRIRIR 16171617
+
ALU
→
PC(T2)
C
IRIR
1617
PC
+
1(T2) ALL
Imm(disp)
→
ALU
C
IRIRIRIR
1617
1617
+
DB
→
IR(T2) ALL
DB
→
DR(T2)
IRIRIRIR 16171617
+
DR
→
DB
rs1
→
GR
IRIR 1617
Rs
,
rd
→
GR
IRIR 1617
(rs1)
→
ALU
IRIR 1617
(rs)
→
ALU
IRIR 1617
DR
→
ALU
IRIRIRIR 16171617
+
ALU
→
GR(T2) ADD+SUB
ALU
→
DR(T2)
ALU
→
AR(T2)
IRIR
1617
+
AR
→
AB
IRIRIRIR 16171617
+
+
C
IRIRIRIR
1617
1617
+
ADD
-
SUB
∧
∨
M
IRIR 1617
⑤
综合微操作表达式
PC
→
AB=CY1
)( CYABAR
IRIRIRIR
16171617
3 +?=→
)(31/
16171617
IRIRIRIR
CYCYRW +?+=
ADS= CY1
·
T1
+
CY3
·
(IR
17
IR
16
+
IR
17
IR
16
)
·
T1
ADD,SUB,JC指令的组合逻辑控制器逻辑电路框图如图 6.13所示。
ADD,SUB,JC 指令的组合逻辑控制器逻辑电路框图如图 6.13 所示。
31 24 23 21 20 18 17 16 15 0
op(8
位
) rs(3
位
) rs1(3
位
) mod(2
位
) imm/disp(16
位
)
指
令
译
码
器
IR
17
IR
16
CY1
CY2 ADD SUB JMP PC
→
AB
时
CY3 DB
→
IR
序
CY4
产
T1
组合逻辑控制器
微操作控制信 号
生
T2
器
P1
+
P2
-
图
6.13 ADD
、
SUB
、
JC
指令的组合逻辑控制器逻辑框图
6.5 微程序控制器微程序控制器
1.微程序控制概念
(1)微程序控制方式的基本思想
① 将 机器指令分解为基 本的 微命 令序 列,
用二进制代码表示这些微命令,并编成微指令,
多条微指令再形成 微程序。每种机器指令对应一段微程序,在制造 CPU时固化在 CPU中的一个控制存储器 (CM)中。执行 —条 机器指令时,
CPU依次从 CM中取微指令,从而产生微 命令 。
② 一 条微指令包含的微 命令,控 制实 现一个节拍的操作;若 干条微指令组成的一小段微程序解释执行一条机器指令。 CM中的微程序能解释执行整个指令系统的所有机器指令。
程 序控制器框图如图 6.3 所示。
转移地址来源
运行状态
微
命
令
后续微地址形成电路
译
码
指
微指令寄存器
令
微地址寄存器
微
操
作
控
制
字
段
顺序控制字段
操
作
码
地址
译码驱动
机器指令寄存器
IR
控制存储器
ROM
主存储器
RAM
图
6, 3
微程序控制器原理框图
微程序控制器的核心是控制存储器 CM,
用它存放各指令对应的微程序,CM可用只读存储器 ROM构成。若采用可擦除可编程只读存储路 EPROM作 CM,则有利于微程序的修改和动态微程序设计。
控制存储器 CM的一行表示存放的一条微指令,列线输山微指令代码。行列交叉处有黑点行者表示该位信息为,1”,行列交叉处无黑点者表示该位信息为,0”。
微指令寄存器存放从 CM中读出的微指令,
它包含两大部分:微操作控制字段 (微命令字段 )和顺序控制字段 (微地址宇段 )。
微命令字段可直接按位或通过译码提供微命令。顺序控制字段用于控制产生下一条微指令地址或由微指令地址形成电路按有关条件形成。
(2)基本概念和术语
① 微 命令与微操作
微命令 ——控制完成微操作的命令。例如:
打开或关闭某个控 制门的电位信号,某个寄存器的打入脉冲等。 微命令由控制器通过控制线向有关的部件发出。
微操作 ——由微命令控制实现的最基本操作。
② 微 指令与微周期
微指令 ——若干个微命令的组合,以编码形式存放在控制存储 器的一个单元中,控制实现一步操作。
微周期 ——通常指从控制存储器中读取一条微指令并执行相应的微操作所需的时间。
· ● 若 一个微周期的全部微命令用一个同步脉冲定时,则这种微周期称为单周期;
· ● 若 一个微周期内用一个以上的同步脉冲定时全部微命令,则称多周期。
③ 机 器语言程序与微程序
一系列指令的有序集合称为机器语言程序。
一系列微指令的有 序集合称为微程序,一条指令的功能由一段微程序来实现。
2,微指令编码方法
(1)直接控制编码 (不译码法 )
直接控制编码是指微指令的微命令字段中每一位都代表一个微 命令。设计微指令时,选用或不选用某个微命 令,只要将表示该微命令的对应位设置成 1或 0就可以了。因此,微命令 的产生不需译码。
这种编码的优点是 简单、直观,执行速度快,
操作并行性最好;
其缺点是微指令字 长过长,使控制存储器单元的位数过多。而且,在给定的任何一个微指令中,往往只需部分 微命令,因此只有部分位置
1,造成有效的空间不能充分利用。
(2)字段直接编译法
① 相 斥性微命令和相容性微命令
同一微周期中不能 同时出现的微命令称为相斥性微命令;
在同一微周期中可 以同时出现的微命令称为相容性微命令。
②分段直接编译法
将微指令的微命令 字段分成若干小字段,把相斥性微命令组合在 同一字段中,而把相容性微命令组合在不同的字段中,每个字段独立编码,
每种编码代表一个 微命令且各字段编码含义单独定义,与其它字 段无关,这就称为分段直接编译法。
③分段的原则
A,互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。
B,与数据通路结构相适应。
C,每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
D,一般每个小段还要留出一个状态,表示本字段不发出任何 现行命令。因此当某字段的长度为三位时,最 多只能表示七个互斥的微命令,通常用 000表示不操作。
(3)分段间接编译法
分段间接编译法是在直接编译法基础上,
进一步缩短微指令字长的一种编码方法。
在这种编译法中,一个字段的含义不仅决定于本字段编码,还兼由其它字段来解释,以便使用较少的信息位表示更多的微命令。
(4)混合控制法 ——直接控制法与译码控制法的混合使用。
例 1 对图 6.7中的微命令进行编码
【相关知识】 分段直接编译法是将微指令的微命令字段分成若干小字段,把相斥性微命令组合在同一字段中,而把相容性微命令组合在不同的字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其它字段无关。在此采用混合控制法。
【例题分析】
(1) 按照 CPU结构图找互斥性微操作:
①以 AB总线为单位,AR→ AB,PC→ AB
是互斥的
②以 ALU为单位,DR→ ALU,PC→ ALU、
(rs1)→ ALU 是互斥的
imm(disp)→ ALU,(rs)→ ALU
是互斥的
ALU→ GR,ALU→ DR,ALU→ PC、
ALU→ AR 是互斥的
+、-、∧、∨是互斥的
③以 GR为单位,rs1→ GR,rsrd→ GR 是互斥的
④以 DB为单位,DB→ DR,DB→ IR、
DR→ DB 是互斥的
(2) 分组
DR→ ALU,PC→ ALU,(rs1)→ ALU这一组微命令用 2位控制。
ALU→ GR,ALU→ DR,ALU→ PC、
ALU→ AR这一组微命令是相斥的,用 3
位控制。
DB→ DR,DB→ IR,DR→ DB这 一组微命令用 2位控制。
AR→ AB,PC→ AB这一组微命令放在一起,但若用译码控制需加译码器,仍需 2位控制,所以就用直接控制。
rs1→ GR,rsrd→ GR这一组微命令也用直接控制,原因同上。
ADS,M/IO,W/R是相容的,用直接 控制,用 3位。
因为 PC+ 1与 imm(disp)→ ALU,(rs)→
ALU不会同时出现,为了节省位数,所以将他们放在一起用 2位控制。
【例题答案】
微指令格式图 6.14所示:
微指令格式图 6.14 所示,
××
××
××
×××
×××
00
:空
00
:空
00
:空
00
:空
000
:空
01
:
DR
→
ALU 01
:
imm(disp)
→
ALU 01
:
DB
→
DR 001
:+
001
:
ALU
→
GR
10
:
PC
→
ALU 10
:
(rs)
→
ALU 10
:
DB
→
IR 010
:-
010
:
ALU
→
DR
11
:
(rs1)
→
ALU 11
:
PC
+
1 11
:
DR
→
DB 011
:∧
011
:
ALU
→
PC
100
:∨
100
:
ALU
→
AR
×
×
×
×
×
×
×
0
:空
0
:空
0
:空
0
:空
0
:空
0
:
IO 0
:
R
1
:
AR
→
AB 1
:
PC
→
AB 1
:
rs1
→
GR 1
:
rsrd
→
GR 1
:
ADS 1
:
M 1
:
W
图
6.14
图
6.7
中的微命令的编码
3,微程序的顺序控制
(1)微程序入口地址的形成
由于每条机器指令都需要取指操作,所以将取指操作编制成一 段公用微程序,通常安排在控制存储器的 0号或 1号单元开始的一段 CM空间。
每一条机器指令对 应着一段微程序,其入口就是初始微地址。首先由,取指令,微程序取出 一条机器指令到 IR中,然后根据机器指令操作码转换成该指令对应 的微程序入口地址。这是一种多分支 (或多路转移 )的情况,常用以下方 式形成入口地址:
如操作码为 P,则入口地址为× … × P 或
P× …×。
(2)后继微地址的形成
在转移到一条机器指令对应的微程序入口地址后,则开始执行 微程序,这时每条微指令执行完毕时,需根据 其中的顺序控制字段的要求形成后继微指令地址。
① 计数器方式
这种方式与用程序 计数器产生机器指令地址的方式相类似。在顺 序执行微指令时,后续微指令地址由现行微指 令加上一个增量来产生;在非顺序执行微指令时,由转移微指令实行转移,
转移微指令的控制字段分成两部分,条件选择字段与转移地址字段 。由这两个字段结合,当转移条件满足时,将 转移地址字段作下一个微地址;若转移条件不满足,则 直接从微程序计数器中取得下一条指令。
用计数器法产生微 地址的缺点是微程序中出现大量的转移微指令 。它们约占整个微指令数的
25%,导致执行时间大大增加。另外,在编 制微程序中,因微指 令的地址受到限制,因而不方便;要区分微命 令微指令和转移微指令使得微程序控制电路复杂化。
② 下址字段法 ——也称为断定方式
下址字段法与计数器法不同,它不采用 uPC,
而是在微指令格式 中,设置一个下址字段,用于指明下一条要执 行的微指令地址。当一条微指令被取出时,下 一条微指令的地址已获得。
它相当于每条微指令都具有转移微指令的功能。
采用这种方法就不 必设置专门的转移微指令,
但增加了微指令字的长度。
例 1 用下址字段法设计 ADD,SUB,JC 指令的微地址,
并画出下址字段法的微程序控制器组成框图。
【例题解答】
为了将微指令中的微命令在时间 上排开,选两相控制时序如下,
T1
T2
为了简单化,在此将微命令字段用字符 A,B,C…代替,如图 6.17 所示。
微指令格式为,
下址字段 ( A9∽ A0) 转移控制 (P2 P1) 微命令字段
设控存为 1K,微指令寄存器为 10 位,下址字段也为 10 位;
图中有 11条微指令,地址需 4位编码,假设将图 6.17中的取指微指令放在 000H单元中,其余微指令安排在 100H∽ 10FH这
16个单元中。
图中有三种转移情况,考虑顺序控制,
需用两位 P2,P1 来控制,此时,
100H∽ 10FH的地址中只有低 4位在变化,
所以地址只需修改低 4位,转移地址修改方案如下:
μ AR
3
μ AR
2
μ AR
1
μ AR
0
SUB IR
17
IR
16
ADD C
2 1 2 3
即,P2 P1 = 0 顺序控制
P2 P1 = 1 由 IR
17
IR
16
控制修改μ AR
3
μ AR
2
P2 P1 = 2 由 ADD控制修改μ AR
1
或由 SUB
控制修改μ AR
3
P2 P1 = 3 由 C控制修改μ AR
1
地址转移逻辑表达式为,μ AR
3
= (IR
17
1 +
SUB?2)?T2 μ AR
2
= IR
16
1?T2
μ AR
1
= ADD?2?T2 + C?3?T2 (在 T2节拍修改 )
μ AR
0
= C?3?T2 (在 T2节拍修改 )
【例题答案】
地址安排如图 6.17 所示 。
000H A 01 101H
mod =00 mod =01 mod =10 mod =11
101H 105H 109H 10DH
B 00 0111 C 00 104H D 00 104H 11 102H
104H F 00 107H Y C=1?
N 102H
103H E 00 000H 00 000H
107H H 00 007H
108H I 10 104H
ADD SUB
106H 10CH
J 00 000H K 00 000H
图
6,17
图
6.8
微程序流程的下址字段法微地址
第一条微指令安排在 000H号单元;
000H号单元是多路分支转移,按修改方案分别转到 101H,105H,109H,10DH四个单元。
① 101H号单元执行完后按顺序控制转移到
108H单元;
② 105H号单元执行完后按顺序控制转移到
104H单元;
104H号单元执行完后按顺序控制转移到 107H
单元;
107H号单元执行完后按顺序控制转移到 108H
单元;
108H号单元执行完后由 ADD控制转移到 106H
或由 SUB控制转移到 10CH;
106H号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
10CH号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
③ 109H号单元执行完后按顺序控制转移到
104H单元;
④ 10DH单 元 是 一 条 空操作微指令,由 C控制修改μ AR
0
,当 C=0时转移到 102H单元,当
C=1时转移到 103H单元。
102H号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
下址字段法的微程序控制器组成框图如图 6,18 所示 。
IR
指令寄存器
μ
AR
3
μ
AR
2
OP MOD
μ
AR
1
μ
AR
0
3
译码器
ADD SUB
IR
17
IR
16
微地址寄存器
μ
AR
1
+
2
控制存储器
CS
微地址转移逻辑
下址字段
P1 P2
微命令字段
微指令寄存器μ
IR
2
A9∽ A0
P1 P2
微命令字段
T2 T1 T1
时序
译码器
微指令译码器
1 2 3
PC
→
AB ALU
→
GR
0
图
6.18
图
6.8
微程序流程的下址字段法微程序控制器组成框图
1
③ 增量方式与断定方式的结合
在这种控制方式中微指令寄存器有计数的功能,但在微指令中仍设置一个顺序控制字段,它分成两部分,条件选择字段与转移地址字段。由这两个字段结合,
当转移条件满足时,将转移地址字段作下一个微地址;若无转移要求,则直接从微程序计数器中取得下一条指令。
例 1 用增量方式与断定方式结合法设计 ADD、
SUB,JC指 令的微地址,并画出微程序控制器组成框图 。
【例题解答】
此方法与下址字段法有些类似。
选两相控制时序如下,
T1
T2
为了简单化,在此将微命令字段用字符 A,B,C…代替
如图 6.19所示,详细微命令见图 6.8。
微指令格式为:
转移地址字段 BAF 转移控制 BCF 微命令字段设控存为 1K,微指令寄存器为 10位,BAF也为 10 位;
图中有 11条微指令,地址需 4位编码,假设将图 6.17中的取指微指令放在 000H单元中,其余 微指 令安 排 在
110H∽ 11FH这 16个单元中。
BCF的定义如下:
① BCF=0,由 PC计数得到下址地址。
② BCF=1:无条件转移
③ BCF=2:由 ADD控制修改μ PC
2
或由
SUB控制修改μ PC
1
④ BCF=3:由 IR
17
IR
16
控制修改μ PC
3
μ PC
2
⑤ BCF=4:由 C控制,C=0则转移,否则μ PC
1
计数
110H∽ 11FH 的地址中只有低 4 位在变化,所以地址
只需修改低 4 位,转移地址修改方案如下,
μ
PC
3 μ
PC
2 μ
PC
1μ
PC
0
IR
17
IR
16
ADD SUB
3 2
地址转移逻辑表达式为:
μ PC
3
= IR
17
3?T2
μ PC
2
= IR
16
3?T2
μ PC
1
=ADD?2?T2
μ PC
0
= SUB?2?T2
地址安排如图 6.19 所示 。
000H A 0 11 110H
mod =00 mod =01 mod =10 mod =11
110H 114H 118H 11CH
B 001 1000 C 001 × ××× D 001 0110 100 000H
115H F 001
× ××× C=0? Y
N
11DH E 001 000H
116H H 001 ×× ××
117H I 010 110H
ADD SUB
112H 111H
J 001 000H K 001 000H
图
6,19
图
6.8
微程序流程的增量与断定方式结合法微地址
通常第一条微指令安排在 000H号单元;
000H号单元是多路分支转移,按修改方案分别转到 110H,114H,118H,11CH四个单元。
① 110H号单元执行完后无条件转移到 117H。
② 114H号单元执行完后计数到地址 115H;
115H号单元执行完后计数到地址 116H;
116H号单元执行完后计数到地址 117H;
117H号单元执行完后由 ADD控制转移到 112H
或由 SUB控制转移到 111H;
112H号单元执行完后无条件转移到 000H,开始下一条微指令的执行;
111H号单元执行完后无条件转移到 000H,开始下一条微指令的执行;
③ 118H号单元执行完后无条件转移到
115H。
④ 11CH单元是一条空操作微指令,当
C=0时转 000H单元,否则μ PC+ 1到
11DH单元。
11DH号单元执行完后无条件转移到
000H,开始下一条微指令的执行;
增量方式与断定方式结合法的微程序控制器组成框图如图 6.20 所示 。
OP IR
17
IR
16
IR
译码器
3
地址转移逻辑
2
T2 3 3 2 2
门
μ
PC
3 μ
PC
2 μ
PC
1
μ
PC
0
+
1 1
Reset
μ
PC
CS (ROM)
≥
1
T1
微命令编码
BAF BCF
译码器
译码器
译码器
微命令
7
~
0
门
2
≥
1
4 C
1 2 3
图
6.20
图
6.8
微程序流程的增量与断定方式结合法控制器组成框图
4,微指令格式及执行方式
(1) 微指令格式
① 水 平型微指令
一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。
水平型微指令的一般格式如下:
控 制 字 段 判别测试字段 下地址字段
按照控制字段的编码方法不同,水平型微指令又分为三种:
第一种是全水平型 (不译法 )微指令;
第二种是字段译码法水平型微指令;
第三种是直接和译码相混合的水平型微指令。
② 垂直型微指令
垂直型微指令中设置微操作码字段,
由微操作码规定微指令的功能。
垂直型微指令的结构类似于机器指令的结构。它有操作码,在一条微指令中只有 1~ 2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。
③ 水平型微指令与垂直型微指令的比较
A,水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
B,水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
C,由水平型微指令解释指令的微程序,
具有微指令字比较长,但微程序短的特点;垂直型微指令则相反,微指令字比较短而微程序长。
D,水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,
比较容易掌握。
(2) 微指令的执行方式
① 串行执行方式
串行执行方式,又称顺序执行方式。
它是指取微指令、执行微指令完全按顺序进行,即只有在上一条微指令执行完后,才能取下一条微指令。
串行执行方式微指令执行速度慢,但微程序控制器结构简单。
② 并行执行方式
并行执行方式,又称重叠执行方式,在这种方式中,取微指令与执行微指令是重叠进行的。在一条微指令取出并开始执行时,同时去取下一条微指令。
由于一个微周期内执行微操作的时间与取下一条微指令的时间是重叠的,因此,大大缩短了微指令的执行周期,加快了微指令序列的执行速度。值得指出,
这些优点是用控制的复杂性换来的,即为了解决由重叠引起的各种问题,使微程序控制器的结构复杂化。
6.动态微程序设计和毫微程序设计
(1)动态微程序设计
在一台微程序控制的计算机中,假如能根据用户的要求改变微程序,那么这台机器就具有动态微程序设计功能。
动态微程序设计需要可写控制存储器的支持,否则难以改变微程序的内容。用于动态微程序设计的控存称为可写控制存储器 (WCS)或用户控制存储器 (UCS)。
(2)毫微程序设计
在普通的微程序计算机中,从主存取出的每条指令是由放在控制存储器中的微程序来解释执行,通过控制线对硬件进行直接控制。
如果微程序并不直接控制硬件,而是通过存放在第二级控制存储器中的毫微程序来解释的,这个第二级控制存储器称为毫微存储器,直接控制硬件的是毫微指令。
5.微程序控制器的设计
①根 据CPU的结构图写出每条指令的操作流程图并分解成微操作序列
② 用混合控制法对微命令进行编码
③ 选择合适的控制和时序
④ 选用微程序的顺序控制方法为微指 令安排微地址
⑤ 画出微程序控制器组成框图
6.6 流水线工作原理流水线工作原理
1.流水线基本工作原理
计算机执行程序是按顺序的方式进行的,
即程序中各条机器指令是按顺序串行执行的。如按四个周期完成一条指令来考虑,串行执行的过程如图 6.4(a); 4条指令重叠执行的过程如图 6.4(b)。
取指 1 计算地址 1 取操作数 1 运算并存结果 1 取指 2 计算地址 2 取操作数 2
(a) 4
条指令顺序执行
取指
计算地址
取操作数
运算并存结果
取指
计算地址
取操作数
运算并存结果
取指 计算地址 取操作数 运算并存结果
取指
计算地址
取操作数
运算并存结果
(b) 4
条指令重叠执行
图
6.4
指令执行情况
在图 6.4(b),将一条指令分成 4段,若每段所需时间为 t,那么一条指令的执行时间为 4t,但当第一条指令处理完后每隔 t
时间就能得到一条指令的处理结果,平均速度提高到 4倍,其过程相当于现代工业生产装配线上的流水作业,因此把这种处理机称之为流水线处理机。在程序开始执行时,由于流水线未装满,有的功能部件没有工作,速度较低。例如,
图 6.4(b),在开始 3t时间内得不到指令的处理结果,因此只有在流水线装满的稳定状态下,才能保证最高处理速率。
当将一条指令的执行过程分成 4段,每段有各自的功能部件执行 时,每个功能部件的执行时间是不可能完全相 等的。例如,从存储器取指或取数的时间与运 算时间可能就不一样,而在流水线装满的情况 下,各个功能部件同时都在工作,为了保证完成指定的操作,t值应取 4段中最长的时间,此 时有些功能段便会长时间处于等待状态,而达 不到所有功能段全面忙碌的要求,影响流水线作用的发挥。
为了解决这一问题 可采用将几个时间较短的功能段合并成一个功 能段或将时间较长的功能段分成几段等方法,其目的是最终使各段所需的时间相差不大。
除了指令执行流水线外,还有运算操作流水线。例如,执行浮点加法运算,可以分成,对阶,,“尾数加,及,结果规格化,
三段,每一段设置有专门的逻辑电路 完成指定操作,并将其输出保存在锁存器中,作为下一段的输入,如图 6.5所示。
当浮点加法对阶运算完成后,将结果送入锁存器,然后就可进行下一条浮点指令的阶码运算,实现流水线操作。
,
。
操
对
尾
规
作
阶
数
格
结
数
功
锁
加
锁
化
锁
果
输
能
存
部
存
部
存
输
入
部
器
件
器
件
器
出
件
由于流水线相邻两段在执行不同的指令
(或操作 ),因此无论是指令流水线或运算操作流水线,在相邻两段之间必须设置锁存器或寄存器,以保证在一个周期内流水线的输入信号不变。当流水线各段工作饱满时,能发挥最大作用。
在流水线计算机中,当任务饱满时,
任务源源不断地输入流水线,不论有多少级过程段,每隔一个时钟周期都能输出一个任务,从理论上说,一个具有 k级过程段的流水线处理 n个任务需要的时钟周期数为, T
k
= k+ (n- 1)
其中 k个时钟周期用于处理第一个任务,
k个周期后,流水线被装满,剩余的 n- 1
个任务只需 n- 1个周期就完成了。如果用非流水线处理器来处理这 n个任务,则所需时钟周期数为, T
l
= n·k
我们将 T
l
和 T
k
的比率定义为 k级线性流水处理器的加速比,C
k
= T
l
/ T
k
当 n>k时,C
k
→ k,这就是说,理论上 k
级线性流水线处理器几乎可以提高 k倍速度。但实际上由于存储器冲突、数据相关、程序分支和中断,这个理想的加速比不一定能达到。
例 6.6 ★假设一条指令的解释分为取指、
分析与执行 3步,每步相应的时间为 t
取指
、
t
分析和 t
执行
,分析以下三种情况下执行完
50条指令所需时间的一般关系式。
① 顺序方式。
②如 果,执行 k”与,取指 k+ 1,重叠。
③如 果,执行 k”,“分析 k+ l”与,取指 k+ 2”
重叠。
【例题解答】 (K+ 1)取指与 K执行重叠如图 6.21(a); (K+ 2)取指,(K+ l)分析、
K执行重叠如图 6.21(b)。
。
第
1
条
取指
2
取指
分析
执行
第
3
条
取指
分析
执行
第
48
条
取指
分析
执行
第
49
条
取指
分析
执行
第
50
条
取指
分析
执行
图
6.21 (a) (K
+
1)
取指与
K
执行重叠
50
条指令执行情况
分析 执行 第 条
,
取指
分析
执行
第
1
条
取指
分析
执行
第
2
条
取指
分析
执行
第
3
条
取指
分析
执行
第
4
条
取指
分析
执行
第
47
条
取指
分析
执行
第
48
条
取指
分析
执行
第
49
条
取指
分析
执行
第
50
条
图
6.21 (b) (K
+
2)
取指、
(K
+
l)
分析、
K
执行重叠时
50
条指令执行情况
【例题答案】
(1) 顺序方式 50条指令需要,50× (T
取
+ T
分
+ T
执
)。
(2) 100条指令需要,T
取
+ 50T
分
+ 49 max(T
取
,
T
执
)+ T
执
(3) 50条指令需要,T
取
+ max(T
分
,T
取
)+
48× max(T
执
,T
分
,T
取
)+ max(T
执
,T
分
)+ T
执
例 6.7 指令流水线有取指 (IF)、译码 (ID)、
执行 (EX)、访存 (MEM)、写回寄存器堆
(WB)五个过程段,共有 12条指令连续输入此流水线。
(1)画出流水处理的时空图,假设时钟周期 100ns。
(2)求流水线的实际吞吐率 (单位时间里执行完毕的指令数 )。
(3)求流水处理器的加速比。
【例题解答】
(1)12条指令连续进入流水线的时空图如图 6.22所示。
IF ID EX MEM WB 第 1 条
IF ID EX MEM WB 第 2 条
IF ID EX MEM WB 第 3 条
IF ID EX MEM WB 第 4 条
IF ID EX MEM WB 第 5 条
IF ID EX MEM WB 第 6 条
IF ID EX MEM WB 第 7 条
IF ID EX MEM WB 第 8 条
IF ID EX MEM WB 第 9 条
IF ID EX MEM WB 第 10 条
IF ID EX MEM WB 第 11条
IF ID EX MEM WB 第 12条
图
6.22 12
条指令连续进入流水线的时空图
(2) 流水线在 16个时钟周期中执行完 12条指令,
故实际吞吐率为
12/(16× 100ns)=75 × 10
5
条指令/ s
(3) k级流水线处理 n个任务所需的时钟周期 数为,T
k
=k+ (n- 1)
非流水处理器处理 n个任务所需的时钟周期周期数为,T
L
=nk
k级流水线处理器的加速比为 C
k
=T
L
/T
k
=nk/(k+
(n- 1))
代入已知数据 n=12, k=5,则 C
k
= 12×5/(5
+ 11)=60/16=3.75
2.流水线分类
(1)指令流水线
它是指指令步骤并行。例如将指令流的处理过程划分为取指、译码、取操作数、执行这几个并行处理的过程段。目前,几乎所有的高性能计算机都采用了指令流水。
(2)算术流水线
它是指运算操作步骤并行。如流水线加法器、流水线乘法器等。
(3)处理机流水线
处理机流水线又称为宏流水线,是指程序步骤的并行。由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务,数据流从第一台处理机输入,经处理后被送入与第二台处理机相联的缓冲存储器中;第二台处理机从该存储器中取出数据进行处理,然后传送给第三台处理机;如此串联下去。
3.流水线中的相关问题
流水线不能连续工作的原因,除了编译形成的程序不能发挥流水线的作用或存储器供 应不上为连续流动所 需的指令和数据以外,还因为出现了,相关,情况或遇到了程序转移指 令 。
例如,在图 6.6(a)的 4级流水线中,假如第 2条指令的操作数地址 即为第一条指令保存结果的地址,那么取操作数 2的动作需要等待 t时间才能进行,否则取得 的数据是错误的,这种情况称为数据相关,该 数据可以是存放在存储器中或通用寄存器中,分别称为存储器数据相关或寄存器数据相关。 此时流水线中指令流动情况将如图 6.6(b)所示。
为了改善流水线工作情况,一般设置相关专用通路,即当发生数据相关时,第 2
条指令的操作数直接从数据处理部件得到,而不是存入后再读取,这样指令能按图 6.6(a)流动。由于数据不相关时,仍需到存储器或寄存器中取数,因此增加了控制的复杂性。
一般来说,流水线级数越多,情况越复杂,而两级流水线则不存在数据相关现象。
取
指
计算地址
取操作数
运
算
取
指
计算地址
取操作数
运
算
(a)
取
指
计算地址
取操作数
运
算
取
指
计算地址
取操作数
运
算
(b)
取
指
计算地址
取操作数
运
算
图
6.6
流水线阻塞情况
4,程序转移对流水线的影响
在大多数流水线机器中,当遇到条件转移指令时,确定转移与 否的条件码往往由条件转移指令本身或由它前 一条指令形成,只有当它流出流水线时,才能 建立转移条件并决定下条指令地址。因此当条 件转移指令进入流水线后直到确定下一地址之 前,流水线不能继续处理后面的指令而处于等 待状态,因而影响流水线效率。在某些计算机中采用了,猜测法,技术,机器先选定转移分支中的一个,按它取指并处理,
假如条件码生成后,猜测是正确的,那么流水线可继续进行下去,时间得到充分利用;假如猜错了,那么要返 回分支点,并要保证在分支点后已进行的工作 不能破坏原有现场,否则将产生错误。编译程序可根据硬件上采取的措施,
使猜测正确的概率尽量高些。
例 6.8 流水线中有三类数据相关冲突:写后读
(RAW)相关;读后写 (WAR)相关;写后写
(WAW)相关。判断以下三组指令各存在哪种 类型的数据相关。
(1) I1 ADD Rl,R2,R3 ; (R2+
R3)→ Rl
I2 SUB R4,Rl,R5 ; (R1- R5)→ R4
(2) I3 STA M(x),R3 ; (R3) → M(x),
M(x)是存储器单元
I4 ADD R3,R4,R5 ; (R4+ R5)→ R3
(3) I5 MUL R3,Rl,R2 ; (R1)× (R2) → R3
I6 ADD R3,R4,R5 ; (R4+ R5)→ R3
解:第 (1)组指令 中, 11指令运算结果应先写入
R1,然后在 I2指令中读出 R1内容。由于 I2指令进入流水线,变成 I2指令在 I1指令写入 R1前就读出 Rl内容,发生 RAW相关。
第 (2)组指令中,I3指令应先读出 R3内容并存入存储 单元 M(x),然后在 I4指令中将运算结果写入 R3。但由于 I4指令进入流水线,变成 I4指令在 I3指令读出 R3内容前就写入 R3,发生 WAR
相关。
第 (3)组 指令中,如果 I6指令的加法运算完成时间早于 I5指令的乘法运算时间,变成指令 I6在指令 I5写入 R3前就写入 R3,导致 R3的内容错误,发生 WAW相关。
6章章中央处理器中央处理器
6.1 中央处理器的功能和组成中央处理器的功能和组成
1.中央处理器的功能
中央处理器简称 CPU,它具有如下四方面的功能:
(1)程序的顺序控制。
(2)操作控制 产生 取出 并执 行指 令的 微操 作信号,并把各种操 作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
(3)时间控制 对各 种操 作实 施时 间上 的控 制。
(4)数据加工 对数 据进 行算 术运 算和 逻辑 运算处理。
2,中央处理器的组成
中央处理器由控制器、运算器和总线组成。
(1)控制器
控制器是全机的指挥中心,其基本功能就是执行指令。
控制器由程序计数器 PC、指令寄存器 IR、
地址寄存器 (AR)、数据寄存器 (DR)、指令译码器、时序系统和微操作信号发生器组成。
① 程序计数器 PC
用以指出下条指令在主存中的存放地址,
CPU根据 PC的内容去主存取得指令。因程序中指令是顺序执行的,所以 PC有自增功能。
② 指令寄存器 (IR),用来保存当前正在执行的一条指令的代码。
③ 地址寄存器 (AR),用来存放当前 CPU
访问内存单元的地址。
④ 数据寄存器 (DR),用来暂存由内存储器中读出或写如入内存的指令或数据。
⑤ 指令译码器, 分别对操作码字段、寻址方式字段、地址码字段进行译码,向控制器提供操作的特定信号。
⑥ 时序部件, 用来产生各种时序信号,
时序信号可分为 CPU周期信号、节拍周期信号和节拍脉冲信号,它们都是由统一时钟 CLOCK分频得到。
⑦ 微操作形成部件, 根据 IR的内容 (指令 )、
PSW的内容 (状态信息 )以及时序线路三方面的内容,产生控制整个计算机系统所需的各种控制信号。其结构有组合逻辑型和存储逻辑型。
(2)运算器
运算器由算术逻辑单元 (ALU)、通用寄存器、
程序状态字寄存器,数据暂存器、移位器等组成。它接收从控制 器送来的命令并执行响应的动作,负责对数据的加工和处理。
各组成部件的作用是:
· ① 算术逻辑单元 (ALU),用以进行双操作数的算术逻辑运算。
· ② 通 用寄存器组, 用来存放操作数 (包括源操作数、目的操作数及中间 结果 )和各种地址信息等。
③ 暂存器, 用来暂存从主存储器读出的数据,
这个数据是不能存 放在通用寄存器中,否则会破坏其原有的内容。
· ④ 程序状态字寄存器 (PSW),保留由算术逻辑运算指令或测试指令的结果建立的各种状态信息。
· ⑤ 移位器:在 ALU输出端设暂存器用来存放运算结果,它具有对运算结果进行移位运算的功能。
(3)总线与数据通路结构
① 内 部总线
CPU内部连节各寄存器的总线。
· ②系 统 总 线
系统总线是 CPU与主存储器 MM、外部设备接口相联的总线,它包括地址总线、数据总 线和控制总线。
CPU向地址总线提供访问主存单元或 I/O接口的地址。
CPU向数据总线发送或接收数据,以完成与主存单元或 I/ O接口之间的数据传送,主存 M
和 I/ O设备之间也可以通过数据总线传送数据。
CPU通过控制总线向主存或 I/ 0设备发出有关控制信号,或接收控制信号; I/ O没备也可以向控制总线发出控制信号。
6.2 指令的执行指令的执行
1.指令执行的周期
(1)取指周期
取指周期要解决两个问题:一是 CPU到哪个存储单元去取指令;二是如何形成后继指令地址。
指令地址由 PC给出,取出指令后 PC内容递增;当出现转移情况时,指令地址在执行周期被修改。
(2)取操作数周期
取操作数周期要解 决的问题是,计算操作数地址并取出操作数。
操作数有效地址的 形成由寻址方式确定。寻址方式不同,有效地 址获得的方式、过程不同,
提供操作数的途径 也不同。因此,取操作数周期所进行的操作对不同的寻址方式是不相同的。
(3)执行周期
执行周期的主要任务是完成由指令操作码规定的动作,包括传 送结果及记录状态信息。操作结果送到什么地 方由寻址方式确定;状态信息,主要是条件码,记录在 PSW中。若程序出现转移时,则在执行周期内还要决定转移地址。
因此,执行周期的操作对不同指令也不相同。
(4)指令周期
将一条指令从取出 到执行完成所需要的时间称为指令周期。
(5)指令周期与机器周期和时钟周期的关系
指令周期是完成一条指令所需的时间。包括取指令、分析指令和执行指令所需的全部时间。
指令周期划分为几个不同的阶段,每个阶段所需的时间,称为机器周期,又称为 CPU工作周期或基本周期,通常等于取指时间 (或访存时间 )。时钟周期是时钟频率的倒数,也可称为节拍脉冲或 T周期,是处理操作的最基本单位。
一个指令周期由若干个机器周期组成,
每个机器周期又由若干个时钟周期组成。
一个机器周期内包含的时钟周期个数决定于该机器周期内完成的动作所需的时间。一个指令周期包含的机器周期个数亦与指令所要求的动作有关,如单操作数指令,只需要一个取操作数周期,
而双操作数指令需要两个取操作数周期。
2.指令的执行
(1)指令的执行过程
① 取指令
根据指令计数器 PC提供的地址从主存储器中读取现行指令,送到主存数据缓冲器 MDR中。然后再送往 CPU内的指令寄存器 IR中。同时改变指令计数器的内容,
使之指向下一条指令地址或紧跟现行指令的立即数或地址码。
②取 操 作 数
如果是无操作数指令则可直接进入下一个过程。如果需要操作数则根据寻址方式计算地址,
然后到存储器中去 取操作数。如果是双操作数指令则需两个取数周期;
③执 行 操 作
根据操作码完成相 应的操作并根据目的操作数的寻址方式存结果。
(2)指令之间的衔接方式
指令之间的衔接方式有:串行的顺序执行方式、并行的重叠处理方式和流水执行方式。
3,指令执行的操作流程与微操作序列
每条指令的执行过程可以分解为一组操作序列。
“操作,是指功能部件级的动作,它是可以 再 分解的。
,操作,可进一步分解为一组微操作序列。,微操作,是指指令序列中最 基本 的,不可 再分 割的 动作。
若将每一条指令的执行过程都分解为一组操作序列,并将这些 操作按指令执行的周期分类归并就可得到指令 的操作流程。将指令的操作流程以流程图的形 式描述,就得到指令操作流程图,简称指令流程图。
·注意:根据CPU结构图写出指令操作流程图和微操作序列是考试的重点。
例 6.1 已知 CPU结构图如 P175图 6.8所示。
指令格式为:
31 24 23 21 20 18 17 16 15
0
op(8位 ) rs(3位 ) rs1(3位 ) mod(2位 ) imm/disp(16
位 )
目的寄存器为 rs。
源操作数的寻址方式由 mod决定:
mod =00 源操作数的地址 = rs1 (寄存器寻址 )
mod =01 源操作数 = (rs1)+ disp (变址寻址 )
mod =10 源操作数的地址 = (rs1) (寄存器间接寻址 )
mod =11 源操作数的地址 = (pc)+ disp (相对寻址 )
· (1) 画出 ADD,SUB,JC指令的执行流程
(JC为条件转移指令,当 C=1时转移;当 C=0时取下条指令 ),标出相应的微操作序列。
(2) 画出 load 指令的操作流程图,并标出相应的微操作序列。
load指令的功能是将源操作数 (源操作数有寄存器寻址、变址寻址和寄 存器 间接 寻址 三种 方式 )
送目的寄存器 rs;
(3)画出 store 指令的操作流程图,并标出相应的微操作序列。
store指令的功能是将目的寄存器 rs的内容送源操作数地址中 (源操作数有寄存器寻址、变址寻址和寄存器间接寻址三种方式 )。
(1)【例题答案】 ADD,SUB JC 指令的操作流程图如图所示。
PC→ AB
ADS(T1),M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1
mod =00 mod =01 mod =10 mod =11
N 计
rs1→ GR rs1→ GR,disp→ ALU(B) rs1→ GR C=1 算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) Y 地
+,ALU→ AR M(S=A),ALU→ AR disp→ ALU(B) 址
(pc)→ ALU(A)
+,ALU→ pc
AR→ AB
ADS(T1),M/IO=1,W/R=0 取数周期 cy3
DB→ DR
DR→ ALU(A)
rs → GR,(rs)→ ALU(B)
ADD SUB 取目的数、执行并送结果 cy4
+,ALU→ GR -, ALU→ GR
(2)【例题答案】 load 指令的操作流程图如图所示。
PC→ AB
ADS,M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1
mod =00 mod =01 mod =10
计
rs1→ GR rs1→ GR,disp→ ALU (B) rs1→ GR,算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) 地
+,ALU→ AR M(S=A),ALU→ AR 址
AR→ AB
ADS,M/IO=1,W/R=0 取数周期 cy3
DB→ DR
DR→ ALU(A)
rs → GR
取目的数并送结果 cy4
M(S=A),ALU→ GR
(3) 【例题答案】
store 指令的操作流程图如图 6.10 所示。
PC
→
AB
ADS
,
M/IO=1
,
W/R=0
取指周期
cy1
DB
→
IR
,
PC
+
1
mod =00
mod =01
mod =10
计
rs1
→
GR rs1
→
GR
,
disp
→
ALU(B) rs1
→
GR
,
算
cy2
(rs1)
→
ALU(A) (rs1)
→
ALU(A)
地
+,
ALU
→
AR M(S=A)
,
ALU
→
AR
址
rs
→
GR
(rs)
→
ALU(B)
M(S=B)
,
ALU
→
GR
rs
→
GR
,
(rs)
→
ALU(B)
取目的操作数
cy3
M(S=B)
,
ALU
→
DR
ADS
,
M/IO=1
,
W/R=1
执行并送结果
cy4
单条指令的操作流程图可从中抽取,如P290 题6.2、题6.9。
6.3 时序与控制时序与控制
1,控制器基本控制方式
(1)同步控制方式
所谓同步控制方式,就是系统有一个统一的时钟,所有的控制 信号均来自这个统一的时钟信号。
根据指令周期,CPU周期和节拍周期的长度固定与否,同步控制方式又可分为以下几种。
① 定 长指令周期 即 所有的指令执行时间都相等。若指令的繁简 差异很大,规定统一的指令周期,无疑会造成 太多的时间浪费,因此,定长指令周期的方式很少被采用。
②定 长 CPU周 期 这种方式中各 CPU周期都相等,一般都等于内存的存取周期。
而指令周期不固定,等于整数个 CPU周期。
③变长指令周期、变长 CPU周期 这种方式的指令周期长度不固定,而且 CPU
周期也不固定,不会造成时间浪费,但时序系统的控制比较复杂,要根据不同情况确定每个 CPU周期的节拍数。
(2)异步控制方式
异步控制方式中没有统一的时钟信号,各部件按自身固有的速 度工作,通过应答方式进行联 络, 常见的应答信号有准备好 Ready或等待
WAIT等,异步控制相对于同步要复杂。
CPU内部的操作采用同步方 式,CPU与内存和 I/ O设备的操作采用异步方式,这就带来一个同步方式与异步 方式如何过渡、如何衔接的问题。也就是说,当内存或 I/ O设备的 Ready
信号到达 CPU时,不可能恰好为 CPU脉冲源的整周期或节拍的整 周期,解决办法也是一种折衷方案,即联合控制方式。
(3)联合控制方式
联合控制方式是介于同步异步之间的一种折衷。在联合控制方式中,CPU并不是在任何时刻立即对来自内存和 I/ O接口的应答信号作出反应,而是在一个节拍 周期 的结 束 (下一个节拍周期的开始 )。也就是说,当 CPU进行内存的读写操作或进行 I/ O设备的数据传送时,是按同步方式插入一个 节拍周期或几个节拍周期,
直到内存或 I/ O设备的应答信号到达为止。联合控制方式是 CPU进行内存的读写操作和 I/ O
数据传送操作通常 采用的方式,较好的解决了同步与异步的衔接问题。
2,控制器的时序
(1)组合逻辑控制器的时序
采用同步控制方式的组合逻辑控制器的时序如图 6.1所示。
图 6.1 组合逻辑控制器的时序
(2)微程序控制器的时序系统
一个机器指令周期 包括一系列微周期,每个微周期给出固定的同 步脉冲,这就是微程序控制器的时序,它比组合逻辑控制器的时序要简单,
如图 6,所示。
T
0
T
1
T
2
微指令周期
微指令周期
图
6.2
微程序控制的三相控制时序
6.4 组合逻辑控制器组合逻辑控制器
组合逻辑控制器的核心部件就是微操作产生部件。微操作产生部件,是采用组合逻辑设计思想,以布尔代数为主要工具设计而成。它的输入信号来自指令译码器的输出、时序发生器的时序信号及程序运行的结果特征及状态。它的输出是一组带有时间标志的微操作控制信号。
每个微操作控制信号是指令、时序、结果特征及状态等的逻辑函数,可表示为:
微操作=周期 ·节拍 ·脉冲 ·指令码 ·其它条件
组合逻辑控制器的设计步骤:
①根据 CPU的结构图写出每条指令的操作流程图并分解成微操作序列
②选择合适的控制方式和控制时序
③对微操作流程图安排时序,排出微操作时间表
④根据操作时间表写出微操作的表达式
⑤根据微操作的表达式画出组合逻辑电路。
组合逻辑控制器的 核心部分比较繁琐、零乱,
设计效率较低,设 计过程十分麻烦,其结构也十分复杂,特别是 当指令系统比较庞大,操作码多,寻址方式多时,其复杂程度会成倍增加。
另外检查调试也比 较困难。而且设计结果用印制电路板 (硬连逻辑 )固定下来以后,就很 难 再修改与扩展。
但组合逻辑控制器 的最大优点是微操作控制信号产生的速度很快,只 需两 级门 (一级与、一级或 )的延时就可产生。 对于 指令 系统 比较 简单 的精简指令系统计算机 RISC,采用组合逻 辑 控制器,是比较合适 的,可以提高指令执行的速度,由于指令系统 简单,逻辑组成也不至于太复杂。
例 6.2 设计 ADD,SUB,JC指令的硬布线控制器 (组合逻辑控制器 )
【例题解答】
①根 据 CPU的结构图写出每条指令的操作流程图并分解成微操 作 序 列 (如图 6.8所示 )。
② 选同步控制方式和三级时序:
安排四个机器周期:取指周期 cy1、计算地址周期 cy2、取数周期 cy3、执行周期 cy4;每个机器周期安排二个节拍 T1和
T2,每个节拍中有一个节拍脉冲,时序如图 6.11所示:
cy1
cy2
cy3
cy4
T1
T2
P1
P2
取指周期
计算地址周期
取数周期
执行周期
指令周期
图
6.11
三级时序系统
① 为微操作序列安排时序如图 6.12所示 (将打入寄存器的控制信号安排在 T2节拍的下降沿,其它控制信号在 T1,T2中一直有效 )。
PC→ AB
ADS(T1),M/IO=1,W/R=0 取指周期 cy1
DB→ IR,PC+ 1(T2)
mod =00 mod =01 mod =10 mod =11
N 计
rs1→ GR rs1→ GR,disp→ ALU(B) rs1→ GR,C=1 算 cy2
(rs1)→ ALU(A) (rs1)→ ALU(A) (rs1)→ ALU(A) Y 地
+,ALU→ AR(T2) M(S=A),ALU→ AR(T2) disp→ ALU(B) 址
(pc)→ ALU(A)
+,ALU→ pc(T2)
AR→ AB
ADS(T1),M/IO=1,W/R=0 取数周期 cy3
DB→ DR(T2)
DR→ ALU(A)
rs → GR,(rs)→ ALU(B)
ADD SUB 取目的数、执行并送结果 cy4
+,ALU→ GR(T2) -, ALU→ GR(T2)
图 6.12 ADD,SUB,JC 指令的操作流程的时序安排
④列出操作时间表
根据图 6.12的操作流程安排的时间表如表 6.2所示。
表6.2 ADD、SUB、JC 指令的操作时间表
表6.2 ADD、SUB,JC 指令的操作时间表
微操作
CY1 CY2 CY3 CY4
PC
→
AB ALL
PC
→
ALU
C
IRIR
1617
ADS=1(T1) ALL
IRIRIRIR 16171617
+
RW/
=0
ALL
IRIRIRIR 16171617
+
IO M/
=1
ALL
IRIRIRIR 16171617
+
ALU
→
PC(T2)
C
IRIR
1617
PC
+
1(T2) ALL
Imm(disp)
→
ALU
C
IRIRIRIR
1617
1617
+
DB
→
IR(T2) ALL
DB
→
DR(T2)
IRIRIRIR 16171617
+
DR
→
DB
rs1
→
GR
IRIR 1617
Rs
,
rd
→
GR
IRIR 1617
(rs1)
→
ALU
IRIR 1617
(rs)
→
ALU
IRIR 1617
DR
→
ALU
IRIRIRIR 16171617
+
ALU
→
GR(T2) ADD+SUB
ALU
→
DR(T2)
ALU
→
AR(T2)
IRIR
1617
+
AR
→
AB
IRIRIRIR 16171617
+
+
C
IRIRIRIR
1617
1617
+
ADD
-
SUB
∧
∨
M
IRIR 1617
⑤
综合微操作表达式
PC
→
AB=CY1
)( CYABAR
IRIRIRIR
16171617
3 +?=→
)(31/
16171617
IRIRIRIR
CYCYRW +?+=
ADS= CY1
·
T1
+
CY3
·
(IR
17
IR
16
+
IR
17
IR
16
)
·
T1
ADD,SUB,JC指令的组合逻辑控制器逻辑电路框图如图 6.13所示。
ADD,SUB,JC 指令的组合逻辑控制器逻辑电路框图如图 6.13 所示。
31 24 23 21 20 18 17 16 15 0
op(8
位
) rs(3
位
) rs1(3
位
) mod(2
位
) imm/disp(16
位
)
指
令
译
码
器
IR
17
IR
16
CY1
CY2 ADD SUB JMP PC
→
AB
时
CY3 DB
→
IR
序
CY4
产
T1
组合逻辑控制器
微操作控制信 号
生
T2
器
P1
+
P2
-
图
6.13 ADD
、
SUB
、
JC
指令的组合逻辑控制器逻辑框图
6.5 微程序控制器微程序控制器
1.微程序控制概念
(1)微程序控制方式的基本思想
① 将 机器指令分解为基 本的 微命 令序 列,
用二进制代码表示这些微命令,并编成微指令,
多条微指令再形成 微程序。每种机器指令对应一段微程序,在制造 CPU时固化在 CPU中的一个控制存储器 (CM)中。执行 —条 机器指令时,
CPU依次从 CM中取微指令,从而产生微 命令 。
② 一 条微指令包含的微 命令,控 制实 现一个节拍的操作;若 干条微指令组成的一小段微程序解释执行一条机器指令。 CM中的微程序能解释执行整个指令系统的所有机器指令。
程 序控制器框图如图 6.3 所示。
转移地址来源
运行状态
微
命
令
后续微地址形成电路
译
码
指
微指令寄存器
令
微地址寄存器
微
操
作
控
制
字
段
顺序控制字段
操
作
码
地址
译码驱动
机器指令寄存器
IR
控制存储器
ROM
主存储器
RAM
图
6, 3
微程序控制器原理框图
微程序控制器的核心是控制存储器 CM,
用它存放各指令对应的微程序,CM可用只读存储器 ROM构成。若采用可擦除可编程只读存储路 EPROM作 CM,则有利于微程序的修改和动态微程序设计。
控制存储器 CM的一行表示存放的一条微指令,列线输山微指令代码。行列交叉处有黑点行者表示该位信息为,1”,行列交叉处无黑点者表示该位信息为,0”。
微指令寄存器存放从 CM中读出的微指令,
它包含两大部分:微操作控制字段 (微命令字段 )和顺序控制字段 (微地址宇段 )。
微命令字段可直接按位或通过译码提供微命令。顺序控制字段用于控制产生下一条微指令地址或由微指令地址形成电路按有关条件形成。
(2)基本概念和术语
① 微 命令与微操作
微命令 ——控制完成微操作的命令。例如:
打开或关闭某个控 制门的电位信号,某个寄存器的打入脉冲等。 微命令由控制器通过控制线向有关的部件发出。
微操作 ——由微命令控制实现的最基本操作。
② 微 指令与微周期
微指令 ——若干个微命令的组合,以编码形式存放在控制存储 器的一个单元中,控制实现一步操作。
微周期 ——通常指从控制存储器中读取一条微指令并执行相应的微操作所需的时间。
· ● 若 一个微周期的全部微命令用一个同步脉冲定时,则这种微周期称为单周期;
· ● 若 一个微周期内用一个以上的同步脉冲定时全部微命令,则称多周期。
③ 机 器语言程序与微程序
一系列指令的有序集合称为机器语言程序。
一系列微指令的有 序集合称为微程序,一条指令的功能由一段微程序来实现。
2,微指令编码方法
(1)直接控制编码 (不译码法 )
直接控制编码是指微指令的微命令字段中每一位都代表一个微 命令。设计微指令时,选用或不选用某个微命 令,只要将表示该微命令的对应位设置成 1或 0就可以了。因此,微命令 的产生不需译码。
这种编码的优点是 简单、直观,执行速度快,
操作并行性最好;
其缺点是微指令字 长过长,使控制存储器单元的位数过多。而且,在给定的任何一个微指令中,往往只需部分 微命令,因此只有部分位置
1,造成有效的空间不能充分利用。
(2)字段直接编译法
① 相 斥性微命令和相容性微命令
同一微周期中不能 同时出现的微命令称为相斥性微命令;
在同一微周期中可 以同时出现的微命令称为相容性微命令。
②分段直接编译法
将微指令的微命令 字段分成若干小字段,把相斥性微命令组合在 同一字段中,而把相容性微命令组合在不同的字段中,每个字段独立编码,
每种编码代表一个 微命令且各字段编码含义单独定义,与其它字 段无关,这就称为分段直接编译法。
③分段的原则
A,互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。
B,与数据通路结构相适应。
C,每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
D,一般每个小段还要留出一个状态,表示本字段不发出任何 现行命令。因此当某字段的长度为三位时,最 多只能表示七个互斥的微命令,通常用 000表示不操作。
(3)分段间接编译法
分段间接编译法是在直接编译法基础上,
进一步缩短微指令字长的一种编码方法。
在这种编译法中,一个字段的含义不仅决定于本字段编码,还兼由其它字段来解释,以便使用较少的信息位表示更多的微命令。
(4)混合控制法 ——直接控制法与译码控制法的混合使用。
例 1 对图 6.7中的微命令进行编码
【相关知识】 分段直接编译法是将微指令的微命令字段分成若干小字段,把相斥性微命令组合在同一字段中,而把相容性微命令组合在不同的字段中,每个字段独立编码,每种编码代表一个微命令且各字段编码含义单独定义,与其它字段无关。在此采用混合控制法。
【例题分析】
(1) 按照 CPU结构图找互斥性微操作:
①以 AB总线为单位,AR→ AB,PC→ AB
是互斥的
②以 ALU为单位,DR→ ALU,PC→ ALU、
(rs1)→ ALU 是互斥的
imm(disp)→ ALU,(rs)→ ALU
是互斥的
ALU→ GR,ALU→ DR,ALU→ PC、
ALU→ AR 是互斥的
+、-、∧、∨是互斥的
③以 GR为单位,rs1→ GR,rsrd→ GR 是互斥的
④以 DB为单位,DB→ DR,DB→ IR、
DR→ DB 是互斥的
(2) 分组
DR→ ALU,PC→ ALU,(rs1)→ ALU这一组微命令用 2位控制。
ALU→ GR,ALU→ DR,ALU→ PC、
ALU→ AR这一组微命令是相斥的,用 3
位控制。
DB→ DR,DB→ IR,DR→ DB这 一组微命令用 2位控制。
AR→ AB,PC→ AB这一组微命令放在一起,但若用译码控制需加译码器,仍需 2位控制,所以就用直接控制。
rs1→ GR,rsrd→ GR这一组微命令也用直接控制,原因同上。
ADS,M/IO,W/R是相容的,用直接 控制,用 3位。
因为 PC+ 1与 imm(disp)→ ALU,(rs)→
ALU不会同时出现,为了节省位数,所以将他们放在一起用 2位控制。
【例题答案】
微指令格式图 6.14所示:
微指令格式图 6.14 所示,
××
××
××
×××
×××
00
:空
00
:空
00
:空
00
:空
000
:空
01
:
DR
→
ALU 01
:
imm(disp)
→
ALU 01
:
DB
→
DR 001
:+
001
:
ALU
→
GR
10
:
PC
→
ALU 10
:
(rs)
→
ALU 10
:
DB
→
IR 010
:-
010
:
ALU
→
DR
11
:
(rs1)
→
ALU 11
:
PC
+
1 11
:
DR
→
DB 011
:∧
011
:
ALU
→
PC
100
:∨
100
:
ALU
→
AR
×
×
×
×
×
×
×
0
:空
0
:空
0
:空
0
:空
0
:空
0
:
IO 0
:
R
1
:
AR
→
AB 1
:
PC
→
AB 1
:
rs1
→
GR 1
:
rsrd
→
GR 1
:
ADS 1
:
M 1
:
W
图
6.14
图
6.7
中的微命令的编码
3,微程序的顺序控制
(1)微程序入口地址的形成
由于每条机器指令都需要取指操作,所以将取指操作编制成一 段公用微程序,通常安排在控制存储器的 0号或 1号单元开始的一段 CM空间。
每一条机器指令对 应着一段微程序,其入口就是初始微地址。首先由,取指令,微程序取出 一条机器指令到 IR中,然后根据机器指令操作码转换成该指令对应 的微程序入口地址。这是一种多分支 (或多路转移 )的情况,常用以下方 式形成入口地址:
如操作码为 P,则入口地址为× … × P 或
P× …×。
(2)后继微地址的形成
在转移到一条机器指令对应的微程序入口地址后,则开始执行 微程序,这时每条微指令执行完毕时,需根据 其中的顺序控制字段的要求形成后继微指令地址。
① 计数器方式
这种方式与用程序 计数器产生机器指令地址的方式相类似。在顺 序执行微指令时,后续微指令地址由现行微指 令加上一个增量来产生;在非顺序执行微指令时,由转移微指令实行转移,
转移微指令的控制字段分成两部分,条件选择字段与转移地址字段 。由这两个字段结合,当转移条件满足时,将 转移地址字段作下一个微地址;若转移条件不满足,则 直接从微程序计数器中取得下一条指令。
用计数器法产生微 地址的缺点是微程序中出现大量的转移微指令 。它们约占整个微指令数的
25%,导致执行时间大大增加。另外,在编 制微程序中,因微指 令的地址受到限制,因而不方便;要区分微命 令微指令和转移微指令使得微程序控制电路复杂化。
② 下址字段法 ——也称为断定方式
下址字段法与计数器法不同,它不采用 uPC,
而是在微指令格式 中,设置一个下址字段,用于指明下一条要执 行的微指令地址。当一条微指令被取出时,下 一条微指令的地址已获得。
它相当于每条微指令都具有转移微指令的功能。
采用这种方法就不 必设置专门的转移微指令,
但增加了微指令字的长度。
例 1 用下址字段法设计 ADD,SUB,JC 指令的微地址,
并画出下址字段法的微程序控制器组成框图。
【例题解答】
为了将微指令中的微命令在时间 上排开,选两相控制时序如下,
T1
T2
为了简单化,在此将微命令字段用字符 A,B,C…代替,如图 6.17 所示。
微指令格式为,
下址字段 ( A9∽ A0) 转移控制 (P2 P1) 微命令字段
设控存为 1K,微指令寄存器为 10 位,下址字段也为 10 位;
图中有 11条微指令,地址需 4位编码,假设将图 6.17中的取指微指令放在 000H单元中,其余微指令安排在 100H∽ 10FH这
16个单元中。
图中有三种转移情况,考虑顺序控制,
需用两位 P2,P1 来控制,此时,
100H∽ 10FH的地址中只有低 4位在变化,
所以地址只需修改低 4位,转移地址修改方案如下:
μ AR
3
μ AR
2
μ AR
1
μ AR
0
SUB IR
17
IR
16
ADD C
2 1 2 3
即,P2 P1 = 0 顺序控制
P2 P1 = 1 由 IR
17
IR
16
控制修改μ AR
3
μ AR
2
P2 P1 = 2 由 ADD控制修改μ AR
1
或由 SUB
控制修改μ AR
3
P2 P1 = 3 由 C控制修改μ AR
1
地址转移逻辑表达式为,μ AR
3
= (IR
17
1 +
SUB?2)?T2 μ AR
2
= IR
16
1?T2
μ AR
1
= ADD?2?T2 + C?3?T2 (在 T2节拍修改 )
μ AR
0
= C?3?T2 (在 T2节拍修改 )
【例题答案】
地址安排如图 6.17 所示 。
000H A 01 101H
mod =00 mod =01 mod =10 mod =11
101H 105H 109H 10DH
B 00 0111 C 00 104H D 00 104H 11 102H
104H F 00 107H Y C=1?
N 102H
103H E 00 000H 00 000H
107H H 00 007H
108H I 10 104H
ADD SUB
106H 10CH
J 00 000H K 00 000H
图
6,17
图
6.8
微程序流程的下址字段法微地址
第一条微指令安排在 000H号单元;
000H号单元是多路分支转移,按修改方案分别转到 101H,105H,109H,10DH四个单元。
① 101H号单元执行完后按顺序控制转移到
108H单元;
② 105H号单元执行完后按顺序控制转移到
104H单元;
104H号单元执行完后按顺序控制转移到 107H
单元;
107H号单元执行完后按顺序控制转移到 108H
单元;
108H号单元执行完后由 ADD控制转移到 106H
或由 SUB控制转移到 10CH;
106H号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
10CH号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
③ 109H号单元执行完后按顺序控制转移到
104H单元;
④ 10DH单 元 是 一 条 空操作微指令,由 C控制修改μ AR
0
,当 C=0时转移到 102H单元,当
C=1时转移到 103H单元。
102H号单元执行完后按顺序控制转移到 000H,
开始下一条微指令的执行;
下址字段法的微程序控制器组成框图如图 6,18 所示 。
IR
指令寄存器
μ
AR
3
μ
AR
2
OP MOD
μ
AR
1
μ
AR
0
3
译码器
ADD SUB
IR
17
IR
16
微地址寄存器
μ
AR
1
+
2
控制存储器
CS
微地址转移逻辑
下址字段
P1 P2
微命令字段
微指令寄存器μ
IR
2
A9∽ A0
P1 P2
微命令字段
T2 T1 T1
时序
译码器
微指令译码器
1 2 3
PC
→
AB ALU
→
GR
0
图
6.18
图
6.8
微程序流程的下址字段法微程序控制器组成框图
1
③ 增量方式与断定方式的结合
在这种控制方式中微指令寄存器有计数的功能,但在微指令中仍设置一个顺序控制字段,它分成两部分,条件选择字段与转移地址字段。由这两个字段结合,
当转移条件满足时,将转移地址字段作下一个微地址;若无转移要求,则直接从微程序计数器中取得下一条指令。
例 1 用增量方式与断定方式结合法设计 ADD、
SUB,JC指 令的微地址,并画出微程序控制器组成框图 。
【例题解答】
此方法与下址字段法有些类似。
选两相控制时序如下,
T1
T2
为了简单化,在此将微命令字段用字符 A,B,C…代替
如图 6.19所示,详细微命令见图 6.8。
微指令格式为:
转移地址字段 BAF 转移控制 BCF 微命令字段设控存为 1K,微指令寄存器为 10位,BAF也为 10 位;
图中有 11条微指令,地址需 4位编码,假设将图 6.17中的取指微指令放在 000H单元中,其余 微指 令安 排 在
110H∽ 11FH这 16个单元中。
BCF的定义如下:
① BCF=0,由 PC计数得到下址地址。
② BCF=1:无条件转移
③ BCF=2:由 ADD控制修改μ PC
2
或由
SUB控制修改μ PC
1
④ BCF=3:由 IR
17
IR
16
控制修改μ PC
3
μ PC
2
⑤ BCF=4:由 C控制,C=0则转移,否则μ PC
1
计数
110H∽ 11FH 的地址中只有低 4 位在变化,所以地址
只需修改低 4 位,转移地址修改方案如下,
μ
PC
3 μ
PC
2 μ
PC
1μ
PC
0
IR
17
IR
16
ADD SUB
3 2
地址转移逻辑表达式为:
μ PC
3
= IR
17
3?T2
μ PC
2
= IR
16
3?T2
μ PC
1
=ADD?2?T2
μ PC
0
= SUB?2?T2
地址安排如图 6.19 所示 。
000H A 0 11 110H
mod =00 mod =01 mod =10 mod =11
110H 114H 118H 11CH
B 001 1000 C 001 × ××× D 001 0110 100 000H
115H F 001
× ××× C=0? Y
N
11DH E 001 000H
116H H 001 ×× ××
117H I 010 110H
ADD SUB
112H 111H
J 001 000H K 001 000H
图
6,19
图
6.8
微程序流程的增量与断定方式结合法微地址
通常第一条微指令安排在 000H号单元;
000H号单元是多路分支转移,按修改方案分别转到 110H,114H,118H,11CH四个单元。
① 110H号单元执行完后无条件转移到 117H。
② 114H号单元执行完后计数到地址 115H;
115H号单元执行完后计数到地址 116H;
116H号单元执行完后计数到地址 117H;
117H号单元执行完后由 ADD控制转移到 112H
或由 SUB控制转移到 111H;
112H号单元执行完后无条件转移到 000H,开始下一条微指令的执行;
111H号单元执行完后无条件转移到 000H,开始下一条微指令的执行;
③ 118H号单元执行完后无条件转移到
115H。
④ 11CH单元是一条空操作微指令,当
C=0时转 000H单元,否则μ PC+ 1到
11DH单元。
11DH号单元执行完后无条件转移到
000H,开始下一条微指令的执行;
增量方式与断定方式结合法的微程序控制器组成框图如图 6.20 所示 。
OP IR
17
IR
16
IR
译码器
3
地址转移逻辑
2
T2 3 3 2 2
门
μ
PC
3 μ
PC
2 μ
PC
1
μ
PC
0
+
1 1
Reset
μ
PC
CS (ROM)
≥
1
T1
微命令编码
BAF BCF
译码器
译码器
译码器
微命令
7
~
0
门
2
≥
1
4 C
1 2 3
图
6.20
图
6.8
微程序流程的增量与断定方式结合法控制器组成框图
4,微指令格式及执行方式
(1) 微指令格式
① 水 平型微指令
一次能定义并执行多个并行操作微命令的微指令,叫做水平型微指令。
水平型微指令的一般格式如下:
控 制 字 段 判别测试字段 下地址字段
按照控制字段的编码方法不同,水平型微指令又分为三种:
第一种是全水平型 (不译法 )微指令;
第二种是字段译码法水平型微指令;
第三种是直接和译码相混合的水平型微指令。
② 垂直型微指令
垂直型微指令中设置微操作码字段,
由微操作码规定微指令的功能。
垂直型微指令的结构类似于机器指令的结构。它有操作码,在一条微指令中只有 1~ 2个微操作命令,每条微指令的功能简单,因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。
③ 水平型微指令与垂直型微指令的比较
A,水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
B,水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
C,由水平型微指令解释指令的微程序,
具有微指令字比较长,但微程序短的特点;垂直型微指令则相反,微指令字比较短而微程序长。
D,水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,
比较容易掌握。
(2) 微指令的执行方式
① 串行执行方式
串行执行方式,又称顺序执行方式。
它是指取微指令、执行微指令完全按顺序进行,即只有在上一条微指令执行完后,才能取下一条微指令。
串行执行方式微指令执行速度慢,但微程序控制器结构简单。
② 并行执行方式
并行执行方式,又称重叠执行方式,在这种方式中,取微指令与执行微指令是重叠进行的。在一条微指令取出并开始执行时,同时去取下一条微指令。
由于一个微周期内执行微操作的时间与取下一条微指令的时间是重叠的,因此,大大缩短了微指令的执行周期,加快了微指令序列的执行速度。值得指出,
这些优点是用控制的复杂性换来的,即为了解决由重叠引起的各种问题,使微程序控制器的结构复杂化。
6.动态微程序设计和毫微程序设计
(1)动态微程序设计
在一台微程序控制的计算机中,假如能根据用户的要求改变微程序,那么这台机器就具有动态微程序设计功能。
动态微程序设计需要可写控制存储器的支持,否则难以改变微程序的内容。用于动态微程序设计的控存称为可写控制存储器 (WCS)或用户控制存储器 (UCS)。
(2)毫微程序设计
在普通的微程序计算机中,从主存取出的每条指令是由放在控制存储器中的微程序来解释执行,通过控制线对硬件进行直接控制。
如果微程序并不直接控制硬件,而是通过存放在第二级控制存储器中的毫微程序来解释的,这个第二级控制存储器称为毫微存储器,直接控制硬件的是毫微指令。
5.微程序控制器的设计
①根 据CPU的结构图写出每条指令的操作流程图并分解成微操作序列
② 用混合控制法对微命令进行编码
③ 选择合适的控制和时序
④ 选用微程序的顺序控制方法为微指 令安排微地址
⑤ 画出微程序控制器组成框图
6.6 流水线工作原理流水线工作原理
1.流水线基本工作原理
计算机执行程序是按顺序的方式进行的,
即程序中各条机器指令是按顺序串行执行的。如按四个周期完成一条指令来考虑,串行执行的过程如图 6.4(a); 4条指令重叠执行的过程如图 6.4(b)。
取指 1 计算地址 1 取操作数 1 运算并存结果 1 取指 2 计算地址 2 取操作数 2
(a) 4
条指令顺序执行
取指
计算地址
取操作数
运算并存结果
取指
计算地址
取操作数
运算并存结果
取指 计算地址 取操作数 运算并存结果
取指
计算地址
取操作数
运算并存结果
(b) 4
条指令重叠执行
图
6.4
指令执行情况
在图 6.4(b),将一条指令分成 4段,若每段所需时间为 t,那么一条指令的执行时间为 4t,但当第一条指令处理完后每隔 t
时间就能得到一条指令的处理结果,平均速度提高到 4倍,其过程相当于现代工业生产装配线上的流水作业,因此把这种处理机称之为流水线处理机。在程序开始执行时,由于流水线未装满,有的功能部件没有工作,速度较低。例如,
图 6.4(b),在开始 3t时间内得不到指令的处理结果,因此只有在流水线装满的稳定状态下,才能保证最高处理速率。
当将一条指令的执行过程分成 4段,每段有各自的功能部件执行 时,每个功能部件的执行时间是不可能完全相 等的。例如,从存储器取指或取数的时间与运 算时间可能就不一样,而在流水线装满的情况 下,各个功能部件同时都在工作,为了保证完成指定的操作,t值应取 4段中最长的时间,此 时有些功能段便会长时间处于等待状态,而达 不到所有功能段全面忙碌的要求,影响流水线作用的发挥。
为了解决这一问题 可采用将几个时间较短的功能段合并成一个功 能段或将时间较长的功能段分成几段等方法,其目的是最终使各段所需的时间相差不大。
除了指令执行流水线外,还有运算操作流水线。例如,执行浮点加法运算,可以分成,对阶,,“尾数加,及,结果规格化,
三段,每一段设置有专门的逻辑电路 完成指定操作,并将其输出保存在锁存器中,作为下一段的输入,如图 6.5所示。
当浮点加法对阶运算完成后,将结果送入锁存器,然后就可进行下一条浮点指令的阶码运算,实现流水线操作。
,
。
操
对
尾
规
作
阶
数
格
结
数
功
锁
加
锁
化
锁
果
输
能
存
部
存
部
存
输
入
部
器
件
器
件
器
出
件
由于流水线相邻两段在执行不同的指令
(或操作 ),因此无论是指令流水线或运算操作流水线,在相邻两段之间必须设置锁存器或寄存器,以保证在一个周期内流水线的输入信号不变。当流水线各段工作饱满时,能发挥最大作用。
在流水线计算机中,当任务饱满时,
任务源源不断地输入流水线,不论有多少级过程段,每隔一个时钟周期都能输出一个任务,从理论上说,一个具有 k级过程段的流水线处理 n个任务需要的时钟周期数为, T
k
= k+ (n- 1)
其中 k个时钟周期用于处理第一个任务,
k个周期后,流水线被装满,剩余的 n- 1
个任务只需 n- 1个周期就完成了。如果用非流水线处理器来处理这 n个任务,则所需时钟周期数为, T
l
= n·k
我们将 T
l
和 T
k
的比率定义为 k级线性流水处理器的加速比,C
k
= T
l
/ T
k
当 n>k时,C
k
→ k,这就是说,理论上 k
级线性流水线处理器几乎可以提高 k倍速度。但实际上由于存储器冲突、数据相关、程序分支和中断,这个理想的加速比不一定能达到。
例 6.6 ★假设一条指令的解释分为取指、
分析与执行 3步,每步相应的时间为 t
取指
、
t
分析和 t
执行
,分析以下三种情况下执行完
50条指令所需时间的一般关系式。
① 顺序方式。
②如 果,执行 k”与,取指 k+ 1,重叠。
③如 果,执行 k”,“分析 k+ l”与,取指 k+ 2”
重叠。
【例题解答】 (K+ 1)取指与 K执行重叠如图 6.21(a); (K+ 2)取指,(K+ l)分析、
K执行重叠如图 6.21(b)。
。
第
1
条
取指
2
取指
分析
执行
第
3
条
取指
分析
执行
第
48
条
取指
分析
执行
第
49
条
取指
分析
执行
第
50
条
取指
分析
执行
图
6.21 (a) (K
+
1)
取指与
K
执行重叠
50
条指令执行情况
分析 执行 第 条
,
取指
分析
执行
第
1
条
取指
分析
执行
第
2
条
取指
分析
执行
第
3
条
取指
分析
执行
第
4
条
取指
分析
执行
第
47
条
取指
分析
执行
第
48
条
取指
分析
执行
第
49
条
取指
分析
执行
第
50
条
图
6.21 (b) (K
+
2)
取指、
(K
+
l)
分析、
K
执行重叠时
50
条指令执行情况
【例题答案】
(1) 顺序方式 50条指令需要,50× (T
取
+ T
分
+ T
执
)。
(2) 100条指令需要,T
取
+ 50T
分
+ 49 max(T
取
,
T
执
)+ T
执
(3) 50条指令需要,T
取
+ max(T
分
,T
取
)+
48× max(T
执
,T
分
,T
取
)+ max(T
执
,T
分
)+ T
执
例 6.7 指令流水线有取指 (IF)、译码 (ID)、
执行 (EX)、访存 (MEM)、写回寄存器堆
(WB)五个过程段,共有 12条指令连续输入此流水线。
(1)画出流水处理的时空图,假设时钟周期 100ns。
(2)求流水线的实际吞吐率 (单位时间里执行完毕的指令数 )。
(3)求流水处理器的加速比。
【例题解答】
(1)12条指令连续进入流水线的时空图如图 6.22所示。
IF ID EX MEM WB 第 1 条
IF ID EX MEM WB 第 2 条
IF ID EX MEM WB 第 3 条
IF ID EX MEM WB 第 4 条
IF ID EX MEM WB 第 5 条
IF ID EX MEM WB 第 6 条
IF ID EX MEM WB 第 7 条
IF ID EX MEM WB 第 8 条
IF ID EX MEM WB 第 9 条
IF ID EX MEM WB 第 10 条
IF ID EX MEM WB 第 11条
IF ID EX MEM WB 第 12条
图
6.22 12
条指令连续进入流水线的时空图
(2) 流水线在 16个时钟周期中执行完 12条指令,
故实际吞吐率为
12/(16× 100ns)=75 × 10
5
条指令/ s
(3) k级流水线处理 n个任务所需的时钟周期 数为,T
k
=k+ (n- 1)
非流水处理器处理 n个任务所需的时钟周期周期数为,T
L
=nk
k级流水线处理器的加速比为 C
k
=T
L
/T
k
=nk/(k+
(n- 1))
代入已知数据 n=12, k=5,则 C
k
= 12×5/(5
+ 11)=60/16=3.75
2.流水线分类
(1)指令流水线
它是指指令步骤并行。例如将指令流的处理过程划分为取指、译码、取操作数、执行这几个并行处理的过程段。目前,几乎所有的高性能计算机都采用了指令流水。
(2)算术流水线
它是指运算操作步骤并行。如流水线加法器、流水线乘法器等。
(3)处理机流水线
处理机流水线又称为宏流水线,是指程序步骤的并行。由一串级联的处理机构成流水线的各个过程段,每台处理机负责某一特定的任务,数据流从第一台处理机输入,经处理后被送入与第二台处理机相联的缓冲存储器中;第二台处理机从该存储器中取出数据进行处理,然后传送给第三台处理机;如此串联下去。
3.流水线中的相关问题
流水线不能连续工作的原因,除了编译形成的程序不能发挥流水线的作用或存储器供 应不上为连续流动所 需的指令和数据以外,还因为出现了,相关,情况或遇到了程序转移指 令 。
例如,在图 6.6(a)的 4级流水线中,假如第 2条指令的操作数地址 即为第一条指令保存结果的地址,那么取操作数 2的动作需要等待 t时间才能进行,否则取得 的数据是错误的,这种情况称为数据相关,该 数据可以是存放在存储器中或通用寄存器中,分别称为存储器数据相关或寄存器数据相关。 此时流水线中指令流动情况将如图 6.6(b)所示。
为了改善流水线工作情况,一般设置相关专用通路,即当发生数据相关时,第 2
条指令的操作数直接从数据处理部件得到,而不是存入后再读取,这样指令能按图 6.6(a)流动。由于数据不相关时,仍需到存储器或寄存器中取数,因此增加了控制的复杂性。
一般来说,流水线级数越多,情况越复杂,而两级流水线则不存在数据相关现象。
取
指
计算地址
取操作数
运
算
取
指
计算地址
取操作数
运
算
(a)
取
指
计算地址
取操作数
运
算
取
指
计算地址
取操作数
运
算
(b)
取
指
计算地址
取操作数
运
算
图
6.6
流水线阻塞情况
4,程序转移对流水线的影响
在大多数流水线机器中,当遇到条件转移指令时,确定转移与 否的条件码往往由条件转移指令本身或由它前 一条指令形成,只有当它流出流水线时,才能 建立转移条件并决定下条指令地址。因此当条 件转移指令进入流水线后直到确定下一地址之 前,流水线不能继续处理后面的指令而处于等 待状态,因而影响流水线效率。在某些计算机中采用了,猜测法,技术,机器先选定转移分支中的一个,按它取指并处理,
假如条件码生成后,猜测是正确的,那么流水线可继续进行下去,时间得到充分利用;假如猜错了,那么要返 回分支点,并要保证在分支点后已进行的工作 不能破坏原有现场,否则将产生错误。编译程序可根据硬件上采取的措施,
使猜测正确的概率尽量高些。
例 6.8 流水线中有三类数据相关冲突:写后读
(RAW)相关;读后写 (WAR)相关;写后写
(WAW)相关。判断以下三组指令各存在哪种 类型的数据相关。
(1) I1 ADD Rl,R2,R3 ; (R2+
R3)→ Rl
I2 SUB R4,Rl,R5 ; (R1- R5)→ R4
(2) I3 STA M(x),R3 ; (R3) → M(x),
M(x)是存储器单元
I4 ADD R3,R4,R5 ; (R4+ R5)→ R3
(3) I5 MUL R3,Rl,R2 ; (R1)× (R2) → R3
I6 ADD R3,R4,R5 ; (R4+ R5)→ R3
解:第 (1)组指令 中, 11指令运算结果应先写入
R1,然后在 I2指令中读出 R1内容。由于 I2指令进入流水线,变成 I2指令在 I1指令写入 R1前就读出 Rl内容,发生 RAW相关。
第 (2)组指令中,I3指令应先读出 R3内容并存入存储 单元 M(x),然后在 I4指令中将运算结果写入 R3。但由于 I4指令进入流水线,变成 I4指令在 I3指令读出 R3内容前就写入 R3,发生 WAR
相关。
第 (3)组 指令中,如果 I6指令的加法运算完成时间早于 I5指令的乘法运算时间,变成指令 I6在指令 I5写入 R3前就写入 R3,导致 R3的内容错误,发生 WAW相关。