Dr. Vork: Een set-associative cache is een direct-mapped cache met meerdere Tag-entries per cacheline, zodat er in de cache meerdere stukken data kunnen staan op dezelfde Line.
Om dan te bepalen welke je moet hebben, moet je dan dus door alle entries heenlopen om te kijken of de juiste Tag erbij zit. Bij een 16-way associative cache kan je dus 16 keer moeten vergelijken en dan alsnog naar het geheugen moeten. Tegelijkertijd is de kans 16x zo groot (hoewel dat niet vaststaat, het enige dat vaststaat is dat er 16x zoveel Lines in kunnen) dat je uberhaupt niet naar het geheugen moet tov een standaard (1-way) cache.
Opzich is het logisch dat naarmate cache-sizes vergroten, de hoeveelheid associative entries ook vergroten. Probleem is alleen dat er ERG veel "bookkeeping" komt kijken bij de integriteitsbewaking van je cache. En als je niet oppast kan je systeem alleen maar langzamer worden (als je bijvoorbeeld continue in serie uit 17 of meer totaal verschillende stukken geheugen leest, dan gaat'ie massaal over de zeik, aangezien je dan steeds 16x die hele cacheline moet doorlopen op Tags en daarna ALSNOG uit mem moet lezen.)
Probleem is bijvoorbeeld: welke Tag knikker je eruit bij een cache-miss? De minst recent gebruikte? Die lijst moet je dus wel ELKE geheugenoperatie bijwerken, niet alleen op een cache-miss...