2–32
Internal Architecture
29 September 1997 – Subject To Change
MTU Store Instruction Execution
Up to two floating or integer registers may be written for each CBU fill cycle. Fills
deliver 32 bytes in two cycles: two INT8s per cycle. The MAF merging rules ensure
that there is no more than one register to write for each INT8, so that there is a regis-
ter file write port available for each INT8. After appropriate formatting, data from
each INT8 is written into the IRF or FRF provided there is a miss recorded for that
INT8.
Load misses are all checked against the write buffer contents for conflicts between
new load instructions and previously issued store instructions. Refer to Section 2.7
for more information on write operations.
LDL_L and LDQ_L instructions always allocate a new MAF entry if they miss the
Dcache. LDL_L and LDQ_L instructions that hit in the Dcache are retired by the
MTU immediately. No load instructions that follow an LDL_L or LDQ_L instruc-
tion are allowed to merge with it. After an LDL_L or LDQ_L instruction is issued
(and misses in the Dcache), the IDU does not issue any more MTU instructions until
the MTU has successfully sent the LDL_L or LDQ_L instruction to the CBU. This
guarantees correct ordering between an LDL_L or LDQ_L instruction and a subse-
quent STL_C or STQ_C instruction even if they access different addresses.
2.6 MTU Store Instruction Execution
Store instructions execute in the MTU by:
1.
Reading the Dcache tag store in the pipeline stage in which a load instruction
would read the Dcache
2.
Checking for a hit in the next stage
3.
Writing the Dcache data store instruction if there is a hit in the second (follow-
ing) pipeline stage
Load instructions are not allowed to issue in the second cycle after a store instruction
(one bubble cycle). Other instructions can be issued in that cycle. Store instructions
can issue at the rate of one per cycle because store instructions in the Dstream do not
conflict in their use of resources. The Dcache tag store and Dcache data store are the
principal resources. However, a load instruction uses the Dcache data store in the
same early stage that it uses the Dcache tag store. Therefore, a load instruction would
conflict with a store instruction if it were issued in the second cycle after any store
instruction. Refer to Section 2.2 for more information on store instruction execution
in the pipeline.