멀티코어와 동기화
무효화형 일관성 프로토콜에서, 어떤 코어가 Shared(S) 상태의 라인에 쓸 때 이루어지는 동작은 무엇인가?
- A다른 코어의 복사본은 그대로 두고 자신의 라인만 갱신한다
- B다른 코어가 가진 같은 라인의 복사본을 무효화한 뒤, 자신의 라인을 M 상태로 만들고 쓴다
- C모든 코어의 캐시를 비운 뒤 쓴다
정답과 해설 보기
정답: B. 다른 코어가 가진 같은 라인의 복사본을 무효화한 뒤, 자신의 라인을 M 상태로 만들고 쓴다
S 상태는 다른 코어도 같은 라인을 가지고 있을 수 있는 상태이므로, 그대로 쓰면 다른 복사본이 오래된 값이 됩니다. 그래서 무효화 요청을 보내 다른 코어의 복사본을 I 상태로 만든 뒤, 자신의 라인을 M 상태로 만들어 씁니다. 다른 코어가 다음에 그 데이터를 읽을 때는 미스가 되어 최신 값을 다시 가져옵니다. 많은 CPU가 이 무효화형을 채택하고 있습니다.
- A. 그렇게 하면 다른 코어가 오래된 값을 읽게 됩니다.
- B. 맞습니다. 오래된 복사본이 남지 않도록 합니다.
- C. 관계없는 라인까지 지울 필요는 없습니다.