멀티프로그래밍 위키로 바로가기 → 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

Trackback Address :: http://devnote.net/trackback/86

  1. 청어 2008/12/15 11:25 댓글주소 | 수정 | 삭제 | 댓글

    현재의 CPU 메모리 구조로는 힘들 것 같다는 것은 동의하지만 메모리를 쌓는 것 보다는 메모리 채널을 더 스마트하게 해서 코어가 요청하는 메모리 패치를 동시에 처리할 수 있도록 하는 방법이 더 좋을 것 같습니다. 코어가 8개면 8채널은 되어야 하지 않을까요? 지금의 core i7의 3채널은 최소의 선택인 것 같습니다

  2. CS 2008/12/31 11:56 댓글주소 | 수정 | 삭제 | 댓글

    core i7이 3채널인가요? 덕분에 알게 되었군요. 소프트웨어적으로는 False sharing을 가능한한 줄이는 것이 큰 도움이 될 것 같습니다. 예를 들면 되도록 데이터를 파티션하여 스레드간 공유되는 데이터를 줄이고, 스레드간 자주 공유되는 데이터는 cache line 크기 단위로 align 시키는 등의 테크닉이 필요할 것 같습니다.

    그럼 새해 복많이 받으세요!


◀ PREV : [1] : ... [14] : [15] : [16] : [17] : [18] : [19] : [20] : [21] : [22] : ... [93] : NEXT ▶