\documentstyle[class,11pt]{article}
\def\ClassName{Computer~Organization}
\def\ClassNumber{CS~333}
\handedout{(9/13/95) Handout \#6}
\vspace{0.5in}

\begin{center}
\large{\bf Graduate Project Guidelines}
\end{center}
\begin{document}

This handout describes the guidelines for graduate projects.  All
graduate students registering for 1 unit of credit are required to do
a project.  The course has been approved for 3/4 unit credit, so if
you do not wish to do a project (or are an undergraduate), you are not
required to do a project.

{\bf Purpose:} The objective of the project is to allow you to explore
more deeply one of the areas touched on by the course.  The best
projects generally involve two elements -- literature search and some
hands-on experimentation.  By combining these two elements, you will
not only gain some knowledge, but also some intuition and practical
skills as well.

{\bf Groups:} You are encouraged to work in groups of 2 to 4 students.
Group projects allow you to learn group work skills as well as pursue
a larger project.  A group can also allow you to explore an area that
individually you don't have the expertise to deal with, so choose your
groups carefully.  Groups larger than 4 will not be allowed, as it
becomes increasingly difficult to organize and to identify tangible
contributions of the members.

{\bf Proposal:} All projects must be written up in a project proposal.
Get started on this early, as a significant amount of planning will go
into this short document (no more than three pages).  It should include:

\begin{enumerate}
\item Objective of the Project
\item Strategy and Plan for the Project
\item Likely tangible outcome
\item Group members (and Email and phone contact info)
\item Tentative assignment of tasks to group members
\end{enumerate}

The objective should be less than one paragraph.  The strategy and
plan should be as detailed as possible, and include estimates for the
work required for each part.  The tangible outcome could include sets
of measurements, evaluation of relative performance, assessment of
state of the art, etc.  The basic idea is to have a short succinct
outcome that you could state in two or three sentences.  You will not
be held to the tentative assignment of tasks, but the goal is to make
sure that all of the tasks are defined, and a clear assessment of the
effort required has been made.  The project is worth 1/4 of a unit, so
the project size should be account for 1/4 of your total effort in
CS333.

If you would like, you can discuss the project with Prof. Chien
beforehand to ensure the project will be suitable.  Remember, there
are three important criteria for a project.  It must be technically
interesting, feasible, and well-thought out.  It's essential for you
to finish the project, so you can experience all aspects of the process.

{\bf Timeline:}

\begin{itemize}
\item {\bf October 15, 1995} Project Proposals Due, turn in to
Prof. Chien's office.

\item {\bf November 29, 1995} 
Project work should be done, begin writeup.

\item {\bf December 6, 1995} Project writeups done (see format below),
turn in to Prof. Chien's office.
\end{itemize}


(continued on reverse)
\newpage
{\bf Project Writeup Format:}

The project writeup should include the following sections and be no
longer than 20 pages.  In addition, code listings may be attached
(floppy disks preferred). 

\begin{enumerate}
\item Objective of the Project (1/2 page)
\item Actual timeline for the project (1/2 page)
\item Body -- methodology, results, analysis (majority)
\item Group members (and Email and phone contact info) (1/2 page)
\item Actual assignment of tasks to group members (what you each did)
(1/2 page)
\item Perspective -- analysis of what was harder/easier than expected,
and what you learned about how to execute a project and how to
work in a group (1 page)
\end{enumerate}

{\bf Sample Topics: (many others are possible)}

Below are some sample topics.  Most are not yet well defined enough to
be projects, but are examples of the types of topics that are
appropriate.  Don't be discouraged if you feel you know little about
the topic at this point; that's the point of the project.

\begin{itemize}
\item Exploring aggressive ILP techniques: survey and describe the
instruction-level parallelism techniques used by current
microprocessors such as the Pentium, PowerPC 604, HP-Precision, MIPS
R8000, etc.  How do these implementations differ and why?  Based on
this information and a set of kernel benchmarks, evaluate the choices
made by the designers for one platform with a range of compiler
settings (perhaps compilers) and data set sizes.  Can you do better
using assembly language?

\item In the class we discussed ILP hardware techniques, but only
touched on software compilation issues.  Pick two platforms which make
aggressive use of ILP, and first describe the design choices.  Next,
evaluate several compilers for these platforms by using application
kernels and assembly language.  To what degree are the compilers able
to extract the performance of the hardware?

\item Caches and memory systems are an essential contributor to memory
performance; find two configurations of a machine with the same
processor pipeline (and clock rate) and different cache
configurations.  Using several application kernels, explore the design
choices.  Quantify how the cache configurations affect performance.
Can you identify programs / kernels which make the ``cheaper
configuration'' behave better than the ``expensive configuration''?

\item Explore the problem above by obtaining trace collection tools
such as Larus' EEL, and using the dinero cache simulators.  What types
of configurations give the best memory system performance?  Given the
current prices of components (go out and dig this up) and available
processor speeds (and prices), what system design gives the best
cost-performance?  

\item Input/Output is an increasingly important problem in achieving
systems performance.  Identify two current-day machine
implementations, and benchmark their I/O bus performance, then their
disk performance.  Correlate this with the specifications of the
system to produce detailed performance models of the I/O subsystem --
how does the access time vary with data size, seek distance, etc?
What are the bottlenecks in the system?

\item One way to improve the performance of disk subsystems is through
striping or the construction of RAIDs (redundant arrays of independent
disks).  Using a hardware platform with more than a single hard disk
(or several machines), construct a striped file system.  What are the
critical issues in the design of such a system?  How do the tradeoffs
of reliability and performance influence your design?  

\item Explore the impact of technology trends on computer system design.
Based on the semiconductor industry associations projections for
transistor density and speed in processors and DRAM's, explore a
variety of scenarios for possible system organizations (onto chips,
packages).  This will require building some simple simulations and
perhaps partial designs.  Should we build processors in memory?  What
are the limits to the benefits of adding caches on processor chips?
How much instruction level parallelism can we exploit?  Do
multiprocessors on a chip make sense?

\end{itemize}

\end{document}


