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가 요청한 데이터만 불러오는 것이 아닌 주변 데이터들도 불러온다.
-
캐시의 지역성을 기반으로, 이차원 배열을 가로/세로로 탐색했을 때의 성능 차이에 대해 설명해 주세요.
수평 순회(가로 탐색)이 성능이 더 좋다.
- 수평 순회할 경우 메모리 상에서 순차적이기 때문에, 공간지역성에 기반한 캐시 메모리 덕분에 캐시 히트율이 높아 성능이 더 좋다.
- 수직 순회일 경우 메모리를 건너뛰면서 접근하기 때문에, 거의 모든 원소 접근마다 캐시 미스를 유발한다. 캐시 히트율이 낮다.