캐시 매핑이란?
- 메인 메모리의 데이터를 캐시에 저장하고 나중에 필요할 때 이를 다시 찾기 위한 방법을 의미
1. 직접 매핑(Direct Mapping)
구조
- 주소 구성
- 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
- 블록(Block) : 메모리의 데이터를 일정 크기로 나눈 단위
- 예를 들어, 각 블록이 4개의 데이터로 구성되어 있음
- 라인(Line) : 캐시에서 데이터를 저장하는 단위, 메모리의 특정 블록은 캐시의 특정 라인에만 매핑됨
- 블록 크기
- 메모리 주소의 가장 뒷부분은 블록의 크기를 나타냄
- 예를 들어, 블록의 크기가 4개의 데이터(워드)라면 이는 4개의 독립된 데이터 위치를 의미하며, 2비트의 오프셋을 사용하여 각 위치를 구분
예시 설명
-
데이터 저장
- 메모리 주소
00000
과 00100
의 데이터를 예를 들면, 이 두 주소는 캐시에서 동일한 라인(라인 0)에 매핑
- 그림에서 붉은색 숫자가
블록 번호
를 나타내고, 파란색 숫자는 오프셋
-
데이터 검색 과정
- CPU가 메모리 주소
00000
의 데이터를 요청하면 캐시는 해당 주소의 태그와 캐시 라인의 태그를 비교하여 일치하는지 확인
- 만약 태그가 일치하면 해당 데이터는 캐시에서 가져옴, 일치하지 않으면 캐시 미스가 발생하고 메모리에서 데이터를 가져와야 함
-
충돌 문제
- 메모리의 블록
00000
과 00100
이 동일한 캐시 라인에 매핑되기 때문에 반복적인 데이터 접근 시 출돌이 발생 할 수 있음, 이는 캐시 미스를 유발
2. 연관 매핑(Fully Associative Mapping)
- 연관 매핑은 메모리의 각 블록이 캐시의 어느 위치에나 저장될 수 있는 방식
- 이 방식은 캐시 미스를 줄이기 위해 설계되었지만 구현이 복잡하고 비용이 많이 듦
구조
- 주소 구성
- 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
- 오프셋(Offset) : 블록 내에서 데이터의 위치를 나타냄
- 데이터 저장
- 모든 캐시 라인은 태그를 가짐, 메모리 블록은 캐시 내 어느 위치에나 저장될 수 있음
- 블록이 캐시에 저장될 때, 블록의 태그와 데이터가 함께 저장
-
장점
- 유연성 : 모든 블록이 어느 라인에나 저장될 수 있어 캐시 미스 확률이 낮아짐
- 적중률 향상 : 반복적인 데이터 접근 시 추돌이 줄어듦
-
단점
- 구현의 복잡성 : 모든 태그를 검사해야 하므로 검색 시간이 오래 걸림
- 비용 : 하드웨어 구현이 복잡하고 비용이 많이 듦
3. 집합 - 연관 매핑(Set - Associative Mapping)
집합 - 연관
매핑은 직접 매핑과 연관 매핑의 절충 방식, 캐시는 여러 개의 집합으로 나뉘며, 각 집합 내에서는 연관 매핑이 적용
구조
- 주소 구성
- 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
- 집합 인덱스(Set Index) : 해당 블록이 어느 집합에 속하는지를 결정
- 오프셋(Offset) : 블록 내에서 데이터의 위치를 나타냄
- 데이터 저장
- 캐시는 여러 개의 집합으로 나뉨, 각 집합은 여러 라인으로 구성
- 메모리 블록은 특정 집합에 매핑되고, 그 집합 내에서는 어느 라인에나 저장될 수 있음
- 장점
- 충돌 감소 : 직접 매핑보다 충돌이 적음
- 유연성 향상 : 집합 내에서는 연관 매핑이 적용되어 유연성이 높아짐
- 단점
- 구현의 복잡성 : 집합 내의 모든 태그를 검사해야 하므로 검색 시간이 직접 매핑보다는 길어질 수 있음
- 비용 : 연관 매핑보다는 저렴하지만 직접 매핑보다는 비용이 많이 듦