Spring 2013
ECEN/CSCI 4593 Computer Organization

 

 

Home

Objectives

Syllabus

Office Hours
Contact Info

Lecture Notes

Assignments

Project

Links

 

Objectives

ECEN/CSCI 4593 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, focusing largely on the hardware design, to include aspects of the complete system, comprising the hardware, operating system, compilers, and application software.

The 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 C compilers.
Instruction Set Design.
We will study the general characteristics of several instruction sets, including the MIPS and Intel x86.
Processor Implementation.
The design of the internal components of a processor's datapath and control will be covered. An non-pipelined implementation of a processor using the MIPS instruction set will be used as basis for this discussion.
Pipelined 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.