Diagram:
Key Idea: Tag
Right. Blocks can be placed anywhere in the cache, making it really hard to find specific addresses in data. We tackle this problem by giving each data block a tag, an index-like key assigned to each block. If you store a group of words all of address
0x3f6XX
, whereX
is the identifier for exact pieces of memory, then the tag would be03f6
. You can also think of X as the offset for the tag, in the same way to get 123 (in ordinary decimal counting), 23 is the offset from 100.
Details:
- Block can be placed anywhere in cache - Flexible
- Correct Cache blocks are identified by matching tags
- The top bit is literally just an address
- The offset matches to a specific group within the byte offset
- Slight Problem: Because data could be anywhere, you have to iterate over each
tag in order to find the correct block - Slow.
Quirks of FAC:
- Blocks can go into any location
- Highly flexible → Lowest miss rate
- Must search whole cache to find block → Speed and power suffer