CS429H Content for which students will be responsible
Data representation (1 week)
- Why binary? Bits, bytes, octal, hex
- Binary encodings of integers, characters, floats, and data structures
- Integer arithmetic, logical operators
Digital logic blocks (1 week)
- Overview of computer elements: computation, storage, communication
- Brief overview of boolean algebras and connection to binary
- Simple instruction set example (encodings, types of instructions, what hardware each needs)
- Building blocks: ALU, registers, memory, multiplexing, etc.
- Clocking and synchronous systems
Machine level program representation (3 weeks)
- Architecture abstractions to ISA
- Perspectives on instruction set architecture (ISA) design (focus on subset of x86)
- Mapping C code to assembly code (compilers and binary tools)
- Loops, conditionals
- Procedures and the runtime stack, recursion
- Pointers and addresses
- Floating-point code
Datapath implementation (1 week)
- Mapping ISA to logical structures
- Y86 (subset of x86)
- Breaking instructions into stages
Performance principles
- Clock rate, clocks/instruction, instruction count
- Amdahl's law
Pipelining Principles (2 weeks)
- Assembly line abstraction
- Pipeline registers and clocking
- Hazards and hazard mitigation
- State machine design for hardware control
Caching Principles (1 hours)
- Memory and storage hierarchy
- Principles of locality
- Basics of cache organization
- Basics of cache performance analysis
Assembling, Linking, Loading (1 week)
- Object file elements and formats
- Symbol tables and relocation
- Loading and dynamic linking
- Program layout in memory
Performance Programming (2 weeks)
- Optimizations to reduce instruction count
- Optimizations to expose parallelism for pipelining
- Memory system optimizations
Last modified: 01/23/11
by Don Fussell fussell@cs.utexas.edu