캐시 메모리 (Cache Memory)
<출처 : wikipedia > CPU 칩 안에 포함되는 빠르고 작은 메모리.
속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리
프로그램에서 직접적으로 읽거나 쓸 수 없고, 하드웨어 메모리 관리 시스템이 내부적으로 제어한다.
데이터 지역성을 활용해서 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.
캐시 메모리의 설계 목표
캐시 메모리의 특징
Locality(지역성) : 블록 단위의 메모리 참조 (시간, 공간)
Mapping(매핑) : 주기억 장치와 캐시 메모리 간의 메모리매핑 적용 (직접, 연관)
Coherence(일관성) : 병렬 처리시 Local Cache와 공유 메모리간 데이터 일관성 유지 (공유 Cache)
캐시 메모리 적중률 극대화 원리 : Locality
시간적 지역성 : 최근 사용된 데이터의 재 이용율이 높음. (ex. Loop, Stack, Sub Program)
공간적 지역성 : 최근 사용된 데이터의 인접 데이터의 사용율이 높음 (ex. Array, 순차코드)
순차적 지역성 : 데이터가 기억장치에 저장된 순서대로 순차적으로 인출되고 실행될 가능성이 높음
캐시 미스가 나는 경우
Compulsory miss : 해당 메모리 주소를 처음 불렀기 때문에 나는 캐시 미스.
Conflict miss : 캐시 메모리에 A데이터와 B데이터를 저장해야되는데, A와 B가 같은 캐시 메모리 주소에 할당되어서 나는 캐시 미스.
Capacity miss : 캐시 메모리에 공간이 부족해서 나는 캐시 미스.
캐시 메모리와 주기억장치 Mapping
- Cache의 용량이 주기억장치의 용량보다 적기 때문에 주기억장치의 일부분만 캐시로 적재될 수 있음.
- 제한된 캐시 용량으로 최고의 적중률을 얻을 수 있는 방법 필요.
- Direct Mapping
개념 : 메인 메모리를 일정한 크기의 블록으로 나누고 각각의 블록을 캐시 위 정해진 위치에 매핑하는 방식
장점 : 가장 쉽고 간단
단점 : 비어 있는 라인이 있더라도 동일 라인의 메모리 주소에 대하여 하나의 데이터밖에 저장 할 수 없음. 캐시의 성능을 저하시킴
- Full Associative Mapping
개념 : 직접매핑 방식의 단점을 개선하기 위해 태그 필드를 확장하여 캐시의 어떤 라인과도 무관하게 매핑 시킬수 있는 매핑 방법
장점 : 캐시를 효율적으로 사용하게 하여 캐시의 히트율 증가
단점 : 구성과 과정이 매우 복잡
- Set Associative Mapping
개념 : 위의 두 매핑방식의 장점을 취하고 단점을 최소화한 절충안. 캐쉬를 N개의 세트들로 나누고 각 세트들은 L개의 라인들로 이루어지게 구성. 전체 메인 메모리는 각 세트의 크기인 32Kbyte 단위로 나뉘어 태그 값이 매겨지고(Direct Mapping) 각각 4Kbyte 단위의 라인 사이즈로 다시 나뉘어져 각각의 세트에 매핑(Associative Mapping)
캐시 메모리 교체 알고리즘
FIFO (First-In-First-Out) : 캐시 내에 가장 오래 머물러 있었던 블록 교체.
LRU (Least Recently Used) : 사용되지 않고 가장 오래 캐시에 머물러 있던 블록 교체.
LFU (Least Frequently Used) : 캐시 내에 있는 블록 중 가장 사용빈도가 낮은 블록을 교체.
Optimal : 향후 가장 참조되지 않을 블록 교체.