캐시 메모리 (Cache Memory)
.png)
- CPU 칩 안에 포함되는 빠르고 작은 메모리.
- 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리
- 프로그램에서 직접적으로 읽거나 쓸 수 없고, 하드웨어 메모리 관리 시스템이 내부적으로 제어한다.
- 데이터 지역성을 활용해서 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.
캐시 메모리의 설계 목표
- Cache 적중율(Hit Rate)의 극대화로 Cache Access 시간 최소화
- Cache 실패율(Miss Rate)에 따른 지연시간(Miss Penalty)의 최소화
- 공유 메모리와 Cache 간의 일관성 유지
캐시 메모리의 특징
- 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
- 캐시 메모리 Mapping 목적
- Cache의 용량이 주기억장치의 용량보다 적기 때문에 주기억장치의 일부분만 캐시로 적재될 수 있음.
- 제한된 캐시 용량으로 최고의 적중률을 얻을 수 있는 방법 필요.
- 캐시 메모리 Mapping 기법의 종류
- 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 : 향후 가장 참조되지 않을 블록 교체.
'운영체제' 카테고리의 다른 글
CPU Scheduling (CPU 스케줄링) (0) | 2018.08.30 |
---|---|
커널(Kernel), 마이크로 커널&모놀리식 커널 (0) | 2018.08.28 |
교착상태(Deadlock) (0) | 2018.08.28 |
세마포어와 뮤텍스 (Semaphores&Mutex) (0) | 2018.08.26 |
병행성과 상호배제&상호배제 알고리즘 (0) | 2018.08.26 |