EE/CS 380 Computer Organization and Design: 3 Credits
Hardware and software organization and design of a typical computer; computer performance; instruction set design, machine language and assembler language programming, computer arithmetic; datapath and controller design; pipelining, memory structures, interfacing peripheral devices, and input-output structures. Prereq: EE 280.
Additional materials provided to the students fill gaps in this text and also allow use of older editions: 2nd, 3rd, or 3rd revised.
Dr. Henry G. Dietz, Professor
The goals of this course center on giving students a basic understanding of how high-level-language programs can be implemented on systems constructed using digital logic, with sufficient depth and breadth to allow them to appreciate the properties of different computer organizations. This understanding integrates the concept of the Instruction Set Architecture (ISA), analytical evaluation of computer system performance, assembly language instruction set design and its relationship to high-level-language constructs, and understanding of how computer hardware is organized. The organization includes the fundamentals of datapath, memory organization, control logic, arithmetic function units, and input-output subsystem structures. Organizations from simple multi-cycle to more advanced pipelined and parallel architectures are introduced, with an emphasis on the MIPS ISA and understanding how computing systems are designed and how performance of alternative designs can be expected to differ. Software simulators are provided that allow the students to conduct experiments involving assembly language programming, implementation of instructions, and computer organization.
Upon completion of this course the students should demonstrate the ability to:
Each online homework problem begins with one or more links that indicate which of the above outcomes are relevant.
Students write, assemble, and run assembly language programs on simulators for computers designed in this class. The simulators also are used to experiment with simple changes to the organization and/or implementation of instructions. Some of the simulations are supported by standard software (e.g., the SPIM MIPS simulator), but much of the simulation support was modified or created at the University of Kentucky specifically for this course. For example, although the support software can run in a UNIX or Windows environment, in response to student requests, WWW-browser-interfaced versions also have been developed for the students to use.
Using a MIPS-based assembly language instruction set as the starting point, students are exposed to computer system design at the gate, register-transfer, and module functionality levels. The lower-level coverage involves creation of complete designs for both a multi-cycle/microprogrammed and a single-cycle/pipelined system. Higher-level design coverage extends through treatment of out-of-order and speculative execution, BTB/BHB (branch target/history buffers), caches, TLBs (translation lookaside buffers), and parallel systems including superscalar execution, multi-core processors, GPUs (graphics processing units), and clusters. Functional block diagrams for state-of-the-art microprocessors also are referenced and contrasted for the purpose of enabling students to make system design decisions involving selection among commercial processor designs.
Lecture 3 hours per week
Engineering Science: 1.5 Credits (50%)
Engineering Design: 1.5 Credits (50%)
This course and the outcomes listed above support the following COE program outcomes:
(a) an ability to apply knowledge of mathematics, science, and engineering
(b) an ability to design and conduct experiments, as well as to analyze and interpret data
(c) an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
(e) an ability to identify, formulate, and solve engineering problems
(i) a recognition of the need for, and an ability to engage in life-long learning
(j) a knowledge of contemporary issues
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice
(m) an ability to analyze and design complex electrical and electronic devices, software, and systems containing hardware and software components
(n) a breadth of knowledge over computer engineering (analog and digital circuit design and analysis, electronics, signals and systems, program design and abstraction, software engineering, computer organization and architecture, algorithm design and analysis, embedded systems, operating systems and compilers)
Henry G. Dietz, May 28, 2010