CS 251a: Advanced Computer Architecture (Winter 2020) Computer architecture is the glue that binds the worlds of hardware and software. Developing new architectures is the art and science of understanding the intrinsic properties of applications, developing and interconnecting hardware components to meet cost and performance goals, and creating abstractions that enable efficient use of hardware without sacrificing generality. This course qualitatively and quantitatively explores the tradeoffs of architecture and hardware design for general purpose computers. This course will also emphasize evaluation methods, including simulation and analytical modeling, and will teach their use through homeworks with gem5. (course website)
CS 259: Learning Machines (Spring 2019) This course explores – from a computer architecture perspective – the principles of hardware/software codesign for machine learning. One thrust of the course delves into accelerator, CPU, and GPU enhancements for ML algorithms, including parallelization techniques. The other thrust focuses on how machine learning can be used to improve computer architecture performance, either through informing design decisions, or dynamically to optimize the execution decisions. Course includes an open-ended team-based project involving ML/architecture codesign, and has the option to be either hardware or software oriented. (course website)
CS33: Introduction to Computer Organization (Winter Quarters)
This course is designed to
demystify computer systems, covering the basics of computer architecture,
computer organization, operating systems and concurrency. First we build
from the bottom up with detailed explanations of number systems, how they are
employed in the instruction set architecture. Then, using x86 as an example,
we explain how programs are represented to the hardware, how to view and
manipulate these abstractions (eg. procedure calls, stacks, interrupts, and
traps) directly in assembly language, and how operating systems provide
virtualization and process management. We finally demonstrate how this
knowledge applies to improving system security and performance.
(course website)
CS 259: Heterogeneity and the Specialization Spectrum (Spring 2017) This class explores the benefits and drawbacks of specialization, as well as the challenges in architecture design, compilation and programming models. Topics: heterogeneous multicores, instruction set specialization, programmable vector and dataflow co-processors, memories, domain-specific architectures and supporting dynamic compilers/runtimes.