Tomasulo simulator

Yellow: busy / selected · Blue: executing · Red: data / CDB · Green: tags · Blue lines: issue

Program

LOOP: L.D    F0, 0(R1)
      MUL.D  F0, F0, F2
      ADD.D  F0, F0, F3
      ST.D   F0, 0(R1)
      DADDUI R1, R1, #-8
      BNE    R1, R2, LOOP

Cycles

One issue per cycle
Multiply: 8 · Add: 4
Load: 4 · Store: 1
DADDUI: 3 · BNE: 2
Address: during issue
CDB: one result per cycle
3 loop iterations

Instruction schedule

ID / loopInstructionIssueExecuteComplete

Registers

IntValueQi
FPValueQi

Address unit

Store buffers

IDDataQiAddressBusy

Load buffers

IDAddressLeftBusy

Multiply reservation stations

IDOpQjVjQkVkBusy

Add reservation stations

IDOpQjVjQkVkBusy
Memory
Floating-point multiplier
Floating-point adder

Memory contents

LocationValue

Integer / branch

Common data bus → Store Qi retains its source tag until that result broadcasts.
Timing rules & assumptions