第三章流水绲技术 31流水线的基本概念 32 DLX MIPS)基本流水线 33流水线的相关 34异常处理 35DLX(MIPS)中多周期操作的处理 36 MIPSR4000流水线 中国科学技术大学 chapter2
第三章 流水线技术 3.1流水线的基本概念 3.2 DLX(MIPS)基本流水线 3.3 流水线的相关 3.4 异常处理 3.5 DLX (MIPS)中多周期操作的处理 3.6 MIPS R4000流水线 中国科学技术大学 chapter03.2
Review:性能评测 ·平均cP? 每类指令的使用频度 pe CPli for type Frequency CPl; X freql Arith/LOgIc 40% 1.6 Load 30% 1.5 Store 10% 0.4 branch 20% 0.6 Average CPl: 4.1 中国科学技术大学 chapter3.3
中国科学技术大学 chapter3.3 Review:性能评测 • 平均CPI? – 每类指令的使用频度 Type CPIi for type Frequency CPIi x freqIi Arith/Logic 4 40% 1.6 Load 5 30% 1.5 Store 4 10% 0.4 branch 3 20% 0.6 Average CPI:4.1
是否可以使cP|<41? ·在一条指令执行过程中下图有许多空闲部件 可以让指令重叠执行?? PCWrCond CSRc Zero or MemWr IRWr RegL aluSela Zero R RAdr rb b Reg file Memory 0 WrAd RW Din Dout bus busH Mux ALU Control Imm Extend 16 ALEc 技术大 Mento reg ALUSelB chapter3. 4
中国科学技术大学 chapter3.4 是否可以使 CPI < 4.1? Ideal Memory WrAdr Din RAdr 32 32 32 Dout MemWr 32 ALU 32 32 ALUOp ALU Control 32 IRWr Instruction Reg 32 Reg File Ra Rw busW Rb 5 5 32 busA busB 32 RegWr Rs Rt Mux 0 1 Rt Rd PCWr ALUSelA 1 Mux 0 RegDst Mux 0 1 32 PC MemtoReg Extend ExtOp Mux 0 1 32 0 1 2 3 4 16 Imm 32 << 2 ALUSelBMux 1 0 32 Zero Zero PCWrCond PCSrc 32 IorD Mem Data Reg ALU Out B A • 在一条指令执行过程中下图有许多空闲部件 – 可以让指令重叠执行??
31流水线的基本概念 ·洗衣为例 A BCC D Ann Brian cathy dave 每人进行洗衣的动作 wash, dry, and fold washer需要30 minutes Dryer需要40 minutes ·“ Folder”需要20 minutes 中国科学技术大学 chapter3.5
中国科学技术大学 chapter3.5 • 洗衣为例 • Ann, Brian, Cathy, Dave 每人进行洗衣的动作: wash, dry, and fold • washer需要 30 minutes • Dryer 需要 40 minutes • “Folder” 需要 20 minutes A B C D 3.1 流水线的基本概念
Sequential Laundry 6PM 7 8 9 10 11 Midnight Time 304020304020304020304020 Task order AB2C2D 顺序完成这些任务需要6小时 如果采用流水作业,需要多长时间? 中国科学技术大学 chapter 3.6
中国科学技术大学 chapter3.6 Sequential Laundry • 顺序完成这些任务需要 6 小时 • 如果采用流水作业, 需要多长时间? A B C D 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
流水线作业:尽可能让任务重叠进行 6 PM 7 9 10 11 Midnight Time 3040404040 20 A askorde B D 流水作业完成四人的洗衣任务只需要35 hours 中国科学技术大学 chapter3.7
中国科学技术大学 chapter3.7 流水线作业: 尽可能让任务重叠进行 • 流水作业完成四人的洗衣任务只需要 3.5 hours A B C D 6 PM 7 8 9 10 11 Midnight T a s k O r d e r Time 30 40 40 40 40 20
流水线技术要点 流水线技术并不能提高单个任务的执行效率,它可以 提高整个系统的吞吐率 ·流水线中的瓶颈——最慢的那一段 多个任务同时执行,但使用不同的资源 ·其潜在的加速比=流水线的级数 流水段所需时间不均衡将降低加速比 流水线存在装入时间和排空时间,使得加速比降低 ·由于存在相关问题,会导致流水线停顿 中国科学技术大学 chapter 3.8
中国科学技术大学 chapter3.8 流水线技术要点 • 流水线技术并不能提高单个任务的执行效率,它可以 提高整个系统的吞吐率 • 流水线中的瓶颈——最慢的那一段 • 多个任务同时执行,但使用不同的资源 • 其潜在的加速比=流水线的级数 • 流水段所需时间不均衡将降低加速比 • 流水线存在装入时间和排空时间,使得加速比降低 • 由于存在相关问题,会导致流水线停顿
32DLX(MPS)的基本流水线 指令流水线:cPU执行大量的指令,指令吞吐率非常重要 ·DLX的指令格式 Register-Register(R-type ADD R1 R2 R3 056101115162021252631 LOpes⊥ rtrd func Register-Immediate(I-type SUBR1R2.#3 0 5610111516 31 LOpLrsrt immediate Jump/Call (J-type) JUMP end 0 31 LOp offset added to pc Gump, jump and link, trap and return from exception) 所有指令相同长度 在指令格式中寄存器位于同一位置 只有 Loads和 Stores可以对存储器操作 中国科学技术大学 chapter 3.9
中国科学技术大学 chapter3.9 • 指令流水线:CPU执行大量的指令,指令吞吐率非常重要 • DLX 的指令格式 3.2 DLX (MIPS)的基本流水线 Op 0 5 6 10 11 15 16 31 rs rt immediate Op 0 5 31 Op 0 5 6 10 11 15 16 31 rs rt offset added to PC rd Register-Register (R-type) ADD R1, R2, R3 20 21 25 26 Register-Immediate (I-type) SUB R1, R2, #3 Jump / Call (J-type) JUMP end func (jump, jump and link, trap and return from exception) ▪所有指令相同长度 ▪在指令格式中寄存器位于同一位置 ▪只有Loads和Stores可以对存储器操作 6
DLX(MIPS)数据通路一种简单实现 Instruction:工ns↑r. Decode氵 Execute Memory Write Fetch Reg. Fetch氵Addr.calc氵 Access氵Back Next pc Next SEQ PC Zero? RS1 RS2元 3o WB Data 中国科学技术大学 chapter3. 15
中国科学技术大学 chapter3.10 DLX(MIPS)数据通路一种简单实现 Memory Access Write Back Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc L M D ALU MUX Memory Reg File MUX MUX Data Memory MUX Sign Extend 4 Adder Zero? Next SEQ PC Address Next PC WB Data Inst RD RS1 RS2 Imm
基本操作(Step1&2) Step 1-IF IR <--Mem PC]-------- fetch the next instruction from memory NPC <--PC +4 compute the new PC Step 2 -ID-instruction decode and register fetch step A <--Regsir-10 B<- RegsIr1…s 可能读取的寄存器值没有用,但没有关系,译码后如果无用,以 后操作就不用 Imm∈(IR16)16#IR163 Op Rs Rt5 Rd5 sa funct Rs5 Rt5 immediate 16 Op immediate 中国科学技术大学 chapter3. 11
中国科学技术大学 chapter3.11 基本操作(Step 1 & 2) • Step 1 - IF – IR <-- Mem[PC] --------- fetch the next instruction from memory – NPC <-- PC + 4 ---------- compute the new PC • Step 2 - ID - instruction decode and register fetch step – A <-- Regs[IR6 ..10] – B <-- Regs[IR11..15] » 可能读取的寄存器值没有用,但没有关系,译码后如果无用,以 后操作就不用 – Imm ((IR16) 16 ## IR16-31