Skip to main content

Cache Memory 동작원리

시간 지역성(Temporal Locality)

  • forwhile 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시후 또 참조될 가능성이 높다.

공간 지역성(Spatial Locality)

  • arr[0], arr[1], ... 과 같은 연속 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시후 또 사용될 가능성이 높다.
  • CPU가 요청한 데이터가 캐시에 있으면 "Cache Hit", 없어서 DRAM에서 가져오면 "Cache Miss"

Cache Miss의 종류

  • Cold Miss
    • 해당 메모리 주소를 처음 접근해서 발생하는 미스이다.
  • Conflict Miss
    • 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서, 캐시 블록 간의 충돌에 의해 발생하는 미스이다. (특히 direct mapped cache 구성에서 많이 발생한다.)
  • Capacity Miss
    • 캐시 메모리의 공간이 부족해서 발생하는 미스이다.

작동 방식과 구조

  • Direct Mapped Cache
    • DRAM의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일 방식이다.
    • 같은 캐시 메모리에 접근하려 할 때, Conflict Miss가 발생할 수 있다.
  • Fully Associative Cache
    • 데이터를 저장하는 블록의 인덱스를 결정하는 방식이 없이 모든 블록을 자유롭게 저장할 수 있는 방식을 말한다.
  • Set Associative Cache
    • Direct Mapped Cache + Fully Associative Cache를 합한 방식이다.

관련 질문

캐시 메모리의 Conflict Miss를 해결하기 위한 방법은?

  • Conflict Miss를 줄이기 위해서는 캐시 메모리의 구성을 조정하거나, 적절한 알고리즘을 사용하여 충돌을 최소화해야 한다.
  • 예를 들어, direct-mapped 캐시 메모리에서는 충돌이 발생하지 않지만, n-way set-associative 캐시 메모리에서는 충돌이 발생할 가능성이 높다. 따라서, 캐시 메모리의 구성을 direct-mapped에서 fully associative로 변경하거나, 충돌을 최소화하기 위한 알고리즘을 사용하여 Conflict Miss를 줄인다.

하드웨어의 캐시 메모리와 브라우저의 캐시 메모리의 차이는?

  • 일단 기본적으로 목적과 구조가 다르다.
  • 하드웨어 캐시
    • CPU(중앙처리장치)에서 메인 메모리로부터 자주 접근하는 데이터를 저장해서, 빠르게 접근할 수 있게 해준다.
    • 캐시의 지역성(Locality)을 기반으로 데이터를 저장하고 전달한다.
  • 브라우저의 캐시
    • 인터넷 브라우저에서 웹 사이트의 리소스(ex. image, stylesheet, javascript 등)를 저장해 빠른 로딩을 가능하게 한다.
    • 이전에 방문했던 웹 사이트를 다시 방문할 때, 새로운 데이터를 다시 다운로드하지 않고 이전에 저장된 데이터를 사용해 더 빠르게 페이지를 로드할 수 있다.
    • 웹 페이지를 요청할 때 웹 서버에서 데이터를 가져오기 전에 캐시에서 데이터를 검색한다.
    • 캐시 메모리(Local Storage)에 저장되며, 이는 하드웨어의 보조기억장치에 저장된다.
Related Links