Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set...

33
Cache Memories May 5, 2008 Topics Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    227
  • download

    0

Transcript of Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set...

Page 1: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

Cache MemoriesMay 5, 2008

Cache MemoriesMay 5, 2008

TopicsTopics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance

EECS213

Page 2: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 2 – EECS213, S’08

Cache MemoriesCache MemoriesCache memories are small, fast SRAM-based memories Cache memories are small, fast SRAM-based memories

managed automatically in hardware. managed automatically in hardware. Hold frequently accessed blocks of main memory

CPU looks first for data in L1, then in L2, then in main CPU looks first for data in L1, then in L2, then in main memory.memory.

Typical bus structure:Typical bus structure:

mainmemory

I/Obridge

bus interfaceL2 cache

ALU

register file

CPU chip

cache bus system bus memory bus

L1 cache

Page 3: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 3 – EECS213, S’08

Inserting an L1 Cache Between the CPU and Main Memory Inserting an L1 Cache Between the CPU and Main Memory

a b c dblock 10

p q r sblock 21

...

...

w x y zblock 30

...

The big slow main memoryhas room for many 4-wordblocks.

The small fast L1 cache has roomfor two 4-word blocks.

The tiny, very fast CPU register filehas room for four 4-byte words.

The transfer unit betweenthe cache and main memory is a 4-word block(16 bytes).

The transfer unit betweenthe CPU register file and the cache is a 4-byte block.

line 0

line 1

Page 4: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 4 – EECS213, S’08

General Org of a Cache Memory General Org of a Cache Memory

• • • B–110

• • • B–110

valid

valid

tag

tagset 0:

B = 2b bytesper cache block

E lines per set

S = 2s sets

t tag bitsper line

1 valid bitper line

Cache size: C = B x E x S data bytes

• • •

• • • B–110

• • • B–110

valid

valid

tag

tagset 1: • • •

• • • B–110

• • • B–110

valid

valid

tag

tagset S-1: • • •

• • •

Cache is an arrayof sets.

Each set containsone or more lines.

Each line holds ablock of data.

Page 5: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 5 – EECS213, S’08

Addressing Caches Addressing Caches

t bits s bits b bits

0m-1

<tag> <set index> <block offset>

Address A:

• • • B–110

• • • B–110

v

v

tag

tagset 0: • • •

• • • B–110

• • • B–110

v

v

tag

tagset 1: • • •

• • • B–110

• • • B–110

v

v

tag

tagset S-1: • • •

• • •

The word at address A is in the cache ifthe tag bits in one of the <valid> lines in set <set index> match <tag>.

The word contents begin at offset <block offset> bytes from the beginning of the block.

Page 6: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 6 – EECS213, S’08

Direct-Mapped Cache Direct-Mapped Cache

Simplest kind of cacheSimplest kind of cache

Characterized by exactly one line per set.Characterized by exactly one line per set.

valid

valid

valid

tag

tag

tag

• • •

set 0:

set 1:

set S-1:

E=1 lines per setcache block

cache block

cache block

Page 7: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 7 – EECS213, S’08

Accessing Direct-Mapped Caches Accessing Direct-Mapped Caches

Set selectionSet selection Use the set index bits to determine the set of interest.

valid

valid

valid

tag

tag

tag

• • •

set 0:

set 1:

set S-1:t bits s bits

0 0 0 0 10m-1

b bits

tag set index block offset

selected set

cache block

cache block

cache block

Page 8: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 8 – EECS213, S’08

Cache Parameters Cache Parameters

S = 2S = 2ss: number of sets: number of sets

E: number of lines / set (E = 1 direct-mapped)E: number of lines / set (E = 1 direct-mapped)

B = 2B = 2bb: block size in bytes: block size in bytes

m = logm = log22(M): number of address bits(M): number of address bits

t = m – (s + b): number of tag bitst = m – (s + b): number of tag bits

C = B x E x S: cache size in bytes (blocks only, not valid C = B x E x S: cache size in bytes (blocks only, not valid and tag bits) and tag bits)

Page 9: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 9 – EECS213, S’08

Cache quiz Cache quiz

Fill in the parameters for each cache. Give the number of cache Fill in the parameters for each cache. Give the number of cache sets S, tag bits t, set index bits s, and block offset bits b. sets S, tag bits t, set index bits s, and block offset bits b.

Assume 32 bit addresses (m) and a cache size (C) of 1024 bytes.Assume 32 bit addresses (m) and a cache size (C) of 1024 bytes.

CacheCache BB EE SS tt ss bb

1.1. 44 11

2.2. 88 44

3.3. 3232 3232

Page 10: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 10 – EECS213, S’08

Accessing Direct-Mapped CachesAccessing Direct-Mapped Caches

Line matching and word selectionLine matching and word selection Line matching: Find a valid line in the selected set with a

matching tag Word selection: Then extract the word

1

t bits s bits100i0110

0m-1

b bits

tag set index block offset

selected set (i):

(3) If (1) and (2), then cache hit,

and block offset selects

starting byte.

=1? (1) The valid bit must be set

= ?(2) The tag bits in the cache

line must match thetag bits in the address

0110 w3w0 w1 w2

30 1 2 74 5 6

Page 11: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 11 – EECS213, S’08

Direct-Mapped Cache SimulationDirect-Mapped Cache SimulationM=16 byte addresses, B=2 bytes/block, S=4 sets, E=1 entry/set

Address trace (reads):0 [00002], 1 [00012], 13 [11012], 8 [10002], 0 [00002]

xt=1 s=2 b=1

xx x

1 0 m[1] m[0]

v tag data0 [00002] (miss)

(1)

1 0 m[1] m[0]

v tag data

1 1 m[13] m[12]

13 [11012] (miss)

(3)

1 1 m[9] m[8]

v tag data8 [10002] (miss)

(4)

1 0 m[1] m[0]

v tag data

1 1 m[13] m[12]

0 [00002] (miss)

(5)

0 M[0-1]1

1 M[12-13]1

1 M[8-9]1

1 M[12-13]1

0 M[0-1]1

1 M[12-13]1

0 M[0-1]1

Page 12: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 12 – EECS213, S’08

Why Use Middle Bits as Index? Why Use Middle Bits as Index?

High-Order Bit IndexingHigh-Order Bit Indexing Adjacent memory lines would

map to same cache entry Poor use of spatial locality

Middle-Order Bit IndexingMiddle-Order Bit Indexing Consecutive memory lines map

to different cache lines Can hold C-byte region of

address space in cache at one time

4-line Cache High-OrderBit Indexing

Middle-OrderBit Indexing

00011011

0000000100100011010001010110011110001001101010111100110111101111

0000000100100011010001010110011110001001101010111100110111101111

Page 13: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 13 – EECS213, S’08

Set Associative Caches Set Associative Caches

Characterized by more than one line per setCharacterized by more than one line per set

valid tagset 0: E=2 lines per set

set 1:

set S-1:

• • •

cache block

valid tag cache block

valid tag cache block

valid tag cache block

valid tag cache block

valid tag cache block

Page 14: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 14 – EECS213, S’08

Accessing Set Associative Caches Accessing Set Associative Caches

Set selectionSet selection identical to direct-mapped cache

valid

valid

tag

tagset 0:

valid

valid

tag

tagset 1:

valid

valid

tag

tagset S-1:

• • •

t bits s bits0 0 0 0 1

0m-1

b bits

tag set index block offset

Selected set

cache block

cache block

cache block

cache block

cache block

cache block

Page 15: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 15 – EECS213, S’08

Accessing Set Associative Caches Accessing Set Associative Caches

Line matching and word selectionLine matching and word selection must compare the tag in each valid line in the selected set.

1 0110 w3w0 w1 w2

1 1001

t bits s bits100i0110

0m-1

b bits

tag set index block offset

selected set (i):

=1? (1) The valid bit must be set.

= ?(2) The tag bits in one of the cache lines must

match the tag bits inthe address

(3) If (1) and (2), then cache hit, and

block offset selects starting byte.

30 1 2 74 5 6

Page 16: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 16 – EECS213, S’08

Cache Performance Metrics Cache Performance Metrics

Miss RateMiss Rate Fraction of memory references not found in cache

(misses/references) Typical numbers:

3-10% for L1can be quite small (e.g., < 1%) for L2, depending on size, etc.

Hit TimeHit Time Time to deliver a line in the cache to the processor (includes

time to determine whether the line is in the cache) Typical numbers:

1 clock cycle for L13-8 clock cycles for L2

Miss PenaltyMiss Penalty Additional time required because of a miss

Typically 25-100 cycles for main memory

Page 17: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 17 – EECS213, S’08

Writing Cache Friendly CodeWriting Cache Friendly Code

Repeated references to variables are good (temporal Repeated references to variables are good (temporal locality)locality)

Stride-1 reference patterns are good (spatial locality)Stride-1 reference patterns are good (spatial locality)

Examples:Examples: cold cache, 4-byte words, 4-word cache blocks

int sumarrayrows(int a[M][N]){ int i, j, sum = 0;

for (i = 0; i < M; i++) for (j = 0; j < N; j++) sum += a[i][j]; return sum;}

int sumarraycols(int a[M][N]){ int i, j, sum = 0;

for (j = 0; j < N; j++) for (i = 0; i < M; i++) sum += a[i][j]; return sum;}

Miss rate = Miss rate = 1/4 = 25% 100%

Page 18: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 18 – EECS213, S’08

The Memory Mountain The Memory Mountain

Read throughput (read bandwidth)Read throughput (read bandwidth) Number of bytes read from memory per second (MB/s)

Memory mountainMemory mountain Measured read throughput as a function of spatial and

temporal locality. Compact way to characterize memory system performance.

Page 19: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 19 – EECS213, S’08

The Memory Mountain The Memory Mountain

s1

s3

s5

s7

s9

s11

s13

s15

8m

2m 512k 12

8k 32k 8k

2k

0

200

400

600

800

1000

1200

read

th

rou

gh

pu

t (M

B/s

)

stride (words) working set size (bytes)

Pentium III Xeon550 MHz16 KB on-chip L1 d-cache16 KB on-chip L1 i-cache512 KB off-chip unifiedL2 cache

Ridges ofTemporalLocality

L1

L2

mem

Slopes ofSpatialLocality

xe

Page 20: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 20 – EECS213, S’08

Ridges of Temporal Locality Ridges of Temporal Locality

Slice through the memory mountain with stride=1Slice through the memory mountain with stride=1 illuminates read throughputs of different caches and

memory

0

200

400

600

800

1000

1200

8m

4m

2m

10

24

k

51

2k

25

6k

12

8k

64

k

32

k

16

k

8k

4k

2k

1k

working set size (bytes)

rea

d t

hro

ug

pu

t (M

B/s

)

L1 cacheregion

L2 cacheregion

main memoryregion

Page 21: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 21 – EECS213, S’08

A Slope of Spatial LocalityA Slope of Spatial Locality

Slice through memory mountain with size=256KBSlice through memory mountain with size=256KB shows cache block size.

0

100

200

300

400

500

600

700

800

s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16

stride (words)

rea

d t

hro

ug

hp

ut

(MB

/s)

one access per cache line

Page 22: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 22 – EECS213, S’08

Matrix Multiplication Example Matrix Multiplication Example

Major Cache Effects to ConsiderMajor Cache Effects to Consider Total cache size

Exploit temporal locality and keep the working set small (e.g., by using blocking)

Block size Exploit spatial locality

Description:Description: Multiply N x N matrices O(N3) total operations Accesses

N reads per source element N values summed per destination

» but may be able to hold in register

/* ijk */for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

/* ijk */for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

Variable sumheld in register

Page 23: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 23 – EECS213, S’08

Miss Rate Analysis for Matrix Multiply Miss Rate Analysis for Matrix Multiply

Assume:Assume: Cache size = 32B (big enough for 4 64-bit words) Matrix dimension (N) is very large

Approximate 1/N as 0.0

Cache is not even big enough to hold multiple rows

Analysis Method:Analysis Method: Look at access pattern of inner loop

CA

k

i

B

k

j

i

j

Page 24: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 24 – EECS213, S’08

Layout of C Arrays in Memory (review) Layout of C Arrays in Memory (review) C arrays allocated in row-major orderC arrays allocated in row-major order

each row in contiguous memory locations

Stepping through columns in one row:Stepping through columns in one row: for (i = 0; i < N; i++)

sum += a[0][i]; accesses successive elements if block size (B) > 4 bytes, exploit spatial locality

compulsory miss rate = 4 bytes / B

Stepping through rows in one column:Stepping through rows in one column: for (i = 0; i < n; i++)

sum += a[i][0]; accesses distant elements no spatial locality!

compulsory miss rate = 1 (i.e. 100%)

Page 25: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 25 – EECS213, S’08

Matrix Multiplication (ijk) Matrix Multiplication (ijk)

/* ijk */for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

/* ijk */for (i=0; i<n; i++) { for (j=0; j<n; j++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum; }}

A B C

(i,*)

(*,j)(i,j)

Inner loop:

Column-wise

Row-wise Fixed

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

0.25 1.0 0.0

Page 26: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 26 – EECS213, S’08

Matrix Multiplication (jik) Matrix Multiplication (jik)

/* jik */for (j=0; j<n; j++) { for (i=0; i<n; i++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum }}

/* jik */for (j=0; j<n; j++) { for (i=0; i<n; i++) { sum = 0.0; for (k=0; k<n; k++) sum += a[i][k] * b[k][j]; c[i][j] = sum }}

A B C

(i,*)

(*,j)(i,j)

Inner loop:

Row-wise Column-wise

Fixed

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

0.25 1.0 0.0

Page 27: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 27 – EECS213, S’08

Matrix Multiplication (kij) Matrix Multiplication (kij)

/* kij */for (k=0; k<n; k++) { for (i=0; i<n; i++) { r = a[i][k]; for (j=0; j<n; j++) c[i][j] += r * b[k][j]; }}

/* kij */for (k=0; k<n; k++) { for (i=0; i<n; i++) { r = a[i][k]; for (j=0; j<n; j++) c[i][j] += r * b[k][j]; }}

A B C

(i,*)(i,k) (k,*)

Inner loop:

Row-wise Row-wiseFixed

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

0.0 0.25 0.25

Page 28: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 28 – EECS213, S’08

Matrix Multiplication (ikj) Matrix Multiplication (ikj)

/* ikj */for (i=0; i<n; i++) { for (k=0; k<n; k++) { r = a[i][k]; for (j=0; j<n; j++) c[i][j] += r * b[k][j]; }}

/* ikj */for (i=0; i<n; i++) { for (k=0; k<n; k++) { r = a[i][k]; for (j=0; j<n; j++) c[i][j] += r * b[k][j]; }}

A B C

(i,*)(i,k) (k,*)

Inner loop:

Row-wise Row-wiseFixed

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

0.0 0.25 0.25

Page 29: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 29 – EECS213, S’08

Matrix Multiplication (jki) Matrix Multiplication (jki)

/* jki */for (j=0; j<n; j++) { for (k=0; k<n; k++) { r = b[k][j]; for (i=0; i<n; i++) c[i][j] += a[i][k] * r; }}

/* jki */for (j=0; j<n; j++) { for (k=0; k<n; k++) { r = b[k][j]; for (i=0; i<n; i++) c[i][j] += a[i][k] * r; }}

A B C

(*,j)(k,j)

Inner loop:

(*,k)

Column -wise

Column-wise

Fixed

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

1.0 0.0 1.0

Page 30: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 30 – EECS213, S’08

Matrix Multiplication (kji) Matrix Multiplication (kji)

/* kji */for (k=0; k<n; k++) { for (j=0; j<n; j++) { r = b[k][j]; for (i=0; i<n; i++) c[i][j] += a[i][k] * r; }}

/* kji */for (k=0; k<n; k++) { for (j=0; j<n; j++) { r = b[k][j]; for (i=0; i<n; i++) c[i][j] += a[i][k] * r; }}

A B C

(*,j)(k,j)

Inner loop:

(*,k)

FixedColumn-wise

Column-wise

Misses per Inner Loop Iteration:Misses per Inner Loop Iteration:A B C

1.0 0.0 1.0

Page 31: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 31 – EECS213, S’08

Summary of Matrix Multiplication Summary of Matrix Multiplication

for (i=0; i<n; i++) {

for (j=0; j<n; j++) {

sum = 0.0;

for (k=0; k<n; k++)

sum += a[i][k] * b[k][j];

c[i][j] = sum;

}

}

ijk (& jik): • 2 loads, 0 stores• misses/iter = 1.25

for (k=0; k<n; k++) {

for (i=0; i<n; i++) {

r = a[i][k];

for (j=0; j<n; j++)

c[i][j] += r * b[k][j];

}

}

for (j=0; j<n; j++) {

for (k=0; k<n; k++) {

r = b[k][j];

for (i=0; i<n; i++)

c[i][j] += a[i][k] * r;

}

}

kij (& ikj): • 2 loads, 1 store• misses/iter = 0.5

jki (& kji): • 2 loads, 1 store• misses/iter = 2.0

Page 32: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 32 – EECS213, S’08

Pentium Matrix Multiply Performance Pentium Matrix Multiply Performance

Miss rates are helpful but not perfect predictors.Miss rates are helpful but not perfect predictors.Code scheduling matters, too.

0

10

20

30

40

50

60

25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 400

Array size (n)

Cyc

les

/ite

rati

on

kjijkikijikjjikijk

Page 33: Cache Memories May 5, 2008 Topics Generic cache memory organization Direct mapped caches Set associative caches Impact of caches on performance EECS213.

– 33 – EECS213, S’08

Concluding Observations Concluding Observations

Programmer can optimize for cache performanceProgrammer can optimize for cache performance How data structures are organized How data are accessed

Nested loop structure

All systems favor “cache friendly code”All systems favor “cache friendly code” Getting absolute optimum performance is very platform

specificCache sizes, line sizes, associativities, etc.

Can get most of the advantage with generic codeKeep working set reasonably small (temporal locality)Use small strides (spatial locality)