Direct-Mapped Cache: Write Allocate With Write-Through Protocol
Direct-Mapped Cache: Write Allocate With Write-Through Protocol
if (Cache Miss)
Write Allocate and Write-Back Protocol : write data to address [x]n-m [w]m [d]b
Block Address A = [x]n-m [w]m
3
Direct-Mapped Cache: Reads in a Write Back Cache
• Synchronous Writes
• Writes proceed at the speed of main memory not at speed of cache
W A WB W C R S RT R U
WA WB WC
wA wB wC RS RT RU
wA wB wC RS RT RU
WA WB WC
5
Direct-Mapped Cache: Write Allocate with Write-Through
RRSS WC WB WA
FIFO Queue
WC WB RRSS WA
WA WB WC RS
wA wB wC RS RS RT RU
wA wB wC RS RS RT RU
WA WB WC RS
WA RS WB WC 6
wA wB wC RS RS RT RU
Direct-Mapped Cache: Write Allocate with Write-Through
Write Allocate and Write-Through Protocol: write data to address [x]n-m [w]m[d]b
Block Address A = [x]n-m [w]m
8
Set-Associative Organization
Cache Organization: Main memory address: n+b bits
2m cache blocks vs 2n blocks of main memory, n > m
Block consists of 2b consecutive bytes
Four Basic Questions:
1. Where in cache do we place a block of main memory?
2. How do we locate (search) for a memory reference in the cache?
3. Which block in the cache do we replace?
4. How are writes handled?
M = 2m Cache Main
Memory N = 2n
Memory
9
Set-Associative Cache: Motivation
Direct Mapped Cache:
1. Only one cache location to store any memory block
Conflict Misses: cache forces eviction even if other cache blocks unused
Improve miss ratio by providing choice of locations for each memory
block
P
a
g
e
0
P
a
g
e
1
All cache blocks have different colors A memory block can be placed in any cache
block
Memory blocks in each page cycle through the 1
same colors in order
Example: Cache size = M words Therefore memory words with addresses M apart
will map to the same cache block in a DM cache
while (!done) {
for (i = M; i < limit; i = i+M)
a[i] += (a[i-M] + a[i+M]) / 2;
}
P
a
g
P e
a
g 2
e
P 2-WAY SET
1 ASSOCIATIVE CACHE
a
DIRECT EXAMPLE: 0,8,0,8,0,8,…… g
MAPPED e
100% MISS 100% HITS AFTER
3 first 2 accesses
12
Mapping between Memory Blocks and Cache Blocks
Direct-Mapped Cache mapping Fully Associative mapping 2-way Set Associative mapping
A memory block can be placed only in a cache A memory block can be placed only in set of matching color
block of matching color
Set-Associative Cache
Example:
Cache size: M = 32 blocks,
Cache “way”: K = 4
Number of sets: S = M/K = 8
Consider address trace 0, 32, 64, 96, 128, …….
In Direct mapped cache (K=1) all blocks mapped to cache block 0
In this example (K=4) all blocks mapped to set 0; but 4 cache blocks available in each set
14
Example:
Cache size: M = 32 blocks
Cache “way”: K = 4
Number of sets S = M/K = 8
Set Index
0
1
2
3
4
5
6
7
Cache
15
K-way Set-Associative Cache (K = 2)
n-s s b
Byte
x w Offset 0
1
Memory Address
2
3
4
5
0 6
1 7
2 8
Set Index
3 9
10
Cache 11
12
13
14
N = 16, M = 8, K = 2, S = 4
15
n = 4, m = 3, k = 1, s = 2 Memory
16
Set-Associative Cache Organization
To identify which of the 2n-s possible memory blocks is actually stored in
a given cache block, each cache block is given a TAG of n-s bits.
Cache Entry:
V TAG DATA
n-s
V (Valid) bit: Indicates that the cache entry contains valid data
TAG : identifies which of the 2n-s memory blocks stored in cache block
DATA : Copy of the memory block stored in this cache block
17
2-way Set Associative Cache
CACHE BYTE
TAG
INDEX OFFSET
tag match
Set-Associative Cache Organization
0 aaaa
1
2 qqqq
3
4 bbbb
TAG DATA TAG DATA 5 tttt
0 01 bbbb 00 aaaa 6
Cache Hit if there is a block in set cache[w] such that its V bit is set and
its TAG field matches x 20
Cache 21
Set-Associative Cache Replacement
Replacement Strategy:
Which of the K blocks in the selected set is replaced?
Random: One of the K blocks in the set chosen at random and replaced
LRU (Least Recently Used) Policy: Replace the block that has not been
referenced for the longest time -- block whose last reference most in the past
Difficult to implement efficiently in hardware
Approximations to LRU often used
In example: 0 referenced more lately than 4: replace 4
TAG DATA TAG DATA
0 00 AAAA 10 DDDD
1
2 01
3
Cache 22
Set-Associative Cache: Write Allocate with Write-Through
Write Allocate and Write-Through Protocol: write data to address A = [x]n-s [w]s
23
Set-Associative Cache: Write Allocate with Write Back
Write Allocate and Write-Back Protocol : write data to address A = [x]n-s [w]s
If cache hit update data field of cache block
If cache miss
select a block to replace writing it to main memory if dirty
update cache block with new data and V, D, TAG fields
Restart processor