멀티코어 프로세서

(멀티코어에서 넘어옴)

1 개요

width=100%width=100%
데카코어 이론과 현실흔한_듀얼코어.jpg

CPU의 형태 중 하나. 쉽게 말해 동일한 성능으로 작동하는 CPU 여러 개를 1개의 칩 속에 우겨넣은 것이라고 하면 이해가 쉽겠다. 듀얼코어, 쿼드코어, 옥타코어라고 부르는 것이 이것에 속한다.

2 설명

코어의 개수를 늘리는 쪽으로 CPU가 발전하게 된 것은 폴락의 법칙에 따라 면적(트랜지스터 수) 증가로만 성능 향상을 꾀하기에는 어려움이 있기 때문이었다.

CPU의 성능이 매년마다 기하급수적으로 증가한다고 해도 CPU 하나만이 처리할 수 있는 작업 속도에는 한계가 있다. 이 한계를 극복하기 위한 발상이 바로 "CPU 하나로 모자라면 많이 때려박으면 되지!"다. 이런 발상은 슈퍼컴퓨터 분야에서 사실 1970년대 이후로 보편화된 사고 방식이었지만, 2005년에 AMD에서 최초의 데스크탑용 듀얼 코어 CPU인 애슬론 64 X2를 내놓으면서[1] 데스크탑 컴퓨터, 그리고 현재는 모바일 기기, 심지어는 인터넷 공유기까지도 멀티코어를 쓰게 되었다.

하지만 멀티코어 프로세서는 단순히 프로세서를 두 개를 꽂는다고 두 배의 성능을 내는 게 아니다. 프로그램이 처리해야 할 계산 작업 중에서 여러개의 프로세서가 맡아서 처리할 수 없어서 꼭 하나의 프로세서만 써야 하는 작업이 생기면 나머지 프로세서는 그 작업이 처리되는 동안 놀고먹는 영 좋지 않은 모양새가 된다.(...) 이렇게 프로그램 내부에서 역할 분담(병렬화, Parallelization)이 되지 않는 부분이 많아지면 프로세서를 아무리 많이 때려박아도 성능 향상에 한계가 생긴다. 이를 전문 용어로 조별과제 암달의 법칙(Amdahl's Law)[2]이라 한다.[3]

이를 피하기 위한 기능으로 인텔 터보 부스트, AMD의 유사품 터보 코어[4]처럼 놀고있는 프로세스는 파워게이팅이라고 전력공급을 차단해 버리고 남는 여유분[5]만큼 일하고 있는 코어를 자동 오버클럭하는 식으로 싱글코어만 써도 어느정도 성능향상이 있도록 하였으나 그래봤자 기본 설정 클럭에서 10~20%정도 밖에 안올라가는지라 근본적인 해결과는 거리가 멀다.[6]

게임용 3D 그래픽 API의 대표격인 다이렉트X도 비슷한 문제를 겪고 있다. 다이렉트X 12 발표 자료를 보면, DX11은 쿼드코어에서 돌릴 경우 첫번째 쓰레드(쓰레드 0)가 다른 쓰레드보다 오래 걸리는 바람에 그만큼 나머지 3개 쓰레드들이 놀게 된다. 반면 DX12는 해당 부분도 4개의 쓰레드에서 나눠 처리하게 하거나, 아예 해당되는 처리 자체를 줄여서 멀티코어 사용률과 속도를 높였다. [7]
파일:Attachment/멀티코어 프로세서/Example.jpg


따라서 CPU에 박힌 코어 여러개의 성능을 제대로 끌어내려면 여러개의 코어에게 일거리를 효율적으로 배분하도록 프로그램을 짜줘야 한다. 멀티프로세싱에 최적화가 되어있지 않은 프로그램은 CPU 처리량이 더 필요해도 다른 코어의 도움을 받지 못하고 1번 코어에서만 비비적대며 돌아가거나, 심지어는 여러개의 코어가 하나의 프로그램을 맡아서 처리하려고 싸우는 동안 실행 속도가 오히려 더 떨어져버리는 참사가 벌어질 수 있다.[8] 따라서 실행 성능이 중요시되는 프로그램, 특히 게임은 처음 프로그램을 짤 때부터 멀티코어 지원을 생각해야되는 시대가 되었다. 그러나 멀티코어 CPU가 보편화된 2010년대에도 대부분 온라인 게임회사는 멀티코어를 제대로 지원하지 않고 있다. 멀티코어 프로그래밍에 고급 프로그래밍 인력이 필요하고 고급 인력은 추가적인 비용 지출로 이어지기 때문. 2015년 출시작 클로저스, 메이플스토리2 조차 싱글코어만을 사용한다.[9]
외국이라고 다르지 않아 월드 오브 탱크, 리그 오브 레전드 등 외국 출신 게임 역시 멀티코어 미지원인 경우가 흔하다. 롤이야 프로그래밍 작업도 못하니 헬퍼가 난리지 특히나 일본 개발사도 한 숟가락 얻는데, DOA5: LR PC판이나, 파이널 판타지 13 시리즈 스팀판, 바이오하자드 시리즈 일부, 일루전사 성인용 게임등의 코어 활용 역량을 확인해보면 멀티코어 CPU 임에도 "난 한놈만 패지"(...)라며 싱글 코어만 주구장창 갈구는 경우도 있다. 이는 북미나 유럽에 비해 일본 PC 프로그래밍 능력이 떨어진다는 반증이기도.
다만, 예시로 언급된 게임 개발사, 워게이밍이나 라이엇같은 중소 개발사들은 멀티코어 지원이 힘들다지만, 몇 년간 투자하고나온 대형 개발사의 패키지 게임이나 온라인 게임등은 최소 듀얼 코어는 지원해 성능을 높이고 있다. 예시로 EA의 2013년작 배틀필드 4는 옥타코어까지 지원하고 있다.

싱글코어의 한계를 극복하기 위해 돌리는 시간이 짧은 시뮬레이션은 그냥 싱글코어용으로 짠 다음에 스크립트를 써서 여러개를 동시에 돌리는 식의 기법도 사용되고 있으나 효율은 좋지 않다.

그러나 실제로는 멀티코어를 지원하지 않는 프로그램이라도 멀티코어에서 충분히 성능 향상을 얻을 수 있다. OS에선 자신이 프로그램을 실행하지 않아도 기본적으로 수많은 시스템 프로그램이 실행되고 있고[10] 그것들을 OS에서 알아서 관리하는데, 멀티코어를 지원하지 않는 프로그램과 기본적으로 실행되고 있는 프로그램을 다른 코어로 나눠서 처리하면 성능상의 이득을 얻을 수 있는 것이다. 코어 한 개 범위 내에서 빨라지는 거긴 하지만 그게 어딘가.[11]

어쨌든 각 코어의 연산능력도 뛰어나야 하며, 이 코어들간의 데이터 연계 능력이 뛰어나야 좋은 멀티코어 프로세서가 된다.

멀티코어 프로세서를 산다면, 코어 개수가 자신이 쓰려는 목적에 맞는지 보고 구매할것을 권고한다. 예를들어 코어 i3-6100(3.7GHz)은 i5-6600(3.3GHz)보다 10만원 정도 가격이 저렴하지만 단일 코어 클럭은 400MHz 정도 더 높다.[12] 일반적으로 쿼드코어 쪽이 더 좋은 성능을 발휘하지만, 단일 스레드로만 구동이 되는 프로그램을 사용할 경우엔 오히려 듀얼코어쪽이 더 성능이 좋게 느껴질 수 있다는 것. 그러니 여러모로 고려해보고 구매하자. 당연하겠지만 그래픽 툴이나 컴파일러를 쓰는 앱 개발 툴 등 뭔가를 생산해야 하는 환경에서는 코어 수가 깡패다.

"클럭 = 성능"이었던 싱글코어와 달리 캐시나 아키텍쳐의 기여도가 더 높아진 덕분에 클럭이 성능 그대로는 나타내진 못한다. 덕분에 더 높은 클럭임에도 성능이 오히려 떨어지는[13] [14]경우가 존재하기에 과거처럼 클럭이 높다고 무조건 좋은 제품이 아니며, 일반유저가 좋은 제품을 고르는게 다소 애매해졌다. 그 대신 전체적으로 어떤 CPU를 선택해도 큰 불편없이 사용할 수 있는 수준이 되었다.

결국 '코어 하나당 성능 * 코어 개수 * 멀티코어 활용률'의 세가지 지수를 모두 보아야 어느정도 정확하게 CPU성능을 가늠할 수 있다. ('코어 하나당 성능'은 다시 '클럭당 성능(IPC) * 클럭'으로 세분화 할 수 있다.) 펜티엄 20주년 에디션(G3258 AE)을 오버클럭해서 '코어 하나당 성능'을 높이면 i3 4150을 제치고 상당수 게임 성능에서 AMD FX 시리즈는 물론이고 인텔 코어i7(블룸필드)까지 제치는 모습이 대표적. 물론 위 CPU들도 오버클럭을 하면 다시 상황이 역전되기도 하고 '멀티코어 활용률'이 더 높은 게임(배틀필드4)에서는 듀얼코어의 한계를 보이면서 뒤쳐진다.

네이티브 듀얼코어와 쿼드코어의 경우엔 이 방식이 아니고 그냥 다이 하나에 여러 코어를 올린것보단 전력을 적게 먹으며, L2캐시 공유등의 기술을 탑재하고 나오기 때문에 성능이 좀더 뛰어나지는 경향이 있으나, AMD 페넘 시리즈의 경우, 코어 개개의 성능이 매우 떨어지는 관계로 듀얼코어 두개를 붙여 쿼드코어를 만든 인텔 코어2 쿼드에 처절하게 패배했다. 반면, 코어 개개의 성능이 좋은편인 인텔 코어 i7(블룸필드)의 경우, 하이퍼스레딩까지 탑재하면서 AMD에게 넘사벽을 선물했다.

대표적인 성공작은 "AMD 애슬론64x2 시리즈", "AMD 옵테론 시리즈", "인텔 코어2 시리즈"이다.

온라인 IT 매거진 PCBee에서 코어2쿼드의 런칭에 맞춰 쿼드지수 측정 웹페이지를 제공하기도 했다. 일종의 멀티 스레드 연산 테스트로 기본 클럭 Q6600의 성능을 100으로 치고 유저의 CPU 성능이 어디까지 나오는지를 측정해준다. 당시에는 꽤 정직한 결과를 보여줘서 대략적인 CPU 성능을 가늠해볼 수 있는 휼륭한 지표였지만 시간이 지나 크롬 등의 다른 웹브라우저가 득세하고 인터넷 익스플로러도 9 버전까지 업그레이드되자 코어 i5 쿼드코어 제품군을 4Ghz 정도까지만 오버해도 600이나 700 등의 정신나간 수치가 나오게되어 그 신빙성을 많이 잃었다.[15] 물론 구버전 인터넷 익스플로러에서 측정하면 멀쩡한 수치가 나오며, 알려진바로는 인터넷 익스플로러 9에서 쿼드지수 측정시 노오버 Q6600이 300점 가량 나온다고 하니 대략 1/3 정도로 계산해주면 될 듯 하다.

현재 x86 호환CPU로 개인용으로 옥타코어까지(AMD FX 시리즈[16] 하지만 첫인상이 망했어요, 모바일쪽으로는 퀄컴 스냅드래곤엑시노스가 있다(이쪽은 ARM계열이므로 당연히 x86호환이 안 된다.), 서버용으로는 인텔 제온에서는 22코어 44스레드를, AMD 옵테론에서는 헥사데시멀코어(16코어)까지 출시되어있다.

3 멀티코어 종류 및 제품군

  • 트리플코어 - 3개의 연산회로를 탑재. 대표적으로 페넘 X3, 페넘 II X3, 애슬론II X3. 사실 네이티브 쿼드코어나 듀얼코어 두개 붙이기의 변종에 불과하지만… 여담으로 XBOX 360[18]Wii U의 CPU도 트리플코어.

쿼드코어 만들려다가 불량 나서 코어 하나 터지는 바람에 생긴 짝수가 아닌 홀수 코어 변종 모델이다. 톨리만은 아제나로 부활하는 경우가 극히 드물지만, 헤카의 비활성화된 코어 1개를 살려 헤네브 만들어 썼던 것을 생각하면 된다. 조스마에서는 오버클럭에 여유를 주기 위해 일부러 코어를 한개 끄고 쓰는 조까(조스마 + 헤카)도 있다.

  • 펜타코어 - 5개.테그라 3는 공식적으로 쿼드코어 이지만, 800Mhz로 작동하는 섀도우 코어가 1개 존재해 사실상 펜타코어로 봐도 무방하다. big.LITTLE과 비슷한 기술이다. 투반에서는 오버클럭에 여유를 주기 위해 일부러 코어를 한개 끄거나, 조스마에서 코어가 한개만 부활되었을 때 쓰는 오반(5 + 투반)도 있다.
  • 헥사코어 - 6개. 대표적으로 더닝턴의 Xeon 제온 7400, 코어 i7 980X 걸프타운, 인텔 하이엔드 데스크탑, AMD 페넘II X6 투반, AMD 옵테론 시리즈의 이스탄불, AMD FX 시리즈 6000 시리즈 등이 있다.
  • 옥타코어 - 8개. 서버용으로는 인텔의 2010년 1분기 Xeon E7 네할렘-EX가, [20]AMD의 2009년 3월 출시한 마그니쿠르의 옥타코어 버전이 있다. 2011년 10월에 출시한 AMD FX 시리즈는 최초의 데스크탑용 옥타코어다.하지만 이녀석은 듀얼코어인 i3랑 경쟁하고있다.[21] 인텔의 데스크탑용 옥타코어는 i7-5960X가 있다.
엑스박스 원플레이스테이션 4에 들어간 APU도 AMD 8코어이다. [22]
한편, 모바일 프로세서 쪽으로는 엑시노스스냅드래곤의 최상위 기종이 여기에 속하는데, 좀 더 효율적인 전력 관리를 위해서 클럭이 다른 두 쿼드코어를 연결하여 작업의 중요도에 따라 비중을 조절하는 ARM big.LITTLE 솔루션을 사용한다.
  • 데카코어 - 10개. 인텔의 "웨스트미어-EX" Xeon 시리즈, 아이비브릿지-EP 기반의 E5 시리즈가 대표적이다. 미디어텍의 모바일 AP 중 하나인 미디어텍 Helio가 데카코어다(이도 역시 ARM big.LITTLE 솔루션 사용). i7-6950X가 최초의 데스크탑용 데카코어다.
  • 도데카코어 - 12개. 대표적으로 샌디브릿지-EP, 아이비브릿지-EP, 하스웰-EP, 브로드웰-EP와 AMD 옵테론 시리즈의 매그니쿠어가 있다. 2010년 3월 출시한 제품으로, 6코어의 칩을 2개 붙여놓은 구조의 물건.
  • 테트라데카코어 - 14개. 인텔의 하스웰-EP Xeon E5-2697 v3, 브로드웰-EP Xeon E5-2690 v4 가 있다.
  • 헥사데카코어(헥사데시멀코어) - 16개 (...) AMD 계열에는 인터라고스라는 CPU가 있다. 이걸 쿼드 CPU 지원하는 G34 메인보드에 4개 다 때려박으면 무려 64코어가 완성된다.(...)인텔 계열은 브로드웰-EP Xeon E5-2697A v4가 있다.
  • 옥타데카코어 - 18개. 대표적으로 하스웰-EP Xeon E5-2699 v3, 브로드웰-EP Xeon E5-2697 v4 가 있다.
  • 도코사코어 - 22개 쓰레드 44개. 브로드웰-EP Xeon E5-2699 v4 가 있다. 캐시메모리가 이전 2697은 45MB였는데 55MB로 팍 올라갔다. 현존 가장 높은 성능 cpu인데 앞으로도 계속 외계인 고문으로 더욱더 괴물 cpu는 나올 것이다. 현재 아마존에 팔리고 있으며 4,317.07 $ 달러 환화로 510만 원가량 이다.
  • 헥사콘타코어 - 60 코어라는 그야말로 인텔의 외계인 고문 총집편. 제온 파이라는 이름으로 실제 출시된 1세대는 펜티엄, 2세대는 아톰 프로세서를 엄청나게 때려박은 CPU이다. 코프로세서이지만[23], x86 명령이 실행가능하므로 GPU와는 다르다. 각 코어가 4스레드의 SMT(하이퍼스레딩)에 대응해 실제 칩은 240개 스레드가 구동된다. 이건 뭐 대략 정신이 멍해진다. [24][25]

인텔 ARK에 제온 CPU를 검색해보면 72 코어 제품까지 볼 수 있다.가격은 이미 안드로메다

4 관련 문서

  1. 사실 출시는 인텔이 먼저했다. 프레스캇 두개 붙인 스미스필드 펜티엄D가 그 주인공. 나중에 관련 기술 책임자가 '9개월만에 급조한 CPU치곤 잘 만들어졌다'는 인터뷰를 하기도 했다. 다만 안 그래도 '여보 아버님댁에 프레스캇 놔 드려야 겠어요' 드립을 듣던 녀석을 두 개 붙이는 바람에 클럭을 못 올려서(성능이 안 나와서) 망했다. 펜티엄D는 그 이후 개량형인 프레슬러까지도 애슬론64 X2를 못 이겨서 빌빌댔으나, 넘사벽의 후배가 공개된 후에야 안심하고 가격후려치기를 해서 비로소 역전했다.
  2. 다만 암달의 법칙 자체는 일반적으로는 훨씬 폭넓은 용어이다. 정확하게는 "시스템 부하의 a%를 차지하는 부분이 n배 개선된다면 결과적으로 a*n%의 성능 향상만을 기대할 수 있다"는 아주 상식적인 소리에 불과하다. 이게 "암달의 법칙"이라고 불릴 정도로 유명해진 이유는 (특히 병렬 컴퓨팅 분야에서) 이거 안 지키다가 폭망한 사례가 아주 많아서 그렇다.
  3. 듀얼코어 시절에는 배부른 소리처럼 들렸겠지만, 지금은 쿼드 코어를 넘어서 헥사/옥타 코어도 시중에 유통되어 있고, 병렬 처리가 생명인 GPU는 프로세서를 수백~수천개 단위로 투입하니 위 법칙이 더욱 체감으로 다가오고 있는 때다.
  4. 터보 부스트가 먼저 나왔다.
  5. 전력 공급 및 발열냉각설계는 멀티코어 모두 풀로 쓰는 기준으로 만들어 놨기 때문.
  6. 그렇다고 도움 안되는 쓸모없는 기술은 아니다. 만약 쿼드코어 cpu에서 게임을 돌리는데 게임이 듀얼코어밖에 지원하지 않아 나머지 2개 코어는 놀고 2개로만 게임을 한다면 터보 부스트, 터보 코어가 큰 효과를 낸다. 특히 노트북의 경우 cpu가 터보 부스트를 지원하면 큰 도움이 되기도 한다. 상대적으로 노트북용 cpu는 데스크탑에 비해 낮은 클럭과 성능이 낮다. 이때 만약 하나의 코어뿐이 필요가 없을 때 10~20%라도 성능을 바짝 올려주면 조금이라도 쾌적한 환경에서 작업이 가능하다. 모바일용 i3와 i5의 가장 두드러지는 차이가 이것. i3는 터보부스트가 없으나 i5는 있다. 하지만 이건 어디까지나 노트북용 CPU중에서 뒤에 보통 U가 붙는 저전력 모델 한정. 일반적인 노트북 CPU의 경우에는 터보부스트고 나발이고 닥치고 클럭이 높으면 빠르다.
  7.  : Microsoft DirectX Blog 에 올라온 DX12 정보
  8. 파이썬 언어가 한 때 이 문제 때문에 까이던 때가 있었다.
  9. 다만 이건 한국 중소 온라인게임 개발사 특성이라 볼수 있는데 아직도 윈도우 XP를 사용하는 PC방도 있는 고로 많은 유저를 확보하기 위해 저사양의 PC에서도 돌아가게 만드느라 그렇다. 거기에 게임 엔진에 투자하느니 아이템 하나 더 넣는게 기업입장에서는 이득.
  10. 윈도 기준으로 작업 관리자의 프로세스 탭에 몇 개의 프로세스가 있는지 세어보자.
  11. 단 그게 최근 게임에서 일어나는 일이라면 확실히 문제일 수도 있다.(...) Python으로 개발된 EVE 온라인 같은 경우인데, Python의 특성상 단일 동작은 반드시 싱글코어에서 수행되어야 하기 때문에 위와 같은 방식으로 멀티코어에 최적화되어 있고, 과부하가 걸리면 이것도 한계가 오게 된다.
  12. 그러나 이것은 명목상 스펙이고, 실제로는 i5-6600이 터보부스트로 3.9GHz까지 올라간다. 물론 i3-6100은 그런거 없다.
  13. AMD 페넘, 셀러론시리즈
  14. 옛날 인텔의 펜티엄 흑역사 시절에 3.0GHz를 강제로 찍었으나 이보다 클럭이 더 낮은 AMD의 CPU(약 2.2~2.4GHz)는 인텔의 CPU보다 더 좋은 성능을 보여줬었다.
  15. 덕분에 TOP 10 그래프가 와장창 깨져있다. 만들 당시 고려한 수치를 넘겨 버렸기 때문.
  16. 네이티브 8코어인가? 하는 부분에서 이견이 갈린다. 2코어 1모듈이라 실질적으로는 4코어라고 해야 한다며 최근 소송을 당하기도했다. 인텔이 하이퍼스레딩으로 2코어 4스레드를 4코어라고 파는것과 비슷한 맥락이라 보면 된다. 물론 완전히 같지는 않다. AMD쪽은 네이티브냐 아니냐의 문제지 어쨌든 8코어는 맞으니까.
  17. 하이퍼스레딩 기술이 들어가 스레드는 4개.
  18. 스레드 개수를 뻥튀기하는 기술이 있어서 실제 스레드는 6개.
  19. 하이퍼스레딩 기술이 들어가 스레드는 8개. 노트북용은 모델명 끝에 Q가 붙지 않는 이상 2코어 4스레드. 데스크탑의 경우도 클락데일인 경우 영락없이 2코어 4스레드 구성을 가진다.
  20. 녀석을 4Way로 박아서 32코어에 64개의 논리스레드 연산을 2009년 4월초에 시연하였다.
  21. 윈도우10으로 넘어오면서 FX시리즈의 성능이 상당부분 개선되었다. 멀티태스킹 성능이나 렌더링같이 코어빨로 잡아먹는 작업은 i5와 유사한 성능을 보여준다.
  22. 다만 이건 TDP 때문에 재규어 코어 기반이라 싱글스레드 성능은 불도저보다도 훨씬 더 떨어진다. 그래도 같은 세대 기기인 Wii U는 성능이 이것보다 한참 아래 성능이라는 게 위안이지만..
  23. 단 이것은 어디까지나 홍보 문구로 실제 제온 파이의 구현은 좀 다르다. 실제 제온 파이는 코프로세서가 아니라 PCI-E 를 InterConnect 로 사용하는 별도의 리눅스 서버에 가깝다
  24. i7 4790K : 4GHz*32SP FLOPS*4코어 = 512GFLOPS / Xeon Phi 1세대 : 1.058Ghz*32SP FLOPS*60코어 = 2031.36FLOPS
  25. 실제로 GPGPU 시장을 먹어치우며 급성장 중이다. 1세대인 라라비 시절만 하더라도 GPU에 밀리는 연산수치 비교만 당하다(내년~내후년쯤에 1테라플롭스로 나올예정이라는 발표를 하자, NVIDIA와 AMD가 1테라플롭스 GPU들을 판매개시했다(...)) 출시도 못하는 등의 굴욕을 겪었으나, 2세대 나이트 페리가 제온 파이로 출시된 이후로는 탄탄대로. 아무래도 CPU계열 출신이라 GPGPU보다는 프로그래밍하기 덜 어려운 데다가 인텔의 빵빵한 개발자 지원덕택인 듯