CS 654 — Computer Architecture
This graduate-level course in computer architecture will focus primarily on processor architecture: instruction sets, pipelining, instruction-level parallelism, superscalar organizations, memory hierarchies, etc. Toward the end of the course we will also briefly explore issues in input/output (I/O) and multiprocessors.
Assignments will consist of a mixture of simulation and hand-written exercises. The simulation exercises will involve the development of simulated models for some of the concepts we study in class, and will be based on the SimpleScalar toolkit. The initial learning curve for SimpleScalar is steep, but ultimately the experience of building models provides more insight than pencil-and-paper exercises.
|Instructor:||Kevin Skadron (Olsson 215)||
|Teaching assistants:||Qiuhua Cao||
Computer Architecture: A Quantitative Approach, 3rd ed., by Hennessy and Patterson. The 3rd edition contains many changes, so please don't use prior editions.
Note that we cannot possibly read a 1000-pg. book, and the tests will follow what I cover in class unless I state otherwise. However, note that I will not cover Chs. 1 and 2, but that material will be on the first exam.
The main class web page is at http://www.cs.virginia.edu/~skadron/cs654, but some functionality is provided by the ITC toolkit web services, like a class email address and log, anonymous feedback facility, etc. These links are provided on the main class web page, but you need to obtain a student ITC toolkit account to access them.
For one-on-one questions to the TAs or me, send us email directly. For email you want all three of us to see, use cs654@cs and CC me. For email you want the whole class to see, use CS654-1(at)toolkit.virginia.edu. Please use this class-wide email list very judiciously, eg for questions you think many students would want to see. If people start objecting they are getting too much email from that list, I will need to turn it off.
Important: assignments and other important announcements will be made on this class-wide list. Be sure you are receiving email from this list and not filtering it out. Failing to notice an email will not be an excuse!
There will be one or two semester exams (exact dates TBD) and a final exam.
There will be frequent assignments in this course. Some will involve problems from the text and some will involve using simulation to demonstrate various ideas from class.
It is important to understand that assignments are primarily to help you to learn the material, not to assess your performance. We all learn more by doing than listening and we learn more from our mistakes than our successes. You should strive to do the assignments carefully and completely, and to seek assistance with any aspect of an assignment with which you have difficulty. If an error is noted on a graded assignment, do your best to ensure that you understand the material—you might see that material again on a test!
All programming assignments must be done in C unless assembly language or some other language is specified. The executable version of your program must compile and run on a Department Sun-Unix machine with gcc, because grading will be based on the execution of a set of pre-prepared test cases. Indent your source text, use liberal comments, and make the code readable. Include the pledge on your assignments. Points will be deducted if you fail to do so. You are encouraged to use Emacs as your programming and debugging environment to simplify our ability to answer programming-related questions. Also, you are expected to exhibit common courtesy for your 654 computing tasks. Long simulations should be run only on the compute servers and should be niced to at least a value of 4. In fact--except for editing, compiling, debugging, and very short simulations that should be done on the interactive servers (cobra, mamba, and adder)--you should primarily use the LAVA Sun machines which will be available for class use.
No assignments will be accepted after the due date, period. Late assignments in a class this large make for too much chaos.
The programming projects will be done in teams of two people. You are free to collaborate to the fullest extent with your partner. You are also free to discuss ideas and techniques with other teams, but copying code is prohibited and will be treated as an honor violation. I have no objection to your helping fellow students in this class with syntax errors and similar minor technical points about the use of the computers.
The written exercises will be done with the same teams. Both team members are expected to participate in and understand the solution of each and every problem, and you must sign a pledge to this effect. As with programming projects, you are free to discuss ideas and techniques with other teams, but copying solutions is prohibited and will be treated as an honor violation.
For written work, please staple your assignment solutions in the upper left corner, use regular 8.5" x 11" paper; and write on only one side of the paper. Please make sure the solutions you hand in are legible. Also, please print your names in ALL CAPITALS in the upper right hand side of the cover sheet of the work you hand in and remember to include the honor pledge. For programs, create a directory, cs654/, and put each programming assignment in an appropriate subdirectory along with all supporting material. Include a README file that explains what each file represents along with any other explanatory information you deem appropriate and your pledge. Note that in some cases we will expect you to use specific file names to automate our grading. Send e-mail to the cs654@cs account indicating that you have completed your assignment and where it can be found. Please do not send your material as attachements; a pointer suffices. Do not modify anything after the due date, as we will check time stamps. Programs must compile with gcc and execute on the department's Sun machines.
Our class this year is small enough that we can have effective in-class discussion, and indeed I plan to call on people regularly. Enthusiastic participation will be rewarded in the final grade!
Your grade for this course will be determined according to the following
grading scale. Note that the weights for the final grading scale
could vary by 10-15 percentage points from what is stated below.
|Midterm examinations (depending on number of exams):||40%|
Pledge and Honor Matters
I have no objection to your helping fellow students in this class with syntax errors and similar minor technical points about the use of the computers. It is important, also, to discuss techniques, algorithms, problems, ideas, etc. with your colleagues. As mentioned above, you are free to collaborate to the fullest extent with your partner. You are also free to discuss ideas and techniques with other teams, but copying code or solutions is prohibited and will be treated as an honor violation. The use of any fraudulent data is also a serious ethical breach and will be treated as an honor violation.
Now that we have all the tedious rules out of the way, welcome to what
I consider one of the most exciting, fun, and important areas of computer
science and engineering! I hope that you find this material as interesting
as I do, and I will do my best to help you see why I find it so interesting
and what some of the exciting new problems are.