This schedule is tentative more than two weeks in advance.

Readings are sections of the textbook (Computer Systems: A Programmer's Perspective, 3rd Edition) unless otherwise noted.

DateTopicAssignment
Week 1
Tue 25 Aug

Course Introduction

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

1, 2.1.3

  • Semester preview: Layers of abstraction
  • Processor Fetch Loop
  • Endianness
Wed 26 Aug

Lab: getting C+Unix-like environment


lab writeup

Work on getting a working C environment on your own. The lab will not be staffed.

Thu 27 Aug

Assembly 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

(should be mostly review except for parts of 3.4 about syntax and parts of 3.6 about condition codes) 3.4-3.6.3, 3.6.5, 3.6.7, 3.7.2-3; or use assembly handout written by our textbook authors

  • AT&T syntax assembly
  • LEA
Quiz 1 (quiz for week 1) released, due 2020-09-01 09:15
Week 2
Tue 01 Sep

Assembly 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

3.6.3, 3.6.8

in the PM lecture, I made an error in annotating the third option of while exercise; the correct replacement for the jge instruction should be jle, not jg

  • LEA
  • (briefly) X86-64 calling convention
  • If and loops to assembly
  • X86 condition codes
    • cmpq versus subq
    • testq %rax, %rax
    • SF, ZF
  • Jump Tables
Quiz 1 (quiz for week 1) due 09:15 (released 2020-08-27)
Wed 02 Sep

Lab: bomb lab


lab writeup
Lab due by end of day
Thu 03 Sep

Compilation Pipeline / selected C topics

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

7-7.3

  • Jump Tables
  • Program Memory Layout (Stack, Heap, etc.)
  • Compilation Steps and Object Files
  • (briefly) C types
  • Pointer Arithmetic
  • Aside on undefined behavior
Quiz 2 (quiz for week 2) released, due 2020-09-08 09:15
Week 3
Tue 08 Sep

Bitwise

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

2.1.6-2.1.9, RISC v CISC aside (p 361)

  • Bit shifting
  • Bitwise and/or/xor
  • Idea of bit masks
Quiz 2 (quiz for week 2) due 09:15 (released 2020-09-03)
Wed 09 Sep

Lab: bit-fiddling lab


lab writeup
bomb HW due by 9:30am
Lab due by end of day
Thu 10 Sep

Bitwise (finish) / ISAs

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.1-4.1.3, RISC v CISC aside (p 361)

  • Bit puzzle strategies
    • Divide-and-conquer for ?:
    • Parallelism example: any-bit-set with &
  • ISAs
  • RISC v CISC (start)
Quiz 3 (quiz for week 3) released, due 2020-09-15 09:15
Week 4
Tue 15 Sep

Y86

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.1-4.1.3, 4.1.5-6

  • RISC v CISC (finish)
  • Y86-64
  • using YAS
  • Y86 encoding/decoding
Quiz 3 (quiz for week 3) due 09:15 (released 2020-09-10)
Wed 16 Sep

Lab: linking+ISA lab


lab writeup
bit-fiddling HW due by 9:30am
Lab due by end of day
Thu 17 Sep

SEQ part 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.2-4.2.5

  • lab postmortem
  • Y86 decoding (finish)
  • describing hardware and HCLRS
    • wires
    • registers
    • memory, reading
  • nop CPU
Quiz 4 (quiz for week 4) released, due 2020-09-22 09:15
Week 5
Tue 22 Sep

SEQ part 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.2-4.2.5, 4.3.1-4.3.4

  • MUXes
  • nop+halt CPU
  • interlude: using HCLRS
  • interlude: HCLRS versus the book
  • addq CPU
Quiz 4 (quiz for week 4) due 09:15 (released 2020-09-17)
Wed 23 Sep

Lab: HCL1 (pc)


lab writeup
linking+ISA HW due by 9:30am
Lab due by end of day
Thu 24 Sep

SEQ part 3

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.2-4.2.5, 4.3.1-4.3.4

  • ALUs
  • memory, writing
  • mov to register CPU
  • mov CPU, complete
  • SEQ “stages”
Quiz 5 (quiz for week 5) released, due 2020-09-29 09:15
Week 6
Tue 29 Sep

SEQ part 4 / Pipelining 0

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]

There were some technical difficulties (that is, my internet disconnected) during the PM lecture. I believe I’ve cut together a video that omits them in the (non-Zoom) recording linked here, but you might prefer to use the last 7 minutes or so of the AM lecture instead of the rushed coverage of that material in the PM lecture.

  • SEQ stages walkthrough
  • (briefly) setting MUXes
  • pipelining idea (laundry example)
Quiz 5 (quiz for week 5) due 09:15 (released 2020-09-24)
Wed 30 Sep

Lab: HCL3 (seqlab)


lab writeup
HCL2 (irmovq + rrmovq + jmp) due by 9:30am
Lab due by end of day
Thu 01 Oct

Pipelining 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.4-4.5.3

Correction to lecture: In the AM lecture (only), I wrote “1”, “2” and “3” (to label where each instruction was) in the wrong order (not matching the assembly or the question) on the processor diagram (3 was drawn over the writeback stage, even though the question was about instruction 1 being in the writeback stage). Then, when explaining the exercise, I looked at the numbers I drew and said “instruction 3” when I really meant “instruction 1” and vice-versa.

  • latency and throughput and pipelining
  • register tolerances and diminishing pipelining returns
  • pipelined addq
  • pipelining SEQ
Quiz 6 (quiz for week 6) released, due 2020-10-06 09:15
Week 7
Tue 06 Oct

Pipelining 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.5-4.5.7, 4.5.9

  • data hazards
  • stalling
  • forwarding
Quiz 6 (quiz for week 6) due 09:15 (released 2020-10-01)
Wed 07 Oct

Lab: HCL5 (pipelab1)


lab writeup
HCL4 (seqhw) due by 9:30am
Lab due by end of day
Thu 08 Oct

Pipelining 3

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

4.5-4.5.7, 4.5.9

  • forwarding paths exercise
  • alternate pipelines?
  • basic branch prediction and squashing
  • implementing stalling and squashing (start)
Quiz 7 (quiz for week 7) released, due 2020-10-13 09:15
Week 8
Tue 13 Oct

Pipelining 4 / Cache 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.2-3

  • implementing stalling and squashing (finish)
  • missing pieces in pipelining
  • place of cache
  • direct-mapped caches (start)
Quiz 7 (quiz for week 7) due 09:15 (released 2020-10-08)
Wed 14 Oct

Lab: HCL7 (pipelab2)


lab writeup
HCL6 (pipehw1) due by 9:30am
Lab due by end of day
Thu 15 Oct

Cache 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.4-6.4.4

  • direct-mapped caches
  • set-associative caches (start)
Quiz 08 (quiz for week 8) released, due 2020-10-20 09:15
Week 9
Tue 20 Oct

Cache 3

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.4.3-6.4.7

There were some technical difficulties in the AM lecture, so you might prefer the PM recording.

  • set-associative caches (finish)
    • tag/index/offset exercise
  • replacement policies
  • classifying misses: conflict / capacity / compulsory
  • cache write policies
  • AMAT (AM only)
Quiz 08 (quiz for week 8) due 09:15 (released 2020-10-15)
Wed 21 Oct

Lab: CacheLab


lab writeup
HCL8 (pipehw2) due by 9:30am
Lab due by end of day
Thu 22 Oct

Cache performance 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.5

  • AMAT (PM only)
  • cache tradeoffs
  • cache misses and C code (start)
Quiz 09 (quiz for week 9) released, due 2020-10-27 09:15
Week 10
Tue 27 Oct

Cache performance 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.5

Quiz 09 (quiz for week 9) due 09:15 (released 2020-10-22)
Wed 28 Oct
pipeline tradeoff simulator due by 9:30am
Thu 29 Oct

Optimization and Out-of-order 1

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

6.5, 5.4, 5.7

  • cache blocking (finish)
  • inlining
  • loop unrolling
  • out-of-order processor model (start)
    • register renaming
Quiz 10 (quiz for week 10) released, due 2020-11-03 09:15
Week 11
Tue 03 Nov

Optimization and Out-of-order 2

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

5

  • out-of-order processor model (finish)
    • instruction dispatch
  • data flow model
  • reassociation
  • multiple accumulators
  • aliasing (start)
Quiz 10 (quiz for week 10) due 09:15 (released 2020-10-29)
Wed 04 Nov

Lab: LoopLab


lab writeup
cache programs due by 9:30am
Lab due by end of day
Thu 05 Nov

Optimizations 3

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
  • aliasing (finish)
  • inlining
  • SIMD
Quiz 11 (quiz for week 11) released, due 2020-11-10 09:15
Week 12
Tue 10 Nov

Exceptions

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

8.1-8.2

  • SIMD (finish)
  • processes and context switching
  • types of exceptions
  • process idea
  • (am) exception tables
Quiz 11 (quiz for week 11) due 09:15 (released 2020-11-05)
Wed 11 Nov

Lab: SIMDLab


lab writeup
Rotate due by 9:30am
Smooth checkpoint (no SIMD) due by 9:30am
Lab due by end of day
Thu 12 Nov

Exceptions (finish) / Virtual memory 1

 [ 
 (tentative) slides
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
Reading:

8.1-8.2, 9.1-2, 9.3.2

  • exception tables
  • kernel mode
  • “toy” page table
  • address space sizes and splitting addresses
Quiz 12 (quiz for week 12) released, due 2020-11-17 09:15
Week 13
Tue 17 Nov

Virtual memory 2

 [ 
| screencapture (browser: pm) | download mp4: pm; audio only (pm)
| Zoom (passcode on Collab):am pm ]
  • storing page tables in memory
  • page table tricks
    • swapping (physical memory as a cache for disk)
  • multi-level page tables (start)
Quiz 12 (quiz for week 12) due 09:15 (released 2020-11-12)
Wed 18 Nov

Lab: work on memory HW (no lab)


Smooth due by 9:30am
Thu 19 Nov

Virtual memory 3

 [ 
| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm ]
  • multi-level page tables (finish)
  • multi-level page table access exercises
  • TLBs, briefly
Quiz 13 (quiz for week 13) released, due 2020-11-24 09:15
Week 14
Tue 24 Nov

Final review

| screencapture ( browser: am pm; download mp4: am pm) | audio only (am pm)
| Zoom (passcode on Collab):am pm
Quiz 13 (quiz for week 13) due 09:15 (released 2020-11-19)
Memory due by 11:59pm
Week 15
Tue 01 Dec
(no class)
Week 16
Thu 10 Dec

final exam, details TBA

Final released noon (Eastern time) 10 December

Final due noon (Eastern time) 11 December

Quiz exam (final exam) released, due 2020-12-11 12:00
Quiz exam-draft (final exam draft) released, due 2020-12-11 12:00