듀얼 코어, 쿼드 코어, 헥사 코어 ... 그 끝은?

클럭 속도의 한계: 에너지 장벽

너무나 잘 아는 무어의 법칙에 따라 프로세서 칩에 집적될 수 있는 트랜지스터의 개수는 해마다 크게 증가해왔다. 불과 5년 전까지만 하더라도 수 십 년간 지켜져온 이 무어의 법칙은 클럭 속도를 계속 높여 싱글 코어의 성능 역시 트랜지스터 개수에 비례하여 증가시켜왔다.

위 그래프는 프로세서의 트랜지스터 수와 클럭 속도를 보여준 것이다. 세로 축이 로그 스케일임을 주목하면 말 그대로 기하급수적으로 트랜지스터 수는 증가하였다. 그리고 파란 점들과 파란 선들을 보면 클럭 속도 역시 트랜지스터와 같이 발전하였다. 그러나 2003년 이후를 주목 해보자. 트랜지스터 수는 올라갔지만 더 이상 클럭 속도는 오르지 못하고 정체되어 있다. 5년 전에도 프로세서들은 클럭 속도가 2~3GHz였고 지금도 그러하다 (예를 들어, 2003년 6월에 나온 펜티엄 4는 2.4GHz 였고 지금 많이 팔리는 Core 2 Duo 제품 역시 2.66GHz). 물론 명령어 당 사이클(IPC)이 크게 개선되어 싱글 코어 성능 향상도 비약적으로 있었지만 적어도 클럭 속도는 정체되어 있다.

이런 이유는 여러가지로 설명할 수 있지만 무엇보다 에너지 장벽(Energy wall)이 가장 큰 이유였다. 2004~2005년에 나왔던 인텔의 프레스캇 코어는 클럭 스피드는 3기가를 훌쩍 넘었지만 엄청난 발열로 매우 악명이 높았다. 그건 펜티엄 4의 구조인 넷버스트 아키텍처가 오직 클럭 스피드만을 고려했기 때문이었다. 그 설계자들도 이렇게 심각한 발열과 소비전력의 문제가 있을 줄 몰랐다. 1997년에 출판된 SGI 수퍼 컴퓨팅 관련 논문을 보면 발열에 대한 언급이 아예 없다. 그러나 어떠한가? 이제 수퍼 컴퓨터를 돌리려면 그 만한 크기의 에어컨이 필요하다. 이렇게 클럭 속도를 올리는 것이 에너지 효율이라는 측면에서 엄청난 삽질임을 깨닫고, 프로세서 업체들은 멀티코어라는 방향으로 눈을 돌렸다.

 

멀티코어의 한계: 메모리 장벽

2006년에 대중적인 듀얼 코어 프로세서가 등장 이후 이제는 쿼드 코어 프로세서 역시 일반적이다. 비록 하이퍼스레딩이긴 하지만 Core i7은 8 스레드를 동시에 지원한다. 마치 프로세서 세대가 진보함에 따라 클럭 속도가 뛰었던 것 처럼 코어의 개수가 지금 그러하다. GPU 역시 그 안에 있는 수 많은 멀티프로세서의 개수가 증가하고 있다. nVidia 지포스 제품군들은 100여개의 멀티프로세서가 이제 200개를 넘고 있다.

그럼 이런 멀티코어는 클럭 속도가 그러했듯이 어떠한 벽에 부딫혀 한계에 다다를까? 물론 인텔이 연구용으로 발표현 80 코어 프로세서 같은 것이 있기는 하지만 이런 것들은 하나의 코어를 이루는 프로세서들이 극히 단순한 형태이다. 그러나 지금 데스크탑 용 프로세서와 같은 복잡하고 덩치큰 코어를 8개, 16개, 32개 더 넘어 64개, 128개까지 한 칩에 집적할 수 있을까? 물리적으로는 가능할지 몰라도 과연 그것이 더 높은 성능으로 이어질까? 당연한 이야기이겠지만 그렇지 않다. 그 이유는 메모리 성능에 있다.

컴퓨터 좀 조립해보신 분은 ‘듀얼 채널’이라는 용어에 익숙할 것이다. DRAM 메모리를 컴퓨터 메인보드에 꼽을 때, 쌍으로 꼽아야 높은 성능이 나온다는 이야기다. 대역 폭을 늘리기 위해 두 개씩 쌍으로 접근하는 것이다. 인텔의 새 프로세서 Core i7은 메모리 컨트롤러를 AMD 처럼 내장하였다. 이건 메모리 성능 중 레이턴시를 줄이지 대역폭을 동시에 개선하지는 못한다. 대신 Core i7은 ‘트리플 채널’이라는 걸 도입하여 대역폭을 증가시켰다. Core i7의 메모리 대역폭을 제대로 사용하기 위해서는 이제 메모리 3개를 쌍으로 해서 꼽아야 한다.

왜 인텔은 Core i7에서 메모리 시스템을 이렇게 크게 바꾸었을까? 쉽게 예측할 수 듯이 멀티코어, 매니코어 환경에서는 메모리 대역폭이 아주 중요하기 때문이다. 8개의 스레드에서 바쁘게 돌아가는 프로그램들이 모두 제각각 데이터를 읽고 쓴다고 생각해보자. 순식간에 메모리 대역폭이 병목 지점이 될 것이다.

참고 자료에 따르면 Core 2 Quad 시스템에서 듀얼 채널 DDR3의 대역폭은 데이터 카피 시 6.9GB/s (기가바이트)으로 생각해보면 매우 크다. 그러나 대량의 데이터를 쓰는 프로그램들이 쿼드 코어에서 돌아간다면 이 숫자는 결코 큰 숫자가 아니다. 특히 계산을 하려면 대량의 데이터 이동이 필요한 인포매틱스 분야 프로그램들은 더욱 그러하다. 실제로 프로파일링을 해봐도 메모리 대역폭의 부족은 여실히 드러난다.

Core i7에서는 트리플 채널의 도입으로 같은 경우 초당 12GB를 읽고 쓸 수 있다. 무려 70%의 대역폭 향상이다. 그 만큼 코어 수가 늘어남에 따라 메모리 대역폭이 고성능 프로그램에서는 심각한 병목 지점이 될 수 있기 때문에 이렇게 메모리 대역폭에 신경을 쓴 것이다.

이 그래프는 현재의 구조에서 언급한 인포매틱스와 같은 프로그램들은 8개 코어 이상이 전혀 무용지물임을 보여주고 있다. 바로 원인은 메모리 대역폭에 있다. 붉은 색 실선이 잘 보여주고 있다. 당연히 많은 컴퓨터 공학 연구자들이 이 문제를 모를리 없다. 대안 중 하나로 3D-stacking 기술이라는 것이 있다. 말 그대로 칩을 고층 건물 올리듯이 쌓는 것이다. 아직까지는 연구 수준에 머물러 있지만 가까운 미래에 구현되리라 믿는다. 만약 이런 기술로 프로세서 코어 위에 바로 DRAM을 올린다면? 위 그래프의 노란색이 이런 경우의 성능을 예측하고 있다.

위 그림은 가장 최근에 발표된 멀티코어를 위한 3D-stacked 메모리 구조라는 논문 중 발췌한 그림이다. 2차원으로 칩이 확장되는 것이 아니라 수직으로 쌓는다. 물론 발열이나 여러 가지 문제를 고려해야 한다.

 

멀티코어의 미래

멀티코어 아키텍처가 성공하기 위해서는 메모리 대역폭이라는 문제가 이제 새롭게 ‘추가’되었다. 사실 메모리 장벽은 전혀 새로운 사실이 아니다. CPU와 메모리 속도의 차이는 계속 벌어져서 싱글 코어에서도 메모리 성능은 주요 병목 지점이었다. 그래서 많은 양의 캐시와 프리펫처가 사용되었다.

당연하지만 멀티코어의 승패를 결정 짓는 가장 중요한 요소는 병렬 프로그래밍에 있다. 에너지 장벽에 가로 막히자 멀티코어라는 방향으로 계속 프로세서는 계속 발전하고 있다. 얼마나 효율적이고 버그 없이 병렬 프로그래밍을 하느냐, 또 얼마나 메모리 대역폭이 받쳐주느냐가 멀티코어의 미래를 결정할 것이다.

참고자료: Inside the Machine의 저자 Jon Stokes씨가 며칠 전에 쓴 글:
Analysis: more than 16 cores may well be pointless

by object | 2008/12/10 08:15 | 컴퓨터 | 트랙백(1) | 핑백(1) | 덧글(30)
트랙백 주소 : http://minjang.egloos.com/tb/2166350
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from kroisse's me.. at 2008/12/10 19:21

제목 : Kr015se의 생각
CPU의 클럭 속도가 그랬던 것처럼, 코어 숫자도 한동안 마냥 늘어날 거라고만 생각했는데, 이런 문제가 있다는 걸 미처 생각을 못 했구나. -_-;; 그런데 저렇게 되면 발열 문제는 어떻게 해결할 수 있을지가 다소 궁금하긴 하네....more

Linked at Memory Wall &r.. at 2008/12/21 09:57

... 코어의 시대가 도래하면 얼랭 게임 서버가 혹시 대세가 되지는 않을까 했는데, 벌써부터 멀티 코어에도 메모리 장벽이라는 한계가 있다는 이야기가 솔솔 들린다. 이로 인해 8-16코어를 넘어서기가 힘들다고 해서 널티코어 효 ... more

Commented by 로리 at 2008/12/10 08:45
계속 난관이 등장하군요.. i7은 별관심이 없었는데(환율 때문에.... T.T) 트리플채널이라니... 그냥 눈물만 나오는군요....
Commented by object at 2008/12/10 09:00
예전 교수님이 수업시간에 자주 하던 말씀이... "Life is not that easy."
Commented by Lohengrin at 2008/12/10 09:12
펜린과 네할렘 사이에 메모리 속도차이가 많이 나는군요.

병목현상이나 문제점들이야 차차 개선되어 나가겠죠. 흥미로운 글 잘 읽었습니다. ^^
Commented by object at 2008/12/10 17:38
QPI, IMC(Integrated Mem Ctrl), 그리고 트리플채널을 빼면 Nehalem은 시체가 되는거죠.. 물론 린필드(Nehalem의 메인스트림버전)에는 QPI와 트리플채널이 빠집니다.
Commented by 몽몽이 at 2008/12/10 09:22
memory stackon processor가 구현되면 삼성전자 망하는거 아닐까요?
Commented by object at 2008/12/10 17:37
어떻게 보면 그럴 수도 있겠는데요. 그런데 그 때 쯤 되면 메모리 요구량이 20GB 정도가 될 거고 이 정도는 여전히 CPU 한 패키지 안에 들어가는데 한계가 있으니, 지금의 DRAM과 같은 모듈은 계속 존재하리라고 생각합니다. 프로세서에 같이 패키징 되는 건 지금의 LLC(last level cache)와 DRAM 사이에 새로운 메모리 계층이 아닐까 생각합니다.
Commented by Ya펭귄 at 2008/12/10 09:33
오홋... 존 스토크스씨의 새 글이 나왔군요.

Commented by object at 2008/12/10 17:38
Real World Technologies와 더불어 심도있는 글을 주는 곳이죠. 우리나라는 이런 곳이 없다는.... 테크노아 보드나라 모두 리뷰 기사들 오류 투성이..
Commented by 클랴 at 2008/12/10 10:34
메모리 구조에 일대 혁명이 일어나서 (갈륨-비소 상용화라던가)
속도가 엄청나게 향상된다면, 대역폭도 늘어나겠지요.
항상 좋은 글 감사합니다~
Commented by object at 2008/12/10 17:39
갈륨-비소.. 그런 것도 있군요. 감사합니다.
Commented by 김수혁 at 2008/12/10 11:00
위에서 언급된 것처럼 수직으로 확장되는 구조의 실모델을 한국 과학자가 최초로 만들었다는 기사를 얼핏 본거 같은데... 아닌가요 ?
항상 좋은 글 잘 보고 갑니다.
Commented by object at 2008/12/10 11:22
죄송하지만 저는 거기에 대해 잘 모르겠네요.
Commented by novrain at 2008/12/10 12:59
최근 프로세서 발열에 관한 연구를 하고 있었어 3D-Stack(이쪽에서는 SiP(System-in-Package)라고 하죠)에 관심이 많습니다. 앞으로 프로세서가 3D-Stack화 되면 전력 소모 뿐만 아니라 발열(특히 정수 레지스터) 역시 문제가 발생하죠. 언제나 좋은 정보에 감사 드립니다.
Commented by object at 2008/12/10 15:08
그 문제 아이디어 중 하나가 MSB와 LSB를 포개서 쌓자는 이야기도 있었던 걸로 기억합니다. 정수 레지스터가 발열이 심한데 여기서도 MSB/LSB와의 발열 차이가 존재한다는 것에서 아이디어를 얻었던 것 같네요.
Commented by theadadv at 2008/12/10 18:30
코어가 연산유닛화 하고 메모리 모듈이 내부 캐쉬화 하는 그런 모양새군요...
Commented by object at 2008/12/11 09:03
그래도 2차원 평면에서 끌어오는 데이터가 빠르기 때문에 캐시는 그래도 계속 남을 겁니다.
Commented by 몽몽이 at 2008/12/10 23:39
그런데 왜 하필 Triple 이었을까요?
부족한 생각으론 2 -> 3 보다는 2 -> 4 로 가는게 이해하기도 더 쉬울 것 같습니다만...
Commented by object at 2008/12/11 04:04
지금 출시된 Core i7을 지원하는 X58 보드는 메모리 슬랏이 6개 있습니다. 기존에는 4개 있었죠. 4개로 가면 아무래도 부담이 있지 않을까해서.. 세개로 타협본듯.
Commented by sloth at 2008/12/11 07:46
저는 Jon Stokes 씨 참 좋아하는데 얼마전에 인사이드 머신 책 추천했다가 모 게시판에서 학부생이 '읽어보고 추천하는거냐' 란 반응을 보여서 잠시 멍했었었죠... 그런 구린책을 왜 추천하냐는말이었어요
내용이 없어 보인다더군요. 문득생각이 나는군요............ (늘 삼천포로 가는 댓글만 다는거같아 죄송스러워지는군요.. ;; )
Commented by object at 2008/12/11 09:02
저도 솔직히 Inside the Machine이 좋은 책이라고는 생각하지는 않습니다. 너무 포지션이 어정쩡해요. 전체적인 마이크로아키텍처에 대한 감을 심어주는데는 별로 좋은 책이 아닌 것 같습니다. 어느 정도 아는 사람이읽으면 펜티엄은 이러했고 모토로라는 이러했다 정도를 알 수 있지만
Commented by sloth at 2008/12/11 09:27
이런.. 전 참 재미있게봤는데..
Commented by object at 2008/12/11 12:15
아 저도 재밌게 봤어요. 특히 무어의 법칙은 인텔의 편이었다는 해석이 참 명쾌했습니다. x86 CISC 적인 부분은 그 양이 늘지는 않으니 시간이 지나면 자연스럽게 RISC를 따라잡을 수 있었다라는 분석... 솔직히 펜티엄 구조는 이미 다른 논문에서 충분히 숙지하고 있던거라 그렇게 새로운 것은 없었습니다만... 그런데 좀 약한 부분이 펜티엄 4에서 스케쥴링 및 리플레이 부분이 이야기할 거리가 많은데 이 부분 논의가 별로 없고, C2D에서도 메모리 디스엠비규에이션을 좀 다뤘지만 와치독이나 그런 메커니즘까지는 설명을 안 했죠. 그리고무엇보다 알파칩 21264 정도는 언급을 해줘야할 것 같은데 아쉽더군요.
Commented by 모루 at 2008/12/11 17:16
위의 테스트 케이스는 데이터를 계속 소비하거나 매우 큰 데이터 세트를 랜덤 억세스를 하는 경우인데요 - MMORPG 게임 서버도 비슷한 일을 하지요 - 매우 예외적인 경우라고 봐야 합니다.
메모리스택킹도 그다지 좋은 해결책이 아니라고 생각하는 것이 다루어야 하는 메모리가 이미 수 GB이상이 되면 결국 따로 별도의 메모리를 두어야 하는 것이고 결국 같은 상황이 된다는 것이죠.
한니발 아저씨의 글 말미에 쓴 것처럼 실제 시장에서는 받아들여지기 힘든 상품이 될 것 같습니다. 다양한 메모리 요구를 맞춰줄 수도 없을 뿐이고요.
메모리를 스택킹해서 패키징 하여 파는 것은 휴대폰처럼 작게 만들기 위해서 장착 면적을 줄이기 위한 것이 시장에 먹혔기 때문이죠.
CPU 따로 메모리 따로 조립할 수 있는 현재 구조가 아니라 같이 묶어서 파는 형태를 생각해보면 얼마나 시장에서 받아들이기 힘들지가 예측이 되지요.

모루@
Commented by object at 2008/12/11 18:42
아직까지 CPU에 3차원으로 DRAM이 스태킹되어 구현된 적은 없습니다. 여전히 연구 단계입니다. 메모리가 미래에 가면 수 십 GB 필요하기 때문에 여전히 외부에 램은 필요하고요. 스태킹이 추구하는 건 일종의 새로운 메모리 계층을 추가하는 것입니다. 넋넣고 메모리 한번 갔다 오는데 200싸이클 이상을 허비할 수가 없어서 이렇게 해서라도 조금이라도 레이턴시를 줄이려고 하는거죠.

지금 2009년 현재로는 위 테스트 케이스가 비교적 극단적인 경우인데 (매우 극단적이라는 표현은 동의하기 힘듭니다. 일반인이야 매우 극단적이지만 밴드위쓰가 바틀넥인 응용은 지금도 많습니다) 5년, 10년 뒤가 되면 이게 일반적인 일이 될 수도 있습니다. 아키텍처 연구하는 사람들은 10년 뒤를 내다보고 연구하고 무엇보다 일반용 보다는 HPC용으로 하기 때문에 그렇게 단순히 판단할 수는 없다고 봅니다.

시장에서의 문제는 내장 그래픽 카드와 같은 경우로 보시면 될 것 같습니다. 위에 댓글에도 달았는데, 10년 뒤에 수 GB의 DRAM이 스태킹으로 집적된다 하더라도 그 때 가면 훨씬 더 많은 메인 메모리가 필요하고 여전히 DRAM은 따로 팔리는 구조가 될 겁니다. 3D 스태킹이 DRAM을 사라지게 하는 것이 아닙니다.

물론 3D 스태킹은 여전히 연구단계고 물리적인 집적도 많은 난관이 있겠고.. 발열도 문제가 많고.. 어떻게 실제로 구현될지 안될지는 모르죠. 하나의 대안이고 연구 중인 과제 중 하나일 뿐이죠.
Commented by object at 2008/12/11 18:45
사실 왜 3D 스태킹 같은 기술이 나왔냐면 캐시가 커지면 커질 수록 레이턴시는 늘어날 수 밖에 없습니다. 그래서 Nehalem은 MLC(Middle Level $)를 도입하여 이를 어느 정도 극복하려고 한 겁니다. 캐시를 조금 더 키우면 힛 레이셔는 올라가지만 레이턴시가 높아져서 서로 상쇄되고 골치아프죠. 그런데 이 레이턴시의 가장 큰 원인이 바로 wire delay 입니다. 공정은 자꾸 미세해지는데 2차원으로는 이걸 확장하기가 힘들죠. 그래서 캐시 구조도 NUCA같은 거도 고안되었고... 이런 와이어 딜레이를 줄이는 기술 중 하나가 3D 스태킹 기술입니다. 이게 단순히 CPU 위에 DRAM을 얹기 위해 고안된 거는 아니고요, 헤테로지니어스나 매니코어 환경에서 서로 간의 와이어 딜레이를 줄이기 위한 방법으로 나온 겁니다.. 뭐 그렇다고요 ㅎㅎ
Commented by 모루 at 2008/12/11 20:07
3D 스태킹을 적용하고도 여전히 추가적인 외부 램이 필요한 상황이라면 마치 현재의 GPU의 비디오램처럼 사용될 가능성이 더 높겠지요. 캐시로서가 아니라.
매우 예외적인 케이스라고 하는 것은 전체 CPU를 사용하는 응용에 비해서라는 것입니다. 해당 문제를 푸는 사람에게는 예외라고 하면 서글프지만 일반인은 계속해서 메인 메모리에 꽉 채운 데이터를 소비하면서 계산하는 형태로 컴퓨터를 쓰지 않거든요. 저도 예외적인 분야에서 일하는 사람입니다. 예전에는 지금 논하는 문제는 학교에서나 하는 이야기로 치부했었죠.
3D 스태킹은 인텔에서 새로운 돌파구로 이야기 하는 것이지만 적층하였을 경우 발열의 문제 - 건물의 에어 덕트 처럼 열전도에 관한 소재나 구조가 도입이 되겠지요 - 나 누설 전류, 수율의 문제 때문에 좀 더 쉬운 대안이 시장을 차지 할 것으로 예상은 됩니다.
코어를 늘려도 효율이 크게 오르지 않는데 별로 뾰족한 방법이 없다는 것이 3D 스태킹 문제가 대두되는 것이겠지요.
결국 이 문제가 시사하는 것은 인텔이 래라비 만들면서 골치가 아프겠다는 것을 알려주는 것이 아닌가 싶습니다

Commented by Myoa™ at 2010/01/29 09:37
핵심이 가득담긴 글이네요 아침이라 비몽사몽채로 읽었긴햇지만
내용이해에는 문제가 없을정도로 정리가 잘 되있군요..
인사이트로 RSS구독하려는데 xml 스크립트를 어케 구성해야될지 ㅋㅋ...
아시면 도와주세요~_~

여담이지만 티스토리 버리고 이글루로 넘어오는게 좋을것같네요..
Commented by object at 2010/01/30 02:07
안녕하세요. 인사이트는 제가 아는 바가 없고 rss는 http://rss.egloos.com/blog/minjang 를 이용하시면 됩니다.
Commented by asdf at 2011/02/27 22:37
CPU 세상이 어떻게 변해갈지 참 궁금하네요.
잘 보고 갑니다.
Commented by limited10 at 2011/03/05 16:00
글 잘봤습니다. ^^

글을 스크랩해도 되나요? ^^...

:         :

:

비공개 덧글

<< 이전 페이지 다음 페이지 >>





by 김민장 2008 이글루스 TOP 100
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04
저도 아들 돌잔치때 돌잡이 ..
by 박상욱 at 01/18
미국 대학원 원서 작성중에 p..
by 태클사이야 at 01/13
TO: 박PD 로그인 하지 않아..
by 박응용 at 01/10
http://gigglehd.com/zbx..
by dhunter at 12/28
우와.. 좋네요. 태반이 ..
by 윤광배 at 12/17
항상 좋은 글 잘 보고 있습니..
by y2k at 11/23
글이 좋아서 제 블로그에 담..
by 쏭섭 at 11/23
최근 등록된 트랙백
조엘 스폴스키의 강연 (Sta..
by 인덕원칸타타
[Redis] sds.c를 분..
by 조급하지말고 천천히
메뉴릿
이글루 파인더

website counter

Add to Google

rss

skin by 이글루스