멀티코어와 동기화

코어 수가 많은 시스템에서 스누핑 방식 대신 디렉터리 방식의 일관성이 사용되는 이유로 올바른 것은?

  1. A각 라인을 어느 코어가 가지고 있는지 기록해 두고, 관련된 코어에만 통지함으로써 통신을 줄일 수 있기 때문
  2. B디렉터리 방식에서는 캐시가 필요 없어지기 때문
  3. C디렉터리 방식에서는 쓸 때마다 모든 코어에 통지할 수 있기 때문
정답과 해설 보기

정답: A. 각 라인을 어느 코어가 가지고 있는지 기록해 두고, 관련된 코어에만 통지함으로써 통신을 줄일 수 있기 때문

디렉터리 방식에서는 각 라인에 대해 어느 코어가 복사본을 가지고 있고 어떤 상태인지를 기록한 표(디렉터리)를 둡니다. 쓰기가 발생하면 디렉터리를 보고 복사본을 가진 코어에만 무효화 요청을 보냅니다. 모든 캐시에 일제히 알리는 스누핑에 비해 통신이 적기 때문에, 코어가 수십 개 이상인 서버용 CPU 등에서 사용됩니다.

  • A. 맞습니다. 모두에게 알릴 필요가 없어집니다.
  • B. 캐시는 계속 사용합니다.
  • C. 모두에게 통지하는 것을 피하는 것이 목적입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 일관성 프로토콜에는 무효화형과 갱신형이 있다. 많은 CPU가 무효화형을 채택하는 이유로 가장 적절한 것은?
  2. 멀티스레드 프로그램에서 일어나는 거짓 공유(false sharing)에 대한 설명으로 올바른 것은?
  3. 스레드별 카운터를 「long cnt[8];」처럼 나란히 둔 배열에서 거짓 공유가 발생하고 있다. 대책으로 가장 적절한 것은?
  4. 데이터 레이스(data race)에 대한 설명으로 올바른 것은?
  5. 위 코드를 두 스레드에서 동시에 실행하면 counter의 최종 값이 200000보다 작아지는 경우가 있다. 그 이유로 올바른 것은?

이 분야의 비교