캐시의 크기는 메모리보다 작기 때문에 항상 메모리의 일부 페이지만을 가지고 있다.
: 직접 매핑이란 메모리의 특정 블록은 특정 캐시라인에만 매핑할 수 있는 것을 말한다.
✅ 예시) 메모리가 a개의 페이지, 캐시가 b개의 페이지로 이루어져 있다.
메모리를 b개로 쪼갠다. 그러고 나서 캐시랑 메모리의 각 라인을 하나씩 매핑시킨다.
1) CPU에서 어떤 값을 가져온다고 했을때, 페이지를 기반으로 가져온다. 이럴 때 page number와 page offset을 기반으로 가져온다.
👉 bd가 일치하는 것이 와야 한다. 왼쪽 주홍철의 자리는 주홍철, 김건우, 구성천만 들어올 수 있다.
2) 장점 : 해당 자리만 확인하면 된다.
3) 단점 : 스와핑일 빈번하게 발생할 수 있다. (예를 들어, 주홍철, 김건우, 구성천 순으로 원한다면 박종선, 방요셉, 강민기의 자리를 쓸 수 없고 계속 스와핑 하면서 주홍철 자리에 들어와야 한다. )
👉 정리 : 캐시 블록의 일정 위치에만 데이터가 올라오기 때문에 해당 블록에 올라온 페이지인지만 확인하면 된다. 처리가 빠르지만 충돌 발생이 잦다.
순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑하여 메모리의 컨텐츠가 캐시의 어느 위치에도 올라갈 수 있는 방법이다.
👉 충돌은 적지만, 캐시의 모든 블록을 탐색해야 해서 속도가 느리다.
집합을 나누고 각 집합에 직접 매핑을 사용하는 것이다.
👉 bd를 0 또는 1밖에 없게 하고 집합을 2개로 나눈다. bd가 0인게 2개가 들어갈 수있게, 1인게 2개가 들어갈 수 있게 나눈 것.
👉 집합으로 나눴기 때문에 스와핑을 완화시키고, 집합 내의 집합매핑을 사용할 수 있기 때문에 연관매핑처럼 모든 캐시를 뒤지는 일 없이 바로 캐시 히트, 미스 여부를 알 수 있다.
출처 : 면접을 위한 CS전공지식 노트(책 / 강의)