18 cpu02

47
CPU 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email protected] 《 计算机组成原理 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 Cache 第八章 CPU 的结构与功能( (含 第八章 + 第四篇)

Transcript of 18 cpu02

Page 1: 18 cpu02

CPU

林楠

办公室: 408

办公电话: 0371-63887293

电子邮件: [email protected]

《 计算机组成原理 》

系统总线

存储器

运算器

控制器

接口与通信

输入 / 输出设备

Cache

第八章 CPU 的结构与功能(最难)

(含 第八章 + 第四篇)

Page 2: 18 cpu02

8.1 CPU 的基本功能与组成( 8.1 )8.2 时序系统和控制方式( 8.2 8.3 9 )8.3 组合逻辑设计( 10 )8.4 微程序设计( 10 )

第八章 CPU 的结构与功能

时序系统是控制器的心脏,其功能是为指令的执行提供各种定时信号。(一条指令分不同执行阶段即周期 - 节拍 - 脉冲)

组合逻辑控制器的设计步骤(前三步骤)

步骤一 拟定指令系统(逻辑依据,讲过了)步骤二 确定总体结构(空间安排,刚讲过)步骤三 拟定时序系统(时间安排,该讲了……)

Page 3: 18 cpu02

8.2 、时序系统和控制方式

8.2.1 指令周期 1 )指令周期的基本概念 2 )指令周期的分析举例 3 )指令周期的数据流8.2.2 指令流水8.2.3 多级时序系统8.2.4 时序控制方式

Page 4: 18 cpu02

1 、非访存指令 CLA 的指令周期:两个 CPU 周期。 指令功能:累加器清零操作。

2 )指令周期的分析举例

Page 5: 18 cpu02

1 )程序计数器 PC 的内容“ 20” 送入地址寄存器 MAR ;2 )程序计数器 PC 的内容 +1 ,为取下一条指令做准备;3 )地址寄存器 MAR 的内容,送到地址总线 ABus 上;4 )存储单元 20 中的内容经数据总线 DBus 送数据缓冲寄存器 MDR ;5 )数据缓冲寄存器 MDR 的内容,送到指令寄存器 IR ;6 )指令寄存器中的操作码被译码或测试;7 ) CPU 识别出是 CLA 指令。

2←20+1

13

45CLA

第一个 CPU 周期:取指令假设程序计数器 PC 内容为“ 20”

000 20

6

7

Page 6: 18 cpu02

第二个 CPU 周期:执行指令1 )操作控制器送一控制信号给 ALU ;2 ) ALU 响应控制信号,对 AC 清零。

Page 7: 18 cpu02

2 、直接访存指令 ADD 的指令周期:三个 CPU 周期。 指令功能:两个操作数相加,结果放累加器。

2 )指令周期的分析举例

Page 8: 18 cpu02

第一个 CPU 周期:取指令,译指令码(同 CLA )

2←21+1

13

45ADD 30

000 21

6

7

Page 9: 18 cpu02

第二个 CPU 周期:送操作数地址1 )把指令寄存器中的地址码部分 (30) 送入地址寄存器

000 30

Page 10: 18 cpu02

第三个 CPU 周期:送操作数,执行指令1 )从内存中读取操作数,送入数据缓冲寄存器;2 )操作数与累加器相加后存入累加器。

000 30

000 006

000 006

000 000

000 006

Page 11: 18 cpu02

3 、存数指令 STA 的指令周期:三个 CPU 周期。 指令功能:向内存单元,写入一操作数。

2 )指令周期的分析举例

Page 12: 18 cpu02

第一个 CPU 周期:取指令,译指令码

2←22+1

1

3

45

STA 40

000 22

6

7

Page 13: 18 cpu02

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

000 40

Page 14: 18 cpu02

000 40

000 006

第三个 CPU 周期:送操作数,执行写操作累加寄存器的内容,先送入数据缓冲寄存器,再写入到所选定的存储单元 (40) 中。

Page 15: 18 cpu02

4 、空操作指令 NOP 的指令周期:两个 CPU 周期。 指令功能:控制器不发出任何控制信号。

2 )指令周期的分析举例

Page 16: 18 cpu02

第一个 CPU 周期:取指令

2←23+1

13

45

NOP

000 23

6

7

Page 17: 18 cpu02

第二个 CPU 周期:执行指令(没有任何操作)

Page 18: 18 cpu02

5 、转移指令 JMP 的指令周期:两个 CPU 周期。         

第一个 CPU 周期:取指令

第二个 CPU 周期:把指令寄存器的地址码内容送到程序计数器 PC ,代替原先的内容作为下一条指令的地址。

从而改变了原先的程序顺序。

2 )指令周期的分析举例

Page 19: 18 cpu02

第一个 CPU 周期:取指令

2←24+1

13

45

JMP 21

000 24

6

7

Page 20: 18 cpu02

第二个 CPU 周期:执行指令将指令的地址码部分 21 送到程序计数器,改变了原先执行顺序

000 21

Page 21: 18 cpu02

8.2 、时序系统和控制方式

8.2.1 指令周期 1 )指令周期的基本概念 2 )指令周期的分析举例 3 )指令周期的数据流8.2.2 指令流水8.2.3 多级时序系统8.2.4 时序控制方式

Page 22: 18 cpu02

方框 代表一个 CPU 周期,方框中的内容表示数据通路的某种控制操作。 菱形 通常用来表示某种判别或测试,不单独占用一个 CPU 周期。

3 )指令周期的数据流 – 方框图表示 

采用方框图语言来表示一条指令的指令周期。

Page 23: 18 cpu02

五条指令序列:第一个 CPU 周期:取指令,每条指令都相同;CLA , JMP , NOP :两个 CPU 周期; ADD , STA :三个CPU 周期

ABUS :地址总线DBUS :数据总线AC :累加器PC :程序计数器

IR :指令寄存器AR :地址寄存器DR :数据缓冲寄存器

Page 24: 18 cpu02

取指周期 FE

执行周期 EX

有间址吗?

有中断吗?

间址周期 IND

中断周期 INT

8.28.23 )指令周期的数据流  

一条指令完整的指令周期包括: 取指周期 FE 间址周期 IND 执行周期 EX 中断周期 INT

取指周期、执行周期是每条指令都必须有的。

间址周期,只有间址寻址的指令才有。

中断周期,只有在条件满足时才有。

Page 25: 18 cpu02

例如:设 CPU 内有下列部件: PC,IR,SP,AC,MAR,MDR 和 CU (控制单元) 要求: 1 )写出完成间址寻址的取数指令 LDA 的信息流。 (将某主存单元的内容取至 AC 中)

解:)取指周期: PC 送 MAR 送 地址总线

CU 发 读内存命令 数据 送 数据总线 送 MDR 送 IR // 指令送入 IR 指令操作码部分 OP(IR) 送 CU PC + 1 送 PC

)间址周期:指令地址码部分 送 MAR 送 地址总线 CU 发 读内存命令 数据 送 数据总线 送 MDR // 操作数地址送入 MDR

)执行周期: MDR 送 MAR 送 地址总线 CU 发 读内存命令 数据 送 数据总线 送 MDR 送 AC // 操作数送入 AC

3 )指令周期的数据流 

Page 26: 18 cpu02

例如:设 CPU 内有下列部件: PC,IR,SP,AC,MAR,MDR 和 CU (控制单元) 要求: 2 )写出中断周期的信息流。解:2 )在中断周期内需将程序断点(在 PC 中)保存起来,通常把断点存 入堆栈。(假设进栈操作是先修改堆栈指针,后存入数据)

CU 发 修改堆栈指针命令 (SP) – 1 送 SP, 送 MAR 送 地址总线 CU 发 写内存命令 PC 送 MDR 送 数据总线 写入 存储单元 CU 送 程序入口地址 给 PC

SP

SP 断点SP

3 )指令周期的数据流 

Page 27: 18 cpu02

3 )指令周期的数据流 – 控制信号 

PC IR

AC

CU

时 钟

ALU

控制信号

标志

控制信号

C0C1

C2

C3

C4

取指周期

例: ADD @ X 取指周期的控制信号发送顺序: C0 、 C1 、读、 C2 、 C3 、 C4

PC IR

CU

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

PCPCPC

M D

RM

A R

M D

R M

A R

Page 28: 18 cpu02

3 )指令周期的数据流 – 控制信号 

PC IR

AC

CU

时 钟

ALU

控制信号

标志

控制信号

M D

R M

A R

C1

C2

C3C5

例: ADD @ X间址周期的控制信号发送顺序: C5 、 C1 、读、 C2 、 C3

IR

M D

R M

D R

M A

R

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

Page 29: 18 cpu02

3 )指令周期的数据流 – 控制信号 

PC IR

AC

CU

时 钟

ALU

控制信号

标志

控制信号

M D

R M

A R

C1

C2

C5

例: ADD @ X执行周期的控制信号发送顺序: C5 、 C1 、读、 C2 、 C67 、加、 C8

C7

C6 C8

AC

ALU

… 控制信号

M D

R M

A R

M D

R

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

Page 30: 18 cpu02

3 )指令周期的数据流 – 控制信号 

例: ADD @ X 取指周期

2. 采用 CPU 内部总线方式( output 输出 input 输入)

Page 31: 18 cpu02

3 )指令周期的数据流 – 控制信号 

例: ADD @ X 间址周期

2. 采用 CPU 内部总线方式( output 输出 input 输入)

( Read )

Page 32: 18 cpu02

3 )指令周期的数据流 – 控制信号 

例: ADD @ X 执行周期

2. 采用 CPU 内部总线方式( output 输出 input 输入)

( Read )

Page 33: 18 cpu02

8.2 、时序系统和控制方式

8.2.1 指令周期 1 )指令周期的基本概念 2 )指令周期的分析举例 3 )指令周期的数据流8.2.2 指令流水8.2.3 多级时序系统8.2.4 时序控制方式

Page 34: 18 cpu02

8.2.2 指令流水 – 指令衔接方式

CPU 执行指令序列时,各指令之间采取什么样的衔接方式呢?

最简单的是串行顺序处理方式,即执行完一条指令才读取下一条。

为了提高工作速度,现在的大多数计算机都采取重叠处理方式。

重叠的程度取决于存储与运算部件的多少,还与控制器指令部件的工作方式有关(即指令预取与译码执行的技术)。

现在,仅从预取指令的角度讨论几种指令衔接方式:

1 、单存储体串行处理方式2 、单存储体重叠处理方式3 、双存储体重叠处理方式4 、多存储体交叉访问与重叠处理方式

Page 35: 18 cpu02

1 、单存储体串行处理方式

2 、单存储体重叠处理方式

取第 K条指令

……取数 运算取第K+1

条指令

取数 运算

取第 K条指令

……取数 运算取第K+1

条指令

取数

取第 K条指令

……取数 运算

取第 K条指令

……取 k+1条指令

取 k+2条指令取第

K+1 条数

……取第

K+2 条数

取第K+3 条

取 k+3条指令

……第 K 条运算

第 K+2条

运算

第 K+3条

运算

第 K+1条

运算

3 、双存储体重叠处理方式(一体存指令,一体存数据)

取第K 条数

0 体

1 体

运算器

CPU进行运算时内存空闲没用

8.2.2 指令流水 – 指令衔接方式

Page 36: 18 cpu02

4 、多存储体交叉访问与重叠处理方式

单元 0 4 8

地址译码器

地址寄存器

存储器 0

数据寄存器

地址译码器

地址寄存器

存储器 1

数据寄存器

地址译码器

地址寄存器

存储器 3

数据寄存器

存储体号 体内地址

多体:多个体,每个体有独立的地址寄存器 \ 地址译码器和数据寄存器。交叉:每一个体的地址不连续。 0 4 8 / 1 5 9 / … 交叉编制。目的:提高单位时间内取字的速率。 ( CPU 对存储体一对多)

159

37

11

地址译码器

地址寄存器

存储器 2

数据寄存器

26

10

8.2.2 指令流水 – 指令衔接方式

Page 37: 18 cpu02

单元 0 4 8

地址译码器

地址寄存器

存储器 0

数据寄存器

地址译码器

地址寄存器

存储器 1

数据寄存器

地址译码器

地址寄存器

存储器 3

数据寄存器

159

37

11

地址译码器

地址寄存器

存储器 2

数据寄存器

26

10

取第 K条指令

……取第 k条数

第 k 条运算

取第k+4条数

第 k+4条

运算

取 k+4条指令0 体

取第K+1

条指令

……取第k+1条数

第 k+1条

运算

取第k+5条数

取 k+5条指令1 体

取第K+2

条指令

……取第k+2条数

第 k+2条

运算

取第k+6条数

取 k+6条指令2 体

取第K+3

条指令

……取第k+3条数

第 k+3条

运算

取第k+7条数

取 k+7条指令3 体

8.2.2 指令流水 – 指令衔接方式

Page 38: 18 cpu02

流水线计算机的系统组成 其中 CPU按流水线方式组织,通常由三部分组成一 3 级流水线:指令部件、指令队列、执行部件。                                                        为了使存储器的存取时间能与流水线各过程段的速度相匹配,一般都采用多体交叉存储器。

8.2.2 指令流水

Page 39: 18 cpu02

IF 取指ID 译码OF 取操作数EX 执行

流水线 CPU 的时空图 计算机的流水线处理过程非常类似于工厂中的流水装配线。

为了实现流水,首先把输入的任务 ( 或过程 ) 分割为一系列子任务,并使各子任务能在流水线的各个阶段并发地执行。

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

8.2.2 指令流水– 流水线 CPU

IF ID OF EX流入 流出

Page 40: 18 cpu02

取指

译码

取操作数

执行

取指

译码

取操作数

执行

8.2.2 指令流水 – 流水线 CPU

时钟周期

每隔 4 个时钟周期完成 1 条指令

第 1 条指令 4 个时钟周期,以后每隔 1 个时钟周期完成 1 条指令

时钟周期

Page 41: 18 cpu02

8.2.2 指令流水– 流水线 CPU

Pentium 是 Intel 公司生产的超标量流水处理器,

Pentium具有 CISC 和 RlSC 两者的特性,不过具有的 CISC特性更多一些。操作控制器采用组合逻辑控制和微程序控制相结合的方式。大多数简单指令用组合逻辑控制实现。

以 CISC 结构实现超标量流水线,堪称为当代 CISC 机器的经典之作。

完成第 1 , 2 条指令 4 个时钟周期,以后每隔 1 个时钟周期完成 2 条指令

Page 42: 18 cpu02

8.2.2 指令流水– 流水线 CPU

取指译码

取操作数执行

时钟周期

假设指令流水时空图如下,共有 10 条指令连续输入此流水线。)假设时钟周期为 100ns ,求流水线的实际吞吐量

(单位时间内执行完的指令数)处理器的加速比

条指令,需要 13 个时钟周期,100ns * 13 ) = 1.77*107 条指令 /秒

)非流水线时处理 10 条指令需要 10*4 个时钟周期,四级流水线时处理 10 条指令需要 13 个时钟周期,

所以该流水处理器的加速比为 40 / 13 = 3.08

Page 43: 18 cpu02

例:有五级流水线, 分别完成 IF 取指, ID 译码、读寄存器, EX 执行、访存地址, MEM 访存, WB 写寄存器,五个阶段。 假设完成各个阶段的操作时间一次为: 90 微秒, 60 微秒, 70 微秒, 100 微秒, 50 微秒。

问:流水线的时钟周期应该取什么值?

8.2.2 指令流水– 流水线中的问题

解:时钟周期应该取其最大值,即访存 100 微秒。

Page 44: 18 cpu02

考研习题精选

1 、 CPU 是指() A 、控制器 B 、运算器和控制器 C 、运算器、控制器、主存 D 、 ALU 和寄存器

2 、控制器的全部功能是() A 、产生时序信号 B 、从主存中取出指令并完成指令操作码译码 C 、从主存中取出指令,分析指令并产生有关的操作控制信号 D 、以上都不对

3 、指令周期是() A 、 CPU 执行一条指令的时间 B 、 CPU 从主存中取出一条指令的时间 C 、 CPU 从主存中取出一条指令加上执行这条指令的时间 D 、时钟频率的倒数

4 、程序计数器的位数取决于() A 、存储器的容量 B 、机器字长 C 、指令字长 D 、存储字长

Page 45: 18 cpu02

考研习题精选

5 、指令寄存器的位数取决于() A 、存储器的容量 B 、机器字长 C 、指令字长 D 、存储字长

6 、通用寄存器的位数取决于() A 、存储器的容量 B 、机器字长 C 、指令字长 D 、中断服务程序

7 、在 CPU 的寄存器中,()对于用户是透明的。 A 、程序计数器 B 、状态条件寄存器 C 、指令寄存器 D 、通用寄存器

8 、程序计数器 PC属于()。 A 、运算器 B 、控制器 C 、存储器 D 、 ALU

9 、 CPU 不包括()。 A 、通用寄存器 B 、指令寄存器 C 、地址译码器 D 、程序计数器

Page 46: 18 cpu02

考研习题精选

10 、 CPU 中的通用寄存器() A 、只能存数据,不能存地址 B 、可以存数据或地址 C 、不能存数据,不能存地址 D 、可以存数据或地址,也可以代替指令寄存器

11 、计算机操作的最小单位时间是() A 、时钟周期 B 、指令周期 C 、 CPU 周期 D 、存取周期

12 、由于内部操作快,而 CPU 访存速度慢,所以机器周期通常由() 来决定。 A 、间址周期 B 、指令周期 C 、机器周期 D 、存取周期

13 、在取指令操作后,程序计数器中存放的是()。 A 、当前指令的地址 B 、程序中指令的数量 C 、下一条指令的地址 D 、已经执行指令的计数值

Page 47: 18 cpu02

复习与作业

复习章节:

第 8 章 CPU 的结构和功能8.3 、指令流水

第 9 章 控制单元的功能

作业:

P370 4 、 8 、 9 、 11 、 12 、P393 1 、 3 、 6 、 9 、 11 、 12 、