E D R , A S I H C RSS

멀티코어 프로세서

last modified: 2015-04-12 16:16:40 by Contributors

dualcore.jpg
[JPG image (41.16 KB)]
multicore.jpg
[JPG image (210.77 KB)]
흔한_듀얼코어.jpg 이론과 현실

CPU의 형태 중 하나. 쉽게 말해 동일한 성능으로 작동하는 CPU 여러 개를 1개의 칩 속에 우겨넣은 것이라고 하면 이해가 쉽겠다. 듀얼코어(연산장치가 2개), 쿼드코어(연산장치가 4개), 헥사코어(연산장치가 6개), 옥타코어(연산장치가 8개) 하는 것이 이것에 속한다.

코어의 개수를 늘리는 쪽으로 CPU가 발전하게 된 것은 기존 방식대로 클럭을 높이는 방식이 한계에 도달했기 때문이다. 정확하게 말하자면 전력 소비와 발열 때문. 클럭 주파수가 높아지면 그에 비례하여 CPU가 소모하는 전력이 늘어나고, 소모 전력이 늘어나면 발열도 그만큼 증가하는데, CPU 코어의 재료인 반도체는 도체와 반대로 열을 받으면 저항이 줄어들기 때문에 에너지 누설이 추가로 생기는 동시에 이 발열을 잡지 않으면 과전류가 흘러 코어가 아예 타버릴 수도 있다. 인텔은 CPU의 성능 향상 방식으로 클럭 향상을 고집했다가 펜티엄 4 프레스캇에서 이 사실을 아주 뼈아프게 체험했다.

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

© Daniels220 at English Wikipedia (cc-by-sa-3.0) from


하지만 멀티코어 프로세서는 단순히 3.0GHz인 프로세서 두 개를 꽂는다고 6.0GHz의 능력을 내는 게 아니다. 프로그램이 처리해야 할 계산 작업 중에서 여러개의 프로세서가 맡아서 처리할 수 없어서 꼭 하나의 프로세서만 써야 하는 작업이 생기면 나머지 프로세서는 그 작업이 처리되는 동안 놀고먹는 영 좋지 않은 모양새가 된다.(...) 이렇게 프로그램 내부에서 역할 분담(병렬화, Parallelization)이 되지 않는 부분이 많아지면 프로세서를 아무리 많이 때려박아도 성능 향상에 한계가 생긴다. 이를 전문 용어로 암달의 법칙(Amdahl's Law)[2]이라 한다.[3]
이를 피하기 위한 기능으로 인텔 터보부스트, AMD의 유사품 코어부스트[4]처럼 놀고있는 프로세스는 파워게이팅이라고 전력공급을 차단해 버리고 남는 여유분[5]만큼 일하고 있는 코어를 자동 오버클럭하는 식으로 싱글코어만 써도 성능향상이 있도록 하였으나 이로 인해 오르는 클럭을 기껏해야 10~20%정도라 근본적인 해결과는 거리가 멀다.


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



따라서 CPU에 박힌 코어 여러개의 성능을 제대로 끌어내려면 여러개의 코어에게 일거리를 효율적으로 배분하도록 프로그램을 짜줘야 한다. 멀티프로세싱에 최적화가 되어있지 않은 프로그램은 CPU 처리량이 더 필요해도 다른 코어의 도움을 받지 못하고 1번 코어에서만 비비적대며 돌아가거나, 심지어는 여러개의 코어가 하나의 프로그램을 맡아서 처리하려고 싸우는 동안 실행 속도가 오히려 더 떨어져버리는 참사가 벌어질 수 있다.[7] 따라서 실행 성능이 중요시되는 프로그램, 특히 게임은 처음 프로그램을 짤 때부터 멀티코어 지원을 생각해야되는 시대가 되었다.
그래서 돌리는 시간이 짧은 시뮬레이션은 그냥 싱글코어용으로 짠 다음에 스크립트를 써서 여러개를 동시에 돌리는 경향이 있다. 멀티코어용으로 짜기 귀찮거든

대표적으로 멀티코어를 지원하는 게임으로 FPS 게임 하프 라이프2가 있다.[8] 근 9년 뒤인 2013년, 배틀필드 4가 옥타코어까지 지원하게 되었다.

그러나 실제로는 멀티코어를 지원하지 않는 프로그램이라도 멀티코어에서 충분히 성능 향상을 얻을 수 있다. 보통 사용하는 OS당연히 멀티프로세싱을 지원하고, 내가 프로그램을 실행하지 않아도 수많은 시스템 프로그램이 실행되고 있기 때문에[9] 주로 사용하는 단일 작업은 한쪽 코어로, 평상시 실행되는 시스템 프로그램들은 다른 쪽 코어로 모아놓는다 치면 결국 양쪽이 다 빨라지기 때문에 상당한 성능 향상을 이룰 수 있는 것이다. 코어 한 개 범위 내에서 빨라지는 거긴 하지만 그게 어딘가.[10]

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

멀티코어 프로세서를 산다면, 코어 개수가 자신이 쓰려는 목적에 맞는지 보고 구매할것을 권고한다. 예를들어 코어2 듀오 E8400과 코어2쿼드 Q8200의 가격이 비슷하지만 동작속도는 E8400이 약 700MHz 가량 앞서기 때문에 단일 코어별 성능은 코어2 듀오가 훨씬 빠르다. 일반적으로 쿼드코어 쪽이 더 좋은 성능을 발휘하지만, 단일 스레드로만 구동이 되는 프로그램을 사용할 경우엔 오히려 듀얼코어쪽이 더 성능이 좋게 느껴질 수 있다는 것. 그러니 여러모로 고려해보고 구매하자. 당연하겠지만 그래픽 툴이나 컴파일러를 쓰는 앱 개발 툴 등 뭔가를 생산해야 하는 환경에서는 코어 수가 깡패다.

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


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


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

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

현재 x86 호환CPU로 개인용으로 옥타코어까지(AMD FX 시리즈. 하지만 첫인상이 망했어요), 서버용으로는 옵테론이 매그니쿠어 도데카코어(12개. 6개짜리 2개를 MCM으로 붙인 형태.)까지 출시되어있다. 이는 현재 나와있는 코어i7 과 같은 형태의 네이티브 쿼드코어, 헥사코어 두개를 붙인형태 이다.

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

  • 듀얼코어 - 두개의 연산회로가 한 다이 위에 존재. 대표적으로 펜티엄D, 코어2 듀오, 애슬론64x2, i시리즈의 i3 알렐루야 야구계의 듀얼코어
  • 트리플코어 - 3개의 연산회로를 탑재. 대표적으로 페넘x3, 애슬론IIx3 시리즈 ,건담 하루트. 사실 네이티브 쿼드코어나 듀얼코어 두개붙이기의 변종에 불과하지만… 여담으로 XBOX360의 CPU도 트리플코어. 인텔 코어2 쿼드도 트리플 변종이 있다.[12]
  • 쿼드코어 - 4개. 대표적으로 코어2 쿼드, 페넘x4, 린필드, 샌디브릿지, 아이브릿지, 하스웰 i5,i7
  • 헥사코어 - 6개. 대표적으로 더닝턴코어의 인텔 제온 7400, 코어 i7 980X 걸프타운,샌디-E 및 아이비-E 계열 제품, AMD 페넘II-X6 투반 AMD 옵테론 이스탄불이 있다.
  • 옥타코어 - 8개. 인텔에서는 2010년 1분기 말에 출시한 코드명 "네할렘-EX"가 있다. 이 녀석을 4Way로 박아서 32코어에 64개의 논리스레드 연산을 2009년 4월초에 시연하였다. AMD 라인업에서는 2009년 3월 출시한 "마그니쿠르" 옥타코어버전과, 11년 10월에 출시하기 시작한 AMD FX 시리즈가 여기 속한다. 근데 이건 8코어 값을 못한다 망했어요 엑스박스 원플레이스테이션 4에 들어간 APU도 AMD 8코어이다. (다만 이건 TDP 때문에 재규어[13] 코어 기반이라 코어 하나당 성능은 FX 시리즈보다도 훨씬 더 떨어진다.)
  • 데카코어 - 10개. 인텔의 "웨스트미어-EX" 기반의 E7 시리즈, 아이비브릿지-EP 기반의 E5 시리즈가 대표적이다.여기서부턴 이미 일반인의 수준이 아니다(...)
  • 도데카코어 - 12개. 대표적으로 아이비브릿지-EP 기반의 E5-269x v2, AMD 옵테론 매그니쿠어가 있다. 2010년 3월 출시한 제품으로, 코어 6개의 칩을 2개 붙여놓은 구조의 물건.
  • 헥사데시멀코어 - 16개 (...) AMD 라인에는 인터라고스라는 CPU가 있다. 이걸 쿼드 CPU 지원하는 G34 메인보드에 4개 다 때려박으면 무려 64코어가 완성된다.(...)
  • 헥사콘타코어 - 60 코어라는 그야말로 인텔의 외계인 고문 총집편. 제온 파이라는 이름으로 실제 출시된 아톰 프로세서를 엄청나게 때려박은 CPU이다. 코프로세서이지만[14], x86 명령이 실행가능하므로 GPU와는 다르다. 각 코어가 4스레드의 SMT(하이퍼스레딩)에 대응해 실제 칩은 240개 스레드가 구동된다. 이건 뭐 대략 정신이 멍해진다.근데 클럭이 1GHz 하지만 만약 이 240스레드를 전부 사용할수있는 프로그램이 있다면 이론상 연산속도가 당장 i7 4790K보다 7.5배 가까이 빠르다. 코어 하나당 성능은 그냥 아톰 [15][16]
  • 관련 항목 : 콘로 샌디브릿지
----
  • [1] 사실 출시는 인텔이 먼저했다. 프레스캇 두개 붙인 스미스필드 펜티엄D가 그 주인공. 나중에 관련 기술 책임자가 '9개월만에 급조한 CPU치곤 잘 만들어졌다'는 인터뷰를 하기도 했다. 어떻게 보면 드래곤 길들이기와도 비슷한 격 (자세한 건 항목 참조, 다만 드래곤 길들이기와는 다른게, 안 그래도 '여보 아버님댁에 프레스캇 놔 드려야 겠어요' 드립을 듣던 녀석을 두 개 붙이는 바람에 클럭을 못 올려서(성능이 안 나와서) 망했다. 펜티엄D는 그 이후 개량형인 프레슬러까지도 애슬론64X2를 못 이겨서 빌빌댔으나, 넘사벽의 후배가 공개된 후에야 안심하고 가격후려치기를 해서 비로소 역전했다.
  • [2] 다만 암달의 법칙 자체는 일반적으로는 훨씬 폭넓은 용어이다. 정확하게는 "시스템 부하의 a%를 차지하는 부분이 n배 개선된다면 결과적으로 a*n%의 성능 향상만을 기대할 수 있다"는 아주 상식적인 소리에 불과하다. 이게 "암달의 법칙"이라고 불릴 정도로 유명해진 이유는 (특히 병렬 컴퓨팅 분야에서) 이거 안 지키다가 폭망한 사례가 아주 많아서 그렇다.
  • [3] 듀얼코어 시절에는 배부른 소리처럼 들렸겠지만, 지금은 쿼드 코어를 넘어서 헥사/옥타 코어도 시중에 유통되어 있고, 병렬 처리가 생명인 GPU는 프로세서를 수백~수천개 단위로 투입하니 위 법칙이 더욱 체감으로 다가오고 있는 때다.
  • [4] 터보부스트가 먼저 나왔다.
  • [5] 전력 공급 및 발열냉각설계는 멀티코어 모두 풀로 쓰는 기준으로 만들어 놨으니
  • [출처] : Microsoft DirectX Blog 에 올라온 DX12 정보
  • [7] 파이썬 언어가 한 때 이 문제 때문에 까이던 때가 있었다.
  • [8] 소스엔진 2007을 이용한 버전부터 지원된다. 시중에 돌고있는 립버전 등은 지원되지 않는다.
  • [9] 윈도 기준으로 작업 관리자의 프로세스 탭에 몇 개의 프로세스가 있는지 세어보자.(...)
  • [10] 단 그게 최근 게임에서 일어나는 일이라면 확실히 문제일 수도 있다.(...) Python으로 개발된 EVE 온라인 같은 경우인데, Python의 특성상 단일 동작은 반드시 싱글코어에서 수행되어야 하기 때문에 위와 같은 방식으로 멀티코어에 최적화되어 있고, 과부하가 걸리면 이것도 한계가 오게 된다.
  • [11] AMD 페넘, 셀러론시리즈
  • [12] 오버클럭하다가 코어가 하나 죽은 사건, 하필 AMD가 트리플 코어 발표하고 출시하기전에 터지는 바람에 인텔 트리플코어 선출시라는 풍자댓글이 흥했다.
  • [13] 인텔로 치면 아톰 계열의 넷북~테블릿용 저전력CPU)
  • [14] 단 이것은 어디까지나 홍보 문구로 실제 제온 파이의 구현은 좀 다르다. 실제 제온 파이는 코프로세서가 아니라 PCI-E 를 InterConnect 로 사용하는 별도의 리눅스 서버에 가깝다
  • [15] i7 4790K:4GHz*8코어=32처리단위, 파이:1GHz*240코어=240처리단위
  • [16] 실제로 GPGPU 시장을 먹어치우며 급성장 중이다. 1세대인 라라비 시절만 하더라도 GPU에 밀리는 연산수치 비교만 당하다(내년~내후년쯤에 1테라플롭스로 나올예정이라는 발표를 하자, NVIDIA와 AMD가 1테라플롭스 GPU들을 판매개시했다(...)) 출시도 못하는 등의 굴욕을 겪었으나, 2세대 나이트 페리가 제온 파이로 출시된 이후로는 탄탄대로. 아무래도 CPU계열 출신이라 GPGPU보다는 프로그래밍하기 덜 어려운 데다가 인텔의 빵빵한 개발자 지원덕택인 듯
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2015-04-12 16:16:40
Processing time 0.1422 sec