advertisement

200753051013737

67 %
33 %
advertisement
Information about 200753051013737
Entertainment

Published on December 28, 2007

Author: Talya

Source: authorstream.com

advertisement

第五章 控制单元:  第五章 控制单元 5.1 基本概念:  5.1 基本概念 CPU的基本功能 指令控制 操作控制 数据运算 异常和中断处理 CPU的扩展功能 存储管理 数据缓存 总线管理 功耗管理 5.1 基本概念:  5.1 基本概念 CPU的基本构成 控制器,运算器,寄存器,[cache], [MMU], [外设接口] 寄存器的类型 指令寄存器(IR) 程序计数器(PC) 数据寄存器(DR) 地址寄存器(AR) 状态寄存器(SR) 数据通路 数据总线(单总线,双总线,多总线) 专用通路(如MIPS) Slide4:  总线结构的CPU 控制信号: IRin: IR的输入控制 IRout: IR的输出控制 PCin: PC的输入控制 PCout: PC的输出控制 PC+1: PC计数更新控制 R0out:R1的输出控制 R0in: R1的输入控制 … Yin: Y的输入控制 Zin: Z的输入控制 Zout: Z的输出控制 ADD: ALU加法操作控制 Slide5:  专用通路结构的CPU Slide6:  专用通路结构的CPU 控制信号: MemRead 存储器读 MemWrite 存储器写 ALUOp 运算操作码 ALUSrc ALU数据选择 PCWrite PC写 PCSource PC输入选择 RegWrite 数据寄存器写 MemtoReg写数据选择 RegDst 写寄存器选择 Irwrite 指令寄存器 Jump 选择转移地址 5.2 指令的执行过程:  5.2 指令的执行过程 5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (1) 取指令。 IR = Memory[PC] NPC = PC + 4 Slide8:  专用通路结构:如add $1, $2, $3 (2) 指令译码及读取操作数。 A = R[IR[25:21]] B = R[IR[20:16]] PC = NPC 5.2.1 运算指令周期 Slide9:  5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (3) 执行。 ALUoutput = A + B Slide10:  5.2.1 运算指令周期 专用通路结构:如add $1, $2, $3 (4) 写回。 R[IR[15:11]] = ALUoutput Slide11:  5.2.1 运算指令周期 单总线结构: 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC PC MAR Slide12:  5.2.1 运算指令周期 单总线结构: 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR MDR IR 指令译码器 Slide13:  5.2.1 运算指令周期 单总线结构: 如ADD R3, R1, R2 (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) R1→Y R1 Y Slide14:  5.2.1 运算指令周期 单总线结构: 如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 Slide15:  5.2.1 运算指令周期 单总线结构: 如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 5.2.2 访存指令周期 :  5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (1) 取指令。 IR = Memory[PC] NPC = PC+4 Slide17:  5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (2) 指令译码。 A = R[IR[25:21]] C = Sign-extend(IR[15:0]) PC = NPC Slide18:  5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (3) 计算地址。 ALUoutput = A + C Slide19:  5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (4) 访存。 Memory-data = Memory[ALUoutput] Slide20:  5.2.2 访存指令周期 专用通路结构 读操作:如lw $1, off($2) (5) 写回。 R[IR[20:16]] = Memory-data Slide21:  5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (1) 取指。 IR = Memory[PC] NPC = PC + 4 Slide22:  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]) Slide23:  5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (3) 计算地址 ALUoutput = A + C Slide24:  5.2.2 访存指令周期 专用通路结构 写操作:如sw $1,offs($2) (4) 访存 Memory[ALUoutput] = B Slide25:  5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC Slide26:  5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR Slide27:  5.2.2 访存指令周期 单总线结构: 读操作:如LOAD R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR,读存储器 Slide28:  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 Slide29:  5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC Slide30:  5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR Slide31:  5.2.2 访存指令周期 单总线结构: 写操作:如STORE R1,mem (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) IR(地址段)→MAR Slide32:  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,写存储器 5.2.3 控制指令周期:  5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (1) 取指 IR = Memory[PC] NPC = PC+4 Slide34:  5.2.3 控制指令周期 专用通路结构 如无条件转移指令操作: J Target (2)译码并执行 PC = (IR[25:0] << 2) | NPC[31:28] Slide35:  5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC Slide36:  5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR Slide37:  5.2.3 控制指令周期 单总线结构:如JMP offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR (5) PC→Y Slide38:  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 Slide39:  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 Slide40:  5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (1) 取指 IR = Memory[PC] NPC = PC + 4 Slide41:  5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (2) 译码 A = R[IR[25:21]] B = R[IR[20:16]] C = Sign-extend(IR[15:0]) Slide42:  5.2.3 控制指令周期 专用通路结构:如beq $1,$2,offs (3) 执行 if(A == B) PC = NPC + (C << 2) Else PC = NPC Slide43:  5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC Slide44:  5.2.3 控制指令周期 单总线结构:BNE offs (1) PC→MAR (2) PC+1→PC (3) DBUS→MDR (4) MDR→IR Slide45:  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 Slide46:  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 Slide47:  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 问题:  问题 单总线结构的计算机中,如果指令的长度是2个字,那么这条指令的读取过程是什么? 单总线结构的计算机中,如果指令的一个操作数是寄存器间接寻址,那么这个操作数的读取过程是什么? 习题:  习题 5.4 5.5 5.3 控制器的基本结构:  5.3 控制器的基本结构 5.3.1 硬连线控制器 5.3.2 微程序控制器 5.3.3 阵列逻辑控制器 5.3.1 硬连线控制器 :  5.3.1 硬连线控制器 1. 指令周期流程图 例5-10 在单总线的CPU结构中,如果加法指令中的第一个地址码有寄存器寻址和寄存器间接寻址两种寻址方式,并在指令中用代码表示指令的寻址方式,即该指令可实现如下功能: (1) ADD R1,R2 ; (2) ADD (R1),R2 ; 试画出执行这条指令的流程图。 :  例5-10 在单总线的CPU结构中,如果加法指令中的第一个地址码有寄存器寻址和寄存器间接寻址两种寻址方式,并在指令中用代码表示指令的寻址方式,即该指令可实现如下功能: (1) ADD R1,R2 ; (2) ADD (R1),R2 ; 试画出执行这条指令的流程图。 Slide53:  例5-11 对于单总线CPU结构,设计一个可实现下列指令操作的硬连线控制器,试画出控制器流程图。 ADD R3,R1,R2 LOAD mem,R1 STORE mem,R1 JMP #A Slide54:  控制信号:如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 硬连线控制器框图:  硬连线控制器框图 环形脉冲发生器 :  环形脉冲发生器 硬连线控制器电路:  硬连线控制器电路 Slide58:  条件码如算术运算的异常、内部中断等。 编码器电路的一般逻辑表达形式是: Ci = T1*(INS1 + INS2 + …) + T2*(INS1 + INS2 + …) + … i=1, 2, 3, … 硬连线控制器 Slide59:  例:某计算机中包含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 T2: MDRout, IRin ;MDRIR T3: PCout, Yin ;PCY T4: IRout, Add, Zin ;IR+YZ T5: Zout, PCin ;ZPC Slide60:  解:控制器的逻辑表达式如下 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) ... Slide61:  指令周期的确定 固定时钟信号环形脉冲发生器: ——指令执行的时钟数固定。 可变长度时钟信号环形脉冲发生器: ——指令执行的时钟数不固定。 实现方法:用END信号,如 END = T5*ADD + T3*CLA + 硬连线控制器电路:  硬连线控制器电路 硬连线控制电路的设计 :  硬连线控制电路的设计 (1) 画出控制器逻辑流程图 根据指令功能确定每一条指令所需的机器周期以及每一周期所完成的操作 (2) 列出各指令的各操作过程所需的控制信号 (3) 写出每个控制信号的逻辑表达式 (4) 画出控制器逻辑框图 习题: 5.9 5.3.2 微程序控制器 :  5.3.2 微程序控制器 1. 微程序和微指令 基本概念:控制字,微指令,微程序,微操作,控制存储器,微地址 微程序控制方法:把指令执行所需要的所有控制信号存放在控制存储器中,需要时从这个存储器中读取。 微指令的构成:操作控制部分,顺序控制部分 微程序控制的特点:灵活性好,速度慢 2. 微程序控制器原理:  2. 微程序控制器原理 3. 微指令编码 :  3. 微指令编码 1. 微指令编码 控制字编码 相容性和相斥性 (1) 直接表示法 (2) 编码表示法 (3) 混合表示法 4. 微地址的形成方法 :  4. 微地址的形成方法 计数器方式 增量方式 用mPC Slide68:  4. 微地址的形成方法 (2) 断定方式 Slide69:  4. 微地址的形成方法 (3) 结合方式 例5-13 对于例5-11中的指令,试设计一个采用若干片8位ROM芯片的水平型直接编码的微程序控制器。要求画出微程序控制器的结构图。假定微地址的生成采用增量与断定结合的方式。:  例5-13 对于例5-11中的指令,试设计一个采用若干片8位ROM芯片的水平型直接编码的微程序控制器。要求画出微程序控制器的结构图。假定微地址的生成采用增量与断定结合的方式。 微指令的控制字为18位 一共有12条微指令 微地址(BAF字段)为4位 微指令的字长为18+4+1=23位 多路分支的实现:  多路分支的实现 用多个二叉分支实现 用微地址编码器 根据不同的分支条件生成不同的分叉地址 直接用分支条件构成分叉地址 使得微指令中不同的分支微地址中有若干位与条件代码相同,其余位都一样 可免去微地址编码电路 Slide72:  多路分支的实现 例. 试为各微指令分配适当的地址,并给出每条微指令的转移地址字段(即下址字段)BAF和实现“位选择”功能的转移控制字段BCF。 Slide73:  B的两个后继状态C和E的微地址只有1位不同,这一位可以根据转移条件IR3来设置。 多路分支的实现 Slide74:  微指令的BCF中用最低位表示是否选择IR3的值与BAF字段的其他位一起构成微地址。 多路分支的实现 Slide75:  微地址形成的原理 多路分支的实现 问题:  问题 如果微程序流程中有一个四路分支,如何生成四个微地址? 如果微程序流程中有两个多路分支,如何生成微地址? 5. 微指令格式分类 :  毫微程序 5. 微指令格式分类 (1) 水平型 并行操作能力强,灵活性强;执行指令的时间较短;微指令比较长,但微程序比较短;硬件密切相关,微程序设计比较困难。 (2) 垂直型 每条微指令只表示一个微操作;需要对微操作码和部件号译码;微指令短,微程序长。 可以用助记符表示,例: MOV MDR MAR 指令模拟 仿真 虚拟机 Slide78:  微程序控制器的设计步骤 画出控制器逻辑流程图 列出各指令的各操作过程所需的控制信号 定义微指令中控制字的格式 写出每条微指令的控制字 安排微指令的存储地址 确定每条微指令的顺序控制字段(BCF、BAF) 确定微指令多路分支方式 画出控制器逻辑框图 习题: 5.10 5.13 5.3.3 阵列逻辑控制器:  5.3.3 阵列逻辑控制器 基本设计方法 画出控制电路对每条指令进行控制的状态转换图 指出每个状态下的控制信号 通过可编程逻辑器件来实现控制器电路 Slide80:  例:专用通路结构的指令流程 第一级:取指 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) Slide81:  例:专用通路结构的指令流程 Slide82:  例:专用通路结构的指令流程 各个控制状态下的控制信号: 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; 异常事件的处理 :  异常事件的处理 异常事件的检测 向处理异常事件的程序的转移机制 保存产生异常原因的信息 对异常的处理 操作系统 异常事件的处理:  异常事件的处理 S10: EPCwrite=1;CauseWrite=1;PCWrite=1; 5.4 指令流水技术:  5.4 指令流水技术 流水工作方式:将一个计算任务细分成若干个子任务,每个子任务由专门的部件处理,多个计算任务依次进行并行处理。 流水周期 Slide86:  退耦流水线 流水线的性能:  流水线的性能 吞吐率 单位时间内流水线能处理的任务数量 最大吞吐率与实际吞吐率 加速比 流水方式的工作速度与等效的顺序工作方式时间的比值 时空图:  时空图 基本指令流水线:  基本指令流水线 流水方式与非流水方式的比较:  流水方式与非流水方式的比较 例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 答::  答: 在非流水的情况下,每个步骤所需的时间: 在流水的情况下,流水周期定为2ns,指令执行时间为10ns。 指令流水线的时空图:  指令流水线的时空图 指令的流水执行的要求:  指令的流水执行的要求 1. 指令长度应当尽量相同 2. 指令格式应当简单 3. 限制访存操作 4. 尽量使操作数在存储器中对齐存储 指令流水线的相关性:  指令流水线的相关性 1. 资源相关(结构相关) 流水执行的多条指令同时使用同一个部件 2. 数据相关 流水执行的多条指令访问相同的数据 RAW、WAR、WAW 3. 控制相关。 转移指令引起的相关 险象 hazard 真相关 反相关 输出相关 名字相关 指令流水线的数据相关:  指令流水线的数据相关 消除数据相关影响的方法:  消除数据相关影响的方法 停顿 编译检测 相关专用通路 解决数据相关性的方法 ——流水线的停顿:  解决数据相关性的方法 ——流水线的停顿 消除数据相关性影响方法 ——编译的方法:  消除数据相关性影响方法 ——编译的方法 解决数据相关性的方法 ——相关专用通道:  解决数据相关性的方法 ——相关专用通道 IF Id Ex M W Data forwarding 解决数据相关性的方法 ——相关专用通道:  解决数据相关性的方法 ——相关专用通道 当指令只需要一个执行周期时RAW相关可以不影响流水 可以将load指令看成需要2个执行周期 2. 指令流水线的控制相关:  2. 指令流水线的控制相关 转移延迟槽 改进转移指令执行性能的方式 ——将转移指令的执行在流水线中提前进行:  改进转移指令执行性能的方式 ——将转移指令的执行在流水线中提前进行 指令流水线的问题:指令流水线的中断 问题:程序逻辑性的破坏 3. 指令流水线的资源相关:  3. 指令流水线的资源相关 Addd: 双精度加法指令 F2: 浮点数寄存器 典型指令流水线的特点:  典型指令流水线的特点 流水线分为IF、ID、EX、MEM、WB五个等长的时间阶段 转移指令在第二个阶段被识别 从而可确定如何取下一条指令 没有相关专用通路 一个时钟周期内只能启动执行一条指令 一个时钟周期内只能写回一条指令 读操作数从指令译码时开始 读到为止 习题:5.16 5.4.2 指令的调度:  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 相关性? 执行时的情况:  执行时的情况 假定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 “执行” 的含义 时空图? 指令调度后的执行情况:  指令调度后的执行情况 loop: LD F0, 0(R1) stall ADDD F4,F0,F2 SUBI R1,R1,8 BNEZ R1,loop SD 8(R1),F4 执行时间:6个时钟周期。 时空图? 指令级并行性的局限性:  指令级并行性的局限性 基本块太小 限制了指令调度的范围 循环级并行性 循环迭代之间的并行性 开发循环级并行性的方法 循环展开 指令调度 基本块 循环展开 ——将原来几个循环迭代的指令代码合并成一个循环迭代 :  循环展开 ——将原来几个循环迭代的指令代码合并成一个循环迭代 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 -16(R1),F12 1 LD F14,-24(R1) 2 ADDD F16,F14,F2 3 SD -24(R1),F16 1 SUBI R1,R1,#32 1 BNEZ R1,loop 2 未调度时,执行时间为27个周期,平均每个迭代6.8个周期。 调度后:  调度后 loop: LD F0, 0(R1) LD F6,-8(R1) LD F10,-16(R1) LD F14,-24(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 -16(R1),F12 SUBI R1,R1,#32 BNEZ R1,loop SD 8(R1),F16 执行时间为14个周期,平均每个迭代3.5个周期。 循环展开的方法:  循环展开的方法 检查循环迭代之间是否相关 不相关时才进行循环展开 确定指令的移动是合法的 保证指令移动后程序的正确性,并调整指令的偏移量 使用不同的寄存器 避免因采用相同寄存器而产生的不必要的相关性 消除多余的循环计数和条件转移 分析访存指令 确定它们不对相同地址的存储单元进行访问 调度指令代码 保持原始代码中产生相同结果所必须的相关性 指令间的相关性:  指令间的相关性 数据相关 真相关 RAW 具有传递性 名字相关 反相关(WAR) 输出相关(WAW) 控制相关 决定了转移指令与其它指令之间的执行顺序 指令i 指令k 指令j 解决名字相关的方法:  解决名字相关的方法 寄存器更名 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 -16(R1),F12 LD F14,-24(R1) ADDD F16,F14,F2 SD -24(R1),F16 SUBI R1,R1,#32 BNEZ R1,loop 2. 动态指令调度:  2. 动态指令调度 动态调度 用硬件调度 基本思想 无序执行 打破指令执行的顺序限制 有序指令启动的问题 DIVD F0,F2,F4 ADDD F10,F0,F8 SUBD F12,F8,F14 第三条指令不能提前启动 退偶结构——简单的无序执行:  退偶结构——简单的无序执行 例:采用专用的load部件和store部件,使得访存操作可以不受运算操作的影响。 退耦结构指令流水线的特点:  退耦结构指令流水线的特点 简单的无序执行机制 指令预取 功能部件之间可无序执行 功能部件之内有序执行 可以提高程序执行速度 无序指令启动的方法 :  无序指令启动的方法 记分牌方法 构成 (1) 指令状态表 (2) 功能部件状态表 (3) 寄存器结果状态表 四个执行阶段 启动 读操作数 执行 写结果 记分牌方法 启动规则 无结构冲突 没有WAW相关 读操作数规则 操作数具备 消除RAW相关 写结果规则 前面指令已读取操作数或者无数据相关 消除WAR相关 Tomasulo调度法:  Tomasulo调度法 特点 寄存器更名 消除名字相关 分布式保存站 并行调度消除调度瓶颈 写回控制 写写相关时最后一条指令写入 命令队列 使取指令与启动执行退耦 Tomasulo调度法:  Tomasulo调度法 LD F6,34(R2) LD F6,34(R2) 1 0001 LD F2,45(R3) 1 0010 LD F2, 45(R3) MULTD F0, F2, F4 M 0010 F4 SUBD F8, F6, F2 S 001 0010 1 1100 Slide120:  Tomasulo调度法 Tomasulo调度法执行步骤:  Tomasulo调度法执行步骤 发送 如果浮点运算部件中有一个空的保存站就发送该指令到保存站中。 如果操作数在寄存器中就将它们送到保存站。 如果没有空的保存站或缓存部件,则指令暂等。 执行 保存站中的指令在具备所需的操作数时就进入执行部件。 写结果 当结果形成时,通过CDB总线写到寄存器与等待此结果的所有保存站。 Slide122:  问题一 Tomasulo法如何实现寄存器更名? Slide123:  问题二 Tomasulo法如何进行写回控制? 例 add $1, $2, $3 sub $4, $1, $5 lw $1, 0($6) Tomasulo法的优缺点:  Tomasulo法的优缺点 优点: 分散了险象检测逻辑 消除了因WAW与WAR险象引起的暂停。 性能高 缺点 硬件量大 CDB单总线结构限制了性能 习题: 5.17 5.18 补充例题:  补充例题 指出下列指令序列中的数据相关性。对于5级指令流水线,允许不相关指令提前执行,指出这些指令的执行顺序: Load R1,100(R0) Add R1,R1,R0 Loadi R2, 1 Store R1,100(R0) Store R2,200(R0) Add R3,R3,R4 答:  答 指令1与指令2间存在关于R1的RAW和WAW相关 指令2与指令4间存在关于R1的RAW相关 指令3与指令5间存在关于R2的RAW相关 5.3 分支预测:  5.3 分支预测 静态 永远不转移 永远转移 后向转移 动态 1位 2位 多位(1级,2级) 1位动态——根据上次转移情况预测下次情况:  1位动态——根据上次转移情况预测下次情况 2位动态——根据上两次转移情况预测下次:  2位动态——根据上两次转移情况预测下次 预测状态机 00: strongly not taken 01: weakly not taken 10: weakly taken 11: strongly taken 2级预测:根据多次转移情况选择预测状态 (1,1)预测器:  2级预测:根据多次转移情况选择预测状态 (1,1)预测器 (2,2)预测器:  (2,2)预测器 (4,2)预测器:  (4,2)预测器 全局预测与局部预测:  全局预测与局部预测 分支的历史 全局分支历史Global branch history 所有转移指令的历史 局部分支历史Local branch history 每一条转移指令的历史 全局预测器The global Predictor Indexed only by history 局部预测器The local predictor Indexed by address and history 竞争预测器:  竞争预测器 竞争预测器Tournament Predictors 使用多个预测器 全局预测器与局部预测器 加上一个预测器的预测器 对不同的分支选择不同的预测器 通常选择全局或者局部预测器 采用2位饱和计数器 预测准确时加1 Global Preditor Local Preditor Preditor 转移指令的转移模式:  转移指令的转移模式 例: for(i=1; i<=4; i++) {} 转移的执行模式是(1110)n 预测值 快速指令预取:  快速指令预取 分支目标缓存 Stores the predicted PC after a branch 快速形成分支目标地址 分支指令缓存 Stores one or more target instructions 快速形成分支目标指令 速度更快 可跨越多个分支 返回地址预测器 用于预测间接转移 动态转移地址 用一个堆栈记录返回地址 分支目标缓存:  分支目标缓存 目标缓存 分支目标地址 预测PC 分支指令地址标记 预测状态位 预测状态的编码 5.4.4 多重指令启动:  5.4.4 多重指令启动 目标 在一个时钟周期内能够启动多条指令 方法 动态多重指令启动 超标量 超流水 静态多重指令启动 超长指令字VLIW EPIC 多重指令启动:  多重指令启动 超标量处理器结构:  超标量处理器结构 Tomasulo动态调度方法的推广 超标量处理器结构的例子:  超标量处理器结构的例子 超标量的退偶结构:  超标量的退偶结构 例:假设可同时启动一条浮点指令和一条整型指令,假设忽略转移延迟 时空图表示:  时空图表示 例5-26:  例5-26 按序启动按序完成的超标量指令流水线中,分为译码、执行和写回三个阶段。有相关专用通道。假定有6条指令(I1, I2, I3, I4, I5, I6),其中 I1需要2个执行周期; I3和I4使用相同的功能部件; I5取决于I4产生的结果; I5和I6使用相同的功能部件。 解:  解 超长指令字:  超长指令字 特点 指令中包含多个部件的操作字段 固定数量 操作槽位slot 编译在每个槽位中安排一个功能部件的操作 静态调度 槽位中不能安排操作时用NOP 典型应用 DSP 根据典型循环中的指令配置功能部件和指令格式 单指令循环体 超长指令字:  超长指令字 Instruction Buffer Issue logic Issue logic Issue logic Issue logic Function Unit Function Unit Function Unit Function Unit …… …… 超长指令字的例子:  超长指令字的例子 VLIW计算机的特点:  VLIW计算机的特点 单一控制流 机器中只有一个程序计数器 每个时钟周期启动一条VLIW指令 指令被划分成许多字段 每段控制一个特定的功能部件 大量的功能部件 编译器考虑数据相关和资源冲突 控制硬件比较简单 程序中固有的指令级并行性的限制 硬件实现的复杂性 要求存储器带宽的配合 技术上的和逻辑上的问题 空闲的功能部件和无用的代码字段 二进制代码的兼容性 EPIC:  EPIC Explicit Parallelism Instruction Computer 指令束bundle 包含3条41位的指令和5位模板 固定格式以便于指令译码 指令组group 可并行执行的指令构成 包含的指令数量不限 模板 指定指令的执行单元类型 指定指令组的边界 Instruction slot 2 Instruction slot 1 Instruction slot 0 template 推测执行:  推测执行 指令的推测执行 动态分支预测以选择执行的指令 推测的指令执行状态以允许指令的执行在控制相关解决之前进行 动态调度以处理不同基本块组合的调度 指令提交 重排序缓存ROB 一个循环队列 指令启动时入队 代替写缓存 精确的中断 不同启动方式和提交方式的比较 :  不同启动方式和提交方式的比较 执行和写回方式 有序执行有序写回 无序执行有序写回 无序执行无序写回 有序执行 有序地启动指令 有序地完成执行 操作数的读取 从指令译码时开始 持续到执行前 读到为止 例5-12:  例5-12 指令的执行分为取指IF、译码ID、执行EX和写回WB四个阶段,乘法器是一个六级流水部件,加法器是一个两级流水部件,运算功能部件的输出可通过结果总线直接送入所有运算功能部件的输入端。对于以下指令序列: mult r3, r1, r4 /* s1 */ add r4, r1, r5 /* s2 */ mult r6, r4, r8 /* s3 */ 画出以下情况下指令执行的时空图并指出所需的执行时间: (1) 无序执行无序写回 (2) 有序执行有序写回 (3) 无序执行有序提交,即采用推测执行方式 答::  答: (1) 指令执行的时空图: 共需12周期 答::  答: (2) 指令执行的时空图: 共需16周期 答::  答: (3) 指令执行的时空图: 共需12周期 习题: 5.20 5.21 5.23 多线程处理器 :  多线程处理器 进程 资源占有的单位 运算的单位 线程 进程中的一个对象 状态 包含指令计数器PC的值 用户态的堆栈和系统态的堆栈。 寄存器 存储区域 thread main() 多线程处理器分类:  多线程处理器分类 串行多线程系统结构 处理器在多个线程之间来回切换 时间片多线程(time-slice multithreading) 事件切换多线程(switch-on-event multithreading) 难以充分利用处理器资源 并行多线程系统结构PMA parallel multithreaded architecture 多个线程的指令同时执行,构成多个逻辑处理器 串行多线程系统结构:  串行多线程系统结构 线程轮流执行 线程停顿时进行切换 访存、同步操作、I/O 线程1 线程2 线程3 执行 执行 执行 执行 停顿 停顿 停顿 停顿 停顿 PMA结构 :  PMA结构 同时启动来自不同线程的指令 同时从多个线程中取出多条指令 同时进行指令译码和调度 同时在执行部件中执行 PMA的特点:  PMA的特点 充分利用处理器的计算资源 加快进程和线程切换的速度 PMA不用中断方式切换进程和线程 访存局部性受到影响 采用分离的数据cache 指令预取准确性下降 采用分离的指令cache和预取 Slide162:  PMA结构 5.5 CPU的历史与发展:  5.5 CPU的历史与发展 5.5.1 Intel微处理器系列 P6 Microarchitecture NetBurst Microarchitecture NetBurst with Hyperthreading Core Microarchitecture Core Duo P6 Microarchitecture:  P6 Microarchitecture 微操作 uop的队列使前端与无序执行流水线之间退耦 保持了芯片的兼容性 寄存器更名 将IA-32寄存器映像为内部寄存器动态执行技术 分支预测 推测执行和数据流分析 重排序缓存 构成一个较大的指令窗口 称为指令库 14级指令流水线 P6 Microarchitecture:  P6 Microarchitecture P6 based CPU:  P6 based CPU Pentium Pro Pentium II 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 NetBurst Microarchitecture:  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 NetBurst Microarchitecture:  NetBurst Microarchitecture NetBurst Based CPU:  NetBurst Based CPU The Intel Pentium 4 Processor Stream SIMD Extension 2 (SSE2) Support Hyper-Threading technology Intel Xeon Processor Stream SIMD Extension 2 (SSE2) Support Hyper-Threading technology For use in server and high-performance workstations Intel Pentium M Processor Stream SIMD Extension 2 (SSE2) High performance, Low power core Intel Pentium D Stream SIMD Extension 2 (SSE2) Dual-Core Speed-step technology Intel Core Duo/Solo (YoNah) Dual Pentium M Core with smart shared cache Intel超线程技术:  Intel超线程技术 cycles Issue slots Slide171:  Intel超线程技术 在单个处理器上同时执行多线程而不需要切换的技术 每个逻辑处理器有一套状态 处理器的状态包括通用寄存器、控制寄存器、先进的可编程中断控制器(APIC)寄存器和一些及其状态寄存器 L1 cache(TC)中存储解码的指令(uop) 两个逻辑处理器在每个周期都对TC的访问进行裁决 分离的uop的队列 无序执行引擎包括分配、寄存器更名、调度和执行功能 分离的重排序缓存 回退逻辑轮流为两个逻辑处理器进行回退操作 HALT指令将处理器从MT模式转换到ST1或ST1模式 Core Microarchitecture:  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 Core Microarchitecture:  Core Microarchitecture 128 Entry ITLB 32KB I-cache Instruction Fetch Unit X86 Instruction Pre-decode Fetch buffer Complex decoder Complex decoder Complex decoder Complex decoder Complex decoder 7-Entry mop buffer 1 mops 4 mops 1 mops 1 mops Register Alias Table and Allocator 96-Entry Reorder Buffer (ROB) 32-Entry Reservation Station ALU . 4 mops 4 mops 4 mops 128 Bit SSE 128 Bit FADD ALU Shift 128 Bit SSE 128 Bit FMUL ALU Shift 128 Bit SSE Store Data Store Addr Load Addr Memory reorder buffer (MOB) 256 Entry DTLB 32KB dual ported D-cache Retirement Register File 4 mops 4 MB shared cache Shared Bus Interface Unit 256 128 Core Based CPU:  Core Based CPU Core 2 Duo Core 2 Quad 5.5.2 PowerPC处理器:  5.5.2 PowerPC处理器 603e: 整数单元(IU) 访存单元(LSU) 系统寄存器单元(SRU) 写回单元 指令单元 指令和数据cache 存储管理部件MMU。 5.5.3 Alpha处理器:  5.5.3 Alpha处理器 行预测和组预测: 10位分支历史模式,据此选择1024个预测状态机中的一个 每个周期最多可启动6条指令:4条整型指令和2条浮点指令。 寄存器组分成两部分: 各包含80个寄存器,相互重复。 5.5.4 MIPS R4000的超流水线结构:  5.5.4 MIPS R4000的超流水线结构 超流水 IF——取指的前半部分,选择PC的值输出,启动读指令cache的操作。 IS——取指的后半部分,完成指令cache的访问。 RF——指令译码和读取寄存器,检查险象以及cache的命中。 EX——执行,包括计算有效地址、ALU操作和分支目标计算和条件求值。 DF——读取数据,访问数据cache的第一部分。 DS——访问数据cache的第二部分,完成数据cache的读取。 TC——检查标志,确定数据cache的访问是否命中。 WB——写回,用于load和寄存器到寄存器的操作。

Add a comment

Related presentations