멀티코어와 동기화

x86의 메모리 일관성 모델(TSO, Total Store Order)의 특징으로 올바른 것은?

  1. A읽기·쓰기의 모든 조합의 순서 변경을 허용하는 가장 약한 모델이다
  2. B순서 변경을 일절 허용하지 않는 순차 일관성 그 자체이다
  3. C쓰기 이후의 다른 주소에 대한 읽기가 그 쓰기보다 먼저 보이는 것만 허용하는, 비교적 강한 모델이다
정답과 해설 보기

정답: C. 쓰기 이후의 다른 주소에 대한 읽기가 그 쓰기보다 먼저 보이는 것만 허용하는, 비교적 강한 모델이다

TSO에서는 쓰기끼리의 순서, 읽기끼리의 순서, 읽기 이후 쓰기의 순서는 유지되고, 쓰기 이후의 다른 주소에 대한 읽기만 앞지를 수 있습니다. 이것은 스토어 버퍼의 존재를 그대로 나타낸 모델입니다. 대부분의 프로그램은 이 범위라면 직관대로 동작하므로, x86에서는 배리어가 필요한 경우가 비교적 적습니다.

  • A. 그것은 ARM이나 RISC-V와 같은 약한 모델에 가까운 설명입니다.
  • B. 쓰기와 읽기의 순서 변경은 일어납니다.
  • C. 맞습니다. 스토어 버퍼에 의한 순서 변경만 보입니다.
이 분야 연습하기 분야로 돌아가기

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

  1. ARM이나 RISC-V(RVWMO)와 같은 약한 메모리 일관성 모델에 대해 올바른 것은?
  2. 메모리 배리어(펜스) 명령의 역할로 올바른 것은?
  3. 위 코드에서 스레드 1이 data를 준비한 뒤 flag로 알리고, 스레드 2가 flag를 확인한 뒤 data를 읽는다. 약한 메모리 일관성 모델의 CPU에서 스레드 2가 확실히 42를 읽기 위해 필요한 것으로 올바른 것은?
  4. 획득(acquire)과 해제(release)의 의미를 가진 메모리 동작에 대해 올바른 것은?
  5. C 언어에서 스레드 간에 주고받는 플래그 변수에 volatile을 붙이는 것만으로는 동기화로 불충분한 이유로 올바른 것은?

이 분야의 비교