[ The PC Guide | Systems and Components Reference Guide | Motherboard and System Devices | System Cache
| Function and Operation of the System Cache ]
Cache Mapping and Associativity
A very important factor in determining the effectiveness of the level 2 cache relates
to how the cache is mapped to the system memory. What this means in brief is that there
are many different ways to allocate the storage in our cache to the memory addresses it
serves. Let's take as an example a system with 512 KB of L2 cache and 64 MB of main
memory. The burning question is: how do we decide how to divvy up the 16,384 address lines
in our cache amongst the "huge" 64 MB of memory?
There are three different ways that this mapping can generally be done. The choice of
mapping technique is so critical to the design that the cache is often named after this
choice:
- Direct Mapped Cache: The simplest way to allocate the cache to the system memory
is to determine how many cache lines there are (16,384 in our example) and just chop the
system memory into the same number of chunks. Then each chunk gets the use of one cache
line. This is called direct mapping. So if we have 64 MB of main memory
addresses, each cache line would be shared by 4,096 memory addresses (64 M divided by 16
K).
- Fully Associative Cache: Instead of hard-allocating cache lines to particular
memory locations, it is possible to design the cache so that any line can store the
contents of any memory location. This is called fully associative mapping.
- N-Way Set Associative Cache: "N" here is a number, typically 2, 4, 8
etc. This is a compromise between the direct mapped and fully associative designs. In this
case the cache is broken into sets where each set contains "N" cache lines,
let's say 4. Then, each memory address is assigned a set, and can be cached in any one of
those 4 locations within the set that it is assigned to. In other words, within each
set the cache is associative, and thus the name.
This design means that there are "N" possible places that a given memory
location may be in the cache. The tradeoff is that there are "N" times as many
memory locations competing for the same "N" lines in the set. Let's suppose in
our example that we are using a 4-way set associative cache. So instead of a single block
of 16,384 lines, we have 4,096 sets with 4 lines in each. Each of these sets is shared by
16,384 memory addresses (64 M divided by 4 K) instead of 4,096 addresses as in the case of
the direct mapped cache. So there is more to share (4 lines instead of 1) but more
addresses sharing it (16,384 instead of 4,096).
Conceptually, the direct mapped and fully associative caches are just "special
cases" of the N-way set associative cache. You can set "N" to 1 to make a
"1-way" set associative cache. If you do this, then there is only one line per
set, which is the same as a direct mapped cache because each memory address is back to
pointing to only one possible cache location. On the other hand, suppose you make
"N" really large; say, you set "N" to be equal to the number of lines
in the cache (16,384 in our example). If you do this, then you only have one set,
containing all of the cache lines, and every memory location points to that huge set. This
means that any memory address can be in any line, and you are back to a fully associative
cache.
Next: Comparison of Cache Mapping Techniques
Home - Search
- Topics - Up
|