멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
아래 링크는 바로 전 포스팅에서 소개한 메모리 지연시간(latency)에 관해 아주 잘 정리된 문서를중에 실생활에 비유한 내용을 번역 정리해보았습니다.

what-your-computer-does-while-you-wait


성능 혹은 최적화를 생각할 때 항상 염두해 두어야할 것.

최신 CPU는 엄청나게 빠르다. 대부분의 심플한 연산을 수행하는 데에 단, 1 클럭 싸이클 밖에 소요되지 않는다(Core 2 CPU 기준). 이는 3GHz CPU 속도라면 1/3 나노초에 해당한다, (1/3 나노초동안 빛은 10cm 정도 진행할 수 있을 뿐이다)


메모리와 디스크 latency를 실생활에 비유한다면 다음과 같다.

1. L1 cache: 책상 위에서 종이 한 장을 잡기 (3초)

2. L2 cache: 책장에서 책 한 권을 꺼내기 (14초)

3. 메인 메모리: 복도로 걸어 나가 자판기에서 커피 한 잔을 뽑기 (4분)

4. 하드디스크: 건물을 나와서 1년 3개월 동안 세계일주 하기.


프로그램 최적화를 위해 무엇을 해야하는지 확실히 보여주는 좋은 비유인 것 같습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

인텔이 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

GPGPU

CPU/멀티코어 2008/06/18 07:12
인텔, AMD, nVidia와 같은 칩메이커들은 멀티코어 CPU 개발과 함께 GPGPU (General-Purpose computation on GPUs) 연구 개발에 많은 노력을 하고 있습니다. 가장 큰이유는 멀티코어 CPU보다 가격이 훨씬 싸다는 점에 있습니다. GPGPU는 General-Purpose라는 이름에서와 같이 그래픽스에 관련된 연산뿐만 아니라 멀티스레드로 동시 실행가능한 어떠한 연산도 수행할 수 있다는 점이 매우 흥미롭습니다. 아래 몇가지 링크를 복사해 놓았습니다.

http://en.wikipedia.org/wiki/GPGPU

http://en.wikipedia.org/wiki/CUDA

http://www.nvidia.com/object/cuda_home.html

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

요즘 새로운 노트북을 장만하려고 노트북 스펙과 리뷰기사를 읽고 있습니다. 그런데, 최근 기사에 따르면 인텔에서 제4세대 센트리노 플랫폼인 센트리노 프로(Centrino Pro)를 곧 발매할 예정이라고 합니다.

코드네임 산타로사(Santa Rosa)로 명명된 새로운 모바일 플랫폼에는 800Mhz 프런트 버스를 가지고 있는 코드네임 메롬(Merom) 제2세대 듀얼코어 CPU와, 코드명 크레스트라인(Crestline)인 956 익스프레스 칩은 인텔의 GMA X 3000 그래픽 기술과 함께 작동하며 윈도우즈 비스타의 에어로 기능의 가속을 지원하는 엑셀러레이터도 포함된다고 합니다. 자세한 내용은 아래 위키를 참고하시기 바랍니다.

http://en.wikipedia.org/wiki/Centrino

거기다가 차세대 무선랜인 Wi-Max도 포함될 것으로 예상되, 상당히 매력적인 스펙임에 틀림이 없습니다. 5월쯤에는 산타로사 플랫폼 노트북이 대거 출시될 것으로 예상되므로 아무래도 노트북 구입시기를 조금 늦춰야할 것 같습니다.

그리고, 최신 노트북은 모두 윈도우즈 비스타가 설치되어 있는데, 여러 리뷰기사를 통해 나타난 바와 같이, 아직 DirectX 10을 지원하는 그래픽 드라이버가 나올 때까지는 XP가 더 성능이 좋고 안정되어 있는 것으로 보입니다. 특히 아래 리뷰 기사에서는 비스타에 대해 혹평하고 있는데, 상당히 신빙성이 있어 보이는군요. "Windows Vista is Windows ME Part 2." 라고 한 것은 상당히 인상적입니다. ^^

또, 최근 발표된 대부분의 CPU가 64비트 연산을 지원하지만 아직도 비스타는 32비트에 머무르고 있습니다. 64비트 버전의 사용을 원하는 사람에게 발송해준다고 하는데, 아직도 64비트 버전이 불안하거나 성능이 좋지 않기 때문에 본격적인 시판을 하지 않는 것으로 보입니다. 물론 기존 32비트 응용프로그램과의 호환성 문제도 해결하기 힘든 것 중의 하나입니다.

http://www.notebookreview.com/default.asp?newsID=3529
크리에이티브 커먼즈 라이센스
Creative Commons License

지난 월요일 라스베가스 CES에서 인텔이 새로운 쿼드코어 CPU를 발표하였습니다.

특히, 이번에 발표된 쿼드코어는 "Core 2 Quad 6600"으로 코드네임 켄츠필드(Kentsfield)로 제작된 CPU 중의 하나 입니다. 작년 11월에 이미 발표되었던 켄츠필드 CPU "Core 2 Extreme"은 하드코어 게이머를 타겟으로 개발되었지만, 이번에 발표된 쿼드코어는 가격이 조금 싸며 비지니스 사용자들을 타겟으로 하고 있다고 합니다. 또, 이와 함께 인텔은 보다 싼 서버용 Xeon 쿼드코어도 동시에 발표하였습니다.

Core 2 Quad 6600은 2.4 GHz CPU 속도에 프론트 버스 (FSB) 속도는 1066MHz 라고 하는데, 아직 자세한 스펙은 나오지 않았으며, 두개의 듀얼코어 CPU를 하나로 패키지한 것입니다. 먼저 발표된 켄츠필드의 하나인 Core 2 Extreme과 마찬가지로, 6600도 두개의 4MB L2 Cache를 각 코어가 따로 가지고 있는 것 같습니다. 즉, 말 그대로 두개의 듀얼 코어를 하나의 기판 위에 올려 놓은 것입니다. 보다 효율적인 CPU 캐쉬를 위해서는 모든 코어가 하나의 L2 Cache를 공유해야 하는데, 이것은 아마도 2008년에 촐시될 것으로 보이는 화이트필드(Whitefield)에서나 가능할 것으로 보입니다.


한 인터넷 뉴스 싸이트에 따르면, 이번 6600은 굳이 현시점에서 꼭 발매될 필요는 없어 보이나, AMD보다 시장을 선점하기 위한 것 같다고 합니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

그 동안 좀 게으름을 피우다 짧은 글하나를 위키에 올렸습니다. Atomic Operation에 관한 것으로 링크는 아래에 있습니다. 글쓰는 것은 써놓고 보면 대단치도 않은 것이 언제나 어렵습니다.

http://devnote.net/wiki/index.php/Atomic_Operations

크리에이티브 커먼즈 라이센스
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