|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Register file |
|
|
|
|
|
|
|
Need a group of registers
to store operands (32 in MIPS) |
|
|
|
Registers are very fast
memory, part of the CPU |
|
|
|
Why not use only
registers for all data? |
|
|
|
Costs more to make
registers than RAM |
|
|
|
More registers mean more
circuits to control them, therefore slower |
|
|
Consider 32 integer
registers inside a black box called a register file |
|
|
Set of registers with
combinational logic to select |
|
|
|
Instruction to run: |
|
|
|
|
|
add $1, $2, $3 # R[1] <- R[2] + R[3] |
|
|
|
|
|
|
Fetch operands: |
|
|
|
|
|
|
Need values in registers
2 and 3 |
|
|
|
|
To tell the register file
which registers to use: |
|
|
|
|
|
Need a value from 0 to 31 |
|
|
|
|
|
How many bits? ceil( lg(
32 ) ) = 5 bits |
|
|
|
|
|
Need to specify 5 bits
for each register |
|
|
|
|
|
Where to get the 10 bits
for register numbers? |
|
|
|
|
|
From the instruction
itself |
|
|
|
|
|
IR (instruction register) |
|
|
|
|
|
Hidden register
containing the instruction currently being executed |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|