|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Managing cache: issues |
|
|
|
|
|
|
|
Cache misses: types |
|
|
|
|
compulsory: first
reference to a data item |
|
|
|
|
capacity: not enough
space in cache |
|
|
|
|
|
too few slots |
|
|
|
|
|
|
cache line too small |
|
|
|
|
|
|
conflict: space is
available, but data block already stored at that location |
|
|
|
2 cache lines map to same
cache slot |
|
|
|
Instruction and data
cache |
|
|
|
|
|
|
instructions
and data have different access patterns, use different memory areas |
|
|
use separate instruction
and data caches |
|
|
|
|
|
one reason to have
separate instruction and data memories in datapath |
|
|
Modifying data in the
cache |
|
|
|
|
write-back: update main
memory only when block is removed from cache |
|
|
|
saves time required to
write main memory for each store |
|
|
|
|
write-through |
|
|
|
|
update main memory at the
same time as cache |
|
|
|
|
|
save time by continuing
execution while main memory write completes |
|
|
Replacement policy |
|
|
|
|
|
how to choose cache line
to replace |
|
|
|
|
|
LRU: least recently
used: slot which has not been used in the longest time |
|
|
LFU: least frequently
used |
|
|
|
|
|
FIFO: first in, first
out: slot which has been in the cache the longest |
|
|
|
Random: may be only 10%
worse than LRU |
|
|
|
may require additional
hardware to keep track |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|