ECE/CS 757 Project Topic Information


For the 757 course project, you have four options: 1) work alone to write up a comprehensive literature survey of a relevant subtopic in 757; 2) write and evaluate a substantial parallel application in at least 2 different parallel programming environments; 3) implement at logic level some important and relatively complex subsystem of a parallel system; 4) evaluate a new idea or modest extension to prior work, or re-implement and re-evaluate a prior proposal, possibly within the context of new workloads or different simulators. 

You are encouraged to come up with your own ideas, but a list is provided here to help you in case you are stuck.

Requirements:

·         You need to work in teams of 2-4 students to complete options 2-4 (for option 1 you may work alone).  Smaller or larger teams must adjust the scope of their work to match the size of the team.

·         You must submit a written project proposal of up to two pages in class on Friday, March 27, 2009.  The proposal must include the names of all team members, a summary of the proposed topic and a research plan that outlines how you will accomplish your goals. For a hardware implementation project, you must also describe your proposed testbench and validation methodology.

·         Project findings will be presented orally during class time on May 4, 6, and 8, 2009 (the last week of class). 

·         Written project reports that fully document your activities and findings are due at the end of the day on Friday, May 8, 2009. 

·         The project report must also include a statement of work that identifies the contributions of each individual on the team.  This statement of work must reflect a team consensus and must be signed by all team members.  I recommend that you structure this statement as a table with a row for each project milestone, a column for each team member, and the percentage contribution of each team member to each milestone in the entries in the table.

For the first option, you should summarize work in an area, giving extensive references, present opinions of others for and against various options (with references), and conclude with your opinion of the strengths and weaknesses of arguments presented above. You will be graded on the completeness of your survey, the accuracy of your summaries, the support you give for your opinions, and the quality of your presentation. Since a survey paper is "safer" than a research project, I will hold survey papers to a higher standard of completeness and analysis of the literature.

For the second option, you must choose a substantial, nontrivial application that is currently serial/single-threaded (perhaps one from your own research area) and write at least 2 parallel versions of it.  You can choose parallel programming environments from pthreads/openmp (counts as one), MPI, CUDA, MapReduce, vector/SSE, etc.  Your project will be graded on your ability to extract parallelism from your application as well as your ability to identify, explain, and resolve parallelism bottlenecks in your program.

For the third option (hardware implementation), here are some possible suggestions.  Note that you are largely on your own for tool support with hardware projects, so you should probably rely on pre-existing familiarity with simulation and synthesis tools from prior research or coursework (e.g. ECE 551):

·         Design and evaluate a fully-functional interconnection network router with advanced features (e.g. virtual multicast trees, single-cycle routing, express virtual channels, flattened butterfly topology, etc.).

·         Design and evaluate an advanced, high-concurrency cache coherence controller and/or directory coherence controller, including all details of MSHRs, transient states, etc.

·         Design and evaluate an advanced DRAM controller with features like read bypassing and different open-page/closed-page policies.

The fourth option is very open-ended: you can also work on any computer architecture-related research topic pertinent to the course.  Your goal should be to replicate the scope and quality of a typical conference paper in computer architecture.  It is not likely that you will reach this goal during the semester, but you should at least have a good start towards that objective.  The topic need not be original or novel, but that is encouraged.

I prefer that you come up with your own ideas of what you are interested in. Attached are some ideas if you get stuck.

Some Possible Research Topics

·         Contact Prof. Natalie Enright Jerger at University of Toronto for possible projects (enright at eecg.toronto.edu); she has volunteered to steer a research group.

·         Characterize the new PARSEC multicore workloads using performance counters and/or simulation.  These were released by Princeton University and mirror Intel’s internal RMS (recognition, mining, and synthesis) workloads.

·         Investigate the use of update protocols for on-chip multicore cache coherence.

·         Evaluate various alternatives for on-chip, multilevel coherence protocols (writethrough, writeback, coherent vs. noncoherent LLC, etc.).

·         Evaluate various interconnection network topologies for on-chip networks (ring, mesh, torus, flattened butterfly, hypercube, HPCA 2009 papers, etc.).

·         Evaluate interconnection network topologies assuming 3D stacking of chips in future designs.

·         Evaluate, compare, and contrast some shared on-chip cache proposals from the literature (e.g. victim replication, R-NUCA, etc.).

·         Evaluate and invent alternatives to the F (forward) state for providing efficient cache-to-cache transfers for shared lines.

·         Evaluate opportunities for opportunistic caching of shared blocks to minimize off-chip misses.

·         Re-evaluate the in-network snoop ordering (INSO) proposal from Princeton.

·         Reimplement and study any of the techniques described in the assigned readings.