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 방식 경우 주로 사용

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^