"프로그램이 듀얼코어/쿼드코어를 지원한다/하지않는다" 라는 말의 의미

하나의 CPU에 다 수의 코어가 있는 제품들이 보편화되면서,

이 프로그램은 듀얼 코어/쿼드 코어를 지원합니다

하는 광고(?)멘트들이 난무하게 되었다. 이게 어떤 의미일까?

우리가 흔히 사용하는 많은 프로그램들은 기본적으로/전통적으로 “싱글 스레드”라고 부르는 한 번에 한 가지일만 처리하는 구조로 만들어져 있다. 그래서 CPU에 코어가 몇 개 있더라도 1개의 코어만 사용해서 실행된다. 이런 프로그램들의 경우 멀티 코어 CPU[1]에서 더 빨라지진 않는다. 즉 CPU자체가 향상되는 부분만큼만 속도가 빨라지지 CPU 수가 늘어나는데서는 이익을 못본다. 

물론 여러개의 응용 프로그램을 동시에 돌릴 때는 이익을 볼 수 있다. 각각의 프로그램에서 서로 다른 코어를 사용하면 되는 문제니까. 예전이라면 게임을 켜놓고 동영상을 보면서 웹 브라우징을 한다는 건 좀 괴로운 일에 속했는데, CPU  코어가 3개 이상이고(쿼드 코어라거나) — 그리고 각각이 싱글 스레드라면 — 메모리가 모자라지 않는다면 별 부담없이 할 수 있는 일이 된다.

반면에 요즘 나오기 시작한 프로그램들은 제한적인 의미에서 여러 개의 코어를 쓸 수 있는 경우가 있다. 즉 “여러 개의 스레드”를 동시에 사용해서 코어를 스레드 수 만큼까지는 쓸 수 있다는 것이다. 사실 이미 몇 가지 프로그램들에서는 제한적으로 이런 기능을 쓰고 있다. 예를 들어,

  • 미디어 플레이어인 foobar 2000에서 MP3 포맷을 바꾸면 동시에 CPU 코어 수만큼 변환이 일어난다. 이렇게 동시에 해도 되는 작업을 코어 수만큼 실행하는 프로그램들은 많다.[2]
  • 많은 수의 워드프로세서에서는 스펠링 검사나 검색용 인덱스 생성을 조용히 뒷단에서 별도의 코어를 활용해서 수행한다.
  • 요즘 나오는 게임들은 게임 화면을 표시하는 부분 / 게임 자체의 로직이나 물리 연산 / 데이터를 읽어들이는 부분을 서로 다른 스레드에서 동작하게 해서 여러 개의 코어를 동시에 사용한다.

같은 것들이 있다. 즉 이런 프로그램들의 경우 멀티 코어를 지원한다고 말하는 것인데, 약간의 성능향상이 있긴하다.[3]

 

즉, 광고는 이렇게 받아들여라.

  • 멀티 코어를 지원한다 = 남는 CPU 코어가 있으면 좀 더 활용해서 빨라질 수도 있다
  • 멀티 코어를 지원한다 모든 코어를 활용한다 => 기껏해야 만든 스레드 수 만큼밖에 못쓰니 지금 4코어를 쓰는 프로그램이 16코어 CPU에서 더 빨라지는 것은 아니다.
  • 멀티 코어를 지원하지 않는다 — 멀티 코어 CPU에서 동작하지 않는다는 얘기가 절대로 아니다. 단지 코어 수만큼 빨라지진 않을 거란 의미.
  • 멀티 코어를 지원하지 않아도 여러 개의 프로그램을 동시에 쓰는 경우가 많다면 멀티 코어 CPU 는 충분히 매력적인 무언가다.

뭐 그런 의미다. 앞으로의 미래는 CPU 클럭이 올라가는 것보다는 멀티 코어에서 코어 수가 증가하는 방향이 될테니(적어도 향후 5년 이상은), 멀티 코어를 위한 프로그램들도 증가하긴 할 것이고, 크게 신경 쓸 문제는 아니다. 그러니 저런 광고에 낚이지도 말고, 지원하지 않는다는 말에 좌절하지도 말자 :D

  1. 듀얼 코어/쿼드 코어/그 이상의 코어들… 현재 IBM에서는 16/32 core CPU를 발매한 상태다. 그리고 intel에선 쿼드 코어 CPU를 2개 꽂을 수 있는 데스크탑용 메인 보드를 출시한다. 즉 일반 사용자(좀 하드코어해야겠지만)가 8개의 코어를 쓰게되는 걸 곧 보게된다. []
  2. 프로그래머들이 사용하는 대다수의 빌드 툴들은 사용하는 코어 수를 지정해 줄 수가 있다. VisualStudio 2005/2008의 경우 코어 수만큼 동시에 프로젝트를 빌드한다. makefile 유틸리티의 경우  -j 코어수 옵션으로 동시에 빌드할 파일의 수를 지정해줄 수 있다. []
  3. 첫번째 경우에는 CPU 수만큼 성능향상이 되지만 이런 경우는 매우 드물다 []

Published by

rein

나는 ...

3 thoughts on “"프로그램이 듀얼코어/쿼드코어를 지원한다/하지않는다" 라는 말의 의미”

  1. 그러니까…가령, 듀얼코어를 지원하지 않는 단일 프로그램일 경우, 코어1이 CPU점유율이 98~100에서 허덕여도 코어2는 쳐 주무신다는 얘기임? 하지만 프로그램을 다수 돌릴 경우 프로그램A가 코어1의 대부분을 점유하고 있다면 프로그램 B,C는 코어2에서 처리할 수 있다는 거니까..멀티태스킹엔 도움이 되도 사양 노맨허 게임 돌리는데는 그닥 효과가 크지 않다는거군효.

  2. ㅇㅇ 그대로임.
    근데 요즘 OS들은 Core 총합을 100%로 봐서 듀얼 코어면 단일 코어만 쓰는 프로그램은 50% 이상 못쓰는 것처럼 보임

Leave a Reply