Documente Academic
Documente Profesional
Documente Cultură
How do we know if
the data is present?
Where do we look?
#Blocks is a
power of 2
Use low-order
address bits
Tag 20 10 Data
Hit
Index
Index Valid Tag Data
0
1
2
.
.
.
1021
1022
1023
20 32
32
What kind of locality are we taking advantage of?
Taking Advantage of Spatial Locality
Let cache block hold more than one word
Start with an empty cache - all
blocks initially marked as not valid 0 1 2 3 4 3 4 15
0 miss 1 hit 2 miss
00 Mem(1) Mem(0) 00 Mem(1) Mem(0) 00 Mem(1) Mem(0)
00 Mem(3) Mem(2)
4 hit 15 miss
01 Mem(5) Mem(4) 1101 Mem(5) Mem(4)
15 14
00 Mem(3) Mem(2) 00 Mem(3) Mem(2)
l 8 requests, 4 misses
Total # of bit needed for a cache
function of the cache size and the address size.
For the following
32-bit byte addresses
A direct-mapped cache
The cache size is 2n blocks
n bits for the index
The block size is 2m words (2m+2 bytes)
m bits for the word within the block
tag size = 32 (n+m+2).
Total # of bits = 2n *(block size+tag size+valid field size)
31 10 9 4 3 0
Tag Index Offset
22 bits 6 bits 4 bits
Direct mapped
Block Cache Hit/miss Cache content after access
address index 0 1 2 3
0 0 miss Mem[0]
8 0 miss Mem[8]
0 0 miss Mem[0]
6 2 miss Mem[0] Mem[6]
8 0 miss Mem[8] Mem[6]
Fully associative
Block Hit/miss Cache content after access
address
0 miss Mem[0]
8 miss Mem[0] Mem[8]
0 hit Mem[0] Mem[8]
6 miss Mem[0] Mem[8] Mem[6]
8 hit Mem[0] Mem[8] Mem[6]
optimization for
memory access
Hardware caches
Reduce comparisons to reduce cost
Virtual memory
Full table lookup makes full associativity feasible
Benefit in reduced miss rate
31 10 9 4 3 0
Tag Index Offset
18 bits 10 bits 4 bits
Read/Write Read/Write
Valid Valid
32 32
Address Address
32 Cache 128 Memory
CPU Write Data Write Data
32 128
Read Data Read Data
Ready Ready
Multiple cycles
per access
Could
partition into
separate
states to
reduce clock
cycle time
3 CPU A writes 1 to X 1 0 1