멀티코어와 동기화
64개의 코어가 하나의 공유 카운터를 아토믹 명령으로 동시에 계속 갱신하면, 코어를 늘려도 빨라지지 않는다. 주된 이유는?
- A아토믹 명령은 하나의 코어에서만 실행할 수 있기 때문
- B코어 수가 많으면 카운터의 값이 자동으로 작아지기 때문
- C카운터의 캐시 라인이 코어 사이를 차례로 이동하여, 갱신이 하나씩밖에 진행되지 않기 때문
정답과 해설 보기
정답: C. 카운터의 캐시 라인이 코어 사이를 차례로 이동하여, 갱신이 하나씩밖에 진행되지 않기 때문
아토믹한 갱신을 하려면 그 코어가 라인을 M 상태로 가지고 있어야 하므로, 갱신할 때마다 라인이 다른 코어로 이동합니다. 이동에는 코어 간 통신 시간이 걸리고, 한 번에 하나의 코어만 갱신할 수 있으므로, 코어를 늘려도 대기만 길어질 뿐입니다. 각 코어가 자신의 위치에서 세고 마지막에 합계를 내는 등, 공유 쓰기를 줄이는 궁리가 필요합니다.
- A. 어느 코어에서도 실행할 수 있습니다.
- B. 값이 제멋대로 바뀌는 일은 없습니다.
- C. 맞습니다. 라인을 두고 벌이는 다툼이 성능을 결정합니다.