Beginning-of-Course Memo CS 6354 – Graduate Computer Architecture Fall 2009 Instructor: Kevin Skadron, skadron(at)cs.virginia.edu, 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. Evaluation 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