멀티코어와 동기화

순차 일관성(sequential consistency)에 대한 설명으로 올바른 것은?

  1. A각 코어의 동작이 매번 무작위 순서로 실행된다
  2. B모든 코어의 동작이 어떤 하나의 순서로 나열되고, 각 코어의 동작은 프로그램에 쓴 순서대로 나타나는 것처럼 보인다
  3. C모든 동작이 하나의 코어에서만 실행된다
정답과 해설 보기

정답: B. 모든 코어의 동작이 어떤 하나의 순서로 나열되고, 각 코어의 동작은 프로그램에 쓴 순서대로 나타나는 것처럼 보인다

순차 일관성에서는 여러 코어의 동작이 카드를 섞듯이 한 줄로 나열되고, 각 코어의 동작은 그 안에서 프로그램 순서를 유지하는 것처럼 보입니다. 프로그래머에게 가장 이해하기 쉬운 모델이지만, 하드웨어가 스토어 버퍼 등으로 순서를 바꾸는 최적화를 크게 제한하므로, 실제 많은 CPU는 더 느슨한 모델을 채택하고 있습니다.

  • A. 무작위가 아니라 프로그램 순서가 지켜집니다.
  • B. 맞습니다. 가장 직관적이고 이해하기 쉬운 모델입니다.
  • C. 여러 코어에서 동작하는 것이 전제입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. 위의 두 스레드를 서로 다른 코어에서 동시에 실행한다(컴파일러에 의한 재배치는 없다고 가정). 순차 일관성에서는 일어나지 않지만 x86 등의 실제 CPU에서는 일어날 수 있는 결과는?
  2. x86의 메모리 일관성 모델(TSO, Total Store Order)의 특징으로 올바른 것은?
  3. ARM이나 RISC-V(RVWMO)와 같은 약한 메모리 일관성 모델에 대해 올바른 것은?
  4. 메모리 배리어(펜스) 명령의 역할로 올바른 것은?
  5. 위 코드에서 스레드 1이 data를 준비한 뒤 flag로 알리고, 스레드 2가 flag를 확인한 뒤 data를 읽는다. 약한 메모리 일관성 모델의 CPU에서 스레드 2가 확실히 42를 읽기 위해 필요한 것으로 올바른 것은?

이 분야의 비교