캐시의 지역성

김민영·2023년 2월 16일
0

CS 스터디

목록 보기
30/32

캐시 메모리

  • 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장하여 속도를 빠르게 하는 메모리
    • 주기억장치보다 크기가 작음
    • 캐시기억장치와 주기억장치 사이에서 정보를 옮기는 것 : 사상(Mapping 매핑)
    • 직접 매핑(Direct Mapping), 연관 매핑(Associate Mapping), 집합 연관 매핑(Set Associate Mapping)
  • 속도가 빠른 장치와 느린 장치간 속도차에 의한 병목현상을 줄이기 위한 범용 메모리
    • CPU가 어떤 데이터를 원하는지 예측할 수 있어야 함
    • 캐시메모리에 CPU가 이후에 참조할 유효한 정보가 어느 정도 있는지가 캐시 성능을 좌우
  • 주기억장치와 CPU 사이에 위치
  • 메모리 계층 구조에서 가장 빠른 소자. CPU 속도와 비슷
  • 캐시메모리를 사용하면 주기억장치를 접근하는 횟수가 줄어들어 컴퓨터 처리속도 향상
  • 수십 kB ~ 수백 kB

캐시의 지역성 Locality

  • 캐시의 적중률 (Hit-rate) 를 극대화 == 캐시 효율적 동작
  • 캐시에 저장할 데이터가 지역성 locality 를 가져야 함
  • 지역성 : 데이터 접근이 시간적, 공간적으로 가깝게 일어나는 것.
    • 데이터를 기억장치 내에서 균일하게 사용하는 것이 아닌, 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성

지역성의 종류

시간적 지역성

  • 특정 데이터에 한 번 접근하면, 가까운 미래에 다시 접근할 가능성이 높음
  • 메모리 상 같은 주소에 여러 차례 읽기 쓰기를 수행하면
    • 비교적 작은 크기의 캐시를 사용해도 효율성 o

공간적 지역성

  • 특정 데이터에 가까운 주소가 순서대로 접근된 경우
  • CPU 캐시나 디스크 캐시의 경우, 한 메모리 주소에 접근할 때, 해당 블록 전부를 캐시에 가져오게 됨.
  • 메모리 주소를 오름차순 또는 내림차순으로 접근하면
    • 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시 효율성 o

매핑 프로세스

  • 주기억장치로부터 캐시메모리로 데이터를 전송하는 방법

직접 매핑 direct mapping

  • 주기억장치의 블록들이 지정된 한 개의 캐시라인으로만 사상될 수 있는 매핑 방법
  • 간단, 구현 비용 적음. 적중률 낮아질 수 있음
  • 메모리 주소를 인덱스로 관리.
  • 같은 인덱스를 갖는 메모리가 인접하여 액세스하면 cache miss 발생가능
  • 데이터 블록 크기만큼 캐시되지 않고, 주소 부분만을 인덱스로 사용하므로 캐시되지않은 인접 데이터로 cache miss 발생

어소시에이티브 매핑 associative mapping

  • 직접 매핑 방식 단점 보완
  • 모든 태그를 병렬로 검사. 복잡, 비용 높음.
  • 비어있는 캐시메모리가 있으면 그냥 주소 저장.
    • DRAM 이 아닌 SRAM 사용
  • 저장시는 알고리즘이 필요없지만, 찾을 때 문제.
    • 조건이나 규칙이 없으니 특정 캐쉬 set 내 모든 블럭을 한 번에 찾아 원하는 데이터가 있는지를 검사해야 함.
    • CAM (Content Addressable Memory) 라는 특수 형태로 메모리 구조 사용
    • 인덱스 대신 index + tag 조합으로 된 태그 부분으로 구성

세트-어소시에이티브 매핑 set-associative mapping

  • 직접매핑과 연관매핑의 장점만을 취함.
  • 여러 개의 direct mapped 방식으로 나누어 사용
  • 본래 메모리 주소의 일부만을 이용하여 태그로 사용.
  • 여러개의 direct mapped 방식에 multiplexer와 OR gate 조합

캐시라인

  • 캐시에 데이터를 저장하는 자료구조 묶음.
  • 주메모리를 읽어들이는 최소 단위
  • 캐시 : memory address + status bit + data block
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글