캐시 매핑

이강용·2024년 7월 26일
0

CS

목록 보기
99/109

캐시 매핑이란?

  • 메인 메모리의 데이터를 캐시에 저장하고 나중에 필요할 때 이를 다시 찾기 위한 방법을 의미

1. 직접 매핑(Direct Mapping)

구조

  1. 주소 구성
    • 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
    • 블록(Block) : 메모리의 데이터를 일정 크기로 나눈 단위
      • 예를 들어, 각 블록이 4개의 데이터로 구성되어 있음
    • 라인(Line) : 캐시에서 데이터를 저장하는 단위, 메모리의 특정 블록은 캐시의 특정 라인에만 매핑됨
  2. 블록 크기
    • 메모리 주소의 가장 뒷부분은 블록의 크기를 나타냄
      • 예를 들어, 블록의 크기가 4개의 데이터(워드)라면 이는 4개의 독립된 데이터 위치를 의미하며, 2비트의 오프셋을 사용하여 각 위치를 구분

예시 설명

  1. 데이터 저장

    • 메모리 주소 0000000100의 데이터를 예를 들면, 이 두 주소는 캐시에서 동일한 라인(라인 0)에 매핑
    • 그림에서 붉은색 숫자가 블록 번호를 나타내고, 파란색 숫자는 오프셋
  2. 데이터 검색 과정

    • CPU가 메모리 주소 00000의 데이터를 요청하면 캐시는 해당 주소의 태그와 캐시 라인의 태그를 비교하여 일치하는지 확인
    • 만약 태그가 일치하면 해당 데이터는 캐시에서 가져옴, 일치하지 않으면 캐시 미스가 발생하고 메모리에서 데이터를 가져와야 함
  3. 충돌 문제

    • 메모리의 블록 0000000100이 동일한 캐시 라인에 매핑되기 때문에 반복적인 데이터 접근 시 출돌이 발생 할 수 있음, 이는 캐시 미스를 유발

2. 연관 매핑(Fully Associative Mapping)

  • 연관 매핑은 메모리의 각 블록이 캐시의 어느 위치에나 저장될 수 있는 방식
    • 이 방식은 캐시 미스를 줄이기 위해 설계되었지만 구현이 복잡하고 비용이 많이 듦

구조

  1. 주소 구성
    • 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
    • 오프셋(Offset) : 블록 내에서 데이터의 위치를 나타냄
  2. 데이터 저장
    • 모든 캐시 라인은 태그를 가짐, 메모리 블록은 캐시 내 어느 위치에나 저장될 수 있음
      • 블록이 캐시에 저장될 때, 블록의 태그와 데이터가 함께 저장
  • 장점

    • 유연성 : 모든 블록이 어느 라인에나 저장될 수 있어 캐시 미스 확률이 낮아짐
    • 적중률 향상 : 반복적인 데이터 접근 시 추돌이 줄어듦
  • 단점

    • 구현의 복잡성 : 모든 태그를 검사해야 하므로 검색 시간이 오래 걸림
    • 비용 : 하드웨어 구현이 복잡하고 비용이 많이 듦

3. 집합 - 연관 매핑(Set - Associative Mapping)

  • 집합 - 연관 매핑은 직접 매핑과 연관 매핑의 절충 방식, 캐시는 여러 개의 집합으로 나뉘며, 각 집합 내에서는 연관 매핑이 적용

구조

  1. 주소 구성
    • 태그(Tag) : 메모리 주소의 일부로 블록이 올바른지 확인하는 데 사용
    • 집합 인덱스(Set Index) : 해당 블록이 어느 집합에 속하는지를 결정
    • 오프셋(Offset) : 블록 내에서 데이터의 위치를 나타냄
  2. 데이터 저장
    • 캐시는 여러 개의 집합으로 나뉨, 각 집합은 여러 라인으로 구성
    • 메모리 블록은 특정 집합에 매핑되고, 그 집합 내에서는 어느 라인에나 저장될 수 있음
  • 장점
    • 충돌 감소 : 직접 매핑보다 충돌이 적음
    • 유연성 향상 : 집합 내에서는 연관 매핑이 적용되어 유연성이 높아짐
  • 단점
    • 구현의 복잡성 : 집합 내의 모든 태그를 검사해야 하므로 검색 시간이 직접 매핑보다는 길어질 수 있음
    • 비용 : 연관 매핑보다는 저렴하지만 직접 매핑보다는 비용이 많이 듦
profile
HW + SW = 1

0개의 댓글