|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Instruction execution
steps |
|
|
|
|
|
|
|
1. IF (Instruction Fetch) |
|
|
|
|
address of instruction
to be executed is in PC (program counter, a hidden register) |
|
|
|
instruction is copied
from memory to IR (instruction register, another hidden register) |
|
|
2. D (Decode the
instruction, Fetch Operands) |
|
|
|
|
determine what operation
to perform (opcode, function) |
|
|
|
get operand values |
|
|
|
|
add |
|
|
|
|
|
|
get 2 operands from
registers |
|
|
|
|
|
|
addi |
|
|
|
|
|
|
|
|
|
get 1 operand from
register, 1 from instruction itself (sign-extended immediate) |
|
|
3. ALU (Perform the
operation) |
|
|
|
|
|
arithmetic, logical, etc. |
|
|
|
|
|
action performed by ALU
circuits |
|
|
|
|
4. MEM (Memory access) |
|
|
|
|
|
MIPS: only load or store
instructions |
|
|
|
|
5. WB (Write Back) |
|
|
|
|
|
|
|
result of third step is
written to the appropriate register |
|
|
|
|
6. PC Update (Program
Counter Update) |
|
|
|
|
|
normally, PC <- PC + 4 |
|
|
|
|
|
|
branch or jump: some
other address |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|