The course comprises of four main modules apart from a module on preliminaries.
(i) Cache management policies (insertion, eviction, promotion, and bypassing)
(ii) Multi-core cache hierarchies (inclusive, exclusive, non-inclusive), static/dynamic non-
uniform cache hierarchies
(iii) Latency tolerance techniques (hardware prefetching and cache compression)
(i) DRAM controllers, timing constraints, DRAM organization, DRAM modeling issues
(ii) DRAM scheduling policies and DRAM address mapping schemes
(iii) Management of DRAM capacity, bandwidth, energy, and power
(i) Side/covert-channel attacks, cold boot attacks at the cache and DRAM
(ii) DRAM scaling challenges, reliability issues, and row-hammer problem
(i) 3D/2.5D DRAM stacking, DRAM cache, PCM, 3D X-point, and processing-in-memory
(ii) Memory hierarchy for approximate computing and memory for large-scale systems