CDA 3101 Spring 2016 Introduction to Computer Organization Multicycle Datapath 23 Feb 2016 Review • Construction of the Datapath – Determine instruction types • • • • R-format Conditional Branch Unconditional Branch Load/store – Develop datapath modules (RF, ALU, Memory, SignExt) – Connect modules to form composite datapath • Single-Cycle Datapath – All instructions take one cycle (CPI = 1) – Cycle time dictated by circuit settling time – All operations take time of slowest operation (load) Overview – Multicycle Datapath • • Each instruction has multiple stages Each stage takes one cycle 1. 2. 3. 4. 5. Instruction fetch Instruction decode / Data fetch ALU ops / R-format execution R-format completion Memory access completion All instructions use these Each stage can re-use hardware from previous stage More efficient use of hardware and time >> New Hardware required to buffer stage output >> New Muxes required for hardware re-use >> Expanded Control for new hardware Recall: Simple Datapath PC Instruction memory Address rd Data rs rt Registers Instruction ALU Address Data memory Data +4 imm Opcode, funct Controller ° Datapath is based on register transfers required to execute instructions ° Control causes the right transfers to happen Recall: R-format Datapath • Format: opcode r3, r1, r2 Register File Instruction Read Reg 1 Read Reg 2 Write Register Write Data ALU op 3 Read Data 1 Zero ALU Read Data 2 Result Register Write Recall: Load/Store Datapath Fetch Decode Execute Recall: Branch Datapath Fetch Decode Execute Hi-Level View: Multicycle DP Instr. Fetch Instr. Decode/Data Fetch Execute Hi-Level View: Multicycle DP How do we make multicycle datapath (DP)??? 1. Replace 3 ALUs from the single-cycle DP with one ALU 2. Add one multiplexer to select ALU input 3. Add one control line for the ALU input multiplexer • New inputs: Constant = 4 [PC + 4] • Sign-ext., shifted offset [BTA calc.] 4. Add temporary (buffer) registers: (storage betw.cycles) • MDR: Memory Data Register • IR: Instruction Register • A,B: ALU operand registers • ALUout: ALU output register Multicycle DP: The Full Monty Multicycle DP: 1-bit Ctl. Signals Multicycle DP: 2-bit Ctl. Signals Making Sense of Multicycle DP Step 1: Decompose the MC/DP execution sequence into cycles Step 2: Examine which cycles apply to which instructions One-Cycle Steps 1. Instruction Fetch 2. Instruction Decode / Data Fetch 3. ALU ops / R-format Execution 4. R-format Completion 5. Memory Access Completion R-fmt lw sw beq j Multicycle DP: R-format Step 1: Fetch instr. // Store in IR // Compute PC + 4 Step 2: Decode instruction: opcode, rd, rs, rt, funct fields Data fetch: Apply rs, rt to Register File Data Read into A,B buffer registers (ALUin) Step 3: ALU operation (ALUsrcA, ALUsrcB, ALUop) ALU output goes into ALUout register Step 4: ALUout register contents written to Register File write input Register number in rd written (Assert: RegWrite,RegDst) CPI for R-format = 4 cycles Multicycle DP: Store Word (sw) Step 1: Fetch instr. // Store in IR // Compute PC + 4 Step 2: Decode instruction: opcode, rs, rt, offset fields Data fetch: Apply rt to Register File => Base address Data Read into A buffer register (Base) SignExt,Shift offset field into B buffer register Step 3: ALU operation (ALUsrcB, ALUop) => Base + Offset ALU output goes into ALUout register Step 4: ALUout register contents applied as Memory Address Assert: MemWrite CPI for Store = 4 cycles [ALUout => RegFile] Multicycle DP: Load Word (lw) Step 1: Fetch instr. // Store in IR // Compute PC + 4 Step 2: Decode instruction: opcode, rd, rt, offset fields Data fetch: Apply rt to Register File => Base address Data Read into A buffer register (Base) SignExt,Shift offset field into B buffer register Step 3: ALU operation (ALUsrcB, ALUop) => Base + Offset ALU output goes into ALUout register Step 4: ALUout register contents applied as Memory Address Assert: MemRead Step 5: Memory Data Out routed to Register File write input Register number from rd written to (Assert: CPI for Load = 5 cycles Multicycle DP: Cond. Branch Step 1: Fetch instr. // Store in IR // Compute PC + 4 Step 2: Decode instruction: opcode, rs, rt, offset fields Data fetch: BTA calc: Apply rs, rt to Register File SignExt,Shift offset field into B buffer register ALU compose PC, offset => BTA Step 3: ALU operation (ALUsrcA, ALUsrcB, ALUop) = compare ALU output present at Zero register causes Control to select BTA or PC+4 CPI for Conditional Branch = 3 cycles Multicycle DP: Jump Step 1: Fetch instr. // Store in IR // Compute PC + 4 Step 2: Decode instruction: opcode, address fields JTA calc: SignExt,Shift offset field [Bits 27-0] Concatenate with PC [Bits 31-28] => JTA Step 3: PC replaced by the Jump Target Address (JTA) PCsource = 10, PCWrite asserted CPI for Jump = 3 cycles Conclusions • MIPS ISA: Three instruction formats (R,I,J) • One cycle per stage, Different stages per format • One-Cycle Steps R-fmt lw sw beq j 1. Instruction Fetch 2. Instruction Decode / Data Fetch 3. ALU ops / R-format Execution 4. R-format Completion 5. Memory Access Completion Challenge: More involved control design Almost : Spring Break
© Copyright 2026 Paperzz