Cache Memory
태그 :
- 개념
- 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리
I. 장치간 속도차에 따른 병목 현상 제거를 위한 Cache Memory의 개요
가. 캐시 메모리(Cache Memory)의 정의
- 속도가 빠른 장치와 느린 장치간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리
나. Cache Memory의 설계 목표
- Cache 적중율(Hit Rate)의 극대화로 Cache Access 시간 최소화
- Cache 실패율(Miss Rate)에 따른 지연시간(Miss Penalty)의 최소화
- 공유 메모리와 Cache 간의 일관성 유지
다. 캐시 메모리의 특징
구분 |
설 명 |
비고 |
Locality |
블록 단위의 메모리 참조 |
시간, 공간 |
Mapping |
주기억 장치와 캐시 메모리 간의 메모리매핑 적용 |
직접, 연관 |
Coherence |
병렬처리시 Local Cache와 공유 메모리간 데이터 일관성 유지 |
공유 Cache |
라. Cache Memory 적중율 극대화 원리 Locality
구분 |
내용 |
사례 |
시간적 지역성 |
|
Loop, Stack, Sub Program |
공간적 지역성 |
|
Array, 순차코드 |
순차적 지역성 |
|
II. 듀얼코어 프로세서에서의 캐시메모리의 구성도 및 종류
가. 듀얼코어 프로세서에서의 캐시메모리 구성도
- 듀얼코어 프로세스의 경우 각 코어마다 L1캐시 메모리와 두 코어가 서로 공유하는 L2 캐시 메모리가 내장.
나. 캐시 메모리의 종류
구분 |
설 명 |
비고 |
L1 Cache |
일반적으로 CPU 칩 안에 내장되어 데이터 사용/ 참조에 가장 먼저 사용됨 |
8~64KB |
L2 Cache |
용도와 역할은 L1 캐시와 비슷하지만 속도는 L1 캐시에 비해 느림 |
64KB~4MB |
L3 Cache |
L1, L2 캐시와 동일한 원리로 작동하며 CPU가 아닌 메인보드에 내장되는 경우가 많음. |
8MB(i7) |
III. 캐시 메모리의 블록 단위 메모리 참조원리 지역성(Locality)
가. 지역성(Locality)의 전제조건
- 프로그램은 모든 코드나 데이터를 균등(시간적, 공간적)하게 Access하지 않는다는 특성을 기본으로 함
나. Locality의 정의
- 기억 장치 내의 정보를 균일하게 Access하는 것이 아닌 어느 한 순간에 특정 부분을 집중적으로 참조하는 특성
다. Locality의 원리
- Cache 접근시간(Access Time)의 최소화
- Cache 적중률(Hit Ratio)의 최대화
- Cache Hit Ratio = (Hit 수) / 주기억장치 접근의 총수
라. Locality의 종류
구분 |
설 명 |
시간적 Locality |
최근에 참조된 기억장소가 가까운 장래에 계속 참조될 가능성이 높은 성질 ex)순환(Looping), 서브프로그램, LRU(Least Recently used) |
공간적 Locality |
최근에 참조된 기억장소와 가까운 기억장소가 가까운 장래에 계속 참조될 가능성이 높은 성질 ex)Array, Sequential Processing |
순차적 Locality |
따로이 분기가 없는 한 데이터가 기억장치에 저장된 순서대로 순차적으로 인출되고 실행 |
IV. 캐시 메모리 병렬처리에 따른 일관성 해결책 Cache Coherence
가. 캐시 메모리 일관성 문제
- 공유메모리 구조에서 다중 프로세스 통신에 의한 메모리 충돌로 인한 성능 저하 발생으로 해결하기 위해 각 CPU에 Local Cache를 탑재하여 Local Cache와 공유 메모리간 데이터의 불일치 발생
나. 캐시 메모리 일관성 유지기법
구분 |
설 명 |
---|---|
공유 Cache사용 |
-모든 프로세서가 하나의 Cache사용 -구조가 간단, 프로세서의 충돌이 심함 |
공유변수 Cache 변수 미사용 |
-공유변수를 Cache에 저장하지 않으므로 일관성을 유지하지만 성능저하를 야기 |
버스감시 매커니즘 적용 |
-스누프제어기:변경에 대한 자신의 캐시블럭상태제어 -쓰기갱신:공유블럭 갱신시 다른 모든 캐시에 갱신되넌 정보가 보내짐 -쓰기무효:다중읽기, 한번에 하나만쓰기, 쓰기동작을 할 때 다른 캐시의 블록을 무효화시킨후 쓰기 동작을 배타적으로 수행 |
디렉토리 기반 일관성 유지 프로토콜 |
-캐시의 전역정보 상태를 디렉토리에 저장하여 데이터 일관성 유지 -Full Map, Limited, Chained 방식 |
V. 캐시 메모리와 주기억장치 Mapping
가. 캐시 메모리 Mapping의 목적
- Cache의 용량이 주기억장치의 용량보다 적기 때문에 주기억장치의 일부분만 캐시로 적재될 수 있음
- 제안된 캐시 용량으로 최고의 적중률을 얻을 수 있는 방법 필요
나. 캐시 메모리 Mapping 기법의 종류
구분 |
설명 |
|
Direct Mapping |
개념 |
메인 메모리를 일정한 크기의 블록으로 나누고 각각의 블록을 캐쉬위 정해진 위치에 매핑하는 방식 |
|
||
장점 |
가장 쉽고 간단한 구현 방식 |
|
단점 |
비어 있는 라인이 있더라도 동일 라인의 메모리 주소에 대하여 하나의 데이터밖에 저장할 수 없음 캐시의 성능을 저하시킴 |
|
Full Associative Mapping |
개념 |
직접매핑 방식의 단점을 개선하기 위해 태그 필드를 확장하여 캐시의 어떤 라인과도 무관하게 매핑 시킬수 있는 매핑 방법 |
|
||
장점 |
캐시를 효율적으로 사용하게 하여 캐시의 히트율 증가 |
|
단점 |
CPU가 태그값을 참조할 때 마다 어느 위치에 해당 데이터의 블록이 있는지 알아내기 위해 전체 태그 값을 모두 병렬적으로 비교 구성과 과정이 매우 복잡함 |
|
Set Associative Mapping |
개념 |
위의 두 매핑방식의 장점을 취하고 단점을 최소화한 절충안 많은 마이크로프로세스에서 이 방식을 취하고 있음 캐쉬를 N개의 세트들로 나누고 각 세트들은 L개의 라인들로 이루어지게 구성, 전체 메인 메모리는 각 세트의 크기인 32Kbyte 단위로 나뉘어 태그 값이 매겨지고( 직접 매핑 방식) 각각 4Kbyte 단위의 라인 사이즈로 다시 나뉘어져 각각의 세트에 매핑(어소시에이트브 매핑) |
|
다. 캐시 메모리 교체 알고리즘
구분 |
설 명 |
비고 |
LRU |
사용되지 않고 가장 오래 캐시에 머물러 있던 블록 교체 |
Least Recently Used |
FIFO |
캐시 내에 가장 오래 머물러 있었던 블록을 교체 |
First In, First Out |
LFU |
캐시 내에 있는 블록 중 가장 사용빈도가 낮은 블록을 교체 |
Least Frequently Used |
Random |
블록을 임의로 선택 |
임의 |
Optimal |
향후 가장 참조되지 않을 블록 교체 |
구현불가 |
<참고>