티스토리 뷰

김민장, 『프로그래머가 몰랐던 멀티코어 CPU 이야기』, 한빛미디어 2010



한빛리더스 2번째 미션 도서로 선택한 책은 김민장님이 저술한 "프로그래머가 몰랐던 멀티코어 CPU 이야기" 라는 책입니다. 이번에도 책을 쉽게 골랐는데, 리뷰 도서로 선택할 수 있는 책 중 "데이터베이스 관리와 실습"은 데이터베이스는 크게 관심이 없으며 IT CookBook은 정답이 제공되지 않은 대학용 교재라 패스했고 "쾌속 TDD"는 왠지 자바 위주로 될것 같다는 편견을 가지고 있어서 패스 했으며(실제로도 그렇답니다) 선택한 도서의 "프로그래머가 몰랐다"는 프로그래머에겐 약간 도발적인 제목과, 내가 실제로 모른다는 현실 때문에 바로 선택 했습니다.

지난 리뷰 도서였던 "루비 프로그래밍 언어"를 끝까지 다 읽지 못해서 이번엔 모두다 읽고자 제대로 계획을 세웠습니다. 워낙 책을 읽는 속도가 느린데다가, 미션으로 오탈자 까지 찾아야 하기 때문에 최대한 꼼꼼히 읽고 기왕 읽는 김에 책에서 전해주는 내용을 모두 습득 하려는 마음을 단단히 먹고 읽어나가기 시작했습니다. 결국 리뷰 마감날 하루 전인 오늘까지 읽었지요.

Blog2Book 시리즈는 이번이 두번째 보는 책입니다. 지난번에 읽었던 책은 이 시리즈의 4번째 였던 "임베디드 프로그래밍 C코드 최적화"라는 책 이였어요. 어려운 주제를 쉽게 잘 풀어 썻고 내용 중간 중간에 있었던 대화 형식의 구성 덕분에 더 편안하게 책을 읽었던 기억이 있어서 이번 책도 그러한 느낌이 들 것이라는 기대를 가지고 책을 받아 보았습니다.

책 제목이 '멀티 코어'지만 처음부터 멀티코어에 대해서 이야기 하지 않습니다. 대부분의 컴퓨터전공 학부 과정 때 컴퓨터 구조 수업등의 수업을 통해 배우지만 프로그래밍을 하는데에 그 내용중 크게 필요한 것은 얼마 없기 때문에 잊고 살아갈, 기초적인 프로세서에 대한 이야기 부터 친절히 알려줍니다. 때문에 기존적인 싱글코어 구조도 기억 나지 않는데 멀티코어는 무슨~ 하고 생각하시는 분들도 걱정하지 말고 책을 읽으셔도 됩니다.

이 책에서 가장 좋았던 점은 딱딱한 하드웨어 인줄만 알았던 CPU의 내부 동작은 순수히 소프트웨어 적인 알고리즘을 바탕으로 작동 한다는 것을 알려주고, 실제 적용 되어 있는 알고리즘을(간략화 해서) 소개해 주고 있다는 것 입니다. 학부 저학년 때 AND, OR, 플립플롭, 7-Segment을 가지고 브래드 보드 가득히 소자를 꼽고 복잡하게 점프선을 연결해 계산기를 만들었던 기억이 있는데, 이 역시 소프트웨어적인 알고리즘을 하드웨어로 구현한 것 이였습니다. 크게 생각해 보면 하드웨어의 내부 구현이 소프트웨어적인 알고리즘 이라는 것은 당연한 것입니다. 하지만 실제로 동작하는 방식을 알게 되는 것은 색다른 경험 이였습니다.

싱글코어 CPU에서의 처리 속도 증가를 위해 도입한 파이프라인부터 현재도 활발히 연구 중인 프리펫칭까지 CPU에서의 다양한 최적화 기법과, 컴파일러가 프로그램 실행속도의 증가를 위해 수행하는 최적화 작업이 얼마나 복잡한지 엿볼 수 있는 이야기가 책 전반에 걸쳐 소개되고 있습니다. 마지막 부분은 멀티코어CPU로 인해 발생할 수 있는 버그들과 그 해결책, 그리고 보다 쉽고 완벽한 해결을 위해 연구중인 내용이 소개되어 있습니다. 멀티코어CPU 환경에서의 개발에 잔뼈가 굵은 개발자 들이 보면 이 부분은 시시한 내용일 수 있으나 경험이 풍부하지 않은 독자라면 자신이 저질러 고생해 본적이 있는 버그와 해결방법을 확인하며 왠지 모를 반가움을 느낄 수도 있습니다. (전 그랬어요 ^.^;)

평소에 잘 인지하지 않은 하드웨어에 관한 이야기가 내용에 비해 적은 페이지에 걸쳐 이야기 되고 있기 때문에 이해하는데 만만하진 않습니다. 리뷰로 이렇게 주저리 주저리 써 놓았지만 책 내용중 일부를 자세히 설명해 달라고 하면 설명할 자신이 없습니다. 그만큼 저에겐 한번에 받아들이긴 쉽지 않은 내용들 이였습니다. 대부분의 용어가 한번 소개되고 약어로만 적혀 있어서 읽어 내려가는 것도 수월하지가 않았습니다.

무엇보다 이 책에서 아쉬운 부분은 전반적으로 오탈자와 오류가 있다는 것과 번역서에서 볼 수 있는 어색한 문장들이 눈에 띈다는 점 입니다. 하지만 다행히도 이달에 이 책을 리뷰하는 한빛리더스 분들이 오탈자를 열심히 찾아 준 덕분에 2쇄에서는 보다 읽기 편하고 오류가 거의 없는 책이 될겁니다.

끝으로, 

이 책에서 알려주는 하드웨어의 내부 구조와 동작 방식을 제대로 이해 한다면 현재 개발중인 프로그램(멀티 코어 환경에서 돌아가는 프로그램을 작성한다면 더욱)의 성능을 좀 더 끌어 올릴 수 있는 힌트를 발견 하실지도 모릅니다. 이 점에서의 이 책의 가치는 분명합니다.

댓글
  • 프로필사진 Favicon of http://www.petabytes.org BlogIcon Benjamin 우리 영준씨, 공부 열심히 하고 계시죠?
    책 열심히 읽으셨나보네요. 휴 전 너무 어려워서요~

    트랙백 걸고가요. 언제 한번 회사에 놀러오세요~^^
    2010.07.08 20:38 신고
  • 프로필사진 Favicon of http://blog.mastojun.net BlogIcon Mastojun 계획한것보단 공부가 잘안돼서 걱정이예요.
    이번책은 두꺼워서 걱정이예요. ㅎ.ㅎ
    걱정만 두개네요ㅋ
    2010.07.15 00:57 신고
  • 프로필사진 Favicon of http://soomong.tistory.com BlogIcon soomong 마스토준님 잘지내시죠? ^^
    얼마전부터 블로그 스토킹 중입니다. 움흐흐흐 자주 들를께요 ㅋㅋ
    그나저나 한빛리더스 라는게 있나보네요 ㅎㅎ
    전 제 돈주고 TDD 책 사서 블로그에 올렸는데...이런거나 할껄 -_-..
    2010.07.13 15:49 신고
  • 프로필사진 Favicon of http://blog.mastojun.net BlogIcon Mastojun 반갑습니다 ^.^ 수몽님도 잘지내시나요?
    스터디 가고싶은데 대전에서 있는지라 못가겠네요.
    한빛리더스, 책 공짜로 받아 볼 수 있어서 정말 좋은거 같아요ㅎ.ㅎ;

    저도 블로그 스토킹 시작했습니다.!
    2010.07.15 01:00 신고
댓글쓰기 폼