CMSC 22240-1: Computer Architecture for Scientists
Winter 2022, TuTh 1120-1240 , Location: Ry 251
Book: Computer Architecture for Scientists: Principles and Performance (Cambridge University Press, in print March 2022! )

The dramatic increase in computer performance has been extraordinary, but not for all computations: it has key limits and structure. Software architects, developers, and even data scientists need to understand how to exploit the fundamental structure of computer performance to harness it for future applications. Using a principled approach, Computer Architecture for Scientists covers the four key pillars of computer performance and imparts a high-level basis for reasoning with and understanding these concepts. These principles and models provide approachable high-level insights and quantitative modeling without distracting low-level detail. The pillars include:
  • Small is fast: how size scaling drives performance (miniaturization)
  • Hidden parallelism: how a sequential program can be executed faster with parallelism (instruction-level parallelism)
  • Dynamic locality: skirting physical limits, by arranging data in a smaller space (caches and reuse/locality)
  • Parallelism: increasing performance with teams of workers (multicore and cloud)
Finally, the text covers the GPU and machine-learning accelerators that have become important for more and more mainstream applications. The course provides a longer-term understanding of computer capabilities, performance, and limits to the wealth of computer scientists practicing data science, software development, or machine learning.

Students may not receive credit for both CMSC 22200 and 22240. This course is an optional prerequisite for CMSC 23000 (parallel to others)

Students will use a draft book, soon to be published by Cambridge University Press for readings and exercises. Exercises and labs will explore the performance models derived from these scientific principles; learning to reason about performance and scalability in computer architecture and systems.

    Canvas for this course is (will be) HERE

    Syllabus

    • Introduction: Computers are ubiquitous, and amazing powerful and cheap
    • Basics of Computer Instruction Sets, Assembly and High-level Languages
    • Small is Fast! (and Scaling)
    • The Sequential Computing Abstraction, Parallel Implementation
    • Exploiting Dynamic Locality (Caches and more)
    • Beyond Sequential: Parallelism and Scalout (Multicore and the Cloud)
    • Accelerators: GPU's, Machine Learning Accelerators, and more!
    • Computing Futures
    Coursework: Assignments
    • Assignment #1: Computing and Society, Scaling impact. Simple assembly
    • Assignment #2: Instruction Execution, Size Scaling for Computers
    • Assignment #3: Sequential Abstraction, Renaming, Cheating Sequence
    • Assignment #4: Dynamic Locality (for large Memories)
    • Assignment #5: Reuse Distance, Parallelism and Scaleout (Multicore and Cloud)
    • Assignment #6: Accelerators
    Coursework: In-class Discussion and Quizzes Students will be expected to keep up with readings and contribute to in-class discussions. There will be 2-3 in-class quizzes.
Andrew A. Chien
Andrew A. Chien Teaching
Large-Scale Systems Group