-
Notifications
You must be signed in to change notification settings - Fork 16
kuznia-rdzeni edited this page Jun 13, 2022
·
1 revision
The reservation station is used to store instructions which wait for their operands to be ready. When the instruction is ready it should be woken up by wakeup logic and dispatched to the correct FU.
In initial state all rows are marked as invalid.
Input:
- null
Output:
-
position
- of a free slot in RS
Side effects:
- Slot on
position
marked as used
Input:
-
opcode
- instruction opcode for FU -
id_rs1
- id of RF field wheresrc1
should be stored -
id_rs2
- id of RF field wheresrc2
should be stored -
id_out
- id of RF field where instruction output should be stored -
id_ROB
- id of ROB entry which is allocated for this instruction -
position
- in the RS to which we should write this entry
Output:
- null
Side effects:
- Save data from input to the slot in RS specified by the
position
argument
Input:
- null
Output:
-
inst_ready
- bit vector as long as RS, where bit onposition
mean:- 0 - instruction is still waiting for arguments
- 1 - instruction is ready for execute
Side effects:
- null
Input:
-
position
- of RS row which should be read and cleared
Output:
-
opcode
- instruction opcode for FU -
val_rs1
- value of first operand -
val_rs2
- value of second operand -
id_out
- id of RF field where instruction output should be stored -
id_ROB
- id of ROB entry which is allocated for this instruction
Side effects:
- RS row on
position
marked as invalid
Input:
-
tag
- from RF for which RS should be checked for -
value
- value which should be written to fields of RS with matching tag
Output:
- null
Side effects:
- For each row of RS if in this row are fields tagged with
tag
storevalue
in these fields.
-
free
: one-bit signal indicating if there is a free slot in the RS