We focus in this course on the basic principles, current practice, and issues in computer architecture and organization. At the end of the course you will have a good understanding of how a computing system is organized, as well as why it is organized this way. We emphasize the relation between the hardware and the software that runs on it, so that you will also have a good intuitive understanding of how application behaviour influence computer organization and design. The covered topics typically include (but are not limited to): instruction set design, microprogrammed versus hardwired processors, pipelining and superscalar processors, memory organization (cache, primary, virtual), I/O and interrupts, multiprocessors. We often present comparative, critical, and quantitative analyses of various systems that exist nowadays.
In other words, we shall explore at the hardware level the way a computing system works, why it performs what it does, and what are the issues that need to be addressed in designing a computer. Since the very life of a computer consists in the programs that use it, it is futile to discuss the bare metal in isolation from the software that run on it. Thus, we shall always keep in mind the relation between hardware (which we study here) and the software that uses it.
We focus on the most important components on a modern, high performance computing system, namely the processor and the memory. With respect to the former, our main interest is what you instructor believes is the most effective architecture existing to date, the reduced set instruction computer (RISC). We also investigate the language understood by the processor and why such a language looks as ti does. State of the art techniques--such as pipelining, superscalar processors, or multiprocessor systems--shall be considered in due course. Finally, we consider the interface of the processor(s) and memory with peripheral components.
At the end of the course, you will know what software wants from the bare computing system, what are the concepts that one can use while designing such a system, what are the strengths and the weaknesses of each of them. In other words, you should have all the knowledge you need in order to lead a team and design the greatest computer of them all (marketing not included).
Here is a rough timing:
|What is this course about; historical perspective; the role of performance, measuring performance.|
|Note. No Monday lecture in week 1.|
|The language of the machine, designing an instruction set; ALU (arithmetic algorithms, design considerations); datapath and control, hardwired versus microprogrammed control, enhancing performance (pipelining, superscalar processors).|
|RAMs and ROMs, cache, virtual memory|
|Types, characteristics, brief description of I/O devices; connecting I/O devices to processor and memory: busses, interrupts, DMA; disks and filesystems.|
|12,13||Multiprocessor systems, discussions.|
|Note. No Wednesday lecture in week 13.|
This is a fast paced course (between other things, I assume that you are already familiar with boolean algebra and combinational circuits design, including fundamentals of CPU design--e.g., ALU, hardwired and microprogrammed control unit). I do expect you to take a look at the relevant material before the actual lecture. You should also expect that you will be required to perform a certain degree of independent research (see grading).