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. Microarchitecture innovations play an important role in improving overall system performance. Though system performance has been the primary citizen for a long time, microarchitecture security has become equally important in the last decade; a lot of sensitive data that is stored and processed by modern systems can get leaked through various microarchitecture components, such as branch predictors, caches, Translation look-aside buffers (TLBs), page tables, prefetchers, Dynamic Random Access Memory (DRAM). These components create side- and covert-channels, and become sources of information leakage in the form of side-channel and covert-channel attacks. The course aims to make students understand, code, and appreciate the subtle issues in the modern systems keeping both performance and security (offensive and defensive) aspects in mind. The course will be a fusion of fundamentals and state-of-the-art (recent research papers from top conferences like ISCA, MICRO, HPCA, ASPLOS, USENIX SECURITY, S&P, PACT, and DAC).

Tentative topics:
First few weeks: Brushing up Computer Architecture/Operating Systems

Security side
Cache timing channels, attacks and mitigations
Transient execution attacks (Spectre, Meltdown etc) and mitigations
Row-hammer attack and its mitigations
Trusted Execution enviornments like Intel SGX and ARM Trustzone
Power side-channels and others

Performance side
The famous memory wall and its mitigations: Caches and prefetchers
Virtualization and address translation wall
Multicore; Cache coherence and memory consistency issues
Powwer wall and energy-efficient designs, Dark Silicon
GPU, NPU, Google's TPU
Processing in Memory and Persistent memory systems (Intel Optane)
Network I/O and memory hierarchy interaction (Intel DDIO)

Prereq:
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 If you do not know anything but you are ready to learn, it is perfectly fine too.

Lecture hours: Wednesday/Friday 11 AM to 12:30 PM