2018년 12월 17일
MESI (Modified, Exclusive, Shared, Invalid)
I. Write-back 방식의 캐시 일관성 프로토콜, MESI
가. MESI의 개념
멀티 프로세서 환경에서 Write-back 쓰기 방식의 캐시 저장 시 캐시의 4가지 상태를 정의하는 일관성 유지 프로토콜
나. MESI의 4가지 상태
상태 | 용어 | 설명 |
---|---|---|
수정 상태 | M (Modified) | – 캐시 내 라인이 수정(주기억장치와 다름)되었으며, 해당 라인은 캐시에만 존재 |
배타 상태 | E (Exclusive) | – 캐시 내 라인이 주기억장치 내용과 동일하며, 다른 캐시에 존재하지 않음 |
공유 상태 | S (Shared) | – 캐시 내 라인이 주기억장치 내용과 동일하며, 다른 캐시에 내용 존재 가능 |
무효 상태 | I (Invalid) | – 캐시 내 라인은 유효한 데이터를 포함하고 있지 않음 |
다. MESI 상태 전이도
구성도 | 설명 |
---|---|
① 실선 – 프로세서 동작으로 발생 ② 점선 – 다른 캐시의 영향 – 공유 서비스 상 동작 영향 (점선 전이는 스누프 제어기에의해 변경) |
II. 캐시 상태 변화 사례
가. ①번 상태 변이 도식화
상태 변이 | 상태 변이 도식화 |
---|---|
변이 전 단계 | – P1의 캐시에 X값 저장된 상태 – P2의 캐시에 X값이 저장되지 않은 상태 |
변이 상황 | – P2가 데이터 X를 읽음 |
상태 변이 | – P1 캐시에서 X 상태를 E → S로 변경 – P2 캐시에서 X 상태를 S로 설정 |
– P1, P2 캐시 모두 주기억장치와 값이 일치하고 다른 캐시와 데이터를 공유하므로 S 상태
나. ②번 상태 도식화
상태 변이 | 상태 변이 도식화 |
---|---|
변이 전 단계 | – P1 캐시에 X값 저장된 상태 (S상태) – P2 캐시에 X값 저장된 상태 (S상태) |
변이 상황 | – P2가 데이터 X를 다른 값으로 수정 |
상태 변이 | – P1 캐시의 X 상태를 S → I로 변경 – P2 캐시의 X’ 상태를 M으로 설정 |
– P2가 X를 새로운 값으로 수정(쓰기 적중, write hit) 시 P2가 버스를 통해 무효화 신호를 다른 캐시에 전송, 다른 캐시의 X 상태를 I로 변경 후 X 값 수정 및 X’의 상태를 M으로 설정
다. ③번 상태 도식화
상태 변이 | 상태 변이 도식화 |
---|---|
변이 전 단계 | – P1 캐시에 X값 저장된 상태 (I 상태) – P2 캐시에 X’값 저장된 상태 (M 상태) |
변이 상황 | – P1이 데이터 X를 다른 값으로 수정 |
상태 변이 | – P1 캐시에서 X’’ 상태를 M으로 설정 – P2 캐시에서 X’ 상태를 I로 설정 |
– P1이 데이터 X를 수정 시 X가 I 상태이므로 쓰기 미스(write miss) 발생하며, 수정 위한 읽기 동작에 의해 P2의 X’가 P1으로 전송되어 X’’로 수정됨
III. 캐시 일관성 유지 방법
유형 | 고려사항 | 설명 |
---|---|---|
공유 캐시 사용 | – 캐시접근 프로세서 간 충돌가능 | – 모든 프로세서가 하나의 캐시 공유 |
공유 변수 캐시 사용 금지 | – 캐시 저장 가능 태그 필요 | – 수정가능 공유 데이터는 캐시 저장 안함 |
Lock 변수 캐시 사용 금지 | – Write-through 방식에 적합 | – 주기억장치에 갱신 후 다른 캐시 무효화 |
버스 감시 메커니즘 | – Write-back 방식 MESI 기법 사용 | – 데이터 수정 시 모든 프로세스에 방송 |
디렉토리 기반 캐시 프로토콜 | – 공유데이터 정보 디렉토리 관리 | – 풀-맵, 유한, 체인 디렉토리 방식 |
스누핑 디렉토리 방식 | – CC-NUMA에서 사용 | – 내부 스누핑, 외부 체인 디렉토리 방식 |
– 다중 프로세서 규모나 주기억장치 공유 유형에 따라 선택 적용하며, MESI는 단일-버스 다중프로세서, Write-back 방식 경우 주로 사용