CS 211: Programming Project 3.

 

In this homework you are to use SimpleScalar to evaluate the performance of a set of benchmarks that YOU choose for an application domain that you choose, and come up with a design for an "optimized" processor for your benchmarks/applications.


This homework will require a combination of methods that you have studied in the course, including the earlier two projects.

 

The first step is to choose an application domain and then select a set of applications/algorithms/programs, written in C,  that would model your application domain. If you wish, you can obtain the C source code from elsewhere (but make sure you credit the reference) or you can write your own code. Describe the set of programs you choose, why they model your application domain, and the properties of these programs/applications. What is the code profile (types of instructions) of your application code ? Note that you will have to use the cross-compiler to generate the PISA code.

 

The objective of the project is to “design” an optimal processor for your set of applications, but note the role that the compiled code plays. The decisions to be made include (but are not limited to): number and type of functional units, register file size, branch predictors, and cache configuration. Your report should conclude with the ‘optimal’ processor configuration for your set of applications and justification for your decision. Also address the optimal configuration with and without constraints such as the chip area – i.e., you should try to study tradeoffs between choices (for example, unlimited number of functional units versus a choice of x integer and y floating point units). Since the properties of the compiled code play a role in the performance, you should also address what compiler optimizations you have tested and why you chose those optimizations.

 

For this programming project, you can work as a team in setting up and running the experiments but you CANNOT collaborate on writing the report – i.e., each team member must submit their own report (but submit an identical copy of the summary of the experiments in each report – i.e., you are expected to run ONE set of experiments in collaboration but do the analysis of the results on your own). I will be paying very  careful attention to violations of this policy – violation of this policy is a violation of academic integrity. 

 

As with the previous programming homeworks, your report has to follow certain format. Your report is limited to 5 pages for EACH team member, using a 12 point font and 1.5 line spacing (you can use extra pages for figures if need be). Note that the results (which will be common to all the team members) can be tabulated and will not count towards the 5 page maximum length of your report. The format of the report should follow the outline below:

 

1. Team Members and the Author of the report.

2. Abstract (summarize the report’s conclusions in 100 words or less)

3. Experiments: state what options you studied/ being studied, and what parameters you varied.

4. Results. (make sure you tabulate the results -- simply handing in the output of the simulations will result in a failing grade).

5. Conclusions (summarize critical results and key insights learned about the effect of the

parameters examined on performance). Discuss why the optimal configurations were chosen, and provide a qualitative reasoning that justifies the experimental results (i.e., what is the relationship/effect between application properties and architecture properties/configurations).

 

Be sure to allow adequate time to run the simulations, analyze the results, and write a complete readable report. It is suggested that you try to summarize data in a clear

manner using tables and/or graphs. Conciseness and results are more important than long descriptions of process.