멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
인텔이 80개 코어를 가진 CPU의 시제품을 선보였고, 8코어, 16코어가 CPU 코어가 곧 발매될 것이라고 기대되고 있습니다. 그런데, 최근 미국에서 실시된 연구 결과에 따르면 이른바 메모리 벽 (Memory wall) 때문에 16개 이상의 코어는 무용지물이 될수도 있다고 합니다.

IEEE Spectrum의 11월 기사의 그래프를 보면 8코어 이상부터는 오히려 성능이 저하되고 16코어 이상은 더욱 심각한 성능저하가 발생하고 있습니다. 물론 이 실험결과는 슈퍼컴퓨팅 분야에서 다루는 데이터량이 엄청나게 많은 문제들을 시뮬레이션한 것 입니다. (예를 들면, 기상예측, 물리시스템 시뮬레이션 등)

데이터 벽이라 함은 CPU의 처리속도를 따라잡지 못하는 메모리 속도가 병목현상을 일으키는 것을 말하는데 코어수가 증가할수록, 그 문제가 더욱 심각해집니다. 코어가 많아지면, 동시에 많은 데이터를 처리하기 위해 메모리(RAM)도 기하급수적으로 늘어나게 되는데, 문제는 각각의 CPU가 다음에 처리하게 될 데이터가 어디에 있는지 알기가 힘들다는 것 입니다. 현재의 CPU 메모리 구조로는 이러한 병목현상을 해결하기가 어렵습니다. 위 기사에서는 이 문제에 대한 해결 방안으로 CPU상에 메모리를 쌓아올리는 방법이 제시되고 있습니다.

8코어이상의 코어에서, 실험 결과 오히려 기존에 존재하는 코어를 무효화 시키는 것을 널티코어(Nulticore) 현상이라고 부르고 있습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

오늘 우연히 발견한 Dual Core와 Quad Core 성능비교에 관한  블로그 포스팅이 매우 유익한 정보를 담고 있어 소개합니다.

비교 대상은 아래 두개의 CPU 입니다. 새 기계는 Quad Core이지만 CPU의 클럭스피드가 낮다는 것에 주목해야 합니다.

Old machine: dual-core Intel Pentium D 830 processor, running at 3 GHz, with 1 GB of RAM.
New machine: quad-core Intel Xeon 5355 processor, running at 2.66 GHz, with 4 GB of RAM.

단일 코어대 코어의 성능을 비교하기 위해 필자는 Quad Core의 두 개 코어를 임의로 disable시켰으며, 벤치마크 결과 Quad Core가 1.3에서 1.9배 빠른 것으로 나타나 아래와 같은 결론을 말하고 있습니다. 그러니까 이제 클럭스피드만으로 CPU 성능을 말할 수 없다는 것 입니다.

This is perhaps the most important lesson for developers to learn: clock speeds are no longer a good indicator of true performance.

또, 한가지 흥미로운 점은 DDR 메모리 슬롯을 모두 다 사용함으로써 메모리 대역폭 (bandwidth)를 향상시킬 수 있다는 것입니다. 즉, 8개의 메모리 슬롯을 가진 기계에 2GB 메모리 두개를 꽂는 것 보다는 1GB 메모리를 4개의 슬롯에 나누어 꽂는 것이 보다 큰 메모리 대역을 갖게 해준다는 것입니다. (물론 1GB 메모리만을 사용하면 최대 확장 가능 메모리는 8GB로 줄어들게 됩니다.)

코멘트에 있는 symmetric multiprocessor (SMP) Soft Affinity 관한 글도 유익합니다. 각각의 쓰레드는 자신의 "ideal processor"를 가지고 있어 가능한한 같은 CPU혹은 코어에서 계속 실행이 된다는 것입니다. 하지만, user mode 쓰레드는 언제든지 우선순위에 따라 다른 CPU에 할당될 수 있는 preemptive scheduling 이라는 것입니다. 당연한 이야기이지만 다시 한 번 쓰레드에 대한 명확한 이해를 하게 해주는 것 같습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Emery Berger 교수의 커리큘럼 설명 중 일부를 번역하였음. 원문은 이곳에서 찾을 수 있습니다.



수년간 병렬 프로그래밍 주창자들은 "언젠가 우리 모두 멀티프로세서 컴퓨터를 갖는 날이 올 것이다"라고 말해왔다. 그런데, 마침내 그 날이 오고 말았다. 지난 20년간 지속되어온 무어의 법칙의 종말을 앞두고 모든 주요 CPU칩 메이커들은 적어도 두개의 코어를 가진 CPU를 생산하기 시작하였고 일부는 8개의 코어 생산계획을 발표하였다. 이러한 새로운 프로세싱 파워를 잘 이용하는 것이 앞으로 중대한 도전이 될 것이다.

크리에이티브 커먼즈 라이센스
Creative Commons License

델이 쿼드 코어 서버를 발표하였습니다.

http://news.com.com/Dell+announces+first+quad-core+servers/2100-1010_3-6133516.html?tag=st_lh


http://news.com.com/Intel+Quad+core+to+turbocharge+chips/2100-1006_3-6119913.html?tag=nl
크리에이티브 커먼즈 라이센스
Creative Commons License

안녕하세요. 드디어 오늘 2006년 11월 7일 "멀티프로그래밍 블로그"를 오픈합니다. 이 블로그는 멀티프로그래밍 위키(Wiki)와 함께 운영됩니다. 위키에는 주로 멀티프로세서와 멀티코어 CPU를 100% 활용하기 위한 멀티프로세서 프로그래밍과 관련된 내용을 위키 형식으로 정리 업데이트할 예정이며 이 블로그는 그 내용에 관한 토론이나 기타 소프트웨어 개발자로서의 주변 얘기들을 블로깅하려고 합니다.

간단히 제 소개를 한다면 11년째 프로그래머로 일하고 있으며 현재는 온라인 게임 서버프로그래머로 일하고 있습니다. 제가 처음으로 프로그래밍을 시작한 것은 1980년대 중반 MSX에서 베이직, 에셈블리와 기계어(machine) 코드를 이용하여 간단한 게임이나 유틸리티를 제작하기 시작하면서 입니다. 그 이후로 컴퓨터 환경은 너무도 많이 변했습니다. 90년대 초에는 친구들과 몇가지 컴퓨터 관련 책을 출판하였습니다.

최근 멀티 코어 CPU 개발과 생산이 매우 활발히 진행되고 있습니다. 하지만, 이를 효과적으로 사용하는 소프트웨어 개발이나 교육은 이를 따라 가지 못하고 있습니다. 멀티프로세서를 이용한 병렬처리(Parallel Processing) 알고리즘은 이미 오래전부터 연구되어 왔으나, 이해하기 힘들고 이른반 멀티스레드 프로그래밍은 현재의 컴퓨터 언어로 구현하기도 쉽지 않으며 고치기 힘든 버그가 항상 생기기 마련입니다.

이 멀티프로세서 프로그래밍 위키는 제가 글을 쓰는 개인 위키이며 이곳 블로그는 그 위키와 관련된 내용응 블로깅하는 곳입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License