Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Project Description (some details)
In this project you will write a program (use any language that you prefer) that
simulates of the application of Tomasulo’s algorithm for scheduling a block of MIPStype
Load/Store/Arithmetic instructions. The input to your program should be a short
text file that lists up to 16 such instructions (you may restrict/simplify the MIPs syntax
if you find it convenient to do so). Each instruction may be: Load, Store, Add, Subtract,
Multiply, or Divide. The typical number of clock cycles for each of these instructions
is shown in the long (57-cycle) example that we discussed in lecture. You may use these
as default values in your program, but you should treat them as adjustable parameters
(so that you can easily tailor your program to many specific hardware architectures).
After writing and debugging your program you will write and turn in a REPORT that
includes the following:
(1) A summary (text description possibly including figures) of the algorithm
implemented by your program.
(2) The well-commented SOURCE-CODE of your program (in a standard text, WORD,
or pdf file). I suggest that you make this a separate text file from the main body of your
report, but reference it as an appendix.
(3) A summary of several example runs of the program, showing the scheduling of
instructions on a cycle-by-cycle basis for each example block of code. Be sure to
include a summary table (such as shown in the long example) that lists the cycle
numbers for each instruction (a) issue, (b) execution start, (c) execution complete, (d)
write result to CDB. Double-check the results of your program by hand to make sure
that the calculated cycles are correct. Also, make sure (check by hand) that the
numerical results of the arithmetic functions are correct. You should pick a few simple
examples that demonstrate the ability to handle WAR, RAW, and WAW potential
hazards. Use the long example from lecture as another example. Try a few other
complicated examples of your choosing. Try to force stalls (due to resource limitations
and contentions), and see if your program responds correctly.
For this assignment generally follow the long example that we discussed in class.
Observe the following specific rules:
(1)instructions should be issued in program order, limited to one instruction per clock
cycle (at most).
(2)instructions cannot be issued until there is an appropriate Reservation Station
available. Priority should be given to the lower-numbered instructions (maintaining
program order for issue). Other instructions should stall if necessary.
(3)instructions may begin execution in the cycle following the cycle when all its
operands are known (present in the RS if there is a contention for a specific functional
unit. The other RSs should stall. Notice that execution might not necessarily follow
program order.
(4 Start counting the number of cycles for each function with the first cycle of execution.
(5)End the count with the cycle in which the execution completes, taking into account
stall cycles (if any).
(6)Assume that the results of an arithmetic function may be written to the CDB on the
cycle following execution completion, assuming that he CDB is available on that cycle.
It is possible that two or more functions might request the CDB on the same cycle. In
that case, give priority to the functional unit with the lower-numbered RS. The others
must stall.
Please note: Do NOT send your program code in anything other than standard text
formats (.doc, .pdf, .txt). Otherwise, the security-checking software may reject these
attachments in your email.
Please submit an electronic version of your project report (WORD format is preferred,
pdf or txt is acceptable). The projects reports are due on March 26 .