Computer Architecture

Course: ELL782
Semester I, 2020-21
Credits: 3 (3-0-0)



Instructor: Dr. Smruti R. Sarangi

Lectures
: [Online on YouTube] We will use Teams, Impartus, Moodle, and Acadly.
                Slot M: Monday and Thursday: 5 to 6:30 PM
Course Description: This course will give an introduction to designing and programming high performance processors.

Evaluation
  1. Assembly language programming: bubble sort and recursive merge sort (15%)
  2. Branch prediction assignment (10%)
  3. 5 Quizzes (20%)
  4. Minor: 20%
  5. Major: 20%
  6. Term paper (limit: 3 pages): 15%

Teaching Assistants
    1. Nivedita Shrivastava
    2. Adeeb N. A.

Textbook:
Main Textbook: Advanced Computer Architecture:
Advanced Computer Architecture (to be published by McGrawHill). The link will be mailed to the registrants.
Background on processors and caches: Computer Organisation and Architecture, Smruti R. Sarangi, McGrawHill India. Link to buy. Slides, and videos (link)


S. No.
Date
Lecture
Slides
References
1
Week 1
[Sep 28 - Oct 5]
Assembly language programming

Computer Organisation and Architecture
Chapter 3
2
Week 1
Processor Design

Chapter 8
Only Part I
3
Week 2
[Oct 5 - Oct 12]
Pipelining

Chapter 9
All four parts
4.
Week 3:
Oct 12 to Oct 16
Review of pipelining and motivation for OOO processors
Slides: Chapter 2
Chapter 2 [Advanced Architecture book]:
1. Summary of in-order pipelining [YouTube]
2. Motivation for OOO pipelines [YouTube]
    Interaction between the architecture and OS [pdf]
5.
Week 4:
Oct 20 to Oct 25

Slides: Chapter 3
Chapter 2:
3. Register renaming and precise exceptions [YouTube]
Chapter 3:
1. Fetch logic and predicting if an instruction is a branch or not. [YouTube]
2. Branch prediction [YouTube]
6.
Week 5:
Oct 27 to Oct 30

Slides: Chapter 4
3. Decode stage [YouTube]
Chapter 4:
1. Instruction renaming [YouTube]
7.
Week 6 and 7:
Nov 2-16


2. Wakeup, select, and broadcast [YouTube]
3. Load store queue [YouTube]
4. Instruction commit [YouTube]
8.
Week 8:
Nov 16-23

Slides: Chapter 5
Chapter 5:
1. Aggressive Speculation [YouTube]
2. Replay schemes [YouTube]
9.
Week 9:
Nov 23-30


Chapter 5:
3. Compiler based techniques [YouTube]
10.
Week 10:
Dec 12-16

Chapter 7: Caches Chapter 7:
1. Overview of caches [YouTube]
2. Cache optimizations and virtual memory [YouTube]
11.
Week 11:
Dec 21-26


3. SRAM and CAM arrays [YouTube]
4. Cacti tool, Elmore delay [YouTube]
5. Advanced cache optimizations [YouTube]
12.
Week 12:
Dec 28 - Jan 4

Chapter 9: Multicore systems
Chapter 9: (Multiprocessor Systems)
Coherence, Consistency, and Memory Models

1. Parallel programming and hardware threads [YouTube]
2. Theoretical foundations: overview of coherence and consistency [YouTube]
3. Sequential consistency, PLSC, and coherence [YouTube]
4. Execution witnesses, access graphs, causal graphs [YouTube]
5. Cache coherence: snoopy and directory protocols [YouTube]
6. Advanced directory protocols and atomic operations [YouTube]
7. Memory models and data races [YouTube]