CMSC 611 Computer Architecture Project

The goal of the semester project is to do research/development in a narrow computer architecture area and write up the results as a technical paper.

Do not leave this to the last minute!

At Westinghouse and Northrop Grumman we found 4 hours

per page was average writing rate after knowing what

you were going to say! This is an 8 to 10 page paper.

Pick your own topic. Here is just a few possible examples:

Choose something that interests you.
Keep a narrow focus.
It is OK to do an incremental extension of others work. Give credit.
It is OK with me to combine this course project with another course project.

1. Create or run unusual programs as benchmarks.
   Possibly on various architectures or on simulators such as
   "Simple Scalar" or others.

2. Benchmark some program written in several languages on various architectures
   e.g. Java and C++. Should it be Java written in C++ syntax, C++ written
   in Java syntax or optimally programmed in each language?
   Pearl, Tcl/Tk, Fortran, Ada, or any languages you find interesting.

3. Use VHDL or Verilog or some CAD system to implement an IEEE floating point
   arithmetic unit. If it comes out good, submit it to www.opencores.org.
   it is OK to build on some implementation as long as you make a
   contribution (e.g. faster, less gates, more in hardware)

3a. IEEE floating point is typically a hardware plus software solution.
    Find or do your own hardware-software partitioning and then show
    tradeoffs for more and less hardware.

4. Do a detailed analysis of some useful program to find how much can
   be parallelized. e.g. maximum number of superscalar pipelines it
   could use, average parallel issue, any interesting quantity related
   to fine grain parallelism that might interest you.

5. Do some branch prediction experiments. Use an existing or modified
   simulator or do your own code to run experiments.
   You can build on others experiments and create your own branch prediction
   method if you wish.

6. Analyze some program to compare its performance on an in-order execution
   machine such as the Intel IA-64 verses an out-of-order machine such as
   the Alpha 21264. Focus on some part of this area. e.g. the differences
   in what the compiler should/could produce. The difference if the code
   was compiled completely unoptimized. The difference if code size was
   minimized in order to keep it all in the L1 cache.

7. Benchmark a Java Virtual Machine on several architectures.
   Or, profile some JVM and find the highest use area of code them
   analyze that code to predict on which architecture it would be fastest.
   Or, analyze a high use part of a JVM for fine grain parallelism.

8. Seriously speculate how you would use a multi billion transistor chip for
   making a better desktop computer. In other words, if you could put 100
   times more on a chip without loosing speed, how would you use it
   to help the person using the desktop computer. Keep some focus.
   Be sure you are proposing something that really helps the user.

9. Analyze cache performance, some are saying zero levels of cache may be
   best, others say we will go to four or five levels. With a 1GHz processor
   the L1 cache takes a minimum of two clocks, L2 as many as 20 clocks.
   At an average of three instructions and one data reference per clock,
   can wide memory and lookahead buffers outperform caches?

9a  Analyze I/O performance. For example ATA-160 vs SCSI 160.
    Various speed hard drives, 5400, 7200, 10,000 rpm.
    Does CPU speed make a difference? Does RAM size or at least
    the amount of RAM used for disk read/write buffers change time?
    Can you detect double buffering, quad buffering, read ahead?
    Do writes appear to happen in zero time? Why? How much?

10. At greater than 10GHz clock rates a signal can not get across a chip
    in a clock time. Designers are talking about microarchitectures that
    form the core of fast processors. Find a recent paper on the subject
    and make an incremental contribution.

11. Work out a TLB hardware plus software solution that works for more
    than 4GB virtual address spaces.

12. Work out a way to make good use of one of the memory technologies.
    Bigger is usually slower, smaller is usually faster, rows vs columns,
    prefetch, precharge, width vs depth of buffers. Focus on only one
    specific type of memory chip.

13. Use VHDL or ESIM and code a superscalar four pipeline architecture
    with out-of-order execution and renaming registers. Simple SGI or
    DLX are reasonable models. This may require a team effort and coding
    up about 100 instructions to demonstrate it works is not easy.
    There is some form of superscalar DLX on the WEB. You may want to
    find it and enhance, modify, make user friendly that VHDL.

14. Do an economic analysis and show some interesting trend.
    e.g. processor prices vs speed vs time, scattergram
    Putting together your own system vs buying from IBM, DELL, etc.
    (motherboard, case, processor, memory, CPU, video controller, etc.)
    Show tradeoffs, non linear or jumps in price vs performance.

15. Pick some architecture related subject that interests you.
    e.g. How to cluster old SGI boxes. Problems and solutions.

You should EMail me your project topic with a subject of "611 Project"
to get my opinion if the project is too big or too small at squire

You have to do something, not just write a report on the work of others.
You can "stand on the shoulders of giants so you can see further."

Your report needs to say what you expected, what actually happened,
some analysis or explanation or results.

Detail of Technical Paper

Eight to ten pages long.
Typical title page: Title, author, date, CMSC 611 Project
Typical abstract page: one or two paragraphs, 1/2 page long at most.
Middle pages: Divide into sections, for example:
              Introduction or Background
              Problem Statement or Purpose of Study/Research
              State what you did, can be incremental contribution.
              Results or Conclusions or Findings (yours plus others OK)
              Problems Encountered and/or Roadblocks and how solved
              Credits or Related Research that directly apply.
              Further Work or Open Problems or Suggested Follow on
Last page: References (minimum 3, limit to one page)

Text: computer printed, not hand-written.
Figures and graphs can be hand drawn.
Staple or put in a folder.
Keep a copy for yourself.

This is intended to be an individual effort.
(Keep it narrow, keep it focused, do a good thorough job.)

If I approve a team effort for a larger project, each
members specific contribution must be listed.
(After references or on separate sheet of paper.)
e.g. Who ran benchmark, Who did writing of report,
     Who created program(s) or input data.

Grading: Positive points for following instructions above.
         Negative points for really bad spelling or grammar.

Files to download and other links

Last updated 12/7/00