▪ Allow a given block to go in any cache entry (Any block to any line)
어떤 메모리 블록이든 캐시의 어느 자리(line)에도 저장될 수 있다
▪ More flexible, and reduces miss rate
유연해서 miss rate(미스율)이 낮아진다
▪ Requires all entries to be searched at once
모든 캐시 엔트리를 한 번에 비교해야 한다.
▪ Comparator per entry: expensive
엔트리마다 비교기(comparator)가 필요 → 비쌈
▪ Divides the cache into sets
캐시를 여러 개의 '세트(set)'로 나눈다
▪ Each set contains M entries (M-way set)
각 세트(set)에 M개의 엔트리가 존재한다
▪ A block maps to a specific set but can occupy any line within that set
메모리 블록은 특정 세트에만 들어갈 수 있지만, 그 세트 안에서는 아무 라인이나 가능
▪ Search all entries in a given set at once
그 세트 안의 엔트리들만 비교하면 됨 → 전체 탐색보다 저렴
▪ M comparators (less expensive)
비교기가 M개만 필요하여 비용이 낮음


| 방식 | 블록이 갈 수 있는 위치 | 비교해야 하는 tag 개수 | 장점 | 단점 |
|---|---|---|---|---|
| Direct-mapped | 딱 1곳 | 1개 | 빠르고 싸다 | 충돌 많음 |
| Set-associative | 한 set 안 여러 곳 | set 크기만큼 | 유연 + 효율 | 적당한 비용 |
| Fully associative | 어디든 가능 | 전체 라인 | miss 거의 없음 | 가장 비싸고 복잡 |
| 방식 | Set 수 | Set당 line 수(way) | 저장 위치 자유도 | 장점 | 단점 |
|---|---|---|---|---|---|
| 1-way (Direct mapped) | 8 | 1 | 매우 낮음 | 빠름/저렴 | 충돌 많음 |
| 2-way | 4 | 2 | 증가 | 적절한 성능 | 비용 증가 |
| 4-way | 2 | 4 | 더 증가 | miss rate 낮음 | 비교회로 비쌈 |
| 8-way (Fully associative) | 1 | 8 | 최고 | miss rate 최소 | 가장 비싸고 느림 |