Computer Organization/Architecture II (CS 355)

Instructor: S. Y. Cheung
Office: North Decatur Bldg 140
Telephone: 404-727-3823
Office Hours: MWF 3-4 PM
Text: Structured Computer Organization
by Andrew S. Tanenbaum.


This is the second course in computer organization and architecture. The course has as pre-requisite CS255 and students must have working knowledge of the von Neumann computer architecture and programming in the M68000 and the SPARC assembly language. There is not much assembler programming in this course, but you will need to know what some instructions do to follow the course material.

Course Description and Objective

The course starts by studying the building blocks of the computer at the ``logical gate'' level and build several higher level components with these gates, including multiplexor, decoder, adder and registers (memory). The operational characteristics of these higher level components will be fully exposed at the gate level. We will then discuss the structure of the CPU and the memory, and show you how they can be built using these higher level components. In the course, you will build a ``simulated'' computer using these components in the project. (Those who are interested in actually building a computer with real circuits should to take Phys 234.)

After examining the CPU and memory structures, we will discuss the micro programming level, where micro programs are used to implement more complex machine instructions using simpler instructions (much like a subroutine call). After this, we will examine the communication between the different parts of the computer: how do the CPU, memory and I/O devices communicate ? We will examine the use of address, data and control buses and study ``bus protocols''. We will learn about the two types of buses: synchronous and asynchronous, and we will see that the CPU uses different communication methods for communicating with the memory and an I/O device due to difference in speed. This will lead us into study programmed I/O and interrupt I/O. The above constitute the core material in CS355. The remainder of the course will discuss advance techniques in computer architecture -- these techniques are the ``bells and whistles'' added to the computer to make it run faster. Topics covered include pipelining, register windows, cache memory, virtual memory, and if time allows: multiprocessors.

Grading in CS355

Class Policy

Statement of Policy on Computer Assignments

Students will be graded partially on the basis of their programming assignments. These programming assignments are to be treated as examinations, and are expected to be your individual work. While discussions with other students in the course may be permitted or encouraged by your instructor, you should write your program yourself. The mathlab representatives are available to explain error messages, discuss briefly technical details with which you may not be familiar, and give short suggestions as to how you might detect logic errors. The reps should not, however be asked to write part or all of your program. Your instructor (and any teaching assistants assigned to the course) will be glad to help you to the extent that he or she feels reasonable.

Submissions based on other students solutions in prior offerings of the course specifically violate these guidelines, as do submissions prepared with the help of an outside "tutor".

You should take precautions to protect the confidentiality of your work: preserve the secrecy of your password, do not make files or directories sharable, pick up your printouts promptly and dispose of printouts where they will not tempt other students. All work should be done either in the class directory of your ITD account (preferred) or in your "priv" directory (only if you do not have a class directory).

All submissions should include a comment statement near the top of the program of the form:


Cases of apparent plagiarism or collusion will be referred to the Honor Council.