Note: This applet can only be viewed with Java Swing compatible
Browsers. You will propable need the Java 1.2 Plug-In from Sun for your
Browser. If you don?t want to install the Plug-In just use the appletviewer
that is part of the JDK Distrubution.
This pattern was created by R.Tomasulo and named
after him. It uses register renaming around RAW-WAR Hazards to escape. The
hazard detection und execution control are distributed: The reservation station
at each functional unit control when an instruction can begin executing at that
unit. The results are passed directly to functinal units (ALU) from the
reservation station, where they are buffered, as soon as they are available.
This is done with the CDB (Common Data Bus),which allows all units waiting for
an operand to be loaded simultaneously. Note: The CDB (in our Applet) can only
transmit one result per Clock . The execution of each instruction includes three
phases: 1. Issue: The instruction is taken from the instruction queue to
the reservation station or load buffer,If there is an empty reservation station
for it, and the operands are sent to the resevation station too if they are in
the registers. If there is no empty resevation station (or load buffer) we have
a structural hazard and we must stall untill workstation in the appropriate
reservation station is available. 2. Execute: When both operands are
available and the ALU is not busy, the instruction will be
executed. Note: Although each reservation station has several workstations
(ADDS: 3 workstations, MULT: 2 workstations, Loadbuffer: 5 workstations) however
there is only one functional unit per reservation station. If one of the two
operands is missing, then is the CDB to monitor, while one for the results
waits. Once both operands are available and the ALU is free the instruction will
be executed. 3. Write result: When the result from the functional unit is
available, it is send through the CDB to the registers and to all functional
units, which need it. In our applet you kann see in each reservation station
these informations: Qj, Qk are reservation stations, which will support the
source operands, when both are empty, that means the two operands are
available. Vj, Vk contain the values of the two operands. Notice: At the
same time only one can be initialized qj(qk) or vj(vk). Qi is the address of
the reservation station,which will produce the value of the target register. Lukasz PekackiLast
modified: Thu Aug 10 17:33:39 CEST 2000