UMBC CSEE logo

CMSC 411 - Computer Architecture
(Spring 2005)


"If you build computers there's no doubt you're an engineer, but if you try to understand software people think you're doing something else entirely. But there's no difference; if I can do it in software I can do it in hardware - the software is just a (huge) convenience (think of a Turing machine, or putting your favourite algorthm onto dedicated logic)."

Course Description & General Information

Course Description
This course will study the design of complex computer systems. All parts of a computer system as covered. We will start off with a discussion of computer performance and measurement, instruction set architectures and computer arithmetic. We will discuss the basic control unit of a computer and the design of system datapaths. We will discuss pipelining, the most important topic in CPU design today. Finally, we will move to memory hierarchy and cache design and performance, input/output devices and signalling, and buses. We will finish the course with a brief discussion of multiprocessor systems.

Throughout this course, we will focus on design and "real-world" applications and implementations of the topics we discuss. Each major topic area will include case studies of how mainstream microprocessors implement the technologies discussed - typically this will include the Intel x86/IA-32 architecture and the PowerPC architecture. Combined with the heavy use of MIPS-based architectures throughtout the course material, CMSC 411 will provide a solid background on many different types of modern microprocessor implementations. This course will make heavy use of computer-aided design using the VHDL hardware description language. Multiple projects will involve the design of major components and testing of a computer system. As almost all major hardware design is performed using computer-aided techniques and HDLs, this will allow you to see how modern hardware design is done and gain experiences doing just that.

This course is alot of work. However, if you come wanting to learn how modern computer systems work and how hardware is designed and built, and are willing to do the necessary work, you will succeed.

Prerequisites: CMSC211 and CMSC311, or CMPE310 and CMPE 312, or CMSC 313. I assume you have a good understanding of basic digital design and assembly language.

Instructor:Jeffrey A. Six
Office:219 ITE Buliding
Office Hours:Tu/Th, 4.30p - 5.30p (right before class)
Electronic Mailjeffsix@udel.edu
Web:http://www.eecis.udel.edu/~six

Please be aware that I live and work in the Washington, DC area and am normally on campus only on Tuesday and Thursday afternoons and evenings. As such, the best (and sometimes only) way to get in contact with me for questions and/or concerns is via electronic mail. I make a very conscious effort to respond to email within 24 hours of receieving it.

Teaching Assistant:Don Dimitroff
Office:349 ITE Building
Office Hours:Tu/Th, 3.00p - 4.30p
Electronic Maildondim1@umbc.edu

Textbooks:
Computer Organization and Design, 2nd Edition The Designer's Guide to VHDL, 2nd Edition

  1. Computer Organization and Design, Third Edition;
    Patterson & Hennessy; Morgan Kaufmann Publishers, Inc.
  2. The Designer's Guide to VHDL, Second Edition;
    Ashenden; Morgan Kaufmann Publishers, Inc. ISBN 1-55860-674-2

Course Requirements and Grading

Problem Sets40%
Course Project20%
Midterm Exam20%
Final Exam20%

Problem Sets - Problems will be assigned throughout the semester, one set per major topic. This is intended to allow you some experience working with all of the major topics we will discuss. These problems will typically be a mix of design and analysis exercises; some will be pencil-and-paper based and some will be design oriented using VHDL and the simulation software we will use throughout the course. Each problem set will be equally weighted with respect to your course grade. Problem sets are always due on the Thursday class of whatever week they are due.

Extra Credit Problem Sets - Throughout the semester, there will be a couple problem sets assigned that will be designaed as extra credit. These assignments are completely optional - they will consist of problems that are typically more difficult than the normal assignments and will also focus on topics that are related to the course material but not directly. These assignments are designed to increase the breadth of your understanding - if you successfully complete these problem sets, your understanding of modern computer architecture will be substantially increased; therefore, I encourage everyone to attempt these problems.

Course Project - This course has a major design project. This project must be done by teams of students (minimum of two, maximum of four). This project intended to give you some experience with making design decisions and implementing a major piece of hardware using computer-aided design and VHDL. I will provide you with VHDL code for a complete model of a piece of hardware and each team will be responsible for modifying the code to implement new functionality. More details about the project will be provided.

Midterm Exam - The midterm exam will be given approximately half way through the semester. It will cover all of the topics that are covered before the review session/class. The midterm exam will be a mix of analysis and design problems, similar in form to the homework assignments (but more difficult).

Final Exam - The final exam will be given during the scheduled final exam session at the end of the semester. This exam will focus on the material covered after the midterm exam. While there will not be any questions specifically targeting the material covered in the first half of the semester, you will see that everything in the field of computer architecture builds upon other material - it is impossible to truly seperate the first half of this course from the second. You will need to have a comprehensive understanding of all of the material covered in this course.


Course Policies

Late Submission of Assignments - Everyone should try their best to submit allassignments on their due dates. However, there are various circumstances that may prevent a student from completing an assignment on time. Therefore, late assignments will be accepted late, up to two class periods late. If an assignment is turned in one class period late, the grade will suffer a 20% penalty. If an assignment is turned in two class periods late, the grade will suffer a 50% penalty. No assignment is to be left in the mailbox of the instructor or the TA. You may only hand in assignments in class. No assignments will be accepted more than two class periods late.

Assignment Submitted OnPenalty
On the Due DateNo Penalty
The Next Class Period20% Penalty
Two Class Periods Late50% Penalty
More than Two Class Periods LateNot Accepted

Grading Errors - Sometimes, mistakes do occur in the grading of assignments. After a graded assignment has been returned, you have one week to submit a request to have it regraded. This request must be in writing and include the original assignment, as well as a brief description of your dispute with the grade. Such a request should be submitted directly to the TA, during office hours or left in the TA's mailbox. After one week, no requests for assignment regrading will be considered. If the situation cannot be resolved after discussion with the TA, please come and talk to the instructor about it.

Academic Honesty - By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory.

When working on an assignment, you may consult with the instructor, the TA, classmates, friends, or anyone else you wish. You may discuss in general terms the approach to solving a problem. However, all of the actual work, be that analysis or design, must be your own. Specifically, you may not (1) copy or allow another student to copy another student's assignment and submit it, or any part of it, as your own, (2) work together on an assignment, sharing work, calculations, files, and so forth, and submit copies as the assignment as individual work, (3) edit a capture file (for instance, modifying a file that shows your design running to show it producing correct results when it does not in fact, do so), or (4) anything else along these lines. Any evidence of performing any form of academic dishonesty will be grounds for a grade of F to be recorded for the course. If you are in doubt whether or not a certain behavior is permitted, please ask the instructor beforehand!


Valid XHTML 1.1! CMSC411 index.html - Document version 1.0 - Last updated for 05S
This page created and maintained by Jeffrey A. Six.