Course Project
The purpose of this project is to become familiar with a widely used architectural simulator and use that simulator to perform original architectural research or evaluate some existing architectural research. Whereas you will not be graded down for evalating existing research, it is not uncommon for orginal research ideas implemented as a part of a course project to go on to be published in top conferences.
Important Dates
Group members due: Tuesday, Sept 7 @ 5pm (5%)
Proposal due: Tuesday, Sept 28 @ 5pm (15%)
Status report and log files due: Tuesday, Nov 2 @ 5pm (5% - report, 2% log file)
Final research report and log files due: Tuesday, Nov 30 @ 5pm (70%, 3% log file)
All work will be submited via Sakai. ABSOLUTELY NO LATE work will be accepted. Yes, this means you will get a 0 if you are late! The assignment submission on Sakai will not allow late submission, so make sure that you submit early. You can always resubmit if you make changes.
For this project, you can work alone or with 1 or 2 other people (i.e., the maximum group size is 3). You must submit your group members by the date listed above. Both individuals and groups will be graded the same - I do not expect a better project from a group, nor will I accept less work from an individual. You may choose your own partners, but please choose wisely! After you have formed your group, you may not change/drop partners.
In addition, all academic integrity and collaboration polices discussed on the main page apply to this project.
Each group member will need to maintain a detailed log file throughout the project. This log file will allow me to track your progress and verify that all group members are indeed participating equally. Your log file should contain an entry for every bit of time spent on the project, as well as an estimate of how much effort you feel each group member is contributing. Since you may not want your group members seeing this log file, you may keep it private and turn the file in separately (there will be a special turn in just for log files). You must keep this log file even if you are working alone. Here is a sample log file. Remember, the more details you have the better. You will be graded based on your level of detail.
For the simulator, you willuse the sim-outoforder version of Simplescalar. You will need to learn how to install and setup Simplescalar. Whereas Simplsscalar is an older simulator, you will find that it is well established and still widely used. Special permission may be given to groups that wish to do a research topic that is not supported by Simplescalar
I am intentionally not giving you any details on how to install or use Simplescalar. Part of the purpose of this project is to help you learn how to teach yourself. An invaluable skill will be the ability to work independently and learn how to find the answers that you seek. Here are a few links to get you started, but a quick google search should provide you with everything that you need:
You should use any standard benchmark suite that is suitable for your proposed topic.
The Proposal
You will need to submit a 1 to 2 page document detailing your proposed work by the deadline above. Proposals submitted early will get early feedback. The document should be formatted like a standard research paper (see research paper details
below). Your proposal needs to contain the following information:
- A description of the topic
- A statement of why the topic is interesting or important
- Description of related work, including references to at least three relevent papers (see note on related work below).
- A description of the methods used to evaluate the proposed topic. Projects with original research need to include more details.
- GANTT chart with the proposed timeline for work broken up across group members. You must use GanttProject
- Anticipated results
Status Report
You will need to submit a status report by the deadline above. This status report should clearly describe the progress made thus far, report any deviations from the proposal's GANTT chart, include a new GANTT chart for the remainder of the project's duration if there are any progress speed changes (changes can not be made to your final outcome goals), and any preliminary results. You will not be graded on your progress but rather the physical act of turning in the report with the required status updates. This report will give both you and me a chance to evaluate your progress and provide feedback. In rare cases, mid-course corrections with respect to your final goals may be allowed.
Possible Research Topics
You are encouraged to come with an original research topic. An original topic is no simply a topic that is not listed below, but is instead a brand new idea, never before published. This is exactly what research for a thesis entails, but it is difficult to come up with a new topic. However, you are more than welcome to choose from the list below or Google for an idea. You will not be marked down for not having an innovative topic, nor will you get extra credit for creating an innovative topic. I only suggest that you choose a topic from an area that personally interests you. Many of the suggestions from the following list were taken from other computer architecture courses at other universities:
- Code scheduling for ILP
- Instruction/data Encoding
- Cache-based enhancements (e.g., trace cache, filter cache, loop cache, victim cache, stream buffers, etc.)
- Pipeline clocking
- Low power architectures
- Quanitfying architectural characteristics of database workloads and comparing them to other workloads
- Achieve fault tolerance by running 2 copies of instructions in unused cycles in a superscalar (e.g., a 4-way machine may commit less than 4 instructions due to dependencies) and do instruction replication only in those cycles.
- Compare Qureshi and Patt's insertion policies in ISCA 2007 to victim caches
- Use old register values to predict addresses of subsequent memory accesses. This allows the pipeline to do the cache access early in the pipeline, avoiding load-use stalls.
- By looking for phases in applications where fewer physical registers may suffice we can cut down the amount of energy consumed by the register file.
- Attempt to quantify how much of processor performance gain in the past decade has come from faster clocks and how much from ILP.
- Implement and compare victim caches and skewed-associative caches.
- Implement and compare two recent prefetching schemes
- Study prefetching methods (hardware and/or software) and their impact on performance
- Evaluate cache behavior of networking (or other) applications or algorithms, with modification to exploit caches and memory hierarchies
The following are some titles of projects from previous offerings of this course at other schools. Titles alone don't tell you everything, but you can get some ideas:
- An implementation study of register renaming logic
- In-order vs out-of-order superscalar processors
- A study of dynamic branch prediction schemes for superscalar processors
- Performance study of two-level on-chip caches in a fixed area
- An analysis of hardware prefetching techniques
- Performance evaluation of caches using patchwrx instruction traces
- Skewed D-way K-column set associative caches
- The history and use of pipelining computer architecture
- The effect of context switching on history-based branch predictors
- Bounding worst-case performance for realtime applications
- Branch prediction methods and performance
- Performance of TLB implementations
- Trace-driven simulation of cache enhancements
- Timing analysis and caching for realtime systems
- A Survey of VLIW Processors
- Evaluating Caches with Multiple Caching Strategies
- Survey/Comparison of VLIW and Superscalar processors
- Comparison Study of Multimedia-Extended Microprocessors
- Synchronous DRAM
- An Investigation of Instruction Fetch Behavior in Microprocessors
- Register Renaming in Java Microprocessors
- Optimizing Instruction Cache Performance with Profile-directed Code Layout
- Simulation of a Victim Cache for Spec95 Integer Benchmarks
- Power/Energy/Performance in a Branch Predictor of a Superscalar Processor
- Workload Characterization of Network Processor Benchmarks
- Dynamic Phase Behavior of Programs
- Cache Miss Pattern and Miss Predictability Analysis
- Low Power Cache Design
- Analysis of Architecture Support for Virtual Machines
- A Framework for Power Efficient Instruction Encoding in Deep Sub Micro Application Specific Processors
- Cache Optimization for Signal Processing Applications
- Design and Evaluation of Advanced Value Prediction Methods in Multi-Issue Superscalar Pipelined Architectures
- A New ISA to Efficiently Support Object-Oriented Programming (OOP) Paradigm
- Benchmarking HPC Workloads
Research Paper
To prepare you for writing technical documents in the future, you will write your paper in the current IEEE or ACM format for two column, single spaced, 9-pt or 10-pt font, fully justified text (this will become clear as you read papers). Your paper should be approximately 6 pages. A research paper basically contains the following sections. There are variations depending on what needs to be reported:
Abstact: 100-200 words describing what you did and results
- Introduction: Background information and a longer summary of what you did and results you got. You should briefly mention how you technique differs from previous work in this section
- Related work: Provide summaries of previous work related to your optimization including references to the papers (include cross-reference to paper listed in your references section). In this section you should clearly distinguish your work from previous work, giving details on how your work is different and how your work improves and/or extends previous methods. Be careful not to trash anyone elses work in this section. For one, it is tacky and two, the authors you are trashing are likely reviewing your paper
- Methodology: Describe what you did, how you did it, how it works, etc. Give architectural diagrams, charts and figures where necessary.
- Experiment Results: Include a subsection describing your experimental setup followed by (a) subsection(s) presenting your results. Be concise and use graphs to show improvements. Tables may also be used but a graph showing improvements conveys your results much easier than a table that must be read and interpretted. Make sure you analyze your results!!! Just showing some charts and reciting numbers does not provide any insights on what you have learned from these results. Provide an indepth analysis on what the results mean and trends that are revealed.
- Conclusions and Future Work: Summarize work and results. Give any future work you may be planning or future work that could be done
- Acknowledgments: Acknowledge any person that helped with your research that is not listed as an auther. Also acknowledge any funding sources that funded this work (of course you will not have that for this paper, just future reference).
- References: List of papers cited throughout your paper.
Although I don't recommend it, research papers are typically written in MS Word (which is actually what I use). LaTex is also a popular method. You may use any editor that you wish, just make sure your document is formatted correctly.I highly suggest that you use existing published works as a example of the details you should be putting this is paper. For example, a common fault I have seen in student research papers is lack of results analysis. Showing a few graphs and reciting some numbers do not provide any analysis or insights gained about the experiments.
Note on related work: In computer systems (including architecture, compilers, databases, operating systems, networking), conferences are MORE important than journals. Some important architecture conferences and journals include: International Symposium on Computer Architecture(ISCA), Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), International Symposium on Microarchitecture (MICRO), International Symposium on High Performance Computer Architecture (HPCA, IEEE Transactions on Computers, ACM Transactions on Computer Systems, IEEE Computer, IEEE Micro, and Microprocessor Report.