멀티코어와 동기화

무효화형 일관성 프로토콜에서, 어떤 코어가 Shared(S) 상태의 라인에 쓸 때 이루어지는 동작은 무엇인가?

  1. A다른 코어의 복사본은 그대로 두고 자신의 라인만 갱신한다
  2. B다른 코어가 가진 같은 라인의 복사본을 무효화한 뒤, 자신의 라인을 M 상태로 만들고 쓴다
  3. C모든 코어의 캐시를 비운 뒤 쓴다
정답과 해설 보기

정답: B. 다른 코어가 가진 같은 라인의 복사본을 무효화한 뒤, 자신의 라인을 M 상태로 만들고 쓴다

S 상태는 다른 코어도 같은 라인을 가지고 있을 수 있는 상태이므로, 그대로 쓰면 다른 복사본이 오래된 값이 됩니다. 그래서 무효화 요청을 보내 다른 코어의 복사본을 I 상태로 만든 뒤, 자신의 라인을 M 상태로 만들어 씁니다. 다른 코어가 다음에 그 데이터를 읽을 때는 미스가 되어 최신 값을 다시 가져옵니다. 많은 CPU가 이 무효화형을 채택하고 있습니다.

  • A. 그렇게 하면 다른 코어가 오래된 값을 읽게 됩니다.
  • B. 맞습니다. 오래된 복사본이 남지 않도록 합니다.
  • C. 관계없는 라인까지 지울 필요는 없습니다.
이 분야 연습하기 분야로 돌아가기

멀티코어와 동기화의 다른 문제

  1. MESI 프로토콜에서 코어 0이 Modified(M) 상태로 가지고 있는 라인을 코어 1이 읽으려 할 때의 일반적인 동작은?
  2. 캐시 일관성의 스누핑(snooping) 방식에 대한 설명으로 올바른 것은?
  3. 코어 수가 많은 시스템에서 스누핑 방식 대신 디렉터리 방식의 일관성이 사용되는 이유로 올바른 것은?
  4. 일관성 프로토콜에는 무효화형과 갱신형이 있다. 많은 CPU가 무효화형을 채택하는 이유로 가장 적절한 것은?
  5. 멀티스레드 프로그램에서 일어나는 거짓 공유(false sharing)에 대한 설명으로 올바른 것은?

이 분야의 비교