Course Outline
Objectives:
Upon completion of this course, students will be able to:
- Comprehend the basic concepts on which the stored-program computer is built;
- Perceive the structure, design, and operation of the computer;
- Understand the computer representation of integers and floating-point numbers and algorithms for computer arithmetic;
- Create, debug, and execute assembly programs, gaining an understanding of the relationship between assembly code and the source code in a high level language;
- Differentiate between the different types of parallel architectures;
- Recognize some of the drawbacks, limitations, advantages, and disadvantages of the different computer architectures.
Topic Outline:
(Time table not yet tested, subject to change)
- Weeks 1 and 2: Review and Introductory Material
- Preface: How to use the text
- Appendix C (on CD-ROM): The Basics of Logic Design
- Gates and circuits
- Boolean algebra and truth tables
- Combinational logic
- Sequential logic
- Finite state machines
- Appendix B: Introduction: Assemblers, Linkers, and the
SPIM simulator
- Assemblers, linkers, loaders
- The MIPS assembly language
(For more information, refer to text by Britton -- or similar text) - The SPIM simulator for running MIPS programs
(Version 7.4 currently installed on Computer Science Linux boxes)
- Chapter 1: Introduction: Computer Abstractions and Technology
- What's going on below?
- Computer Performance
- Benchmarks; Metrics
- Some historical comments
- Week 3: Chapter 2: Instructions -- Language of the Computer
(For more information, refer to text by Britton -- or similar text)- Operations; Operands
- Bits, bytes, words
- Signed and unsigned numbers
- Numbers and number bases; Conversions
- Instruction formats for MIPS
- Addressing Modes
- Synchronization
- Decision-making
- Procedure/function calls; Stack
- Arrays; Pointers
(Note: this information is used throughout the course)
- Weeks 4 and 5: Chapter 3: Arithmetic for Computers
- Special purpose codes
- Binary arithmetic and hardware
- Computer arithmetic
- Multiplication and division
- Floating-point numbers
- Weeks 6 through 8: Chapter 4: The Processor
- Logic design conventions
- Structure; Datapaths
- Control unit
- A simple implementation
- Pipelining and a Pipelined implementation
- Pipelined Datapaths
- Data and Control Hazards; Forwarding; Stalls
- Exceptions
- Comparison of different implementations
- Parallelism
- Weeks 9 through 11: Chapter 5:
Large and Fast: Exploiting Memory Hierarchy
- Caches; Measuring performance
- Virtual memory
- Common framework for memory hierarchies
- Virtual machines
- A finite state machine used for cache control
- Parallelism with caches: cache coherence
- Cache control
- Weeks 12 and 13: Chapter 6:
Storage and Other I/O Topics
- Dependability, Reliability, Availability
- Disk and Flash Storage
- Connecting processors with memory and I/O devices
- Interfacing I/O devices with processors, memory, and the operating system
- I/O Performance
- Design of an I/O system
- Redundant arrays of inexpensive disks: RAID
- Networks
- Weeks 14 and 15: Chapter 7:
Multicores, Multiprocessors, and Clusters
- Problem: parallel processing programs
- Shared-memory multiprocessors
- Clusters and other message-passing multiprocessors
- Hardware multithreading
- Categories: SISD, MIMD, SIMD, SPMD, Vector
- Multiprocessor networks
- Multiprocessing performance and benchmarks
- if time ...: Appendix A: Graphical Processing Units
- Week 16: Final Exam