멀티코어와 동기화
MESI 프로토콜에서 코어 0이 Modified(M) 상태로 가지고 있는 라인을 코어 1이 읽으려 할 때의 일반적인 동작은?
- A코어 0이 최신 값을 write-back하거나 코어 1에 직접 전달하고, 두 라인 모두 Shared(S) 상태가 된다
- B코어 1은 주기억장치의 오래된 값을 읽고, 코어 0은 M 상태로 남는다
- C코어 1의 읽기는 코어 0이 라인을 교체할 때까지 계속 대기한다
정답과 해설 보기
정답: A. 코어 0이 최신 값을 write-back하거나 코어 1에 직접 전달하고, 두 라인 모두 Shared(S) 상태가 된다
코어 1의 읽기 요청을 알게 된 코어 0은 자신이 최신 값을 가지고 있음을 알고 있으므로, 그 값을 주기억장치에 write-back하거나 코어 1에 직접 전달합니다. 그 후에는 두 코어가 같은 내용을 가지므로 둘 다 S 상태가 됩니다. 주기억장치의 오래된 값을 읽게 하지 않는 것이 중요합니다. 직접 전달하는 방식은 주기억장치를 거치는 것보다 빠르게 값을 전달할 수 있습니다.
- A. 맞습니다. 최신 값이 공유됩니다.
- B. 그렇게 하면 일관성이 유지되지 않습니다.
- C. 교체를 기다리지 않고 즉시 대응합니다.