Simple Operation of MIPS Consider the operation of MIPS without pipelining. Every MIPS instruction can be executed in at most 5 clock cycles - representing five phases of operation: 1. Instruction Fetch (IF): 2. Instruction decode/register fetch cycle (ID): 3. Execution/effective address cycle (EX): 4. Memory access/branch completion cycle (MEM): 5. Write-back cycle (WB):
1. MIPS Instruction Fetch (IF): IR <- Mem[PC] ; Instruction Register, Program Counter NPC <- PC + 4 ; Next Program Counter 2. MIPS Instruction decode/register fetch cycle (ID): A <- Regs[IR(6..10)] B <- Regs[IR(11..15)] Imm <- sign extended IR(16..31) decoding -> will determine the following sequence based on instruction
3. MIPS Execution/effective address cycle (EX): one of the following depending on the instruction decoded: a. memory reference: ALUoutput <- A + Imm b. register-register ALU instruction: ALUoutput <- A op B c. register-immediate ALU operation: ALUoutput <- A op Imm d. branch: ALUoutput <- NPC + Imm Cond <- A op 0
4. MIPS Memory access/branch completion cycle (MEM): one of the following based on the instruction decoded: a. Memory load LMD <- Mem[ALUoutput] b. Memory store Mem[ALUoutput] <- B c. Branch if(cond) PC <- ALUoutput else PC <- NPC
5. MIPS Write-back cycle (WB): one of the following depending on the instruction decoded: a. register-register ALU instruction Regs[IR(16..20)] <- ALUoutput b. register-immediate ALU instruction Regs[IR(11..15)] <- ALUoutput c. load instruction Regs[IR(11..15)] <- LMD d. branch instruction - does not have a WB cycle