 Where do I put my data once I've got it? I have a limited amount of space in my low-level caches, even in my main memory. So I may not want to just structure everything in one big contiguous line the way we've thought about it. We've thought about memory in terms of having one huge array. But we do have some options, especially at the low levels where we're really only able to hold a handful of things. They're really tiny. There's a good chance they're not contiguous blocks of memory. When we're working with caches, there's four different ways we can think about arranging our data inside that cache. In a direct mapped cache, there is exactly one place I can put a specific piece of data. It just goes there, and that's it. It makes it really easy to find. But if I've got two pieces of data that need to end up in that same slot, then I'm going to be evicting them every time the other one shows up. So that may not work too well. A fully associative cache, on the other hand, would let me put my data wherever I feel like it. It's great. It's wonderful. Just stick things wherever I have room for them. It turns out that's great. You can stick lots of stuff in there. You have a limited number of conflicts. But then it takes longer to find your piece of data. You have to search through every place where your data could be to discover if it's there or not. So that takes time. So we usually pick something in between. Some form of set associative cache. In this case, there's a handful of related areas that it could be hiding in. With a set associative cache, you might say, I've got four different blocks. Each one can hold some of them. Other like what we did with the branch prediction, we'd hash the address of the data that you want and use that to tell which of, say, four blocks we might be able to find our data in. An N-Way set associative cache takes the opposite approach and says instead of there being, say, four different chunks where we might put data, we will only put four pieces of data inside any of those boxes. Same sort of thing, different approach to the same problem. The set associative methods are the most popular because they don't take too long to find your piece of data and you don't end up with too many conflicts between pieces of data.