Architecture Research Project (Project 2)
CS 441, Dr. Lawlor
A substantial chunk of your course grade comes from the two semester
projects.
PROJ2: a software development or hardware performance analysis project, due
in December.
Here's what's left of the semester:
November 2011
Su Mo Tu We Th Fr Sa
20 21 22 23 24 25 26 <- topic due in class (and thanksgiving break)
27 28 29 30
December 2011
Su Mo Tu We Th Fr Sa
1 2 3 <- rough draft due
4 5 6 7 8 9 10 <- presentations
11 12 13 14 15 16 17 <- project final draft (and final exam)
Please have your project topic (see list below) picked out by class on Tuesday, November 22. You don't need to write anything up, but you should
be ready to give a useful two-minute synopsis of the topic.
Your rough draft is due Thursday, December 1. This should work, but need not have all the features you want, or be polished well.
We'll do the presentations
on Thursday, December 8. There
are seven people in
class, and 90 minutes, so that's about 12 minutes per
person. You should prepare about 10 minutes of interesting,
informative content, which leaves 2 minutes for questions and to change
speakers. PowerPoint is NOT required, but you MUST have
a clear idea of what you will present AND some sort of
examples/illustrations/code/graphs.
Your final draft is due Thursday, December 15 before midnight. Everything should work and be well polished: documentation also counts!
Possible Project Topics
Or choose your own topic! Topics should be something applied: write and analyze real code to do something interesting.
- Build an interesting circuit: extend your HW1 CPU, build a superscalar dependency detection unit, etc.
- Define a new instruction set, with a software or circuit simulator.
- Write and benchmark some architecture-specific code to perform any interesting task:
- Use bitwise operations to do something simple faster, or do something simple in a fiendishly complex way.
- Use assembly language or your knowledge of branch prediction, caching, etc to improve the performance of some program.
- Write a dynamic binary translator for any architecture.
- Use SSE or AVX instructions to speed up some code with the power of SIMD.
- Use OpenMP or pthreads to speed up some code with the power of multicore.
- Using MPI or sockets to speed up code with the power of clustering.
- Use CUDA or OpenCL to speed up some code with the power of the GPU.