Beginning-of-Course Memo by oga20203


									                             Beginning-of-Course Memo
             CS 6354 – Graduate Computer Architecture
                                          Fall 2009

Instructor: Kevin Skadron, skadron(at), Olsson 215
Office hours: Weds 2-3 and by appointment

TA: none

Textbook: Hennessy and Patterson, Computer Architecture: A Quantitative Approach, 4th ed.
Class website: Collab

Course Overview
         The advent of multicore chips – with 4-8 cores on CPU chips and 100s of cores on some
domain-specific chips (e.g. GPUs) – requires everyone in the computer field to change their way
of thinking and understand how the underlying hardware behaves. It is no longer sufficient to
write inefficient, single-threaded code and rely on Moore’s Law to yield faster processors. Most
speed growth will now come from parallelism that takes advantage of increasing numbers of
cores per chip. However, these cores may or may not be similar to today’s single-core processors.
Multicore is truly a revolution in the computer industry, possibly rivaling the impact of the PC’s
arrival 25 years ago.
         To help prepare you as computer scientists for this new era (and prepare you for Ph.D.
quals), we will study some necessary single-core concepts, such as out-of-order execution and
multithreading, and then move on to the fundamentals of parallel architecture, such as
synchronization, coherence, consistency, SIMD organizations, and interconnect topology. We
will look both at hardware concepts and devote considerable attention to their implications for
software. Programming projects will be a major component of the course. There will also be a
major research project.

Specific Objectives
   1. Ability to describe the operation, purpose, and implementation of the main
        microarchitectural features in cutting edge processor cores
   2. Ability to describe the rationale for and implications of multicore organizations for
        hardware and software
   3. Ability to describe the operation, purpose, and implementation of common architectural
        features supporting parallel execution, as well as their software implications
   4. Ability to describe how the architectural concepts examined in this course are deployed
        in state-of-the-art products
   5. Ability to write short parallel programs that take advantage of the architectural features
        examined in this course
   6. Ability to design, carry out, and communicate the results of a small research project on a
        topic related to computer architecture.


The bulk of the course grade will be based on assignments, programming projects, a final
research project, and a final exam. Assignments will be a mix of “pencil and paper” and

                                           pg. 1 of 2
programming assignments. The former are intended primarily as diagnostics for the conceptual
material. The latter are intended to give “hands-on” experience working with the architectural
concepts being discussed in lecture. In order to further understand how the various concepts fit
together in real products, everyone will give at least one in-class presentation describing the
architecture of a recent chip and analyzing its architectural choices. Attendance at these
presentations is mandatory! In-class participation is also expected from everyone. An
approximate grade breakdown follows, but I reserve the right to adjust this as the course evolves:

       45% assignments
       10% in-class presentations
       25% final research project
       20% final exam

The quality of the writing in your reports will be an important part of your grade. This includes
your ability to clearly and concisely communicate the main ideas as well as more technical
aspects of grammar.

Honor Policy
        Except for tests and quizzes, you are encouraged to discuss assignments with your
classmates. This discussion, however, should be limited to ideas and perhaps sketching the shape
of a solution. Your solution must be written on your own and cannot be copied. Reading other
people’s solutions is not allowed.
        Many assignments in this course will be done in groups. By putting your name on such
an assignment, you represent that you have done a fair share of the work.
        If, in my judgment, it is beyond a reasonable doubt that a student has committed an honor
violation with regard to a given exam, that student will receive an immediate grade of 'F' for that
assignment, irrespective of any subsequent Honor action. In the unlikely event that one of you
observes an incidence of cheating, I hope that you will contact me or an Honor Advisor.
        If you have any questions or concerns, please ask before a problem comes up.

Other Policies
        • Late assignments – penalized 10% per day
        • End-of-semester course evaluations: at the request of the dean, filling out course
evaluations is required.

General Philosophy:
         By this stage of your education, I expect you to show a lot of autonomy. This applies in
class (asking questions, looking up stuff on your own) and in projects (learning new languages,
APIs, tools, etc. on your own). This doesn't mean you need to have all the answers, and you are
welcome to ask questions; it’s important to try to figure things out on your own as much as
possible, but knowing when to get help is also part of being self-sufficient. The goal of this
philosophy isn’t to save work for myself, but rather to prepare you for your career! Most of you
are preparing to become independent researchers or technical leaders. Your advisor (and
eventually employer) will expect you to be self-directed and show a lot of initiative. They will
also expect you to be able to tackle MUCH harder, larger, more open-ended projects than you
encounter here, to work with a large body of code written by someone else, to digest the code on
your own, to learn new languages and tools on your own, and do a lot of background research
before asking for help. Indeed, in interviews you will see that they expect you to have
demonstrated this already as a student: self-sufficiency is one of the main attributes interviewers
look for.

                                            pg. 2 of 2

To top