CS/ECE 347, Spring, 1997
Course Information

Organization

Instructors:

tex2html_wrap224 tex2html_wrap226

Teaching Assistants:

tex2html_wrap228 tex2html_wrap230 tex2html_wrap232

Secretary:
Joan Maddamma
7121 Wean Hall
x8-7656
Joan.Maddamma@cs.cmu.edu

tex2html_wrap234 tex2html_wrap236

Objectives

CS 347 presents the principles, characteristics, and trends of computer systems design at a level appropriate for all computer scientists and computer engineers. It expands on the role of a traditional computer architecture course, focussing largely on the hardware design, to include aspects of the complete system, comprising the hardware, operating system, compilers, and application software.

Our intention is to present material that will benefit all computer scientists, even those who are more concerned with software development than with hardware design. By learning more about what is inside ``the box,'' software developers can make more effective use of computers, often achieving dramatic performance gains.

Students will also gain an understanding of the hardware technology that has fueled the rapid progress of computer systems. Since the technology will continue to change and improve, it is important to see how these changes will affect the characteristics of future computer systems.

After completing the course, students should have gained a firm grounding in the following:

Machine-level programming.
With the advent of optimizing compilers, there is seldom need to write large amounts of assembly code. On the other hand, it is important to be able to understand the code generated by these compilers, and to write small sections of code. We will use the MIPS instruction set as our main case study, mostly using assembly code generated by the Gnu C compiler GCC.
Instruction Set Design.
In addition to MIPS, we will study the general characteristics of other instruction sets, including the Intel x86 and the IBM PowerPC.
Pipeline Processor Implementation.
Modern processors are designed to execute instructions in a pipelined, and possibly superscalar fashion. The characteristics of these pipelines and the code scheduling capabilities of an optimizing compiler can greatly affect the performance the processor achieves.
Memory Subsystem.
The combination of primary memory, caches, and virtual memory are intended to provide the illusion of high speed access to a large memory space. Understanding how this subsystem operates is critical to efficiently implementing applications with high memory requirements.
I/O and Storage Subsystem.
With the advent of multimedia applications, we are seeing stringent, real-time requirements placed on the various I/O and display devices, as well as the busses connecting them to the CPU. Understanding the organization and performance characteristics of this subsystem is therefore critical to current and future software developers.
Parallel Computing.
Increasing application performance by using resources operating in parallel has been attempted in a number of different ways for nearly 50 years. Although the track record for these efforts is mixed, there are many indications that parallelism will play a increasingly critical role as the technology and the techniques for exploiting it mature.

Textbook

J. L. Hennessy, and D. Patterson, Computer Organization and Design : The Hardware Software Interface, Morgan Kaufmann, 1994.

Course Requirements

Your participation in the course will involve five forms of activity:

  1. Attending the lectures.

  2. Participating in the recitations.

  3. Homework and laboratory assignments.

  4. Reading the text and supplementary handouts.

  5. Exams

Attendance will not be taken at the lectures or recitation sections. You will be considered responsible for all material presented at the lectures, much of which is not covered to the same depth in the textbook. In addition, you will find the recitations useful for better understanding the course material, the assignments, and the exam coverage.

There will be two types of assignments in this class. Homework assignments will involve solving problems with paper and pencil, and possibly writing and executing small programs. They are intended to reinforce the material covered in the lectures. Laboratory assignments will be multi-week efforts providing in-depth understanding of some aspect of computer system design. They will involve some combination of C and assembly programming, as well as performance measurements. For both types of assignments, you will be allowed to work in groups of up to 3 people. Each group will turn in a single report, identifying the group members. We will let you form and regulate your own groups. You are free to work on your own as well.

The textbook covers much of the material taught in the course. In the schedule shown in this document, you will see the reading assignments associated with each section of the course. It would be a good idea to read over each of these assignments twice--a brief reading before the lecture to become familiar with the basic concepts, and a more thorough reading later to understand the details.

Policies

Handing in Assignments

All assignments are due at 3:00 pm on the specified due date. Late assignments will be accepted only if you have arranged for an extension in advance. Such arrangements can be made by contacting one of the instructors, but you should have a good reason for doing so. It is your responsibility to get your assignments done on time. Be sure to work far enough in advance to avoid unexpected problems, such as illness, unreliable or overloaded computer systems, etc.

Final Grade Assignment

Each student will receive a numeric score for the course, based on a weighted average of the following:

Assignments.
The assignments will count a combined total of 50% of your score. The exact weighting of the different assignments will be determined near the end of the course based on our perception of the relative effort required. In any case, each homework will count 3-5%, while each lab will count 8-12% of your score. Since small differences in scores can make the difference between two letter grades, you'll want to make a serious effort on each assignment.
Exams.
There will be two in-class exams, each counting 12.5%, plus a final counting 25%.

Grades for the course will be determined by a curve. The total score will be plotted as a histogram, and then approximate cutoff points for the different letter grades will be determined. Individual cases, especially those near the cutoff points may be adjusted upward or downward based on factors such as attendance, class participation, and special circumstances.

Cheating

All of your assignments allow collaboration, but only with members of your project group. Each assignment must be the sole work of the group turning it in. Assignments will be closely monitored, and students may be asked to explain any suspicious similarities. The following are guidelines on what collaboration outside of your group is authorized and what is not:

Not Cheating:

Cheating:

Be sure to store your work in protected directories.

The penalty for cheating will depend on the severity of the offense and the student's past record in this regard. At the very least the student will be given a score of 0 for the assignment.

Class Schedule

Table 1 shows a tentative schedule for the class. The notation ``Hi'' indicates a homework assignment, while ``Li'' indicates a lab. Any changes will be announced on the class news group. An updated schedule will be maintained on the class WWW pages.

   table75
Table 1: Tentative Course Schedule

Facilities

MIPS Processors

Some of the assignments will require generating and examining assembly code for a MIPS processor. The various DECStations around campus are based on the MIPS architecture. These machines are fast disappearing, but there are still some server machines (unix1.andrew, etc.) with MIPS processors. In addition, the Silicon Graphics workstations on the 5th floor of Wean Hall use MIPS processors.

Electronic Communication

We will use the World-Wide Web (WWW) as the central repository for all information about the class. You can reach this page via the link labeled ``course, lecture, and seminar home pages'' from the CS home page. The complete URL is:

   http://www.cs.cmu.edu/afs/cs/academic/class/15347-s97/www/home.html
Using the Web, you can:

For urgent communication with the teaching staff, it is best to send electronic mail (preferred) or to phone. We have also set up a news group for this class, cmu.cs.class.cs347. This group will be used by members of the teaching staff to post announcements and clarifications. You may also post to this group to make queries.

About this document ...

This document was generated using the LaTeX2HTML translator Version .95.3 (Nov 17 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -no_navigation -split 0 -no_subdir -reuse info.tex.

The translation was initiated by Dave O'Hallaron on Mon Jan 13 22:46:17 EST 1997


Dave O'Hallaron
Mon Jan 13 22:46:17 EST 1997