周期与多周期的比较指令流水线

上传人:tia****nde 文档编号:69638009 上传时间:2019-01-14 格式:PPT 页数:132 大小:3.71MB
返回 下载 相关 举报
周期与多周期的比较指令流水线_第1页
第1页 / 共132页
周期与多周期的比较指令流水线_第2页
第2页 / 共132页
周期与多周期的比较指令流水线_第3页
第3页 / 共132页
周期与多周期的比较指令流水线_第4页
第4页 / 共132页
周期与多周期的比较指令流水线_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《周期与多周期的比较指令流水线》由会员分享,可在线阅读,更多相关《周期与多周期的比较指令流水线(132页珍藏版)》请在金锄头文库上搜索。

1、,第一讲 流水线数据通路和控制逻辑 第二讲 流水线冒险处理 第三讲 高级流水线技术,Ch7: Instruction Pipeline 指令流水线,第一讲 流水线数据通路和控制,日常生活中的流水线处理例子:洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路 以MIPS指令子集来说明 详细设计取指令部件 详细设计执行部件 分析每条指令在流水线中的执行过程,遇到各种问题: 资源冲突 寄存器和存储器的信号竞争 分支指令的延迟 指令间数据相关 如何设计流水线控制逻辑 分析每条指令执行过程中的控制信号 给出控制器设计过程 流水线冒险的概念,主 要 内 容

2、,复习:A Single Cycle Processor,32,ALUctr,Clk,busW,RegWr,32,32,busA,32,busB,5,5,5,Rw,Ra,Rb,32 32-bit Registers,Rs,Rt,Rt,Rd,RegDst,Extender,Mux,Mux,32,16,imm16,ALUSrc,ExtOp,Mux,MemtoReg,Clk,Data In,WrEn,32,Adr,Data Memory,32,MemWr,ALU,Zero,0,1,0,1,0,1,Instruction Fetch Unit,Clk,Instruction,Jump,Branch,I

3、mm16,Rd,Main Control,op,ALU Control,func,ALUop,3,RegDst,ALUSrc,:,Instr,Zero,3,复习:Multiple Cycle Processor,MCP: 一个功能部件在一个指令周期中可以被使用多次。,Ideal Memory,WrAdr,Din,RAdr,32,32,32,Dout,MemWr,32,32,ALUOp,Instruction Reg,32,IRWr,32,Reg File,Ra,Rw,busW,Rb,5,5,32,busA,32,busB,RegWr,Rs,Rt,Rt,Rd,PCWr,ALUSelA,RegDs

4、t,32,PC,MemtoReg,ExtOp,32,0,1,2,3,4,Imm,32,ALUSelB,Mux,1,0,Zero,Zero,PCWrCond,PCSrc,BrWr,32,IorD,复习:Timing Diagram of a Load Instruction,Clk,PC,Rs, Rt, Rd, Op, Func,Clk-to-Q,ALUctr,Instruction Memory Access Time,Old Value,New Value,RegWr,Old Value,New Value,Delay through Control Logic,busA,Register

5、File Access Time,Old Value,New Value,busB,ALU Delay,Old Value,New Value,Old Value,New Value,New Value,Old Value,ExtOp,Old Value,New Value,ALUSrc,Old Value,New Value,Address,Old Value,New Value,busW,Old Value,New,Delay through Extender & Mux,Data Memory Access Time,Instruction Fetch,Instr Decode /,Re

6、g. Fetch,Address,Reg Wr,Data Memory,Register File Write Time,1,3,2,Laundry Example Ann, Brian, Cathy, Dave each have one load of clothes to wash, dry, and fold Washer takes 30 minutes Dryer takes 40 minutes “Folder” takes 20 minutes,Pipelining: Its Natural !,一个日常生活中的例子洗衣服,如果让你来管理洗衣店,你会如何安排?,Sequenti

7、al Laundry(串行方式),串行方式下, 4 批衣服需要花费 6 小时(4x(30+40+20)=360分钟) N批衣服,需花费的时间为Nx(30+40+20) = 90N 如果用流水线方式洗衣服,则花多少时间呢?,30,40,20,30,40,20,30,40,20,30,40,20,6 PM,7,8,9,10,11,Midnight,T a s k O r d e r,Time,Pipelined Laundry: (Start work ASAP),串行方式为6小时,N批则为90N分钟,6 PM,7,8,9,10,11,Midnight,T a s k O r d e r,Time

8、,只需30+4x40+20=210分 (3.5小时) 如果有N批衣服呢? 所花时间为:30+Nx40+20分钟 假定每一步时间均衡,则比串行方式提高约3倍!,流水方式下,所花时间主要与最长阶段时间有关!,复习:Load指令的5个阶段,Ifetch (取指) : 从指令存储器取指令并计算PC+4 (用到哪些部件?) Reg/Dec (取数和译码) : 寄存器取数,同时对指令进行译码 (用到哪些部件?) Exec (执行) : 计算内存单元地址 (用到哪些部件?) Mem (读存储器) : 从数据存储器中读 (用到哪些部件?) Wr(写寄存器): 将数据写到寄存器中 (用到哪些部件?),指令存储器

9、、Adder,寄存器堆读口、指令译码器,扩展器、ALU,数据存储器,寄存器堆写口,这里寄存器堆的读口和写口可看成两个不同的部件。,指令的执行过程是否和“洗衣”过程类似?是否可以采用类似方式来执行指令呢?,单周期指令模型与流水线性能,假定以下每步操作所花时间为: 取指:2ns 寄存器读:1ns ALU操作:2ns 存储器读:2ns 寄存器写:1ns 单周期模型 每条指令在一个时钟周期内完成 时钟周期等于最长的lw指令的执行时间,即:8ns 串行执行时,N条指令的执行时间为:8Nns 流水线性能 时钟周期等于最长阶段所花时间为:2ns 每条指令的执行时间为: 2nsx5=10ns N条指令的执行时

10、间为:(4+N)x2ns 在N很大时,比串行方式提高约 4 倍 若各阶段操作均衡(例如,各阶段都是2ns),则提高倍数为5倍。 非流水线执行时间 / 流水线执行时间 = 流水线步骤数,Load指令执行时间总计为:8ns (假定控制单元、PC访问、信号传递等没有延迟),流水线方式下,单条指令的执行时间不能缩短,但能大大提高指令的吞吐量,流水线指令集的设计,具有什么特征的指令集有利于流水线执行呢? 指令长度尽量一致,有利于简化取指令和指令译码操作 MIPS指令都是32位,每次取四个单元的指令,且下址计算方便: PC+4 X86指令从1字节到17字节不等,使取指部件及其复杂 指令格式少,且源寄存器位

11、置相同,有利于在指令未知时就可取操作数 MIPS指令的Rs和Rt位置一定,在指令译码时就可读Rs和Rt的值 (若位置随指令不同而不同,则需先译码确定指令后才能取寄存器编号) 只有load / Store指令才能访问存储器,有利于减少操作步骤,规整流水线 可以把lw/sw指令的地址计算和运算指令的执行步骤规整在同一个周期 X86运算类指令的操作数可以是内存数据,故需计算地址、访存、执行 数据和指令在内存中要”对齐”存放,有利于减少访存次数和流水线的规整 总之,规整、简单和一致等特性有利于指令的流水线执行,指令的流水线执行方式能大大提高指令的吞吐率,现代计算机都采用流水线方式,Load指令的流水线

12、,Clock,Cycle 1,Cycle 2,Cycle 3,Cycle 4,Cycle 5,Cycle 6,Cycle 7,2nd lw,3rd lw,每个周期有五个功能部件同时在工作 后面指令在前面完成取指后马上开始 每个load指令仍然需要五个周期完成 但是吞吐率(throughput)提高许多,理想情况下,有: 每个周期有一条指令进入流水线 每个周期都有一条指令完成 每条指令的有效周期(CPI)为1,R-type指令的4个阶段,Ifetch: 取指令并计算PC+4 Reg/Dec: 从寄存器取数,同时指令在译码器进行译码 Exec: 在ALU中对操作数进行计算 Wr: ALU计算的结果

13、写到寄存器,含R-type和 Load 指令的流水线,上述流水线有个问题: 两条指令试图同时写寄存器 Load在第5阶段用寄存器写口 R-type在第4阶段用寄存器写口 把一个功能部件同时被多条指令使用的现象称为结构冒险(Struture Hazard) 为了流水线能顺利工作,规定: 每个功能部件每条指令只能用一次(如:写口不能用两次或以上) 每个功能部件必须在相同的阶段被使用(如:写口总是在第五阶段被使用),R-type,R-type,Clock,Cycle 1,Cycle 2,Cycle 3,Cycle 4,Cycle 5,Cycle 6,Cycle 7,Cycle 8,Cycle 9,R

14、-type,R-type,Load,可以用以下两种方法解决上述结构冒险问题!,解决方案1: 在流水线中插入“Bubble”(气泡),插入“Bubble”到流水线中,以禁止同一周期有两次写寄存器。缺点: 控制逻辑复杂 第5周期没有指令被完成(CPI不是1,而实际上是2),Clock,Cycle 1,Cycle 2,Cycle 3,Cycle 4,Cycle 5,Cycle 6,Cycle 7,Cycle 8,Cycle 9,R-type,Load,R-type,R-type,方案不可行!,解决方案2: R-type的Wr操作延后一个周期执行,加一个NOP阶段以延迟“写”操作: 把“写”操作安排在

15、第5阶段, 这样使R-Type的Mem阶段为空NOP,这样使流水线中的每条指令都有相同多个阶段!,R-type,1,2,3,4,5,Store指令的四个阶段,Ifetch:取指令并计算PC+4 Reg/Dec: 从寄存器取数,同时指令在译码器进行译码 Exec:16位立即数符号扩展后与寄存器值相加,计算主存地址 Mem:将寄存器读出的数据写到主存,Wr: 加一个空的写阶段,使流水线更规整!,NOOP!,Beq的四个阶段,Ifetch: 取指令并计算PC+4 Reg/Dec:从寄存器取数,同时指令在译码器进行译码 Exec: 执行阶段 ALU中比较两个寄存器的大小(做减法) Adder中计算转移地址 Mem: 如果比较相等, 则: 转移目标地址写到PC,NOOP!,Wr: 加一个空的写阶段,使流水线更规整!,给出的流水线通路中的处理过程和多周期通路中的有什么不同?,多周期通路中,在Reg/Dec阶段投机进行了转移地址的计算!可以减少Branch指令的时钟数,为什么流水线中不进行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号