False Sharing

강병우·2023년 11월 6일
0

병렬프로그래밍

목록 보기
18/24
post-custom-banner

캐쉬는 최근의 사용된 아이템, 자주 사용된 아이템들을 프로세서와 가까운 쪽에 저장한다. 이러한 캐쉬는 Shared-memory에 많은 영향을 줄 수 있다.

False Sharing Problems

2개의 프로세서가 같은 캐시 라인에 할당되어 있다. P0가 프로세스 A를 읽고, P1이 프로세스 B를 읽는 것 자체는 문제가 없다.

하지만, P0가 새로운 A'라는 프로세스를 작성할 경우 어떻게 될까? 기존 캐시와 P1이 읽어낸 블록이 달라진다. 그래서 기존 블록들을 무효화시킨다.

무효화된 후, P1에서 B를 읽으려고 할 때, 무효화된 블록을 접근하게 되어 결국 Cahce miss가 발생하고, P0의 블록을 읽어오게 된다. 두 프로세서는 메모리를 공유하고 있지 않지만, 이 과정을 통해 마치 공유된 것처럼 보이는 것을 False Sharing이라고 한다. 블록을 읽어와도 한쪽에서 업데이트가 되면 다른 한쪽은 무효화되어 계속 Cache Miss가 발생하는 문제다. 자세한 예시는 교재에 보자. 어찌되었던 캐시 상황에 맞게 프로그램을 작성해야 한다.

post-custom-banner

0개의 댓글