next up previous
Next: Textbook Up: No Title Previous: Organization


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 Digital Alpha instruction set as our main case study, mostly using assembly code generated by the C compilers.
Instruction Set Design.
In addition to Alpha, 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.
Program Optimization.
Understanding the characteristics of the machine, as well as the capabilities and limitations of optimizing compilers, application programmers can often tune their programs to achieve much higher performance. Performing this tuning requires mastery of techniques and tools to profile, measure, and benchmark program performance.
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.

next up previous
Next: Textbook Up: No Title Previous: Organization

Randy Bryant
Tue Jan 13 13:55:42 EST 1998