�Caches III
CS61C
UC Berkeley�Teaching Professor �Dan Garcia
cs61c.org
Great Ideas
in�Computer Architecture
(a.k.a. Machine Structures)
Garcia
Caches III (1)
Garcia
Direct Mapped Example
Caches III (2)
Garcia
Accessing data in a direct mapped cache
Address (hex)
Value of Word
Memory
00000010
00000014
00000018
0000001C
a
b
c
d
...
...
00000030
00000034
00000038
0000003C
e
f
g
h
00008010
00008014
00008018
0000801C
i
j
k
l
...
...
...
...
...
...
Caches III (3)
Garcia
Caches III (3)
Garcia
Accessing data in a direct mapped cache
000000000000000000 0000000001 0100
000000000000000000 0000000001 1100
000000000000000000 0000000011 0100
000000000000000010 0000000001 0100� Tag Index Offset
Caches III (4)
Garcia
Example: 16 KB Direct-Mapped Cache, 16B blocks
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
0
0
0
0
0
0
0
0
0
Caches III (5)
Garcia
1. Read 0x00000014
Tag Index Offset
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
0
0
0
0
0
0
0
0
0
Caches III (6)
Garcia
So we read block 1 (0000000001)
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
0
0
0
0
0
0
0
0
0
Tag Index Offset
Caches III (7)
Garcia
No valid data
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
0
0
0
0
0
0
0
0
0
Tag Index Offset
Caches III (8)
Garcia
So load that data into cache, setting tag, valid
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (9)
Garcia
Read from cache at offset, return word b�
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (10)
Garcia
2. Read 0x0000001C = 0…00 0..001 1100
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (11)
Garcia
Index is Valid
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (12)
Garcia
Index is Valid, Tag Matches
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (13)
Garcia
Index is Valid, Tag Matches, return d
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (14)
Garcia
3. Read 0x00000034 = 0…00 0..011 0100
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (15)
Garcia
So read block 3
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (16)
Garcia
No valid data
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
0
0
0
0
0
0
0
0
d
c
b
a
Tag Index Offset
Caches III (17)
Garcia
Load that cache block, return word f
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
0
d
c
b
a
0
h
g
f
e
Tag Index Offset
Caches III (18)
Garcia
4. Read 0x00008014 = 0…10 0..001 0100
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
0
d
c
b
a
0
h
g
f
e
Tag Index Offset
Caches III (19)
Garcia
So read Cache Block 1, Data is Valid
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
0
d
c
b
a
0
h
g
f
e
Tag Index Offset
Caches III (20)
Garcia
Cache Block 1 Tag does not match (0 ≠ 2)
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
0
d
c
b
a
0
h
g
f
e
Tag Index Offset
Caches III (21)
Garcia
Miss, so replace block 1 with new data & tag
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
2
l
k
j
i
0
h
g
f
e
Tag Index Offset
Caches III (22)
Garcia
And return word j
...
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
4
5
6
7
1022
1023
...
Index
0
1
0
1
0
0
0
0
0
0
2
l
k
j
i
0
h
g
f
e
Tag Index Offset
Caches III (23)
Garcia
Do an example yourself. What happens?
0
1
2
3
4
5
6
7
Index
2
l
k
j
i
0
h
g
f
e
0
1
0
1
0
0
0
0
Caches III (24)
Garcia
Caches III (25)
Garcia
Do an example yourself. What happens?
0
1
2
3
4
5
6
7
Index
2
l
k
j
i
0
h
g
f
e
0
1
0
1
0
0
0
0
Caches III (26)
Garcia
Caches III (27)
Garcia
Answers
Index = 3, Tag matches, �Offset = 0, value = e
Index = 1, Tag mismatch, so replace from memory, �Offset = 0xc, value = d
Address (hex)
Value of Word
Memory
00000010
00000014
00000018
0000001C
a
b
c
d
...
...
00000030
00000034
00000038
0000003C
e
f
g
h
00008010
00008014
00008018
0000801C
i
j
k
l
...
...
...
...
...
...
🗹
Caches III (28)
Garcia
Caches III (28)
Garcia
Writes, Block Sizes, Misses
Caches III (29)
Garcia
Multiword-Block Direct-Mapped Cache
10
Index
Data
Index
Tag
Valid
0
1
2
.
.
.
1021
1022
1023
31 30 . . . 15 14 13 . . . 4 3 2 1 0
Byte offset
18
18
Tag
Hit
AND
“MUX”�4🡪1 Multiplexor
Data
32
Block offset
2
What kind of locality are we taking advantage of?
Caches III (30)
Garcia
What to do on a write hit?
Caches III (31)
Garcia
Block Size Tradeoff
Caches III (32)
Garcia
Extreme Example: One Big Block
Cache Data
Valid Bit
B 0
B 1
B 3
Tag
B 2
Caches III (33)
Garcia
Block Size Tradeoff Conclusions
Miss
Penalty
Block Size
Increased Miss Penalty
& Miss Rate
Average
Access
Time
Block Size
Exploits Spatial Locality
Fewer blocks:
compromises
temporal locality
Miss
Rate
Block Size
Caches III (34)
Garcia
Types of Cache Misses (1/2)
Caches III (35)
Garcia
Types of Cache Misses (2/2)
🗹
Caches III (36)
Garcia
Fully Associative Caches
Caches III (37)
Garcia
Fully Associative Cache (1/3)
Caches III (38)
Garcia
Fully Associative Cache (2/3)
Byte Offset
:
Cache Data
B 0
0
4
31
:
Cache Tag (27 bits long)
Valid
:
B 1
B 31
:
Cache Tag
=
=
=
=
=
:
Caches III (39)
Garcia
Fully Associative Cache (3/3)
Caches III (40)
Garcia
Final Type of Cache Miss
Caches III (41)
Garcia
How to categorize misses
Caches III (42)
Garcia
Caches III (43)
Garcia
And in Conclusion…
Valid
Tag
0xc-f
0x8-b
0x4-7
0x0-3
0
1
2
3
...
1
0
d
c
b
a
000000000000000000 0000000001 1100
address: tag index offset
🗹
Caches III (44)
Garcia