캐시 메모리

캐시 메모리(Cache Memory)는 CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 도입된 고속 메모리입니다.
CPU와 메인 메모리 사이에 위치하며, 일반적으로 SRAM 기반으로 구현된 보조 저장 장치의 한 종류입니다.

캐시 메모리의 구조와 계층

캐시 메모리는 L1 캐시(Level 1 Cache)부터 L3 캐시까지 존재합니다.
일반적으로 L1 캐시와 L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치합니다.

  • L1 캐시(Level 1 Cache)
    • 가장 빠르지만 용량이 가장 작은 캐시
  • L2 캐시(Level 2 Cache)
    • L1보다 용량이 크지만 상대적으로 속도가 느린 캐시
  • L3 캐시(Level 3 Cache)
    • 캐시 메모리 중 가장 용량이 크지만, 속도가 가장 느린 캐시

즉, 캐시 메모리의 크기는 L1 < L2 < L3 순으로 크고, 속도는 L3 < L2 < L1의 순으로 빠릅니다.

CPU가 메모리 내에 데이터가 필요하다고 판단하면, L1 캐시 메모리에 해당 해당 데이터가 있는지 알아보고, 없다면 L2, L3 캐시 메모리 순으로 데이터를 검색합니다.

멀티코어 프로세서의 경우 일반적으로 L1 캐시 메모리와 L2 캐시 메모리는 코어마다 고유한 캐시 메모리로 할당 합니다.
L3 캐시는 여러 코어가 공유하는 형태입니다.

분리형 캐시

분리형 캐시(Split Cache)는 보통 L1 캐시를 분리해 명령어와 데이터를 분리해 저장하는 캐시입니다.

  • L1I 캐시: 명령어만 저장하는 L1캐시
  • L1D 캐시: 데이터만 저장하는 L1캐시

폰 노이만 구조의 병목을 줄이기 위해 사용합니다.

메모리 접근 결과에 대한 분류

메모리에 접근 할 때 캐시 메모리에서 요청이 해결됐는지, 해결하지 못하고 메인 메모리로 넘어갔는지 구분하는 결과 상태를 의미합니다.

  • 캐시 히트(Cache Hit): 캐시 메모리가 예측하여 저장한 데이터가 CPU에 의해 실제로 사용되는 경우
  • 캐시 미스(Cache Miss): 틀린 예측으로 인해 CPU가 메모리로부터 필요한 데이터를 직접 가져와야 하는 경우

캐시의 성능은 캐시 적중률(Cache Hit Ratio)로 평가하며, 캐시 적중률은 캐시가 히트되는 비율을 의미합니다.
범용적으로 사용되는 컴퓨터의 캐시 적중률은 대략 85 ~ 95% 수준의 적중률을 가집니다.

참조 지역성

캐시 메모리의 효율성은 참조 지역성의 원리(Locality of Reference, Principle of Locality)에 기반합니다.

  • 시간 지역성(Temporal Locality)
    • 최근에 접근했던 메모리 공간에 다시 접근하려는 경향 (예: 변수)
  • 공간 지역성(Spatial Locality)
    • 접근한 메모리 공간의 근처를 이어서 접근하려는 경향 (예: 배열)

캐시 쓰기 정책

CPU가 데이터를 캐시에 쓰는 경우, 캐시와 메모리의 데이터가 일관성을 유지해야합니다.

캐시 메모리와 메모리 간의 불일치를 방지하기 위한 방법은 다음과 같습니다.

  • 즉시 쓰기(Write-Through)
    • 캐시 메모리와 메모리에 동시에 데이터를 기록
    • 장점: 메모리를 항상 최신 상태로 유지하여 캐시 메모리와 메모리 간의 일관성이 깨지는 상황을 방지
    • 단점: 데이터를 쓸 때마다 메모리를 참조해야 하므로 버스의 사용 시간과 쓰기 시간이 늘어남
  • 지연 쓰기(Write-Back)
    • 캐시에만 먼저 기록하고, 추후 수정된 데이터를 한 번에 메모리에 반영
    • 장점: 메모리 접근 횟수를 줄일 수 있어 즉시 쓰기 방식에 비해 속도가 더 빠름
    • 단점: 캐시와 메모리 간의 일관성이 깨질 수 있는 가능성 존재

ComputerScience 카테고리 내 다른 글 보러가기

댓글남기기