멀티코어와 동기화

NUMA(Non-Uniform Memory Access, 불균일 메모리 접근) 시스템에 대한 설명으로 올바른 것은?

  1. A모든 코어에서 모든 메모리에 같은 시간으로 접근할 수 있다
  2. B코어에서 가까운 메모리와 먼 메모리가 있으며, 먼 메모리에 대한 접근은 시간이 더 걸린다
  3. C각 코어는 자신의 메모리만 읽을 수 있고, 다른 코어의 메모리는 사용할 수 없다
정답과 해설 보기

정답: B. 코어에서 가까운 메모리와 먼 메모리가 있으며, 먼 메모리에 대한 접근은 시간이 더 걸린다

여러 CPU 소켓을 가진 서버 등에서는 각 소켓에 직접 연결된 메모리가 있고, 다른 소켓의 메모리에는 소켓 간 연결을 통해 접근합니다. 그래서 가까운 메모리보다 먼 메모리가 느리고 대역폭도 작습니다. 모든 메모리가 하나의 주소 공간으로 보이므로 프로그램은 그대로 동작하지만, 데이터와 스레드를 같은 쪽에 두면 성능이 올라갑니다.

  • A. 그것은 균일 메모리 접근(UMA)입니다.
  • B. 맞습니다. 데이터를 가까운 메모리에 두는 것이 중요합니다.
  • C. 먼 메모리에도 시간은 걸리지만 접근할 수 있습니다.
이 분야 연습하기 분야로 돌아가기

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

  1. Linux의 NUMA 시스템에서 자주 사용되는 퍼스트 터치(first-touch) 정책(처음 페이지에 쓴 스레드가 동작 중인 노드의 메모리에 그 페이지를 배치)에서 주의해야 할 점으로 올바른 것은?
  2. 병렬 프로그램에서 코어 수를 늘려도 성능이 기대만큼 늘지 않는 원인으로 해당하지 않는 것은?
  3. 루프의 반복을 여러 스레드로 나눌 때, 반복마다 계산량이 크게 들쭉날쭉한 경우에 적합한 나누기 방법은?
  4. 배열의 모든 요소의 합계를 여러 스레드로 구할 때, 성능을 위해 적합한 방법은?
  5. 읽기-쓰기 락(reader-writer lock)의 특징으로 올바른 것은?

이 분야의 비교