캐시 메모리

Khan·2024년 9월 28일

캐시 메모리란?

캐시 메모리는 CPU와 주 메모리(RAM) 사이에 위치한 고속의 임시 저장 장치이다.

주 목적은 자주 사용되는 데이터나 명령어를 빠르게 접근할 수 있는 위치에 저장하여 컴퓨터의 전반적인 성능을 향상시키는게 목적이다.

CPU가 매번 메모리에 방문하는 것은 시간이 오래걸리니 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가져와 활용하는것

주요 특징

  1. 고속 접근성:
    • 캐시 메모리는 주 메모리보다 훨씬 빠른 접근 속도를 제공한다.
    • 일반적으로 CPU 클럭 속도와 비슷한 속도로 작동하여 지연 시간을 최소화한다.
  2. 작은 용량:
    • 캐시 메모리는 주 메모리에 비해 용량이 매우 작다.
    • 일반적으로 수 KB에서 수 MB 정도의 크기를 가진다.
  3. 계층적 구조:
    • 여러 레벨(L1, L2, L3)의 캐시가 존재하며, 각각 속도와 용량이 다르다.
    • L1 캐시가 가장 빠르고 작으며, L3로 갈수록 더 크고 느려진다.
  4. 멀티코어 프로세서의 캐시 구조
    • L1 캐시: 각 코어에 독립적으로 존재. 보통 데이터 캐시와 명령어 캐시로 분리됨.
    • L2 캐시: 대부분의 경우 각 코어에 독립적으로 존재. L1보다 큰 용량을 가짐.
    • L3 캐시: 모든 코어가 공유. 가장 큰 용량을 가지며, 코어 간 데이터 공유를 위한 중요한 역할 수행.

참조 지역성

시간 지역성

  • 시간 지역성은 최근에 참조된 데이터가 가까운 미래에 다시 참조될 가능성이 높다는 원리이다.
  • 상세 설명:
    • 정의: 특정 데이터나 명령어가 한 번 액세스되면, 그것이 곧 다시 액세스될 가능성이 높다.
  • 예시:
    1. 루프 카운터: for (let i=0; i<1000; i++) 에서 변수 i는 반복적으로 액세스된다.
    2. 함수 호출: 자주 호출되는 함수는 그 코드가 캐시에 유지된다.
    3. 스택 데이터: 지역 변수와 함수 매개변수는 함수 실행 동안 자주 액세스된다.

공간 지역성

  • 공간 지역성은 특정 메모리 위치가 참조되면, 그 주변 메모리 위치들도 곧 참조될 가능성이 높다는 원리이다.
  • 상세 설명:
    • 정의: 프로그램이 특정 메모리 주소를 참조할 때, 그 근처의 메모리 주소들도 곧 참조될 가능성이 높다.
  • 예시:
    1. 배열 순회: for (let i=0; i<1000; i++) { array[i] = i; }에서 array의 연속된 요소들이 순차적으로 접근된다.
    2. 구조체 접근: 구조체의 한 필드에 접근하면, 다른 필드들도 곧 접근될 가능성이 높다.
    3. 명령어 실행: CPU가 한 명령어를 실행하면, 다음 명령어들도 순차적으로 실행될 가능성이 높다.

분리형 캐시

캐시 메모리를 두 개의 독립적인 부분으로 나누어 구성하는 캐시 아키텍처이다

주로 명령어 캐시(I-Cache)와 데이터 캐시(D-Cache)로 분리된다

주요 특징

  • 작동 원리
    • 프로세서는 명령어를 가져올 때 I-Cache에 접근합니다.
    • 데이터를 읽거나 쓸 때는 D-Cache에 접근합니다.
    • 두 캐시는 동시에 접근할 수 있어 병렬 처리가 가능합니다.
  • 장점
    • 병렬 접근: 명령어와 데이터를 동시에 가져올 수 있어 성능이 향상됩니다.
    • 특화된 최적화: 각 캐시의 특성에 맞는 최적화가 가능합니다.
    • 예측 정확도 향상: 각 캐시의 접근 패턴이 더 일관되어 예측이 쉬워집니다

L1 캐시에만 분리형 캐시 방식을 선택한 이유

  • 대부분의 캐시 데이터는 L1캐시에서 찾을 수 있음 (약 80-90%)
  • 트레이드오프가 있음 → 복잡성 증가 대비 성능 향상이 미미할 수 있다
  • 어차피 L1에서 데이터와 명령어가 필터링 된 상태인데 L2에서 또 필터링 작업을 거치는게 불필요할 수 있다

캐시 히트 & 캐시 미스

캐시 히트 : 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우

캐시 미스 : 예측이 틀려 필요한 데이터를 메모리에서 직접 가져와야 하는 경우

  • 캐시 히트 :
    • 작동 원리:
      • 프로세서가 데이터를 요청할 때, 먼저 캐시 메모리를 확인한다
      • 요청된 데이터가 캐시에 있으면, 이를 캐시 히트라고 한다
      • 캐시 컨트롤러는 즉시 해당 데이터를 프로세서에 전달한다
    • 성능 이점:
      • 속도: 캐시 메모리는 주 메모리보다 훨씬 빠르기 때문에, 데이터 접근 시간이 크게 단축된다
      • 대기 시간 감소: 프로세서가 주 메모리에 접근할 때 발생하는 대기 시간을 줄일 수 있다
      • 대역폭 절약: 주 메모리와 프로세서 사이의 데이터 전송량을 줄일 수 있다
    • 캐시 적중율:
      • 정의: 전체 메모리 접근 중 캐시 히트가 발생한 비율
      • 계산: 캐시 히트 횟수 / (히트 횟수 + 미스 횟수)
      • 중요성: 높은 캐시 히트율은 시스템의 전반적인 성능 향상을 의미합니다
  • 캐시 미스
    • 발생 과정:
      • 프로세서가 데이터를 요청할 때 먼저 캐시를 확인
      • 요청된 데이터가 캐시에 없으면 캐시 미스가 발생
      • 시스템은 주 메모리나 하위 레벨 캐시에서 데이터를 찾으러 가야 함
    • 캐시 미스의 유형:
      • 강제적 미스 (Compulsory Miss):
        • 처음 접근하는 데이터로 인해 발생하는 미스
        • 캐시가 비어있을 때 주로 발생
        • 프로그램 실행 초기나 새로운 데이터 세트에 처음 접근할 때 주로 발생
      • 용량 미스 (Capacity Miss):
        • 캐시 크기의 한계로 인해 발생하는 미스
        • 캐시가 모두 차있을 때 새로운 데이터를 위해 기존 데이터를 교체해야 할 때 발생
profile
끄적끄적 🖋️

0개의 댓글