Computer Architecture is an important layer in the computing system that has to be efficient for the whole system to operate efficiently. In the current era of computation, multiple cores are deployed in devices that range from smartphones, laptops, desktops, servers, and cloud-based systems. Computer-architecture innovations play an important role in improving overall system performance and security. This course will focus on some of the advanced topics in the field of computer architecture.
Course content
======================
Processor core design choices: O3, SMT cores, Multi/many-core systems
Advanced caches and prefetching
Cache coherence and memory consistency for many-core systems
Caches, TLBs, and virtual memory, OS-architecture interactions
SIMD processors, GPGPUs, and accelerators (Google's TPU)
Memory systems
Architecture security: Timing channel attacks, transient execution attacks, and row-hammer attacks


Prereq:
UG students: Basics on Computer Architecture and/or OS
Fundamentals on Computer Architecture: Please refer Lecture 28 to 43
Fundamentals on OS: Please refer Lecture 1 to 11
PG students: Interest to dive into the deep mysteries of computing systems
If you do not know anything but you are ready to learn, it is perfectly fine too.