ECE 6100-RSZ辅导、讲解MIPS-type、辅导Python编程设计、讲解Java,c/c++ 辅导Web开发|讲解R语言编程
- 首页 >> 其他 Tomasulo PROJECT ASSIGNMENT
ECE 6100-RSZ, Spring 2019
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 MIPS-type 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:
(i) instructions should be issued in program order, limited to one instruction per clock cycle (at most).
(ii) 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.
(iii) instructions may begin execution in the cycle following the cycle when all its operands are known (present in the
RS), assuming that an appropriate functional unit is available in that cycle. Priority should be given to the lowernumbered
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.
(iv) Start counting the number of cycles for each function with the first cycle of execution.
(v) End the count with the cycle in which the execution completes, taking into account stall cycles (if any).
(vi) 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 22. I prefer to get these by e-mail.
ECE 6100-RSZ, Spring 2019
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 MIPS-type 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:
(i) instructions should be issued in program order, limited to one instruction per clock cycle (at most).
(ii) 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.
(iii) instructions may begin execution in the cycle following the cycle when all its operands are known (present in the
RS), assuming that an appropriate functional unit is available in that cycle. Priority should be given to the lowernumbered
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.
(iv) Start counting the number of cycles for each function with the first cycle of execution.
(v) End the count with the cycle in which the execution completes, taking into account stall cycles (if any).
(vi) 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 22. I prefer to get these by e-mail.