Lecture 16: Cache Memories - Last Time - Today
Lecture 16: Cache Memories - Last Time - Today
Today
Take QUIZ 12 over P&H 5.7-10 before 11:59pm today Read 5.4, 5.6 for 3/25 Homework 6 due Thursday March 25, 2010 Hardware cache organization Reads versus Writes Cache Optimization
Big Fast
MC Small Fast MM
Big Slow
UTCS 352, Lecture 16
2
Level 1 Cache
5-10cy
OS managed
Direct Mapped
Each block mapped to exactly 1 cache location
Cache location = (block address) MOD (# blocks in cache)
0
1
2
3
4
5
6
7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Fully Associative
Each block mapped to any cache location
Cache location = any
0
1
2
3
4
5
6
7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Set Associative
Each block mapped to subset of cache locations
Set selection = (block address) MOD (# sets in cache)
0
1
2
3
4
5
6
7
Set
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 bit Address
28 bits
index which set tag which data/instruction in block block offset which word in block # tag/index bits determine the associativity tag/index bits can come from anywhere in block address
8
S Entries
25
Tag Index Address
=
Hit Data
S=4, A=2
2-way associative 8-entry cache
4 Sets
2 26
=
Tag Index Address Hit Data
10
28
=
Tag Address
UTCS 352, Lecture 16
=
Hit
Data
11
High address bits are tag, used to associatively search the selected set Extreme cases
A=1: Direct mapped cache S=1: Fully associative
12
Cache Organization
Address
27 15 42 86 Valid bits
95 11 75 33
90 12 74 35
99 13 73 31
96 14 72 37
Data
Where
does a block get placed? - DONE
How do we nd it? - DONE
Which one do we replace when a new one is brought in?
What happens on a write?
UTCS 352, Lecture 16
13
Associative
Randomly select block in set to replace Least-Recently used (LRU)
Implementing LRU
2-way set-associative >2 way set-associative
14
Write-Through
On cache write - always update main memory as well Use a write buffer to stockpile writes to main memory for speed
Write-Back
On cache write - remember that block is modified (dirty bit) Update main memory when dirty block is replaced Sometimes need to flush cache (I/O, multiprocessing)
15
No-write Allocate
16
17
18
19
20
8-way = fully associative Direct mapped size N = 2-way set associative size N/2
But!
Size N associative is larger than Size N direct mapped Associative typically slower that direct mapped (thit larger)
21
22
Miss Rate
15
10
0 16 32 64 128 256
Block Size
23
Wider path to each memory Separate paths to multiple memories multiple memory banks
25
L1
L2
L3
26
=?
write buffer
MAIN MEMORY
27
CPU
Tag
LW R2,512(R0)
Data
LW R1,1024(R0)
=?
write buffer
MAIN MEMORY
28
Alpha 21064 on cache miss Fetches requested block intro instruction stream buffer Fetches next sequential block into cache Automatically fetch data into cache (spatial locality) Issues?
Data
29
30
Tag =? L1
=? Victim
CPU
8 9 10 11 L1 Victim
12
9
10
11
L1
8
12
9
10
11
L1
8
Victim
Victim
31
Summary
Recap
Using a memory address to find location in cache Deciding what to evict from the cache Improving cache performance Homework 6 is due March 25, 2010 Reading: P&H 5.4, 5.6 Virtual Memory TLBs
Next Time
32