책 값이 비싼 것은 멀티프로세서 프로그래밍에 관한 좋은 서적이 그리 많지 않기 때문이지 않을까 생각합니다. 사실 이 책의 draft 버전이 작년에 많은 부분 이미 공개된 적이 있어, pdf파일을 통해 읽었기 때문에 이것이 또 책 구입을 망설인 이유 중의 하나입니다.
이 책은 대학 교재 스타일로 되어 있어, 멀티프로세서 혹은 멀티코어 프로그래밍을 처음 공부하기에 좋을 것 같습니다. 다만, 그동안 발표된 논문들을 요약 정리한듯하여 실제 응용에 있어서는 좀 부족한 점이 있고, 가격에 비해 제본 상태나 폰트가 별로 정성을 들이지 않은 것 같습니다. 아마 빨리 출간하려고 신경을 쓰지 못한 것이 아닌가 생각됩니다.
위키에 "대역폭과 지연시간"에 관한 글을 쓰고 있었으나. 게으름을 피워 아직 완성이 되지는 않았습니다. 그런데, 오늘 Herb Sutter의 블로그에서 이와 관련된 흥미로운 프리젠테이션을 발견했습니다.
Herb는 이것을 모든 프로그래머가 꼭 보아야할 내용으로 추천하고 있으며, 아래와 같은 티저가 있군요.
CPU의 단 1%만이 실제 컴퓨팅에 사용되고 있고, 나머지 99%는 메모리 지연시간(Latency)을 숨기기 위해 사용된다.
특히, Herb는 여기서 Itanium CPU 칩을 현미경으로 확대해 보면, 99%의 면적이 결국 데이터를 읽거나 쓰는데 사용되며, L1, L2, L3와 같은 CPU 캐쉬 메모리가 CPU 전체 트랜지스터 개수의 85%를 차지한다는 사실을 보여주고 있습니다. 이것은 Patterson교수의 프리젠테이션 슬라이드로부터 참고한 내용들 입니다.
CPU의 집적도가 높아지고, 속도가 빨라질수록 그리고 코어의 개수가 증가할 수록, 결국 메모리 액세스 시간 혹은 지연시간 (Latency)을 단축시키는 것이 가장 중요하고, 또 가장 힘듭니다. 이것은 단순히 CPU 자체 설계의 문제가 아니라 프로그램의 성능에 직접적인 영향을 미치는 가장 중요한 요인이기도 합니다.
기술의 눈부신 발전으로 시간이 지나면 모든 것을 해결해 줄 것이란 믿음은 여기서 또 한 번 무너져 버리는 것을 느낄 수 있습니다. CPU가 발전될수록, 오히려 가장 기본적인 메모리 액세스가 더욱 중요해지며 이것은 빛의 속도라는 한계에 부딪히고 있는 것입니다.