캐시 사상·히트율 계산기
캐시 크기와 블록 크기, 연관도에서 주소의 태그·인덱스·오프셋 비트를 쪼개고 접근 순서로 히트율을 계산합니다. 미스를 강제·용량·충돌로 갈라 어디를 손대야 하는지 알려 줍니다.
한 번에 올려 오는 덩어리입니다. 오프셋 비트를 정합니다.
1이면 직접 사상, 블록 수와 같으면 완전 연관입니다.
직접 사상 — 주소 쪼개기
태그 18 · 인덱스 9 · 오프셋 5
블록 512개 · 집합 512개 · 1-way
주소 0 (0x0)를 이 캐시로 쪼개면
000000000000000000 | 000000000 | 00000
태그 18비트 · 인덱스 9비트 · 오프셋 5비트
10진수 또는 0x 16진수를 공백·쉼표로 구분합니다.
| 주소 | 블록 | 집합 | 태그 | 결과 | 밀려난 블록 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 강제 미스 | — |
| 32 | 1 | 1 | 0 | 강제 미스 | — |
| 0 | 0 | 0 | 0 | 히트 | — |
| 16,384 | 512 | 0 | 1 | 강제 미스 | 0 |
| 0 | 0 | 0 | 0 | 충돌 미스 | 512 |
| 32 | 1 | 1 | 0 | 히트 | — |
사용 방법
- 1캐시 크기와 블록 크기, 연관도를 고릅니다.
- 2주소의 태그·인덱스·오프셋 비트 폭과 예시 주소의 실제 분해를 확인합니다.
- 3접근할 주소 순서를 넣으면 각 접근이 히트인지 미스인지, 어떤 블록이 밀려나는지가 나옵니다.
- 4미스가 충돌인지 용량인지 보고 연관도를 올릴지 캐시를 키울지 정합니다.
자주 묻는 질문
오프셋 = log₂(블록 크기), 인덱스 = log₂(집합 수), 태그 = 주소 비트 − 인덱스 − 오프셋입니다. 집합 수는 전체 블록 수를 연관도로 나눈 값입니다. 32비트 주소에 16KB 캐시·32바이트 블록·직접 사상이면 오프셋 5비트, 인덱스 9비트, 태그 18비트가 됩니다.
직접 사상일 때만 우연히 맞습니다. 인덱스는 «집합 수»의 로그이며, 직접 사상에서는 집합 수와 블록 수가 같아서 구분이 드러나지 않을 뿐입니다. 연관도를 올리면 한 집합에 블록이 여럿 들어가 집합 수가 줄고, 인덱스가 짧아진 만큼 태그가 길어집니다.
0개입니다. 집합이 하나뿐이라 고를 집합이 없기 때문이며, 주소는 태그와 오프셋으로만 나뉩니다. 대신 어느 블록에 있는지 찾으려면 모든 태그를 동시에 견주어야 해서 비교기가 블록 수만큼 필요하고, 그래서 큰 캐시에는 쓰지 않습니다.
처음 보는 블록이면 강제 미스, 아니면 같은 용량의 완전 연관 캐시에서 히트였는지로 가릅니다. 거기서 히트였다면 자리 다툼 탓이므로 충돌, 거기서도 미스였다면 캐시가 통째로 작은 것이므로 용량 미스입니다. 충돌 미스는 연관도를 올리면 사라지고, 용량 미스는 캐시를 키워야 합니다.
아닙니다. 블록을 키우면 한 번에 더 많이 올려 와 강제 미스가 줄지만, 같은 용량에서 블록 수가 줄어 자리 다툼이 심해집니다. 쓰지도 않을 데이터를 함께 올려 오는 낭비도 커집니다. 그래서 실제 캐시는 32~128바이트 언저리에서 절충합니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 교체 정책은 LRU로 봅니다. 실제 하드웨어는 완전한 LRU가 비싸 유사 LRU나 랜덤을 쓰는 일이 많아, 실측 히트율은 이 값보다 조금 나쁜 쪽으로 나옵니다.
- 읽기 접근만 봅니다. 쓰기 정책(write-back/write-through)과 쓰기 할당 여부도 실제 미스율과 메모리 통행량을 바꿉니다.
- 3C 분류는 Hill & Smith의 고전적 방법으로, 완전 연관 LRU를 기준으로 삼습니다. 기준을 어떻게 잡느냐에 따라 용량과 충돌의 경계가 조금씩 달라지는 정의도 있습니다.
- 캐시 크기·블록 크기·연관도는 모두 2의 거듭제곱이어야 합니다. 실제 하드웨어도 비트 쪼개기로 주소를 나누기 때문에 이 제약이 그대로 있습니다.
- 주소 순서는 200개까지 봅니다. 실제 프로그램의 지역성은 이보다 훨씬 긴 흐름에서 드러나므로, 여기 히트율은 규칙을 이해하기 위한 것이지 성능 예측치가 아닙니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.