Placement Policy
Cache Placement Policy는 캐시 메모리에서 특정 메모리 블록이 캐시에 저장될 위치를 결정하는 규칙을 의미한다.
이는 캐시의 구조와 데이터 접근 패턴에 따라 성능과 효율성에 큰 영향을 미친다. Placement Policy는 캐시 메모리의 설계와 운영에서 중요한 역할을 하며, 주로 다음 세 가지 주요 유형으로 나뉜다:
- Direct-Mapped Cache
- Fully Associative Cache
- Set-Associative Cache.
Cache Placement Policy란?
- 정의: Placement Policy는 특정 메모리 블록이 캐시에 저장될 때, 캐시 내에서 어느 위치(캐시 라인)에 저장될지를 결정하는 규칙이다.
- 목적:
- 캐시 메모리의 효율적인 사용.
- 데이터 접근 속도 최적화.
- 충돌(Collision) 관리: 동일한 캐시 라인에 여러 데이터가 매핑되는 상황을 최소화.
Cache Placement Policy는 데이터가 캐시에 저장되는 위치를 결정하며, 시스템 성능과 효율성에 직접적인 영향을 미친다.
Direct-Mapped, Fully Associative, Set-Associative 각각 장단점이 있으므로, 애플리케이션 요구사항과 하드웨어 제약 조건을 고려하여 적절한 정책을 선택해야 한다.
Set-Associative는 대부분의 현대 시스템에서 자주 사용되는 절충안으로, 성능과 비용 간 균형을 제공한다.
주요 Placement Policy 유형
Direct-Mapped Cache
특징
- 각 메모리 블록은 캐시의 특정 위치(캐시 라인)에만 매핑된다.
- 메모리 주소를 “오프셋(Offset)”, “인덱스(Index)”, “태그(Tag)“로 나누어, 인덱스를 사용해 특정 캐시 라인을 결정한다.
작동 방식
- 주소 분해:
- 메모리 주소는 다음과 같은 세 부분으로 나뉜다:
- Offset: 캐시 라인 내에서 특정 바이트를 지정.
- Index: 캐시 내 특정 세트를 지정.
- Tag: 동일 인덱스 내에서 데이터 구분.
- 메모리 주소는 다음과 같은 세 부분으로 나뉜다:
- 매핑:
- Index 값을 기반으로 해당 메모리 블록이 저장될 캐시 라인을 결정한다.
장점
- 구현이 간단하고 빠르다.
- 하드웨어 비용이 낮다.
단점
- 충돌이 자주 발생할 수 있음(Collision): 서로 다른 메모리 블록이 동일한 캐시 라인에 매핑될 경우, 이전 데이터가 덮어씌워진다.
- 충돌로 인해 캐시 미스(Cache Miss)가 증가할 수 있음.
Fully Associative Cache
특징
- 메모리 블록은 캐시의 모든 라인에 저장될 수 있다(제한 없음).
- 태그(Tag) 필드를 사용하여 특정 데이터를 식별한다.
작동 방식
- 주소 분해:
- 메모리 주소는 “태그(Tag)“와 “오프셋(Offset)“으로만 구성됩니다(인덱스 없음).
- 매핑:
- 모든 캐시 라인을 검색하여 태그가 일치하는 데이터를 찾는다.
장점
- 매우 유연하며, 충돌 문제(Collision)가 발생하지 않는다.
- 높은 히트율(Cache Hit Rate)을 기대할 수 있다.
단점
- 태그 비교를 위해 모든 캐시 라인을 검색해야 하므로, 하드웨어 복잡성과 비용이 증가한다.
- 검색 시간이 길어질 수 있다.
Set-Associative Cache
특징
- Direct-Mapped와 Fully Associative의 절충안이다.
- 캐시는 여러 개의 “세트(Set)“로 나뉘며, 각 세트는 여러 개의 “캐시 라인"을 포함한다.
- 메모리 블록은 특정 세트에만 매핑되지만, 세트 내에서는 어느 라인에든 저장될 수 있다.
작동 방식
- 주소 분해:
- 메모리 주소는 “오프셋(Offset)”, “인덱스(Index)”, “태그(Tag)“로 구성된다.
- Offset: 세트 내 특정 바이트를 지정.
- Index: 특정 세트를 지정.
- Tag: 동일 세트 내에서 데이터 구분.
- 메모리 주소는 “오프셋(Offset)”, “인덱스(Index)”, “태그(Tag)“로 구성된다.
- 매핑:
- Index 값을 기반으로 특정 세트를 선택하고, 세트 내에서 태그 비교를 통해 데이터를 찾는다.
장점
- 충돌 문제를 줄일 수 있다(Direct-Mapped보다 적음).
- Fully Associative보다 하드웨어 복잡도가 낮다.
단점
- Direct-Mapped보다 구현이 복잡하며, 비용이 증가할 수 있다.
- 세트 내에서 태그 비교가 필요하므로 검색 시간이 늘어날 수 있다.
Placement Policy 예제
- 예제 설정
- 메인 메모리 크기: 16KB (4바이트 블록 단위로 구성).
- 캐시 크기: 256바이트 (블록 크기 4바이트).
- 결과적으로 총 64개의 캐시 라인 존재 (256 / 4 = 64).
Direct-Mapped
- 각 메모리 블록은 고유한 인덱스를 기반으로 정확히 하나의 캐시 라인에 매핑된다.
- 예: 주소
0x0000
→ 인덱스0
, 주소0x0100
→ 인덱스0
(충돌 발생 가능).
Fully Associative
- 모든 메모리 블록은 어떤 캐시 라인에도 저장될 수 있다.
- 예: 주소
0x0000
과0x0100
모두 자유롭게 다른 라인에 저장 가능.
Set-Associative (예: 2-Way Set Associative)
- 총 32개의 세트로 나뉘며, 각 세트는 2개의 캐시 라인을 포함한다.
- 예: 주소
0x0000
과0x0100
모두 같은 세트에 매핑되지만, 두 개의 다른 라인에 저장 가능.
Placement Policy 선택 시 고려사항
워크로드 특성:
- 데이터 접근 패턴이 지역성을 가지는 경우 Set-Associative가 적합할 수 있음.
- 랜덤 접근 패턴에서는 Fully Associative가 더 효과적일 수 있음.
하드웨어 비용:
- Direct-Mapped는 가장 저렴하지만 충돌 문제 발생 가능성 높음.
- Fully Associative는 가장 유연하지만 구현 비용이 높음.
성능 요구사항:
- 높은 히트율을 요구하는 경우 Fully Associative 또는 Set-Associative가 더 적합함.