Presentation is loading. Please wait.

Presentation is loading. Please wait.

第五章 控制单元.

Similar presentations


Presentation on theme: "第五章 控制单元."— Presentation transcript:

1 第五章 控制单元

2 5.1 基本概念 CPU的基本功能 指令控制 操作控制 数据运算 异常和中断处理 CPU的扩展功能 存储管理 数据缓存 总线管理 功耗管理

3 5.1 基本概念 CPU的基本构成 寄存器的类型 数据通路 控制器,运算器,寄存器,[cache], [MMU], [外设接口]
指令寄存器(IR) 程序计数器(PC) 数据寄存器(DR) 地址寄存器(AR) 状态寄存器(SR) 数据通路 数据总线(单总线,双总线,多总线) 专用通路(如MIPS)

4 总线结构的CPU 控制信号: IRin: IR的输入控制 IRout: IR的输出控制 PCin: PC的输入控制
PCout: PC的输出控制 PC+1: PC计数更新控制 R0out:R1的输出控制 R0in: R1的输入控制 Yin: Y的输入控制 Zin: Z的输入控制 Zout: Z的输出控制 ADD: ALU加法操作控制

5 专用通路结构的CPU

6 专用通路结构的CPU 控制信号: MemRead 存储器读 MemWrite 存储器写 RegWrite 数据寄存器写
ALUOp 运算操作码 ALUSrc ALU数据选择 PCWrite PC写 PCSource PC输入选择 RegWrite 数据寄存器写 MemtoReg写数据选择 RegDst 写寄存器选择 Irwrite 指令寄存器 Jump 选择转移地址

7 5.2 指令的执行过程 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (1) 取指令。
IR = Memory[PC] NPC = PC + 4

8 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (2) 指令译码及读取操作数。 A = R[IR[25:21]]
B = R[IR[20:16]] PC = NPC

9 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (3) 执行。 ALUoutput = A + B

10 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (4) 写回。 R[IR[15:11]] = ALUoutput

11 5.2.1 运算指令周期 单总线结构: 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC PC MAR

12 5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR
如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR 指令译码器 IR MDR

13 5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR
如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y R1 Y

14 5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR
如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y (6) R2 + Y→Z R2 Z

15 5.2.1 运算指令周期 单总线结构: (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR
如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y (6) R2 + Y→Z (7) Z→R3 R3

16 5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (1) 取指令。
IR = Memory[PC] NPC = PC+4

17 5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (2) 指令译码。 A = R[IR[25:21]]
C = Sign-extend(IR[15:0]) PC = NPC

18 5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (3) 计算地址。 ALUoutput = A + C

19 5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (4) 访存。
Memory-data = Memory[ALUoutput]

20 5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (5) 写回。
R[IR[20:16]] = Memory-data

21 5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (1) 取指。 IR = Memory[PC]
NPC = PC + 4

22 5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (2) 译码。
A = R[IR[25:21]] PC = NPC B = R[IR[20:16]] C = Sign-extend(IR[15:0])

23 5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (3) 计算地址 ALUoutput = A + C

24 5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (4) 访存 Memory[ALUoutput] = B

25 5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC

26 5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR

27 5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR,读存储器

28 5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR,读存储器 (6) DBUS→MDR (7) MDR→R1

29 5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC

30 5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR

31 5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR

32 5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC
(3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR (6) R1→MDR,写存储器

33 5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (1) 取指 IR = Memory[PC]
NPC = PC+4

34 5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (2)译码并执行
PC = (IR[25:0] << 2) | NPC[31:28]

35 5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC

36 5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR

37 5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) PC→Y

38 5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) PC→Y (6) Y + IR(地址段)→Z

39 5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) PC→Y (6) Y + IR(地址段)→Z (7) Z→PC

40 5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (1) 取指 IR = Memory[PC]
NPC = PC + 4

41 5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (2) 译码 A = R[IR[25:21]]
B = R[IR[20:16]] C = Sign-extend(IR[15:0])

42 5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (3) 执行
if(A == B) PC = NPC + (C << 2) Else PC = NPC

43 5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC

44 5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR

45 5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) if(!Z) PC→Y; else goto END

46 5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) if(!Z) PC→Y; else goto END (6) Y + IR(地址段)→Z

47 5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR
(4) MDR→IR (5) if(!Z) PC→Y; else goto END (6) Y + IR(地址段)→Z (7) Z→PC

48 问题 单总线结构的计算机中,如果指令的长度是2个字,那么这条指令的读取过程是什么?
单总线结构的计算机中,如果指令的一个操作数是寄存器间接寻址,那么这个操作数的读取过程是什么?

49 习题 5.4 5.5

50 5.3 控制器的基本结构 5.3.1 硬连线控制器 5.3.2 微程序控制器 5.3.3 阵列逻辑控制器

51 5.3.1 硬连线控制器 1. 指令周期流程图

52 例5-10 在单总线的CPU结构中,如果加法指令中的第一个地址码有寄存器寻址和寄存器间接寻址两种寻址方式,并在指令中用代码表示指令的寻址方式,即该指令可实现如下功能: (1) ADD R1,R2 ; (2) ADD (R1),R2 ; 试画出执行这条指令的流程图。

53 例5-11 对于单总线CPU结构,设计一个可实现下列指令操作的硬连线控制器,试画出控制器流程图。
ADD R3,R1,R2 LOAD mem,R1 STORE mem,R1 JMP #A

54 控制信号:如ADD R3, R1, R2 T1: PCout, MemRead, PC+1, MARin ;PCMAR, PC+1PC
T2: MDRout, IRin ;MDRIR addT3: R1out, Yin ;R1Y addT4: R2out, ADD, Zin ;R2+YZ addT5: Zout, R3in ;ZR3

55 硬连线控制器框图

56 环形脉冲发生器

57 硬连线控制器电路

58 硬连线控制器 条件码如算术运算的异常、内部中断等。 编码器电路的一般逻辑表达形式是:
Ci = T1*(INS1 + INS2 + …) + T2*(INS1 + INS2 + …) + … i=1, 2, 3, …

59 例:某计算机中包含2条指令: ADD指令每个时钟周期内的控制信号为:
T1: PCout, MARin, PC+1, Read ;PCMAR, PC+1, read T2: MDRout, IRin ;MDRIR T3: R1out, Yin ;R1Y T4: R2out, Zin, Add ;R2+YZ T5: Zout, R3in ;ZR3 JMP指令中各时钟周期的控制信号为: T1: PCout, MARin, PC+1, Read ; PCMAR, PC+1, read T3: PCout, Yin ;PCY T4: IRout, Add, Zin ;IR+YZ T5: Zout, PCin ;ZPC

60 解:控制器的逻辑表达式如下 PC+1 = T1 PCin = T5*JMP PCout = T1 + T3*JMP
Yin = T3*(ADD + JMP) Add = T4*(ADD + JMP) Zin = T4*(ADD + JMP) Zout = T5*(ADD + JMP) END = T5*(ADD + JMP) ...

61 指令周期的确定 固定时钟信号环形脉冲发生器: ——指令执行的时钟数固定。 可变长度时钟信号环形脉冲发生器: ——指令执行的时钟数不固定。
实现方法:用END信号,如 END = T5*ADD + T3*CLA +

62 硬连线控制器电路

63 硬连线控制电路的设计 习题: 5.9 (1) 画出控制器逻辑流程图 根据指令功能确定每一条指令所需的机器周期以及每一周期所完成的操作
(2) 列出各指令的各操作过程所需的控制信号 (3) 写出每个控制信号的逻辑表达式 (4) 画出控制器逻辑框图 习题: 5.9

64 5.3.2 微程序控制器 1. 微程序和微指令 基本概念:控制字,微指令,微程序,微操作,控制存储器,微地址
微程序控制方法:把指令执行所需要的所有控制信号存放在控制存储器中,需要时从这个存储器中读取。 微指令的构成:操作控制部分,顺序控制部分 微程序控制的特点:灵活性好,速度慢

65 2. 微程序控制器原理

66 3. 微指令编码 1. 微指令编码 控制字编码 相容性和相斥性 (1) 直接表示法 (2) 编码表示法 (3) 混合表示法

67 4. 微地址的形成方法 计数器方式 增量方式 用mPC

68 4. 微地址的形成方法 (2) 断定方式

69 4. 微地址的形成方法 (3) 结合方式

70 例5-13 对于例5-11中的指令,试设计一个采用若干片8位ROM芯片的水平型直接编码的微程序控制器。要求画出微程序控制器的结构图。假定微地址的生成采用增量与断定结合的方式。
微指令的控制字为18位 一共有12条微指令 微地址(BAF字段)为4位 微指令的字长为18+4+1=23位

71 多路分支的实现 用多个二叉分支实现 用微地址编码器 直接用分支条件构成分叉地址 根据不同的分支条件生成不同的分叉地址
使得微指令中不同的分支微地址中有若干位与条件代码相同,其余位都一样 可免去微地址编码电路

72 多路分支的实现 例. 试为各微指令分配适当的地址,并给出每条微指令的转移地址字段(即下址字段)BAF和实现“位选择”功能的转移控制字段BCF。

73 多路分支的实现 B的两个后继状态C和E的微地址只有1位不同,这一位可以根据转移条件IR3来设置。

74 多路分支的实现 微指令的BCF中用最低位表示是否选择IR3的值与BAF字段的其他位一起构成微地址。

75 多路分支的实现 微地址形成的原理

76 问题 如果微程序流程中有一个四路分支,如何生成四个微地址? 如果微程序流程中有两个多路分支,如何生成微地址?

77 5. 微指令格式分类 (1) 水平型 并行操作能力强,灵活性强;执行指令的时间较短;微指令比较长,但微程序比较短;硬件密切相关,微程序设计比较困难。 (2) 垂直型 每条微指令只表示一个微操作;需要对微操作码和部件号译码;微指令短,微程序长。 可以用助记符表示,例: MOV MDR MAR 虚拟机 仿真 指令模拟 毫微程序

78 微程序控制器的设计步骤 习题: 5.10 5.13 画出控制器逻辑流程图 列出各指令的各操作过程所需的控制信号 定义微指令中控制字的格式
写出每条微指令的控制字 安排微指令的存储地址 确定每条微指令的顺序控制字段(BCF、BAF) 确定微指令多路分支方式 画出控制器逻辑框图 习题:

79 5.3.3 阵列逻辑控制器 基本设计方法 画出控制电路对每条指令进行控制的状态转换图 指出每个状态下的控制信号
通过可编程逻辑器件来实现控制器电路

80 例:专用通路结构的指令流程 第一级:取指 IR = Mem[PC] (S0) PC = PC + 4 (S0) 第二级:指令译码及读取寄存器
A = R[IR[25:21]] (S1) B = R[IR[20:16]] (S1) Target = PC + (Sign-extend(IR[15:0] << 2) (S1) 第三级:执行,计算存储器地址(或转移完成) 访存:ALUoutput = A + Sign-extend(IR[15:0]) (S2) 运算:ALUoutput = A op B (S6) 转移:if(A op B) PC = Target (S8) 第四级:访存(或运算完成) 访存(读):Memory-data = Memory[ALUoutput] (S3) 访存(写):Memory[ALUoutput] = B (S5) 运算:R[IR[15:11]] = ALUoutput (S7) 第五级:写回 访存(读):R[IR[20:16]] = Memory-data (S4)

81 例:专用通路结构的指令流程

82 例:专用通路结构的指令流程 各个控制状态下的控制信号: S0: IRWrite=1; PCWrite=1; S1: -
S2: ALUSrc=1; ALUOp=00 (加); S3: MemRead; S4: RegWrite; S5: MemWrite; S6: ALUSrc=0; ALUOp=op; S7: RegDst=1; RegWrite=1; MemtoReg=0; S8: ALUOp=op; PCWrite=1; PCSrc=A op B; S9: Jump=1;

83 异常事件的处理 异常事件的检测 向处理异常事件的程序的转移机制 保存产生异常原因的信息 对异常的处理 操作系统

84 异常事件的处理 S10: EPCwrite=1;CauseWrite=1;PCWrite=1;

85 5.4 指令流水技术 流水工作方式:将一个计算任务细分成若干个子任务,每个子任务由专门的部件处理,多个计算任务依次进行并行处理。 流水周期

86 退耦流水线

87 流水线的性能 吞吐率 单位时间内流水线能处理的任务数量 最大吞吐率与实际吞吐率 加速比 流水方式的工作速度与等效的顺序工作方式时间的比值

88 时空图

89 基本指令流水线

90 流水方式与非流水方式的比较 lw $1,100($2) sw $4,100($5) add $7,$8,$9
例5-17 假定将CPU分成上述5个阶段,存储器访问需要2ns时间,寄存器操作需要1ns,ALU运算时间为2ns,求流水方式和非流水方式下执行以下4条指令所需的时间。 lw $1,100($2) sw $4,100($5) add $7,$8,$9 beq $10,$11,3000 IF Id Ex M W

91 答: 在非流水的情况下,每个步骤所需的时间: 在流水的情况下,流水周期定为2ns,指令执行时间为10ns。

92 指令流水线的时空图

93 指令的流水执行的要求 1. 指令长度应当尽量相同 2. 指令格式应当简单 3. 限制访存操作 4. 尽量使操作数在存储器中对齐存储

94 指令流水线的相关性 1. 资源相关(结构相关) 2. 数据相关 3. 控制相关。 流水执行的多条指令同时使用同一个部件
反相关 指令流水线的相关性 名字相关 1. 资源相关(结构相关) 流水执行的多条指令同时使用同一个部件 2. 数据相关 流水执行的多条指令访问相同的数据 RAW、WAR、WAW 3. 控制相关。 转移指令引起的相关 输出相关 hazard 险象 真相关

95 指令流水线的数据相关

96 消除数据相关影响的方法 停顿 编译检测 相关专用通路

97 解决数据相关性的方法 ——流水线的停顿

98 消除数据相关性影响方法 ——编译的方法

99 解决数据相关性的方法 ——相关专用通道 IF Id Ex M W Data forwarding

100 解决数据相关性的方法 ——相关专用通道 当指令只需要一个执行周期时RAW相关可以不影响流水 可以将load指令看成需要2个执行周期

101 2. 指令流水线的控制相关 转移延迟槽

102 改进转移指令执行性能的方式 ——将转移指令的执行在流水线中提前进行
问题:程序逻辑性的破坏 指令流水线的问题:指令流水线的中断

103 3. 指令流水线的资源相关 Addd: 双精度加法指令 F2: 浮点数寄存器

104 典型指令流水线的特点 流水线分为IF、ID、EX、MEM、WB五个等长的时间阶段 转移指令在第二个阶段被识别 没有相关专用通路
从而可确定如何取下一条指令 没有相关专用通路 一个时钟周期内只能启动执行一条指令 一个时钟周期内只能写回一条指令 读操作数从指令译码时开始 读到为止 习题:5.16

105 5.4.2 指令的调度 静态指令调度 相关性? ——通过编译程序调整指令的顺序
例: for (i=1; i<=1000; i=i+1) x[i] = x[i] + s; 编译后变成: loop: LD F0, 0(R1); F0=array element ADDD F4,F0,F2; add scalar in F2 SD 0(R1),F4; store result SUBI R1,R1,8; decrement pointer 8 bytes BNEZ R1,loop; branch if R1!=zero 相关性?

106 执行时的情况 “执行” 的含义 时空图? 假定LD指令的执行需2拍,ADDD执行需3拍,有一个转移延迟槽,有相关专用通路 。
loop: LD F0, 0(R1) 1 stall 2 ADDD F4,F0,F2 3 stall 4 stall 5 SD 0(R1),F4 6 SUBI R1,R1,8 7 BNEZ R1,loop 8 stall 9 “执行” 的含义 时空图?

107 指令调度后的执行情况 loop: LD F0, 0(R1) stall ADDD F4,F0,F2 SUBI R1,R1,8
BNEZ R1,loop SD 8(R1),F4 执行时间:6个时钟周期。 时空图?

108 指令级并行性的局限性 基本块太小 循环级并行性 循环迭代之间的并行性 开发循环级并行性的方法 循环展开 指令调度 限制了指令调度的范围

109 循环展开 ——将原来几个循环迭代的指令代码合并成一个循环迭代
loop: LD F0, 0(R1) 2 ADDD F4,F0,F2 3 SD 0(R1),F4 1 LD F6,-8(R1) 2 ADDD F8,F6,F2 3 SD -8(R1),F8 1 LD F10,-16(R1) 2 ADDD F12,F10,F2 3 SD (R1),F12 1 LD F14,-24(R1) 2 ADDD F16,F14,F2 3 SD (R1),F16 1 SUBI R1,R1,#32 1 BNEZ R1,loop 2 未调度时,执行时间为27个周期,平均每个迭代6.8个周期。

110 调度后 执行时间为14个周期,平均每个迭代3.5个周期。 loop: LD F0, 0(R1) LD F6,-8(R1)
ADDD F4,F0,F2 ADDD F8,F6,F2 ADDD F12,F10,F2 ADDD F16,F14,F2 SD 0(R1),F4 SD -8(R1),F8 SD (R1),F12 SUBI R1,R1,#32 BNEZ R1,loop SD 8(R1),F16 执行时间为14个周期,平均每个迭代3.5个周期。

111 循环展开的方法 检查循环迭代之间是否相关 确定指令的移动是合法的 使用不同的寄存器 消除多余的循环计数和条件转移 分析访存指令 调度指令代码
不相关时才进行循环展开 确定指令的移动是合法的 保证指令移动后程序的正确性,并调整指令的偏移量 使用不同的寄存器 避免因采用相同寄存器而产生的不必要的相关性 消除多余的循环计数和条件转移 分析访存指令 确定它们不对相同地址的存储单元进行访问 调度指令代码 保持原始代码中产生相同结果所必须的相关性

112 指令间的相关性 数据相关 名字相关 控制相关 真相关 RAW 具有传递性 反相关(WAR) 输出相关(WAW)
决定了转移指令与其它指令之间的执行顺序 指令i 指令k 指令j

113 解决名字相关的方法 寄存器更名 Register rename loop: LD F0, 0(R1) ADDD F4,F0,F2
SD 0(R1),F4 LD F6,-8(R1) ADDD F8,F6,F2 SD -8(R1),F8 LD F10,-16(R1) ADDD F12,F10,F2 SD (R1),F12 LD F14,-24(R1) ADDD F16,F14,F2 SD (R1),F16 SUBI R1,R1,#32 BNEZ R1,loop

114 2. 动态指令调度 动态调度 基本思想 有序指令启动的问题 第三条指令不能提前启动 用硬件调度 无序执行 打破指令执行的顺序限制
DIVD F0,F2,F4 ADDD F10,F0,F8 SUBD F12,F8,F14 第三条指令不能提前启动

115 退偶结构——简单的无序执行 例:采用专用的load部件和store部件,使得访存操作可以不受运算操作的影响。

116 退耦结构指令流水线的特点 简单的无序执行机制 指令预取 功能部件之间可无序执行 功能部件之内有序执行 可以提高程序执行速度

117 无序指令启动的方法 记分牌方法 记分牌方法 启动规则 构成 读操作数规则 四个执行阶段 写结果规则 无结构冲突 (1) 指令状态表
(2) 功能部件状态表 (3) 寄存器结果状态表 四个执行阶段 启动 读操作数 执行 写结果 记分牌方法 启动规则 无结构冲突 没有WAW相关 读操作数规则 操作数具备 消除RAW相关 写结果规则 前面指令已读取操作数或者无数据相关 消除WAR相关

118 Tomasulo调度法 特点 寄存器更名 分布式保存站 写回控制 命令队列 消除名字相关 并行调度消除调度瓶颈 写写相关时最后一条指令写入
使取指令与启动执行退耦

119 Tomasulo调度法 LD F2,45(R3) LD F6,34(R2) SUBD F8, F6, F2 MULTD F0, F2, F4
LD F2,45(R3) LD F6,34(R2) SUBD F8, F6, F2 MULTD F0, F2, F4 LD F2, 45(R3) LD F6,34(R2) S M F4

120 Tomasulo调度法

121 Tomasulo调度法执行步骤 发送 执行 写结果 如果浮点运算部件中有一个空的保存站就发送该指令到保存站中。
如果操作数在寄存器中就将它们送到保存站。 如果没有空的保存站或缓存部件,则指令暂等。 执行 保存站中的指令在具备所需的操作数时就进入执行部件。 写结果 当结果形成时,通过CDB总线写到寄存器与等待此结果的所有保存站。

122 问题一 Tomasulo法如何实现寄存器更名?

123 问题二 Tomasulo法如何进行写回控制? add $1, $2, $3 sub $4, $1, $5 lw $1, 0($6)

124 Tomasulo法的优缺点 优点: 缺点 习题: 5.17 分散了险象检测逻辑 消除了因WAW与WAR险象引起的暂停。 性能高 硬件量大
CDB单总线结构限制了性能 习题: 5.17 5.18

125 补充例题 指出下列指令序列中的数据相关性。对于5级指令流水线,允许不相关指令提前执行,指出这些指令的执行顺序:
Load R1,100(R0) Add R1,R1,R0 Loadi R2, 1 Store R1,100(R0) Store R2,200(R0) Add R3,R3,R4

126 指令1与指令2间存在关于R1的RAW和WAW相关 指令2与指令4间存在关于R1的RAW相关 指令3与指令5间存在关于R2的RAW相关

127 5.3 分支预测 静态 永远不转移 永远转移 后向转移 动态 1位 2位 多位(1级,2级)

128 1位动态——根据上次转移情况预测下次情况

129 2位动态——根据上两次转移情况预测下次 预测状态机 00: strongly not taken 01: weakly not taken
10: weakly taken 11: strongly taken

130 2级预测:根据多次转移情况选择预测状态 (1,1)预测器
2级预测:根据多次转移情况选择预测状态 (1,1)预测器

131 (2,2)预测器

132 (4,2)预测器

133 全局预测与局部预测 分支的历史 全局预测器The global Predictor 局部预测器The local predictor
全局分支历史Global branch history 所有转移指令的历史 局部分支历史Local branch history 每一条转移指令的历史 全局预测器The global Predictor Indexed only by history 局部预测器The local predictor Indexed by address and history

134 竞争预测器 竞争预测器Tournament Predictors 使用多个预测器 加上一个预测器的预测器 全局预测器与局部预测器
对不同的分支选择不同的预测器 通常选择全局或者局部预测器 采用2位饱和计数器 预测准确时加1 Preditor Global Preditor Local Preditor

135 转移指令的转移模式 例: for(i=1; i<=4; i++) {} 转移的执行模式是(1110)n 预测值 转移历史 预测值
110 1 101 011

136 快速指令预取 分支目标缓存 分支指令缓存 返回地址预测器 Stores the predicted PC after a branch
快速形成分支目标地址 分支指令缓存 Stores one or more target instructions 快速形成分支目标指令 速度更快 可跨越多个分支 返回地址预测器 用于预测间接转移 动态转移地址 用一个堆栈记录返回地址

137 分支目标缓存 目标缓存 分支目标地址 预测PC 分支指令地址标记 预测状态位 预测状态的编码

138 5.4.4 多重指令启动 目标 方法 在一个时钟周期内能够启动多条指令 动态多重指令启动 静态多重指令启动 超标量 超流水
超长指令字VLIW EPIC

139 多重指令启动

140 超标量处理器结构 Tomasulo动态调度方法的推广

141 超标量处理器结构的例子

142 超标量的退偶结构 例:假设可同时启动一条浮点指令和一条整型指令,假设忽略转移延迟

143 时空图表示

144 例5-26 按序启动按序完成的超标量指令流水线中,分为译码、执行和写回三个阶段。有相关专用通道。假定有6条指令(I1, I2, I3, I4, I5, I6),其中 I1需要2个执行周期; I3和I4使用相同的功能部件; I5取决于I4产生的结果; I5和I6使用相同的功能部件。

145

146 超长指令字 特点 典型应用 指令中包含多个部件的操作字段 操作槽位slot 编译在每个槽位中安排一个功能部件的操作
固定数量 操作槽位slot 编译在每个槽位中安排一个功能部件的操作 静态调度 槽位中不能安排操作时用NOP 典型应用 DSP 根据典型循环中的指令配置功能部件和指令格式 单指令循环体

147 超长指令字 …… …… Issue logic Function Unit Instruction Buffer Function Unit

148 超长指令字的例子

149 VLIW计算机的特点 单一控制流 指令被划分成许多字段 大量的功能部件 程序中固有的指令级并行性的限制 硬件实现的复杂性
机器中只有一个程序计数器 每个时钟周期启动一条VLIW指令 指令被划分成许多字段 每段控制一个特定的功能部件 大量的功能部件 编译器考虑数据相关和资源冲突 控制硬件比较简单 程序中固有的指令级并行性的限制 硬件实现的复杂性 要求存储器带宽的配合 技术上的和逻辑上的问题 空闲的功能部件和无用的代码字段 二进制代码的兼容性

150 EPIC Explicit Parallelism Instruction Computer 指令束bundle 指令组group 模板
包含3条41位的指令和5位模板 固定格式以便于指令译码 指令组group 可并行执行的指令构成 包含的指令数量不限 模板 指定指令的执行单元类型 指定指令组的边界 Instruction slot 2 Instruction slot 1 Instruction slot 0 template

151 推测执行 指令的推测执行 指令提交 重排序缓存ROB 精确的中断 动态分支预测以选择执行的指令
推测的指令执行状态以允许指令的执行在控制相关解决之前进行 动态调度以处理不同基本块组合的调度 指令提交 重排序缓存ROB 一个循环队列 指令启动时入队 代替写缓存 精确的中断

152 不同启动方式和提交方式的比较 执行和写回方式 有序执行 操作数的读取 有序执行有序写回 无序执行有序写回 无序执行无序写回 有序地启动指令
有序地完成执行 操作数的读取 从指令译码时开始 持续到执行前 读到为止

153 例5-12 指令的执行分为取指IF、译码ID、执行EX和写回WB四个阶段,乘法器是一个六级流水部件,加法器是一个两级流水部件,运算功能部件的输出可通过结果总线直接送入所有运算功能部件的输入端。对于以下指令序列: mult r3, r1, r4 /* s1 */ add r4, r1, r5 /* s2 */ mult r6, r4, r8 /* s3 */ 画出以下情况下指令执行的时空图并指出所需的执行时间: (1) 无序执行无序写回 (2) 有序执行有序写回 (3) 无序执行有序提交,即采用推测执行方式

154 答: (1) 指令执行的时空图: 共需12周期

155 答: (2) 指令执行的时空图: 共需16周期

156 答: (3) 指令执行的时空图: 共需12周期 习题:

157 多线程处理器 进程 线程 资源占有的单位 运算的单位 进程中的一个对象 main() 状态 … Code segment
包含指令计数器PC的值 用户态的堆栈和系统态的堆栈。 寄存器 存储区域 Stack thread main() thread Code segment Data segment

158 多线程处理器分类 串行多线程系统结构 并行多线程系统结构PMA 处理器在多个线程之间来回切换 难以充分利用处理器资源
时间片多线程(time-slice multithreading) 事件切换多线程(switch-on-event multithreading) 难以充分利用处理器资源 并行多线程系统结构PMA parallel multithreaded architecture 多个线程的指令同时执行,构成多个逻辑处理器

159 串行多线程系统结构 线程轮流执行 线程停顿时进行切换 访存、同步操作、I/O 线程1 执行 停顿 执行 线程2 停顿 执行 停顿 线程3

160 PMA结构 同时启动来自不同线程的指令 同时从多个线程中取出多条指令 同时进行指令译码和调度 同时在执行部件中执行

161 PMA的特点 充分利用处理器的计算资源 加快进程和线程切换的速度 访存局部性受到影响 指令预取准确性下降 PMA不用中断方式切换进程和线程
采用分离的数据cache 指令预取准确性下降 采用分离的指令cache和预取

162 PMA结构

163 5.5 CPU的历史与发展 5.5.1 Intel微处理器系列 P6 Microarchitecture
NetBurst Microarchitecture NetBurst with Hyperthreading Core Microarchitecture Core Duo

164 P6 Microarchitecture 微操作 寄存器更名 重排序缓存 14级指令流水线 uop的队列使前端与无序执行流水线之间退耦
保持了芯片的兼容性 寄存器更名 将IA-32寄存器映像为内部寄存器动态执行技术 分支预测 推测执行和数据流分析 重排序缓存 构成一个较大的指令窗口 称为指令库 14级指令流水线

165 P6 Microarchitecture

166 P6 based CPU Pentium Pro Pentium II Pentium II Xeon Pentium II Celeron
With MMX technology 256KB/512KB/1MB L2 cache Pentium II Xeon 2MB L2 full clock speed cache Pentium II Celeron 128KB L2 cache Pentium III Stream SIMD Extensions Pentium III Xeon

167 NetBurst Microarchitecture
Dynamic execution 3 instructions per cycle Max 31 Stage Pipeline Hyper-pipeline with superscalar issue Data flow analysis with enhanced branch prediction Speculated deep out-of-order execution Trace Cache for mOPs SSE2 Stream SIMD Enhancement Floating point data packaging and processing 128 bit operation in two clock cycles Support for Hyper-Threading Technology

168 NetBurst Microarchitecture

169 NetBurst Based CPU The Intel Pentium 4 Processor Intel Xeon Processor
Stream SIMD Extension 2 (SSE2) Support Hyper-Threading technology Intel Xeon Processor For use in server and high-performance workstations Intel Pentium M Processor High performance, Low power core Intel Pentium D Dual-Core Speed-step technology Intel Core Duo/Solo (YoNah) Dual Pentium M Core with smart shared cache

170 Intel超线程技术 Issue slots cycles

171 Intel超线程技术 在单个处理器上同时执行多线程而不需要切换的技术 每个逻辑处理器有一套状态
处理器的状态包括通用寄存器、控制寄存器、先进的可编程中断控制器(APIC)寄存器和一些及其状态寄存器 L1 cache(TC)中存储解码的指令(uop) 两个逻辑处理器在每个周期都对TC的访问进行裁决 分离的uop的队列 无序执行引擎包括分配、寄存器更名、调度和执行功能 分离的重排序缓存 回退逻辑轮流为两个逻辑处理器进行回退操作 HALT指令将处理器从MT模式转换到ST1或ST1模式

172 Core Microarchitecture
Wide dynamic execution 4 instructions per cycle 14 stage pipelining Data flow analysis Speculated out-of-order execution Intelligent power capability Enhanced Speed-step 4MB on-chip cache Advanced Smart Cache Smart Memory Access With read/write scheduling and buffering SSE3 128 bit operation in one clock cycle Advanced Digital Media Boost

173 Core Microarchitecture
128 Entry ITLB 32KB I-cache Shared Bus Interface Unit Instruction Fetch Unit X86 Instruction Pre-decode Fetch buffer Complex decoder Complex decoder Complex decoder Complex decoder 4 MB shared cache Complex decoder 4 mops 1 mops 1 mops 1 mops 7-Entry mop buffer 4 mops Register Alias Table and Allocator 4 mops 4 mops 96-Entry Reorder Buffer (ROB) Retirement Register File 4 mops 32-Entry Reservation Station ALU . 128 Bit SSE ALU Shift 128 Bit SSE ALU Shift 128 Bit SSE Store Data Store Addr Load Addr Memory reorder buffer (MOB) 128 Bit FADD 128 Bit FMUL 256 128 32KB dual ported D-cache 256 Entry DTLB

174 Core Based CPU Core 2 Duo Core 2 Quad

175 5.5.2 PowerPC处理器 603e: 整数单元(IU) 访存单元(LSU) 系统寄存器单元(SRU) 写回单元 指令单元
指令和数据cache 存储管理部件MMU。

176 5.5.3 Alpha处理器 行预测和组预测: 10位分支历史模式,据此选择1024个预测状态机中的一个
每个周期最多可启动6条指令:4条整型指令和2条浮点指令。 寄存器组分成两部分: 各包含80个寄存器,相互重复。

177 5.5.4 MIPS R4000的超流水线结构 超流水 IF——取指的前半部分,选择PC的值输出,启动读指令cache的操作。
IS——取指的后半部分,完成指令cache的访问。 RF——指令译码和读取寄存器,检查险象以及cache的命中。 EX——执行,包括计算有效地址、ALU操作和分支目标计算和条件求值。 DF——读取数据,访问数据cache的第一部分。 DS——访问数据cache的第二部分,完成数据cache的读取。 TC——检查标志,确定数据cache的访问是否命中。 WB——写回,用于load和寄存器到寄存器的操作。


Download ppt "第五章 控制单元."

Similar presentations


Ads by Google