Cache


title: 2025-09-04 author: 강병호 date: 2025-09-04 category: TIL/강병호/2025/09 layout: post —

  • 캐시의 지역성에 대해 설명해 주세요.

    지역성이란?

    • 어떤 데이터를 캐시에 저장할까?의 근거
    • 시간적 지역성
      • 시스템은 최근에 접근했던 특정 데이터나 명령어에 다시 접근하려는 경향이 있다. 어떤 메모리 위치가 참조됐다면, 가까운 미래에 다시 참조될 가능성이 높다.
        • ex) for루프의 int i (카운터 변수)는 매 반복마다 읽고 갱신된다.
    • 공간적 지역성
      • 시스템이 특정 데이터에 접근했을 때, 그 데이터의 메모리 주소와 가까운 위치에 있는 다른 데이터 접근하려는 경향.
        • ex) arr[i]를 0부터 N까지 순회
    • 지역성은 소프트웨어의 속성이며, 하드웨어는 이를 활용하도록 설계되었다.
    • 따라서 캐시의 효율성은 실행 중인 프로그램의 지역성에 따라 결정된다.
      • 무작위적인 메모리 접근 패턴을 보이는 프로그램은 캐시를 써도 효과가 없다.
    • 프로그램을 캐시 친화적으로 짜는 것이 중요하다
  • 캐시의 공간 지역성은 어떻게 구현될 수 있을까요? (힌트: 캐시는 어떤 단위로 저장되고 관리될까요?)

    cache line(cache block)이라 불리는 고정된 크기의 덩어리 단위로 저장 및 전송된다.

    • 캐시 라인의 크기는 제조사 별로 차이가 있다. ex 64byte
    • 왜 덩어리 단위?
      • 공간 지역성 원리에 따라 그 주변의 데이터들도 불러올 확률이 높다 생각하여 CPU가 요청한 데이터만 불러오는 것이 아닌 주변 데이터들도 불러온다.
  • 캐시의 지역성을 기반으로, 이차원 배열을 가로/세로로 탐색했을 때의 성능 차이에 대해 설명해 주세요.

    수평 순회(가로 탐색)이 성능이 더 좋다.

    • 수평 순회할 경우 메모리 상에서 순차적이기 때문에, 공간지역성에 기반한 캐시 메모리 덕분에 캐시 히트율이 높아 성능이 더 좋다.
    • 수직 순회일 경우 메모리를 건너뛰면서 접근하기 때문에, 거의 모든 원소 접근마다 캐시 미스를 유발한다. 캐시 히트율이 낮다.

results matching ""

    No results matching ""