BU/CLA CS-450

Computer Architecture


Overview:

The performance of computing systems is dramatically influenced by how well software designers understand the basic hardware techniques at work in the system. Similarly, hardware designers must clearly understand the effects of their work on software applications. Our emphasis by the end of this course is to undertand the relationship between hardware and software and to focus on the concepts that are the basis for modern computers. But, to be able to reach that goal, we must first understand what goes into a computer's architecture!

Computers are built as a hierarchy of ``interpretation and control'' abstractions. At the bottom, we start with circuit design, and we proceed to logical design, datapath, control unit and I/O design, instruction set design, compiler, operating system, and applictaions. Computer Architecture, the subject of this course, refers to the coordination of these various levels of abstractions---How to get them all to work together to achieve the best performance.

In the first part of this course, we will start with the basics: how to implement the computer's building blocks using the most basic electronic components, namely transistors and capacitors. Next, we will understand how VLSI technology can integrate our building blocks efficiently. In that respect, we will go through the design of a simple computer by putting together its datapath (ALU, registers, and buses), and its control unit.

In the second part of this course, we will move up in the hierarchy of ``interpretation and control'' abstractions and examine the aspects that go into the design of a computer's instruction set. In that regard, we will contrast (with the help of case studies) the two predominant philosophies in instruction set design, RISC and CISC, and we will understand the impact of such designs on compiler and operating system.

In the third part of this course, we will look at various optimization techniques that could improve the performance of our simple computer. This includes pipelining, caching, and multiprocessing. Also, we will examine networking technologies, including the TCP/IP stack, which enable the construction of networked distributed computing systems.

At the end of this course---and if the experience of other students who took this course before is any indication---your outlook on computers and how they work will change once and for all because you will be able to understand what really happens when your computer executes that simple C program of yours! I hope you enjoy taking this class as much as I enjoy teaching it.


Created on: August 12, 1996.
Updated on: August 25, 1996. 
Maintainer: Azer Bestavros
            best@cs.bu.edu