2018년 12월 12일
캐시 일관성 유지기법
I. 캐시 메모리 일관성 문제점
가. 캐시 메모리 일관성(Coherence) 문제
- 다중 프로세스 환경에서 데이터가 여러 캐시에 복사되어 있어 캐시 간 데이터 불일치 현상 발생
나. 캐시 데이터 불일치 원인
① 변경 가능 데이터 공유 ② 입출력 동작 ③ 멀티 프로세서환경
II. 캐시 일관성(Cache Coherence) 유지기법
가. S/W 측면의 캐시 일관성 유지기법
기법 | 설명 |
---|---|
공유 캐시 | – 모든 프로세서들이 하나의 공유 캐시 – 장점: 항상 캐시 일관성 유지 – 단점: 프로세서 간 캐시 액세스 충돌 가능 |
공유 변수 캐시 미사용 | – 변경 가능한 변수는 주기억장치에만 저장 – Lock 변수(임계영역) 공유 캐시 미사용 |
– H/W 기법보다 간단하나 캐시 이용률 저하
나. H/W 측면의 캐시 일관성 유지기법
기법 | 설명 |
---|---|
디렉토리 프로토콜 기반 | – 캐시 블록 공유 상태 저장하는 공간 이용 – Full map: 중앙집중식, 복사본 포인터 – Limited: Fullmap 작게 유지, 메모리 효율화 – Cache: 포인터를 Linked-list로 연결 |
스누피 프로토콜 기반 | – 주소버스 감시, 캐시 상 접근 검사 – 다른 캐시 쓰기 발생 시 자기 정보 무효화 – Write Through: 캐시 수정 → 메모리 갱신 – Write Back: 캐시 수정 → 메모리 갱신X |
– Write Through는 VI 프로토콜, Write Back은 MESI 프로토콜로 대표됨
III. 캐시 일관성 문제 해결 기법 VI와 MESI
가. Write Through 기반 VI(Valid & Invalid)
구분 | 상세설명 | ||||||
---|---|---|---|---|---|---|---|
개념도 |
| ||||||
개념 | – 프로세서가 캐시 데이터 수정 시 주기억장치로 갱신 | ||||||
캐시 상태 | V: Valid → 캐시 내용 = 주기억장치 내용 | ||||||
I: Invalid → 캐시 내용 != 주기억장치 내용 |
– 스누피 제어기는 메인 메모리 변경 내용이 자신의 캐시 주소에 있는지 검사, 존재 시 무효화(Invalid)
나. Write Back 기반 MESI
구분 | 상세설명 |
---|---|
개념도 | |
개념 | – 변경된 캐시 스누피 제어기가 다른 스누피 제어기에게 변경된 내용 통보 |
MESI 프로 토콜 | 수정(Modified): 데이터가 수정(변경)된 상태 |
배타(Exclusive): 유일한 복사복, 주기억장치와 동일 상태 | |
공유(Shared): 데이터가 2개 이상 프로세서 캐시 공유 | |
무효(Invalid): 데이터가 다른 프로세서의 수정으로 무효 |
– Cache Flush는 캐시 내용만 초기화, Cache Clean은 캐시 데이터를 주기억장치와 동기화 수행
One Comment
great!!