CS 6290: High Performance Computer Architecture

Instructional Team

Milos Prvulovic

Milos Prvulovic
Creator, Instructor
Catherine Gamboa

Catherine Gamboa
Course Developer
Nolan Capehart

Nolan Capehart
Head TA

Overview

This course covers modern computer architecture, including branch prediction, out-of-order instruction execution, cache optimizations, multi-level caches, memory and storage, cache coherence and consistency, and multi- and many-core processors.

This course counts towards the following specialization(s):
Computing Systems

Foundational Course          Computing Systems Specialization Core

Course Goals

After taking this course, students should be able to:

  • Confidently discuss key ideas and elements of modern computer architectures, including branch prediction, out-of-order execution, cache optimizations, multi-level caches, memory, storage, reliability/availability, multi-core processors, cache coherence and consistency, and long-term and recent trends in computer architecture.
  • Apply knowledge of these concepts during software design and development, to improve program performance, and during hardware architecture design, to create systems that are well suited for their intended purpose.
  • Comprehend explanations of more advanced concepts, including those presented in research literature.

Preview

Sample Syllabus

Spring 2019 syllabus (PDF)

Note: Sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.

Before Taking This Class...

Suggested Background Knowledge
  • Undergraduate computer architecture course that covers basic computer organization
  • Working knowledge of topics such as instruction sets, pipelining, etc.
  • Familiarity with C/C++ and Linux, and confidence with making modifications to large programs (for the course project)

If you answer "no" to any of the following questions, it may be beneficial to refresh your knowledge of the prerequisite material prior to taking CS 6290:

  1. Have you taken a computer organization course before?
  2. Are you familiar with at least one RISC instruction set and would you feel comfortable reading and writing small assembler programs?
  3. Are you familiar with basic computer architecture concepts, such as pipelines and caches?
  4. Are you familiar with C/C++ and would you be comfortable writing and/or modifying 100+ lines of code in a program that has over 100,000 lines of code?
  5. Are you comfortable with, or even excited about, learning how real processors work and using simulation to see how changes in processor design affect its performance?
Technical Requirements and Software
  • At least 32GB of available disk space and ability to install additional (free) software. For course projects, you will need to install the Oracle VirtualBox VM and run a Linux virtual machine that contains the setup for the project. Although it is possible to install the software for the projects natively in Linux, such a setup will not be supported.
  • Browser and connection speed: An up-to-date version of Chrome or Firefox is strongly recommended. We also support Internet Explorer 9 and the desktop versions of Internet Explorer 10 and above (not the metro versions). 2+ Mbps is recommended; the minimum requirement is 0.768 Mbps download speed.
  • Operating system:
    • PC: Windows XP or higher with latest updates installed
    • Mac: OS X 10.6 or higher with latest updates installed

Academic Integrity

All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. This course may impose additional academic integrity stipulations; consult the official course documentation for more information.