Skip to content

Latest commit

 

History

History
63 lines (41 loc) · 1.59 KB

lecture-5-caches-wrap-up.-virtual-memory..md

File metadata and controls

63 lines (41 loc) · 1.59 KB

Lecture 5: Caches, wrap up. Virtual Memory.

Lecture Summary

  • Wrap up Cache
  • Virtual Memory

Caches

Types of cache misses, ranged by the amount of delay caused:

  • Cache read miss from instruction cache
  • Cache read miss from data cache
  • Cache write miss to data cache

Reasons for cache misses:

  • Cold (compulsory) miss: Cache is empty
  • Capacity miss: Not enough space
  • Conflict miss: Enough space, a lot of conflicts (and thus replacements)

Common placement policies are:

  • Fully associative (M-way associative, if M blocks in total)
  • K-way associative: Each set fits K blocks
  • Direct mapped (1-way associative)

Here are some comic illustrations for understanding cache basics, cache misses, and cache associativity. Source: CS Illustrated from Berkeley.

General Cache Organization:

  • B: Number of bytes in a cache line (typically 64)
  • E: Number of cache lines/blocks that combine to make up a set (typically 2^{0,1,2,3,4})
  • S: Number of sets that make up the cache
  • T: Total cache size
  • B * E * S = T

Case study: Adding the entries in an N-dimensional matrix

Accessing data with locality gives a huge speedup:

int sum_array_rows(int** a){
    int i, j, sum = 0;
    
    // Option 1: Accessed with locality
    for (i = 0; i < M; i++)
        for(j = 0; j < N; j++)
            sum += a[i][j];
    
    // Option 2: Accessed w/o locality
    for (j = 0; j < N; j++)
        for (i = 0; i < M; i++)
            sum += a[i][j];

    return sum;
}