About
The goal of the course is to cultivate mechanical sympathy towards computers, so that they are not perceived as mysterious black boxes that, somehow magically, execute programs. Even though modern programming languages and runtime environments almost completely shield software developers from hardware details, the fundamental aspects of how (non-quantum) computations are carried out do not change. Consequently, understading how computers and processor operate — what is easy, and what is difficult for them — helps developing efficient software systems even when using modern high-level programming languages.
To this end, the course focuses on two critical components of a computer: the processor and the memory subsystem. Specifically, the course covers the functional blocks and components that make up the processor and the memory hierarchy, their behavior and interaction, and their impact on performance of a modern computer. To demonstrate how to put things together, we will build a model of a simple, yet functional, RISC-V processor out of simple logic gates.
Topics covered
- Computer performance, fundamental metrics and their limitations, comparing performance of computer architectures.
- Introduction to digital systems, logical expressions, boolean functions, gates, combinatorial and sequential circuits, basic building blocks, arithmetic operations.
- Instruction set architecture (ISA) implementation, single-cycle and multi-cycle data path and control, hard-wired and microprogrammed controller implementation, exception handling.
- Pipelined instruction execution, scalar pipelined data path, hazard detection and handling, branch prediction, exception handling.
- Overview of Superscalar architectures, static and dynamic instruction scheduling, out-of-order execution, speculative execution, contemporary architectures.
- Memory subsystem organization, latency and throughput, static and dynamic memory technology, cache organization and mapping, cache coherency.
- Brief overview of parallel processing and multiprocessor systems, Flynn’s taxonomy, Amdahl’s law, SIMD processing in multimedia, multi-core CPUs, GPUs. (if time permits)
Last year …
… contents is available here.