第六章 中央处理器

77
1 第第第 第第第第第 中中中中中 中中 CPU 中中中中中中中中中中 中中中中中中中中中中中 ,,。 CPU 中中中中中中中中中中 中中中中中中中中中 中中中中中中中 中 中中中中 中中中 ,,、 中中中中 中中中中中中中中 中中中中 4 中中中中中 CPU 中中中中中中中 中中中中中中中中中中中 CPU 中中中中中中中中中中 CPU 中中中中中中中中中中中中中中中中中

Upload: kay

Post on 22-Jan-2016

137 views

Category:

Documents


0 download

DESCRIPTION

第六章 中央处理器. 中央处理器,简称 CPU ,是整个计算机的核心,它包括运算器和控制器。 CPU 的主要功能是执行指令,控制并完成各种操作,包括运算操作、传送操作、输入输出操作等。 为了实现这些功能,需要解决 4 个关键问题。 CPU 由哪些部件组成? 各部件之间如何交换信息? CPU 如何建立与外部的连接? CPU 如何形成微命令序列来控制指令的执行?. 本章主要内容. 主要内容 中央处理器的功能和组成 控制器的组成和实现方法 指令周期、时序系统与控制方式 微程序控制原理 操作控制单元的设计 流水线技术. 一、中央处理器的功能. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第六章   中央处理器

1

第六章 中央处理器 中央处理器,简称 CPU ,是整个计算机的核心,它包括运

算器和控制器。

CPU 的主要功能是执行指令,控制并完成各种操作,包括运算操作、传送操作、输入输出操作等。

为了实现这些功能,需要解决 4 个关键问题。 CPU 由哪些部件组成? 各部件之间如何交换信息? CPU 如何建立与外部的连接? CPU 如何形成微命令序列来控制指令的执行?

Page 2: 第六章   中央处理器

2

本章主要内容

主要内容

中央处理器的功能和组成 控制器的组成和实现方法 指令周期、时序系统与控制方式 微程序控制原理 操作控制单元的设计 流水线技术

Page 3: 第六章   中央处理器

3

一、中央处理器的功能

当我们用计算机解决某个问题时,首先要为计算机编写程序。程序是一个指令序列,这个指令序列就是要明确告诉计算机应该执行什么操作、数据从哪里来、结果送到哪里去。之后,一旦把程序装入主存,就可以由计算机自动地完成取出指令和执行指令的任务。

在程序运行过程中,在计算机的各部件之间传送着指令和数据,形成了指令流和数据流。数据是在传送过程中得到加工和处理的 。 CPU 的基本功能就是对指令流和数据流在时间与空间上实施正确的控制。

Page 4: 第六章   中央处理器

4

CPU 具备以下功能

CPU 具备以下四个方面的功能: 指令控制:保证机器按顺序执行程序是 CPU 的首要任务。 操作控制: CPU 根据指令的要求,产生需要的操作信号。 时间控制:对各种操作信号进行定时,即进行时间控制。 数据加工:对数据进行算术运算和逻辑运算。完成数据的加工

处理,是 CPU 的核心任务。

Page 5: 第六章   中央处理器

5

2 、 CPU 的基本组成

CPU由运算器和控制器组成

Page 6: 第六章   中央处理器

6

运算器的组成与主要功能 运算器的组成:

算术逻辑单元( ALU ) 累加寄存器 状态标志寄存器 数据缓冲寄存器

运算器的功能(前面已经介绍过): 执行所有的算术运算 执行所有的逻辑运算

通常算术运算产生一个结果,而逻辑运算产生一个判断。运算器是进行数据加工处理的部件,全部操作由控制器发出的控制信号来指挥,所以它是执行部件。

Page 7: 第六章   中央处理器

7

控制器的组成与主要功能控制器的组成: 指令部件

程序计数器 指令寄存器 指令译码器

时序部件 脉冲源 节拍信号发生器 启停控制逻辑

微操作信号发生器 中断控制逻辑

控制器的主要功能: 从内存中取出一条指令,并指

出下一条指令在内存中的位置 对指令的操作码进行译码,并

产生相应的操作控制信号。比如,一次内存读写操作,或一个算术逻辑运算操作等。

指挥并控制 CPU 、内存以及输入输出设备之间的数据流动方向。

Page 8: 第六章   中央处理器

8

3 、 CPU 中的主要寄存器 CPU 中的寄存器用来暂时存放运算过程的中间结果、最终结果

以及状态信息。各种计算机 CPU 可能不同,但 CPU 中至少要有六类寄存器必不可少:

数据缓冲寄存器 指令寄存器 程序计数器 地址寄存器 累加寄存器 状态标志寄存器。

Page 9: 第六章   中央处理器

9

CPU 中的主要寄存器(续) 数据缓冲寄存器( MDR ):用来暂存由内存读出或写入内存的

指令和数据,是 CPU 和内存、外部设备信息传送的中转站 。 指令寄存器( IR ):用来存放当前正在执行的一条指令。在指

令执行期间,指令寄存器的内容不允许发生变化。 程序计数器( PC ):用来存放将要执行的下一条指令的地址。 地址寄存器( MAR ):地址寄存器用来保存 CPU 当前所访问

的内存单元的地址。只要 CPU 和内存交换信息,都要用到地址寄存器和数据缓冲寄存器。

累加寄存器( AC ):执行算术逻辑操作时,为 ALU 提供操作数及存放运算结果。

状态标志寄存器( PSW ):用来存放由指令执行结果所建立的状态以及机器自身的运行状态 ,第一类为状态标志 ,第二类为控制标志 。

Page 10: 第六章   中央处理器

10

4 、控制器的核心部件 微操作信号发生器:控制器的核心部件,其功能是根据

指令操作码、状态信息和时序信号,产生各种微操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的任务。

根据产生微操作控制信号的不同方式,控制器分为组合逻辑型、存储逻辑型以及组合逻辑与存储逻辑结合型三种。采用组合逻辑实现的控制器称为组合逻辑控制器,采用存储逻辑实现的控制器称为微程序控制器。

时序部件:脉冲源、节拍信号发生器和启停控制逻辑构成。微操作控制信号有严格的时间要求,绝不能出现任何差错。时序部件的作用是对各种操作实施时间上的控制。

Page 11: 第六章   中央处理器

11

5 、 CPU 内部的数据通路

CPU 内部各部件之间需要传送信息,例如操作数由寄存器送到 ALU 进行运算, ALU 将运算结果送入寄存器存放,等等。把 CPU 内部各部件之间传送数据的通路称为数据通路。

通常,用总线连接 CPU 内部各部件。有三种内部总线结构,即单总线结构、双总线结构和三总线结构,我们曾在四章关于运算器的组织中介绍过。

Page 12: 第六章   中央处理器

12

二、指令周期

指令和数据都放在内存里。从形式上看,它们都是二进制代码, CPU 是怎么准确地判别出是指令还是数据的 ?这要从指令周期说起。

Page 13: 第六章   中央处理器

13

1 、指令周期的基本概念 CPU 取指令—执行指令的序列:

指令周期是取出并执行完一条指令的时间。因为各种指令的操作功能不同,所以指令周期也不完全相同。

指令周期通常用若干个 CPU 周期来表示, CPU 周期也叫机器周期。一个 CPU 周期在时间上等于主存的一个存取周期。例如,从主存取出一条指令就需要一个 CPU 周期。

以下通过一个简单程序的执行过程来说明指令周期的概念。

Page 14: 第六章   中央处理器

14

2 、举例,一个简单程序

八进制地址 八进制内容 助记符 备注020021022023024

.

.030031

.

.040

250 000030 030020 040000 000140 021..000 006000 040..存和数单元

CLAADD 30STA 40NOPJMP 21..

累加器清零AC相加 30单元把 AC内容存 40单元空操作跳转,地址 21

Page 15: 第六章   中央处理器

15

① CLA 指令的指令周期CLA 指令完成累加器清零功能,是一条非访存指令,需要两个CPU 周期,其中取指令阶段需要一个 CPU 周期,执行指令阶段需要一个 CPU 周期。

Page 16: 第六章   中央处理器

16

CPU 完成三件事:① 从内存中取出指令② 对程序计数器 PC+1③ 对指令操作码进行译码

CPU 做 6 个动作: ① PCMAR ② PC+1PC ③ MARABUS ④ M(MAR)MDR ⑤ MDRIR ⑥ OP(IR)ID

CPU 已知道什么操作

第一个 CPU 周期:取指令阶段

Page 17: 第六章   中央处理器

17

第二个 CPU 周期,执行指令阶段

CPU 完成一件事: 执行累加器清零操作。

CPU 做 2 个动作: 微操作信号发生器送一

控制信号 (C) 给算术逻辑单元 ALU 。 Cout 。

ALU 响应控制信号,将累加寄存器 AC 的内容全部清零,从而执行了CLA 指令。 0AC 。 CPU 已完成指令操作

Page 18: 第六章   中央处理器

18

② ADD 指令的指令周期第二条指令是“ ADD 30” 指令,这是一条通过访问内存取数并执行加法的指令。 ADD 指令的指令周期由三个 CPU 周期组成。

第一个 CPU 周期为取指令阶段,与 CLA 指令相同,不再讨论。假设在取指结束后, ADD 指令已被存放在指令寄存器中、而且被正确译码。

Page 19: 第六章   中央处理器

19

第二个 CPU 周期,送操作数地址

CPU 完成一件事: 送操作数地址到地址

寄存器 MAR 。

CPU 做 1 个动作: 把指令寄存器中地址

码 部分 (30) 装 入 地址寄存器 MAR ,执行: IRMAR 操作 .

Page 20: 第六章   中央处理器

20

第三个 CPU 周期,取操作数、两数相加

CPU 完成两件事:① 取操作数② 加法操作。

CPU 做 4 个动作: ① MARABUS ② DBUSMDR ③ MDRALU ④ add , ALUAC

CPU 完成指令操作

Page 21: 第六章   中央处理器

21

③ STA 指令的指令周期程序的第三条指令是“ STA 40” ,这是一条访问内存的存数指令。STA 指令由三个 CPU 周期组成。

第一个 CPU 周期为取指令阶段,它与 CLA 、 ADD 指令相同。第二个 CPU周期把指令寄存器中地址码部分的形式地址 40 装到地址寄存器,过程跟 ADD 指令送操作数地址完全一样。我们讨论第三个 CPU 周期。

Page 22: 第六章   中央处理器

22

第三个 CPU 周期,数据写入内存CPU 完成两件事:① 累加器内容传送到数

据缓冲寄存器中;② 把该数据存入所选定

的内存单元 (40) 中。

CPU 做 4 个动作: ① ACMDR

② MARABUS

③ MDRDBUS

④ write

CPU 完成指令操作

Page 23: 第六章   中央处理器

23

④ NOP 指令和 JMP 指令的指令周期程序现在已经进行到第四条指令 “ NOP” 指令,这是一条空操作指令。这里不再给出指令周期图,其中第一个 CPU 周期中取指令, CPU 把 23 号单元的“ NOP” 指令取出放到指令寄存器,第二个 CPU 周期中执行该指令。因译码器译出是“ NOP” 指令,在第二个 CPU 周期中微操作信号发生器不发出任何控制信号。

程序进行到第五条指令,即“ JMP 21” 指令,这是一条程序控制指令。其含义是改变程序的执行顺序,无条件地转移到地址 21执行指令。 JMP 指令周期由两个 CPU 周期组成 。我们从第二个 CPU 周期讨论。

Page 24: 第六章   中央处理器

24

第二个 CPU 周期,送转移地址 CPU 完成一件事: 把 指 令 寄 存 器 中 的

地址码部分 21 送到程 序 计 数 器 , 用新的内容 21 取代 PC中原先的内容 25 。

CPU 做 1 个动作: IRPC

CPU 完成指令操作

Page 25: 第六章   中央处理器

25

3 、用方框图来表示指令周期一个方框代表一个 CPU 周期,菱形符号通常用来表示某种判别或测试,时间上依附于与它相邻的前面一个方框的 CPU 周期,不单独占用时间。“ ~” 表示公操作,如指令执行结束后, CPU 对外设中断请求的处理等。

不单独占CPU 周期

Page 26: 第六章   中央处理器

26

三、时序部件与控制方式

在日常生活中,我们学习、工作和休息遵循作息时间,以维持正常的秩序。在计算机系统中也有一个类似“作息时间”的东西,它叫时序部件。

由于计算机高速地进行工作,每一个动作的时间是非常严格的,不能有任何差错。时序系统是控制器的心脏,其功能是为指令的执行提供各种定时信号。

Page 27: 第六章   中央处理器

27

1 、时序信号的作用和体制我们曾经问过, CPU 是怎么识别数据和指令的?结论如下:

从时间上来说,取指令事件发生在指令周期的第一个 CPU 周期,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个 CPU 周期,即发生在“执行指令”阶段。

从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。

从地址的来源讲,指令地址来源于程序计数器,而数据地址来源于地址形成部件。

时序信号的作用就是用来划分时段,对各种操作信号严格定时,使多个控制信号在时间上相互配合,从而完成某一特定功能 .

Page 28: 第六章   中央处理器

28

三级时序体制(系统) 一个指令周期分为若干机器周期( CPU 周期);一个机器周期再划分为若干相等的时间段,每个时间段用一个电位信号来表示,称为节拍电位;在节拍中执行的微操作,需要同步定时脉冲来配合 ,称为工作脉冲。

节拍电位

工作脉冲节拍脉冲

机器周期CPU周期

Page 29: 第六章   中央处理器

29

2 、时序部件 下图是组合逻辑控制器的时序部件结构图,由时钟源、启停控制逻

辑、 CPU 周期信号发生器、节拍电位信号发生器、节拍脉冲(工作脉冲)发生器等部分组成。

时钟源用来为整个机器提供频率稳定的方波时钟脉冲信号,通常由石英晶体振荡器和与非门组成的正反馈电路组成。

Page 30: 第六章   中央处理器

30

节拍脉冲信号发生器 触发器 C1C0构成两位循环移位寄存器。开始时由清零信号 CLR 将 C1C

0清为 00 ,然后在 Clock 上升沿和下降沿的作用下规律性地变化: 00011110 ,译码后输出节拍脉冲 P0 、 P1 、 P2 、 P3 。

Page 31: 第六章   中央处理器

31

节拍电位信号发生器 节拍电位信号发生器可由循环移位寄存器组成。开始由清零

信号 CLR 将移位寄存器清为 0001 ,然后在脉冲信号 clock作用下,按 0001001001001000 规律变化,从而输出节拍电位 T0 、 T1 、 T2 、 T3 。

Page 32: 第六章   中央处理器

32

CPU 周期信号发生器 CPU 周期信号一般设置单独的触发器表示,有几个周期就设置几

个触发器。例如,某计算机系统设有取指令、取操作数和执行三个 CPU 周期,便设立三个触发器分别表示。

每个 CPU 周期状态的建立信号由微操作信号发生器产生,而且是在上一个 CPU 周期的最后一个节拍脉冲信号的下降沿建立。

Page 33: 第六章   中央处理器

33

启停控制逻辑 计算机工作期间,要求时序信号必

须是完整的。也就是说,不能从半个脉冲处开始工作;也不能在半个脉冲处结束工作。启停控制逻辑用来保证这一要求的实现。

因为 T3 的下降沿正是 T0 的上升沿,所以用 T3 信号作为 Cr 触发器的时钟端输入,就可以保证在 T0 的前沿开启时序部件工作,而在 T3 的后沿关闭时序部件。 启动、停机

信号平时为高电平

Page 34: 第六章   中央处理器

34

3 、时序控制方式控制不同操作序列的时序信号的方法,称为时序控制方式。常用的控制方式有三种:同步控制、异步控制、联合控制,其实质反映了时序信号的定时方式。

同步控制方式:用统一发出的时序信号对各项操作进行同步和控制,每个 CPU 周期中产生相同数目的节拍电位和工作脉冲。

异步控制方式:异步控制方式中没有统一的时钟信号,各部件按自身固有的速度工作。控制器发出某操作控制信号后,等待执行部件发回完成操作的 “回答”信号,再开始新的操作。

联合控制方式:联合控制是同步控制和异步控制相结合的方式。对大多数节拍数相近的指令,采用同步控制;而对于节拍数多的少数指令或节拍数不固定的指令,采用异步控制。计

算机

系统

多采

用CP

U、

设备

内部多采

Page 35: 第六章   中央处理器

35

四、微程序控制原理

计算机解题时,总是把一个复杂的问题化成一步一步的算术运算或逻辑运算等基本操作来做,每一个基本操作称为一条指令。

我们在指令周期中又讲到,一条指令的执行通过分解为更小的若干动作来实现。例如指令执行过程分解为“取指令、取操作数、执行指令”三个阶段;就取指令来说,又被分解为“从内存取指令、程序计数器 PC+1 、指令译码”三个微小的动作。

如何产生这些微小的动作有不同的方法。目前,大多数计算机普遍采用微程序设计技术来产生这些微动作。

Page 36: 第六章   中央处理器

36

微程序控制原理(续) 微程序设计的概念和原理最早是英国剑桥大学的 Wilkes 教

授在 1951 年提出来的。由于当时不具备制造存放微程序的控制存储器技术,实际上并没有真正使用。

1964 年,在 IBM360 机器上将微程序设计技术付诸于实践,成功地用于控制器的设计。

微程序设计技术是将程序设计技术和存储技术相结合,用程序设计的思想来组织这些微小操作的产生逻辑,即把这些操作控制信号编制成所谓的微指令,存放在一个只读存储器里;当机器运行时,一条一条读出这些微指令,来产生指令执行过程中所需要的各种控制信号。

Page 37: 第六章   中央处理器

37

1 、微命令和微操作 一台计算机基本上可以划分为两大部分—控制部件和执行部件。

控制器是控制部件,而运算器、存储器和外围设备相对控制器而言,都是执行部件。

控制部件通过控制线向执行部件发出控制命令,通常把这种控制命令叫做微命令。执行部件接受微命令后所进行的操作,叫做微操作,它是最基本的、不可再分的操作。微操作与微命令具有一一对应的关系。

由于数据通路的结构关系,微操作被分成相容性和相斥性两种。所谓相容性微命令是指(同一微周期)那些可以同时产生、并行执行的微命令。所谓互斥性微命令是指(同一微周期)那些不能同时产生和执行的微命令。

Page 38: 第六章   中央处理器

38

相容性和互斥性微命令分析 图 20 示出了一个简单运算器模型。

其中,双线表示数据通路,单线表示微操作控制命令。

+ 、 - 、 M 三个微命令是互斥性的微命令, 4 、 6 、 8 是互斥性的微命令, 5 、 7 、 9 三个微命令也互相斥性的。它们是不能同时产生的。

微命令 1 、 2 、 3 可以同时进行,所以是相容性的微命令。另外, ALU 的 X 输入的微命令 4 、 6 、 8分别与 Y 输入的微命令 5 、 7 、 9任意两个也是相容性的。

Page 39: 第六章   中央处理器

39

2 、微指令和微程序 一条微指令是实现一定操作功能的若干微命令的集合,是存

储在控制存储器中的一个控制字。

存放微指令的控制存储器的单元地址称为微地址。一条微指令应至少包含两部分信息:操作控制信息和顺序控制信息。

Page 40: 第六章   中央处理器

40

微指令和微程序(续)

操作控制字段:用来发出指挥全机工作的控制信号。这条微指令中的前 17 位对应操作控制部分,每一位表示一个微命令。当某一位为 1 时,表示发出微命令;当某一位为 0 时,表示不发出微命令。顺序控制部分:用来产生下一条要执行的微指令的地址。

一条机器指令的功能是用许多条微指令序列来实现的,这个微指令序列通常叫做微程序。一条机器指令对应一个微程序。

Page 41: 第六章   中央处理器

41

3 、微程序控制器的组成图 22 给出了一个微程序控制器原理框图,包括控制存储器、微指令寄存器、微地址形成部件和微地址寄存器四部分。

Page 42: 第六章   中央处理器

42

微程序控制器的组成(续) 控制存储器( CM ):是用来存放微程序的,它在 CPU 内部,用 RO

M 实现。(控制存储器在 CPU 内部,不属于存储系统)。控制存储器的字长就是微指令字的长度。对控制存储器的要求是速度要快。控制器一旦开始工作,从控制存储器读出一条微指令、执行一条微指令;接着再读一条,再执行一条,……。通常从控制存储器中读出一条微指令,并执行完相应的微操作所需的时间称为一个微指令周期,简称微周期。

微指令寄存器( μIR ):用来存放从控制存储器中读出的微指令,其位数和微指令字长相等。

微地址形成部件:用来产生下一条微指令地址,是由机器指令操作码、运行状态以及微指令顺序控制字段给出的信息来形成的。

微地址寄存器( μMAR ):用来存放读取微指令的地址,这个地址是控制存储器的单元地址。

Page 43: 第六章   中央处理器

43

4 、微程序控制器的工作过程 微程序控制器的工作过程是在微程序控制

器的控制下执行机器指令的过程。① 执行取指令公操作。取指令操作对所有机器指令都一样,通常由一段取指微程序来完成(取机器指令),属于公操作。② 由机器指令的操作码字段通过微地址形成部件产生该机器指令所对应的微程序入口地址,并送入微地址寄存器。③ 从控制存储器逐条取出对应的微指令并执行取出的微指令。④ 执行完一条机器指令所对应的一段微程序后,又回到取指微程序的入口地址,准备取下一条机器指令。

Page 44: 第六章   中央处理器

5 、机器指令和微指令的关系

从指令和微指令、程序和微程序、地址和微地址的对应关系来看,前者与主存有关,后者与控制存储器有关 .

机器指令的微操作序列的安排主要取决于数据通路的结构,不同的数据通路有不同的微操作序列。

微操作控制信号实际控制数据通路中的指令流和数据流的流向。控制信号的本质是按要求打开或关闭各个控制门。

一条机器指令对应一段微程序,机器指令的执行过程就是与之对应的微程序的执行过程,机器指令执行过程中的微命令由微指令来产生。

任何一条机器指令的取指令操作都是相同,取指令操作的微命令被统一编制成一段微程序,作为公操作使用。

Page 45: 第六章   中央处理器

45

6 、微程序入口地址的形成

机器指令的操作码字段指出其对应的微程序的入口地址。由机器指令操作码转换成微程序入口地址有三种方法:

一级功能转换:

如果机器指令的操作码字段的位数和位置固定,可以直接用操作码与入口地址的部分位相对应。

例如,某机器有 16 条机器指令,操作码由 4 位二进制数就能表示,分别为 0000 , 0001 ,…, 1111 ,假设微程序由 4 条微指令构成。以 θ表示操作码,则微程序的入口地址可表示为 θ11B 。对于这 16 条指令,微程序入口地址分别为: 000011B , 000111B ,… 111111B 。

Page 46: 第六章   中央处理器

46

微程序入口地址的形成(续) 二级功能转换:

当同类机器指令的操作码字段的位数和位置固定,而不同类机器指令的操作码的位数和位置不固定时,就要使用二级功能转换。

例如,先分类转移,把位数一样、位置固定的分为一类; 再用操作码对应微程序入口地址,第二次按操作码转移。

编程转换:

当机器指令的操作码位数和位置都不固定时,可以采用可编程逻辑阵列( PLA )将每条机器指令的操作码翻译成对应的微程序的入口地址 .

Page 47: 第六章   中央处理器

47

7 、后继微地址的形成 找到微程序的入口地址,开始执行位程序。当执行完一条位指

令后,如何找到要执行的下一条微指令?这就是后继微地址的形成问题,有三种方式。

增量方式:增量方式又叫计数器方式,也就是用一个微程序计数器( μPC )来产生下一条微指令的地址。在顺序执行微指令时,后继地址由现行微地址加上一个增量来产生(通常 +1 );在非顺序执行微指令时,由转移微指令实现转移。

Page 48: 第六章   中央处理器

48

后继微地址的形成(续一)

转移微指令的顺序控制字段分为两部分:转移控制字段和转移地址字段。当转移条件满足时,把转移地址字段的内容作为下一个微地址;当转移条件不满足时,则把微程序计数器的内容作为下一个微地址。通常把微地址寄存器改为微程序计数器。(能否把地址寄存器改造为程序计数器?)

增量方式的优点是简单、编制微程序容易;缺点是在微程序中会出现大量的转移微指令(约占 25% ),另外又要区分普通微指令和转移微指令,使得微程序控制电路复杂化。

Page 49: 第六章   中央处理器

49

后继微地址的形成(续二) 断定方式:断定方式又称为下址字段法,在微程序控制器中不设

置微程序计数器( μPC ),而是在微指令格式中设置一个下址字段,用于指明下一条要执行的微指令的地址。同时通过转移控制字段进行条件测试,并根据测试结果对下地址修改,形成转移微地址。

1 个测试位能产生 2 个分支, 2 个位测试位能产生 4 个分支, n个测试位能产生 2n 个分支。

Page 50: 第六章   中央处理器

50

后继微地址的形成(续三) 增量和断定结合方式:增量方式与断定方式的结合,既要在微

程序控制器中设置微程序计数器,又要在每条微指令中设置顺序控制字段。顺序控制字段又分为两部分:转移控制字段和转移地址字段。当转移条件满足时,由转移地址字段的内容形成下一个微地址,若无转移要求,则直接根据微程序计数器的内容取出下一条微指令。

Page 51: 第六章   中央处理器

51

五、微程序设计技术

微程序设计的关键是如何确定微指令的结构。 设计微指令结构应当追求如下目标:

有利于缩短微指令的字长; 有利于减小控制存储器的容量; 有利于方便微指令的修改; 有利于提高微程序执行的速度; 有利于加强微程序设计的灵活性。

Page 52: 第六章   中央处理器

52

1 、微指令的编码方法微指令包含操作控制字段和顺序控制字段两大部分。微指令编码方法就是操作码字段的编码方法。

① 直接控制法(不译码法)

直接控制法是指操作控制字段中的每一位就是一个微命令,直接对应一种微操作。该位为 1 微命令有效、为 0 微命令无效。

这种方法结构简单,并行性强,输出直接用于控制。缺点是微指令字太长,控制存储器容量较大。

Page 53: 第六章   中央处理器

53

微指令的编码方法 ( 续一 )

② 最短编码法

最短编码法将所有微命令统一编码,经过译码后才能得到微命令,每条微指令只定义一个微命令。

这种方式下的操作控制字段, 1 位能定义 2-1 个微命令, 2 位能定义 4-1 个微命令,……, N 位能定义 2N-1 个微命令(留出 1个空操作)。这种编码方式使得并行性差,微程序变长。

以上两种编码方法处于两个极端,因此在实际中很少单独使用,只能与其它方法配合使用。

Page 54: 第六章   中央处理器

54

微指令的编码方法 ( 续二 )③ 字段编码法字段编码法是将操作控制字段分为若干个小段,段内采用最短编码法,段间采用直接控制法。分为两种:字段直接编码法和字段间接编码法。

字段直接编码法:小字段译码后直接用作微命令。 字段间接编码法:为进一步缩短微指令的长度,小字段译码后进行

逻辑组合 ,也就是字段间的某些译码输出联合定义微命令 。

Page 55: 第六章   中央处理器

55

微指令的编码方法 ( 续三 )字段编码法中,操作控制码的划分需要遵循以下规则:

要把相斥的微命令分在同一字段,相容的微命令分在不同段内,(有利于缩短微指令长度、有利于提高并行性)。

应与数据通路的结构相适应。 各小段包含的信息位不能太多。

(否则增加译码难度和译码时间)。 每个小段要留出一个状态,表示本小段不发出任何微命令。

(某小段 3 位,最多定义 7 个相斥微命令, 000 表示不操作)。

在实际编码时,根据需要可以把几种方法结合使用,也就是采用混合控制法,即把直接控制法和译码控制法进行结合等。

Page 56: 第六章   中央处理器

56

2 、微指令的格式微指令的编码方式是决定微指令格式的主要因素。一般微指令的格式大致分为两类:水平型微指令和垂直型微指令。

水平型微指令:一次能定义并执行多个微命令的微指令,叫做水平型微指令。操作控制字段采用直接控制法、字段编码法生成的微指令一般属于水平型微指令。水平型微指令并行操作能力强、执行机器指令的速度快;但微程序设计复杂。用水平型微指令编写的微程序,具有微指令字长而微程序短的特点,面向控制逻辑描述。

垂直型微指令 :一次只能定义并执行一个微命令的微指令,叫做垂直型微指令。操作控制字段采用最短编码法生成的微指令属于垂直型微指令。垂直型微指令并行操作能力差、执行机器指令的速度慢;但微程序设计简单。用垂直型微指令编写的微程序,具有微指令字短而微程序长的特点,面向控制算法描述。

Page 57: 第六章   中央处理器

57

3 、微指令的执行方式执行微指令的过程与执行机器指令的过程类似。第一步从控制存储器中取出微指令,第二步执行微指令所规定的各个微操作。所以微指令的执行方式可分为串行和并行两种方式。

并行执行方式:取微指令与执行微指令是重叠进行的,也就是在执行一条微指令的同时,预取下一条微指令。

串行执行方式:在这种方式下,取微指令、执行微指令完全按顺序进行,也就是在上条微指令执行完,才取下条微指令。

Page 58: 第六章   中央处理器

58

4 、动态微程序设计

通常情况下,当微程序设计好之后,不允许改变也不便于改变,这样的设计称为静态微程序设计。假如在一台微程序控制的计算机中,能根据用户的要求改变微程序,那么这台机器就具有动态微程序设计功能。

动态微程序设计需要可写控制存储器的支持,否则难以改变微程序的内容。用于动态微程序设计的控制存储器称为可写控制存储器( WCS )。

Page 59: 第六章   中央处理器

59

六、控制单元的设计 中央处理器 CPU 是整个计算机的核心。控制单元 CU (微操作

控制信号发生器)是控制器的核心。 控制单元的输入包括:

时序信号 机器指令操作码 各部件的状态反馈信号等

输出的微操作控制信号有两个去向: CPU 内部的控制信号,用于控制寄存器之间的数据传送、以

及实现 CPU 功能的其它操作。 CPU 外部的控制信号,即送往主存或外设的控制信号,用于

控制 CPU 与主存和外设的数据交换。 控制器分三种:组合逻辑型、存储逻辑型、组合逻辑与存储逻

辑结合型。不同类型的控制器仅是控制单元的实现方法不同。

Page 60: 第六章   中央处理器

60

1 、组合逻辑单元的设计组合逻辑控制器产生操作控制信号的办法是:根据所有指令的流程图,寻找产生同一微操作信号的所有条件,并与适当的节拍电位和节拍脉冲进行组合,最后将所得到的布尔表达式用门电路或可编程器件来实现。确定机器指令的微操作序列之后,按照下列步骤进行设计:① 列出微操作命令的操作时间表

把机器指令的各个阶段的微操作按照时间顺序列表,这样可以更好地理清楚它们之间的关系。

② 进行微操作信号的综合 微操作信号 = 机器周期 ∧ 节拍电位 ∧节拍脉冲 ∧ 操作码 ∧ 运行状态

③ 根据逻辑表达式画出逻辑图。根据逻辑表达式,可以画出对应每一个微操作信号的逻辑电路图,并用逻辑门电路来实现。

Page 61: 第六章   中央处理器

61

2 、微程序控制单元的设计微程序控制器的操作控制信号由微指令产生。微程序控制单元的设计,主要任务是编写各条机器指令的微程序。① 确定微程序的控制方式:根据设计要求,确定是采用水平微程序设计、还是垂直微程序设计?微指令是串行执行、还是并行执行?② 拟定微命令系统:确定控制中有哪些微命令?用什么样的格式表示这些微命令?比如,微命令字段的划分、编码方式的选择、初始微地址和后继微地址的形成方法等。③ 编制微程序:对微命令系统、微指令格式进行核对、审查、修改、优化之后,便可以编制机器指令的微程序。 ④ 微程序代码化:将修改完善的微程序转换成二进制代码,叫做代真 .⑤ 写入控制存储器:最后将二进制代码按地址写入控制存储器。

Page 62: 第六章   中央处理器

62

七、设计举例(一)例 1 、某计算机的 CPU 内部为双总线结构,所有数据传送都通过ALU , ALU 具有下列功能, CPU 结构如图所示。

F=A ; F=B

F=A+1 ; F=B+1

F=A-1 ; F=B-1

写出转子指令( JSR )取指和执行周期的微操作。 JSR 指令占两个字,第一个字是操作码,第二个字是子程序的入口地址。返回地址保存在堆栈中,堆栈指针始终指向栈顶。在图中, Y 为暂存器, PC 为程序计数器, MAR 为地址寄存器, MDR 为数据缓冲寄存器, IR 为指令寄存器。

Page 63: 第六章   中央处理器

解:转子指令的第一个为操作码、第二个为子程序的入口地址。

① PCB , F=B , FMAR , Read ;读指令的第一个字② PCB , F=B+1 , FPC③ MDRB , F=B , FIR

④ PCB , F=B , FMAR , Read ;读指令的第二个字⑤ PCB , F=B+1 , FPC⑥ MDRB , F=B , FY

⑦ SPB , F=B-1 , FSP , FMAR ;修改栈指针⑧ PCB , F=B , FMDR , Write⑨ YA , F=A , FPC ;子程序首地址送 PC⑩ END

工作之一设计微操作序列

Page 64: 第六章   中央处理器

64

设计举例(二)例二、图 32 为一微程序流程,每个方框代表一条微指令,分别用字符 A—P 表示其执行的微操作,根据给定的微程序流程设计微指令的顺序控制字段,并为每条微指令分配一个地址。

解:程序有两个分支处,第一处( C)有 4个分支,由机器指令操作码的 I1I0两位决定后继地址,分别指向 4条不同的指令;第二处( E)有 2个分支,根据运算结果Z的值决定,分别指向 2条不同指令

Page 65: 第六章   中央处理器

因此,微指令顺序控制部分中的测试字段应有 2 位来分别对应 2 处测试。又因为共有 16 条微指令,所以下址字段需要 4 位。

微地址分配的关键是带有分支的微指令。下址字段具有一定的约束条件,一般要选则测试条件所控制的那几位为 0 ,目的是简化地址的修改逻辑。

由于微指令 C 按机器指令码 I1I0实现 4 路分支 ,

所以微指令 C 的下址的约束条件可选择末两位为 0 。若 C 的下址选择为 0100 。后继的 4 条微指令地址就分别为 0100 、 0101 、 0110 、0111 ,末两位就是 I1I0的值。 Z 按同样的办法分配,后继微地址选择 1010 、 1011 。

工作之二后继地址分配

Page 66: 第六章   中央处理器

66

后继地址分配举例

余下的微指令地址没有约束条件,可以任意分配。但一般按微程序流程从小到大,把控制存储器中没有分配的微地址分配给不同的微指令,就得到全部微指令地址。

请注意区分微指令自己的微地址和它所指向的下一条微指令的微地址!

Page 67: 第六章   中央处理器

67

微地址(自己的)微指令

操作控制字段 顺序控制字段二进制 十进制 微命令 测试判断 下地址0000 0 A 00 0001

0001 1 B 00 0010

0010 2 C 01 0100

0011 3 E 10 1010

0100 4 D 00 0011

0101 5 H 00 1000

0110 6 L 00 1001

0111 7 P 00 1001

1000 8 I 00 1011

1001 9 M 00 1110

1010 10 F 00 1100

1011 11 J 00 1101

1100 12 G 00 0000

1101 13 K 00 0000

1110 14 N 00 1111

1111 15 O 00 0000

Page 68: 第六章   中央处理器

68

设计举例(三)例 3 、某机有 8 条微指令 I1—I8,每条微指令所含的微命令控制信号如下表所示。 a—

j 分别代表 10 种不同性质的微命令信号,假设一条微指令的操作控制字段为 8 位,请安排微命令的操作控制字段格式,并将全部微指令代码化。

微指令

微命令信号

a b c d e f g h i j

I1 √ √ √ √ √

I2 √ √ √ √

I3 √ √

I4 √

I5 √ √ √ √

I6 √ √ √

I7 √ √ √

I8 √ √ √

Page 69: 第六章   中央处理器

69

微操作命令设计解:题中有 10 不同性质的微命令,但微指令的操作控制字段只有 8 位,不能采用直接控制法。又因为微指令中有多个微命令是兼容的 (a—e等 ) ,需同时产生 ,所以也不能用最短编码法。

选用字段编码和直接控制相结合的方法比较合适。将互斥的微命令安排在同一小段, b 、 i 、 j 互斥,安排在同一小段内, e 、 f 、 h 也互斥,也安排在一个小段内;其它微命令( a 、 c 、 d 、 g )因为相容,作为直接控制微命令。于是形成如下微指令控制字段格式 .

小段 1 小段 2译码输出 微命令 译码输出 微命令00 无 00 无01 b 01 e

10 i 10 f

11 j 11 h

Page 70: 第六章   中央处理器

70

微操作命令设计(续)将 8条微指令代码化可以得到:

I1: 11100101——a c d g b e I2: 10110010——a c d g×f I3: 00000111——a c d g b h I4: 01000000——a c d g×× I5: 01011001——a c d g i e I6: 10001111——a c d g j h I7: 01100011——a c d g×h I8: 10000111——a c d g b h

工作之三微操作命令设计

Page 71: 第六章   中央处理器

71

八、流水 CPU计算机诞生到现在,人们追求的目标之一是高速度,因此,并行处理技术便成为计算机发展的主流技术。并行性概括起来主要有三种形式:时间并行、空间并行、时间并行 + 空间并行。

时间并行:它是指时间重叠,让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。 时间并行性概念的实现方式就是采用流水处理部件。这是一种非常经济实用的并行技术,能保证计算机具有较高的性能价格比。目前的高性能微型机几乎无一例外地使用了流水技术。

空间并行性:它是指资源重复,以“数量取胜”为原则来大幅度提高计算机的处理速度。大规模和超大规模集成电路的迅速发展为空间并行带来了巨大的生机,也成为目前实现并行处理的一个主要途径。

时间并行 + 空间并行:它是指时间重叠和资源重复的综合应用,既采用时间并行又采用空间并行。例如,奔腾 CPU 采用了超标量流水技术,在一个机器周期中同时执行两条指令,因而既具有时间并行性,又具有空间并行性。这种并行技术带来的高效益是最好的。

Page 72: 第六章   中央处理器

72

1 、流水计算机的组成 图 31给出了现代计算机的系统

组成原理示意图。其中, CPU按流水线方式组织,通常由三大部分组成:指令部件、指令队列、执行部件,并组成一个三级流水线,其中每个子部件又构成一个流水线。

当执行部件在执行第 I条指令时,指令队列中存放着第 I+1 、 I+2 、…、 I+k条指令,与此同时,指令部件正在取第 I+k+1 条指令。

Page 73: 第六章   中央处理器

73

2 、流水 CPU 的时空图 为了实现流水,把输入的任务分割成一系列子任务,并使各子任务

能在流水线的各个阶段并发地执行。当任务连续不断地输入流水线时,在流水线的输出端便连续不断地吐出执行结果,从而实现子任务的并行性。

下图表示流水 CPU 中一个指令周期的任务分解。

这个指令周期中包含四个子过程:取指令( IF )、指令译码( ID )、执行运算( EX )、结果写回( WB ),每个过程称为过程段( Si ),这样,一个流水线由一系列的串联的过程段组成。在统一的时钟信号控制下,数据从一个过程段流向相邻的过程段。

Page 74: 第六章   中央处理器

74

流水线与非流水线比较

直观比较后发现,流水计算机在 8 个时间单位内执行了 5 条指令,而非流水计算机在 8 个时间单位内只执行了 2 条指令。显然,流水技术的应用,使计算机的速度大大提高了。

Page 75: 第六章   中央处理器

75

标量流水线和超标量流水线的概念 从数学的角度讲,标量是指单个量,而向量是指一组标量。一般计算机只有一条指令流水线。所以称为标量流水线。具有两条以上的指令流水线,则称为超标量流水线。

Page 76: 第六章   中央处理器

76

3 、流水线的分类 指令流水线:是指令步骤的并行。将指令的处理过程划分为取

指令、译码、取操作数、执行、写回等几个并行处理的过程段。目前,高性能计算机都采用了指令流水线。

算术流水线:指运算操作步骤的并行。如流水加法器、流水乘法器、流水除法器等。

处理机流水线:又叫宏流水,是指程序步骤的并行。由一串级联的处理机组成流水线的各个过程段,每台处理机负责某一特定的任务。数据从一台处理机输入,经处理后送入与第二台计算机相连的存储器中。第二台处理机从该存储器取出数据进行处理,然后传送给第三台处理机,如此串联下去。处理机流水线应用在多机系统中。

Page 77: 第六章   中央处理器

77

4 、流水线中的主要问题要使流水线具有良好的性能,必须使流水线畅通流动,不发生断流。但是,实现流水线的不断流是困难的。因为存在以下三种相关冲突。

资源相关:指多条指令进入流水线后,在同一机器周期内争用同一个功能部件。例如,如果指令和数据放在同一个存储器中,且只有一个端口时,正在执行的两条指令都需要访问存储器,就会发生资源相关冲突。

数据相关:在一个程序中,后一条指令的执行,必须等待前一条指令的执行结果,两条指令就会发生数据相关冲突。在流水计算机中,指令的执行是重叠进行的,前一条指令还没有结束,第二、三条指令就陆续开始工作。当后继指令需要的操作数刚好是前一条指令的运算结果,便发生数据相关冲突。

控制相关:当执行转移指令时,转移条件是由前一条指令建立的,转移的执行可能是顺序取下条指令,也可能是转移到新的目标地址取指令,由此而引起流水线断流。

为了解决上述冲突,应采取各种措施:比如,为了解决资源相关冲突,可以增加一个存储器,把指令和数据分开存放;为了解决数据相关冲突,可以在 CPU 内部增设若干结果缓冲寄存器,临时保留运算结果,给后继指令使用;为了解决控制相关冲突,可以设置“转移取”和“顺序取”两路指令预取队列。