티스토리 뷰

 

꽤 오래전 글이지만 얼마 전 세미나에서 "The Free Lunch Is Over" 라는 말을 처음 듣고 멀티코어 CPU의 동작 원리가 궁금했다. 그래서 찾아보니 다행히 어려운 전공 서적이 아닌 프로그래머를 위한 이 책이 있었다.

 

이 책을 읽으면서 생각해보니 내가 알고있는 CPU에 대한 지식은 대학교 학부시절 '컴퓨터 구조' 수업이 거의 마지막이었던 것 같다. 아래의 책이 교재였었다. 그 당시에는 처음 들어보는 컴퓨터 시스템 구조와 원리에 대한 내용이라서 흥미있게 들었지만 나중에 이 내용이 크게 도움이 될 것이라고는 기대하지 않았었다. 그러나 수년 간 현업에 있으면서 '성능 좋은 S/W를 만들기 위해서는 하면서 H/W 지식도 필요하다' 라는 생각이 가끔은 든다.

 

Computer System Architecture, 3/E
M. Morris Mano

 

 

 

 

이 책은 CPU 작동 원리에 대한 가능한 많이 지식을 담으려는 저자의 노력과 욕심이 보인다. 기초 지식이 부족해서 정확히 이해가지 않는 부분들이 꽤 있었다. 그럼에도 불구하고 끝까지 읽을 수 있었던 건 그 만큼 저자가 어려울 수 있는 전문 지식을 쉽게 풀어서 설명해 주었기 때문이었다.

 

 

 

 

 

본문 중에서... 

 

"앞서 인용한 '공짜 점심은 끝났다'라는 말처럼 프로그래머는 이제 적극적으로 병렬 프로그래밍에 관심을 가져야 한다. 높은 싱글스레드의 성능이 특히 요구되는 고사양의 게임은 듀얼코어에서 쿼드코어로 업그레이드했다고 속도가 저절로 높아지는 것은 아니다. 과거와 비교할 때 훨씬 더 많은 노력을 가해 프로그램을 병렬화해야 한다."

 

이 책은 CPU의 동작 원리와 알리고즘들을 설명하고 있지만  결국 깨달은 점은 'CPU는 결국 프로그래밍 언어로 표현 가능한 알고리즘을 실행시키는 장치' 라는 것과 멀티코어 프로그래밍은 더 이상 특정 분야만을 위한 기술이 아니라는 것이다. 마지막으로 입문서 위주의 국내 컴퓨터 분야 도서 시장에서 이 책과 같은 특정 분야의 전문 지식을 담은 책들을 더 많이 만나볼 수 있으면 좋겠다.

 

참조 

 

{&&, ||, !} vs. {&, |, ~} http://egloos.zum.com/minjang/v/1968466

 

암달의 법칙(Amdahl's law) http://en.wikipedia.org/wiki/Amdahl%27s_law

 

루프 풀기: 실제 컴파일러는 어떻게 http://egloos.zum.com/minjang/v/2280747

 

The Free Lunch Is Over http://www.gotw.ca/publications/concurrency-ddj.htm

 

Multicore Is Bad News For Supercomputers

http://spectrum.ieee.org/computing/hardware/multicore-is-bad-news-for-supercomputers

 

Single-Threaded vs. Multithreaded : Where Should We Focus http://research.cs.wisc.edu/multifacet/papers/ieeemicro07_debate.pdf

 

SIMD 명령어로 두 구의 충돌 검사 최적화 해보기 ttp://egloos.zum.com/minjang/v/2520416

 

cache http://en.wikipedia.org/wiki/Cache_(computing)

 

CPU cache http://en.wikipedia.org/wiki/CPU_cache

 

Cache algorithms http://en.wikipedia.org/wiki/Cache_algorithms

 

Branch predictor http://en.wikipedia.org/wiki/Branch_predictor

 

병렬 프로그래밍 : 자료구조의 '민영화' http://egloos.zum.com/minjang/v/2473618

 

Intel Parallel Advisor Lite http://egloos.zum.com/minjang/v/2510905

 

OpenMP를 이용한 병렬 프로그래밍 http://www.mimul.com/pebble/default/2012/05/30/1338342349153.html

 

Scheduling multithreaded computations by work stealing

http://supertech.csail.mit.edu/papers/steal.pdf

 

Intel Cilk Plus https://www.cilkplus.org/

 

Intel Thread Building Blocks https://www.threadingbuildingblocks.org/

 

Ct : C for Throughput Computing

https://www.nersc.gov/assets/RD/ATG_Meetings/SIAM_PP08/CT-SIAM-PP08.pdf

 

NVIDIA CUDA SDK Code Samples

http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/samples.html

 

분산 메모리 환경을 위한 방법론 MPI

http://www.mcs.anl.gov/research/projects/mpi/

 

false sharing http://egloos.zum.com/minjang/v/1848130

 

우선순위 역전 현상 http://egloos.zum.com/minjang/v/1018977

 

락을 대체할 수 있는 트랜잭셔널 메모리 http://egloos.zum.com/minjang/v/2313699

 

[고객센터] 프로그래머가 몰랐던 멀티코어 CPU 이야기 http://minjang.egloos.com/2644402

 

- James Song

 

댓글