직접 사상 vs 세트 연관 vs 완전 연관 캐시
캐시는 메모리의 각 블록을 어디에 저장할 수 있는지 정해야 합니다. 직접 사상 캐시에서는 각 블록이 들어갈 수 있는 라인이 정확히 하나뿐이어서 단순하고 빠르지만, 두 블록이 같은 라인을 공유하면 충돌이 발생합니다. 완전 연관 캐시에서는 블록을 어디에나 둘 수 있어 충돌은 피하지만 모든 라인과 비교해야 합니다. 세트 연관 캐시는 그 절충안으로, 한 세트 안의 몇 개 웨이 중 어디에나 블록을 둘 수 있습니다. 대부분의 CPU 캐시는 세트 연관 방식입니다.
| 비교 항목 | 직접 사상 | 세트 연관 | 완전 연관 |
|---|---|---|---|
| 블록을 둘 수 있는 위치 | 인덱스 비트로 정해지는 정확히 한 라인 | 한 세트 안의 여러 웨이(예: 4개 또는 8개) 중 어느 곳이든 | 캐시 안의 모든 라인 |
| 접근당 태그 비교 횟수 | 1회 | 웨이마다 1회(예: 8회) | 모든 라인을 동시에 병렬로 |
| 히트 시간 | 가장 빠름 | 약간 느림 | 가장 느림 |
| 하드웨어 비용과 전력 | 가장 낮음 | 중간 | 가장 높음: 라인마다 비교기 필요 |
| 충돌 미스 | 가장 빈번 | 웨이 수가 늘수록 감소 | 없음: 강제 미스와 용량 미스만 남음 |
| 교체 정책 | 불필요: 선택지가 하나뿐 | 세트 안에서 선택(LRU 또는 근사 방식) | 모든 라인 중에서 선택 |
| 주요 용도 | 작고 단순한 캐시, 일부 마이크로컨트롤러 | 대부분 CPU의 L1, L2, L3 캐시, 보통 4~16웨이 | TLB, 희생(victim) 캐시 같은 작은 구조 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.