Paper

    Shared Memory Consistency Models: A Tutorial

    Intro 「프로그래머가 몰랐던 멀티코어 CPU 이야기」(김민장 저)라는 책을 우연히 접하고 읽던 도중, 컴파일러 최적화 과정에서 발생 가능한 데이터/컨트롤/메모리 의존성에 대한 내용을 접하게 되었다. 의존성 분석을 통해 재배치(instruction reordering) 혹은 명령어 스케줄링(instruction scheduling) 최적화를 적용할 수 있다는 내용이다. 여기서 하나의 예시로 RAW(Read-After-Write; 무조건 순서대로 실행되어야 하는 의존성 관계) 상황에서의 메모리 로드를 들었다. 메모리 로드 이후 RAW 의존성을 갖는 명령어들이 줄줄이 있다면 캐시 미스를 일으킬 수 있는 메모리 로드를 먼저 앞쪽에서 처리하는 것이 효과적일 것이다. 하지만 싱글코어에서는 이 해결방법이 잘 통할..