CSSE232 ¡ Computer ¡Architecture ¡I ¡ Pipelining ¡
Summary ¡of ¡Instruc;on ¡Execu;on ¡ • sae ¡$t0, ¡$t1($t2) ¡ • sll ¡$at, ¡$t1, ¡2 ¡ • add ¡$at, ¡$at, ¡$t2 ¡ • sw ¡$t0, ¡0($at) ¡ Action for R-type Action for memory-reference Action for Action for Step name instructions instructions branches jumps Instruction fetch IR = Memory[PC] PC = PC + 4 Instruction A = Reg [IR[25-21]] decode/register fetch B = Reg [IR[20-16]] ALUOut = PC + (sign-extend (IR[15-0]) << 2) Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] II computation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2) jump completion Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut] completion ALUOut or Store: Memory [ALUOut] = B Load: Reg[IR[20-16]] = MDR Memory read completion
Outline ¡ • Review ¡of ¡mul;cycle ¡datapath ¡and ¡control ¡ • Pipelining ¡ • Pipeline ¡control ¡
Differences ¡between ¡single-‑cycle, ¡mul;-‑cycle, ¡ and ¡pipelining ¡ • Components ¡ – Memory, ¡adders, ¡extra ¡registers ¡ • Control ¡ ¡ – Fixed ¡vs ¡Finite ¡state ¡ • Performance ¡ – Cycles ¡
Ac;vity ¡ • You ¡have ¡a ¡date ¡at ¡9:45pm. ¡Its ¡6:00pm ¡and ¡ you’ve ¡just ¡realized ¡that ¡you ¡have ¡no ¡clean ¡ clothes. ¡You ¡have ¡4 ¡loads ¡of ¡laundry. ¡The ¡laundry ¡ process ¡includes ¡4 ¡steps: ¡ – Wash ¡ – Dry ¡ – Fold ¡ – Put ¡away ¡ ¡ Assume ¡each ¡step ¡takes ¡30 ¡mins. ¡Describe ¡a ¡process ¡for ¡ comple;ng ¡the ¡laundry ¡by ¡9:45pm. ¡
Pipelining ¡Analogy ¡ n Four ¡loads: ¡ n Sequen;al: ¡8 ¡hrs ¡ n Pipeline: ¡3.5 ¡hrs ¡ n Speedup ¡ = ¡8/3.5 ¡= ¡2.3 ¡ • Pipelined ¡laundry: ¡overlapping ¡ execu;on ¡ – Parallelism ¡improves ¡performance ¡
Mul;cycle ¡Approach ¡ ¡ PCSrc M Add u x Note ¡par;culari;es ¡of ¡ • Add ALU 4 ¡ result Shift ¡ ¡ ¡ ¡mul;cycle ¡vs. ¡single-‑ ¡ left 2 Registers ALU operation 3 ¡ ¡ ¡ ¡diagrams ¡ Read MemWrite ALUSrc Read register 1 PC Read address Read MemtoReg data 1 register 2 Zero ¡ Instruction ALU ALU Read Write Read Address result M register data 2 data M Instruction u – single ¡memory ¡for ¡data ¡ u x Write memory Data x data memory Write RegWrite ¡ ¡ ¡ ¡and ¡instruc;ons ¡ data 16 32 Sign MemRead – single ¡ALU, ¡no ¡extra ¡adders ¡ extend – extra ¡registers ¡to ¡ ¡ Single-cycle datapath ¡ ¡ ¡ ¡hold ¡data ¡between ¡ ¡ ¡ ¡ ¡ ¡clock ¡cycles ¡ ¡ Instruction register Data PC Address A Register # Instruction Memory Registers ALU ALUOut or data Register # Memory data B Data register Register # Multicycle datapath (high-level view)
Summary ¡of ¡Instruc;on ¡Execu;on ¡ Action for R-type Action for memory-reference Action for Action for Step name instructions instructions branches jumps Instruction fetch IR = Memory[PC] PC = PC + 4 Instruction A = Reg [IR[25-21]] decode/register fetch B = Reg [IR[20-16]] ALUOut = PC + (sign-extend (IR[15-0]) << 2) Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] II computation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2) jump completion Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut] completion ALUOut or Store: Memory [ALUOut] = B Load: Reg[IR[20-16]] = MDR Memory read completion
MIPS ¡Pipeline ¡ Five ¡stages, ¡one ¡step ¡per ¡stage ¡ • 1. IF: ¡Instruc;on ¡fetch ¡from ¡memory ¡ 2. ID: ¡Instruc;on ¡decode ¡& ¡register ¡read ¡ 3. EX: ¡Execute ¡opera;on ¡or ¡calculate ¡address ¡ 4. MEM: ¡Access ¡memory ¡operand ¡ 5. WB: ¡Write ¡result ¡back ¡to ¡register ¡
Single ¡cycle ¡+ ¡stages ¡ • IF, ¡ID, ¡EX, ¡MEM, ¡WB ¡ PCSrc M Add u x Add ALU 4 result Shift left 2 Registers ALU operation Read 3 MemWrite ALUSrc Read register 1 PC Read address Read data 1 MemtoReg Zero register 2 Instruction ALU ALU Read Write Read Address result M register data data 2 M u Instruction u x Write memory Data x data memory Write RegWrite data 32 16 Sign MemRead extend
Summary ¡of ¡Instruc;on ¡Execu;on ¡ Step Action for R-type Action for memory-reference Action for Action for Step name instructions instructions branches jumps Instruction fetch IR = Memory[PC] 1: IF PC = PC + 4 Instruction A = Reg [IR[25-21]] 2: ID decode/register fetch B = Reg [IR[20-16]] ALUOut = PC + (sign-extend (IR[15-0]) << 2) Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] II 3: EX computation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2) jump completion Memory access or R-type Reg [IR[15-11]] = Load: MDR = Memory[ALUOut] 4: MEM completion ALUOut or Store: Memory [ALUOut] = B 5: WB Load: Reg[IR[20-16]] = MDR Memory read completion
Single ¡cycle ¡+ ¡stages ¡ • Where ¡should ¡the ¡stages ¡go? ¡ PCSrc M Add u x Add ALU 4 result Shift left 2 Registers ALU operation Read 3 MemWrite ALUSrc Read register 1 PC Read address Read data 1 MemtoReg Zero register 2 Instruction ALU ALU Read Write Read Address result M register data data 2 M u Instruction u x Write memory Data x data memory Write RegWrite data 32 16 Sign MemRead extend
MIPS ¡Pipelined ¡Datapath ¡
Pipeline ¡registers ¡ • Need ¡registers ¡between ¡stages ¡ – To ¡hold ¡informa;on ¡produced ¡in ¡previous ¡cycle ¡
IF ¡for ¡Load, ¡Store, ¡… ¡
ID ¡for ¡Load, ¡Store, ¡… ¡
EX ¡for ¡Load ¡
MEM ¡for ¡Load ¡
WB ¡for ¡Load ¡ Wrong ¡ register ¡ number ¡
Corrected ¡Datapath ¡for ¡Load ¡ The ¡first ¡of ¡many ¡adjustments ¡needed ¡
EX ¡for ¡Store ¡
MEM ¡for ¡Store ¡
WB ¡for ¡Store ¡
Mul;-‑Cycle ¡Pipeline ¡Diagram ¡ • Form ¡showing ¡resource ¡usage ¡
Mul;-‑Cycle ¡Pipeline ¡Diagram ¡ • Tradi;onal ¡form ¡
Single-‑Cycle ¡Pipeline ¡Diagram ¡ • State ¡of ¡pipeline ¡in ¡a ¡given ¡cycle ¡
Pipelined ¡Control ¡(Simplified) ¡
Pipelined ¡Control ¡ • Control ¡signals ¡derived ¡from ¡instruc;on ¡ – As ¡in ¡single-‑cycle ¡implementa;on ¡
Pipelined ¡Control ¡
Outline ¡ • Review ¡of ¡mul;cycle ¡datapath ¡and ¡control ¡ • Pipelining ¡ • Pipeline ¡control ¡
Recommend
More recommend