CS 201 Computer Architecture Section 001 - Winter 2000

Andrew Tolmach
email: apt@cs.pdx.edu
Office Hours: MW 4-5:30 & by appt.

Course home page: http://www.cs.pdx.edu/~apt/cs201


This course provides a basic introduction to computer architecture from the perspective of a computer scientist. The emphasis is on understanding the multi-layered organization of a computer system. Key topics include comparative study of instruction set architecture, fundamentals of ALU and processor implementation, the memory hierarchy, IO systems, and parallelism. Practical lab work will focus on the SPARC RISC architecture.


Formal prerequisites are CS162 and CS200. You'll need the following skills and knowledge:


The required textbook is Andrew Tanenbaum, ``Structured Computer Organization,'' 4th edition, Prentice Hall, 1999. Additional readings from other sources will be made available on the course web page from time to time.

You will also want to use the ``SPARC Assembly Language Reference Manual,'' which is available on the web (in html or pdf) at http://docs.sun.com/ab2/coll.45.10/SPARC/ or locally (in postscript) on the course home page.

Lecture notes will be available electronically in postscript format via the course home page. (To read or print postscript under Windows, you can use the ghostview previewing program, available from http://www.cs.wisc.edu/~ghost/) Notes will normally be available shortly before or after the lecture.


Homeworks 10%
Labs 30%
Midterm 25%
Final 35%

Class attendance is not required, but is strongly recommended as the best guide to the material that will appear on the exams.


There will be one mid-term and a final exam. Both are closed-book, but ``cheat sheets'' will be permitted. Exams will cover topics from lectures and readings. Not all the material is covered in the readings, so attention to the lecture material is important. The final will be cumulative over the entire term, but will emphasize material presented after the midterm. Exams are scheduled in advance; unless prior arrangements are made, a grade of zero will be recorded for missed exams.


There will be four lab assignments involving practical programming exercises using the Sun SPARC architecture and the Solaris operating system, as found on the CS department's Sun network. You should have been given an account on the CS machines automatically by virtue of registering for this course; to obtain your password, take your id to the PCAT lab. Any files associated with assignments will be available from the course web page.

In some cases, you may be able to develop some or all of your lab solutions on some different machine, e.g., a home PC, but the code you hand in must work using the CS department's SPARC machines and tools. Thus, you may be seriously handicapped by not using the CS department machines to do them in the first place.

Labs should be submitted by mailing a ``bundle'' containing the relevant files to cs201-1acc@cs.pdx.edu. Bundles can be created by the Unix shar command, which combines the files given by its arguments into a single shell script that, when run, recreates the files. For example, you could submit the files foo.s and bar.c as follows:
\begin{code}shar foo.s bar.c \vert mail cs201-1acc\end{code}
Do not send mail other than program submissions to cs201-1acc, as it is not regularly read.


There will be weekly homework assignments, to be turned in on paper. Note that these assignments are primarily for your benefit in learning the material and preparing for the exams; they don't count for much of your grade.

Mailing List

Important information will be distributed throughout the term via a Majordomo mailing list called cs201-1list. You can subscribe to this list by sending a mail message to majordomo@cs.pdx.edu with no subject line and a message body consisting of the single line
\begin{code}subscribe cs201-1list\end{code}
Please mail questions to the instructor directly (at apt) rather than to this list; the instructor will copy mail of general interest to the list.


All dates, including assignment deadlines, are tentative and subject to change.

Date Assignment Due Reading Topics
Jan 5   1,2.1 Introduction; Layered Computer Organization; Processors
  10   7.1,7.3-4; SPARC SPARC ISA; Assembler ; Linking/Loading; C Interfacing
  12   5.1 Comparative ISA design: Overview
  17     Martin Luther King, Jr. Holiday - no class
  19 HW1;HW2 5.2 Comparative ISA Design: Types and Encodings
  24 Lab1 5.3-5 Comparative ISA Design: Types, Addressing, Instructions
  26 HW3 5.6-8 Comparative ISA design: Control Flow
  31   2.4; 3.4; 3.7 I/O: Devices, Buses, and Programming
Feb 2 Lab2;HW4 4.1 Microarchitecture Basics
  7     Midterm Exam
  9 HW5 3.2, 3.4 Logic Circuit Review; ALU Basics
  14   ARITH Computer Arithmetic; Floating Point
  16 HW6 4.2-3 ISA Implementation
  21   4.4 Microarchitecture Design
  23 Lab3;HW7 2.2, 3.3, 4.5.1 Memory Hierarchy; Primary Memory Design; Caches
  28   2.3, 6.1 Secondary Memory; Virtual Memory
Mar 1 HW8 4.5.2-4,4.6 Other Microarchitecture Optimizations
  6   6.2,6.4 Operating System Essentials
  8 Lab4;HW9 8.1 Parallel Architectures
  13     Final Exam (starting at 7:30 pm)

Key: All readings specified as numbers are sections from the Tanenbaum textbook; for example ``7.1;7.3-4'' means sections 1,3, and 4 from Tanenbaum Chapter 7. SPARC and ARITH are extra readings that will be made available on the course web page.

Additional readings may be assigned from time to time. Assigned selections should be read before the associated date.


All homeworks are due in class, at the beginning of class, on the specified due date. All labs are due by email by 6 p.m. on the specified due date, i.e., just before class. Late homeworks and labs are not accepted except in extraordinary circumstances, and then preferably by prior arrangement.

All homeworks and labs must represent your own, individual work. It is permissible to discuss the assignments with other students, but when you come to writing up the homework solutions or typing in and debugging the lab programs, you must work on your own. Do not, under any circumstances, copy another person's program and submit it as your own. Writing code for use by another or using another's code in any form (even with their permission) will be considered cheating, the penalties for which are described in detail in the CS Department's booklet Undergraduate Programs 1999-2000. In particular, cheating will result in an automatic F for the assignment in question, and a letter to your departmental file.

Andrew P. Tolmach