쿼드코어 CPU 한 개 성능 == 단일 코어 CPU 4 개 성능 ?

ornus의 이미지

요즘에는 하나의 칩에 코어가 4개 들어간 CPU가 데스크탑 PC에 사용되고 있습니다.
그리고 옛날부터 대용량 DBMS를 처리하는 등의 고성능 서버들은 여러개의 CPU를 사용하는 SMP 머신을 사용하고 있었구요.
여기서 문득 궁금증이 생겼습니다.

"쿼드코어 CPU 한 개를 장착한 머신과, 전통적인 4-CPU SMP 머신의 성능은 어떻게 다를까?"

성능측정의 기준을 간단히 초당 트랜잭션 처리수 (transactions/second) 또는 초당 HTTP 요청 처리수 등으로 본다면, 성능차이가 어떻게 되는지 궁금합니다.
단일 quad core 머신이 더 우수할까요, 아니면 4-CPU 머신이 우수할까요?

예를 들면, 예전에 나왔던 하이퍼스레딩 CPU는 단일 CPU보다는 우수한 성능을 보였지만, 코어가 하나라는 한계때문에 여전히 2-CPU 머신보다는 성능이 좋지 않았습니다.
그렇다면 코어가 4개 내장된 CPU 하나만 장착된 머신과 4개의 CPU를 가진 머신은 성능이 똑같이 나올까요?

어리석은 제 질문에 대한 KLDP 회원여러분의 현명한 대답들을 기대하겠습니다.

kite7의 이미지

예전에 2cpu 에서 인가 누군가 쓴글에 따르면.

캐시 활용도랄까 그런거는 더 높지만.

메모리 대역을 멀티코어가 나눠쓰게 되서.
멀티 씨퓨 컴퓨터 성능이 멀티 코어씨퓨보다 일반 어플 성능이 좋다고 들었던거 같네요.

이런 현상은 AMD 보다는 인텔 계열이 더 클것 같은 생각....
또 일반적인 1cpu에서 4core 쓸때는 메인보드 칩셋을 싼걸 쓰는 환경임도 살짝 고려 해야겠죠.
2cpu*4core vs 8cpu * 1core 이면 머 얘기가 좀 달라지겠지만요.

그냥 제 생각이였습니다.

sDH8988L의 이미지

4 CPU >> Quad-Core CPU 입니다...

일단, DBMS와 같은 Application은 각각의 Thread가 상당히 Independent 하다는 사실을 기반으로 시작합시다...

그리고 또 하나, 1 CPU와 1 Core의 성능은 기본적으로 같다고 봅시다...

4 CPU와 Quad-Core의 가장 큰 차이는 Memory Bandwidth 입니다...

4 CPU의 경우, 어떻게 구성하느냐에 따라 다르지만, SMP라고 하면, Quad-Core가 보이는 Memory Bandwidth 보다는 더 큰 Bandwidth를 제공합니다...

머... SMP라서 기본적으로 Quad-Core와 같은 Memory 구성을 쓰면, Bandwidth도 같은 것이 아니냐라고 할 수 있지만, 물리적인 Input/Output PIN 수부터 차이가 나게 됩니다...

Quad-Core가 4 CPU만큼의, 혹은 나은 성능을 보이려면, Memory를 덜 쓰는 계산 위주의 프로그램인 경우에 한하게 됩니다.

ornus의 이미지

결국 CPU의 연산처리능력이 비슷하더라도 memory bandwidth 가 병목지점이 되겠군요.
알려주셔서 고맙습니다.

bushi의 이미지

절대적으로 동의하지 않습니다.

multi-core 든 multi-CPU 든 같은 bus 를 공유해야 하니 병목현상은 피할 수 없고,
오히려 multi-core 쪽이 die 안에 회로를 내장할 수 있으니 설계상의 자유도가 높으므로 좀 더 최적화시킬 수 있을 것 같습니다.
기사를 찾아봐도 그렇다고 하는군요.

memory bandwidth 에 관한 것은 와전된 것 같습니다.
아마도 원래의 review 기사는 대강 다음의 내용일 겁니다.
dual-core 혹은 2 CPU 는 이론적으로 1-core 1-CPU 에 비해 90% 이상 성능향상이 있어야함에도 불구하고,
system bus 를 공유해야 한다는 특징, 특히 memory bus 를 공유함에 따라 발생하는 병목현상으로 인해 실제론 30%~70% 정도의 성능향상 밖에 기대할 수 없다.
이것은 SMP 와 UP 간의 비교일 뿐 multi-core 와 multi-CPU 에 대한 비교가 아닙니다.

multi-core 쪽이 single-core multi-CPU 에 비해 가지는 단점은,
좁은 공간에 마구 구겨넣다보니 발열문제가 심각하다.
는 정도인데, 뜨거워지면 저항이 커지고, 저항이 커지면 뜨거워지는 악순환,
저항이 커지면 전도도가 떨어지므로 동작속도가 느려진다는 비참한 결과가 문제가 됩니다.
하지만, 이것은 개발초기에 문제로 인식된 것이고, 이미 양산되어 시판되는 현시점에서는 해당사항 없음이겠습니다.

multi-CPU 를 선택하는 경우는... 어느 분이 말씀하셨듯 기계의 운용목적 때문일 것입니다.
최악의 경우라도 고장난 CPU 를 빼버리고 남아있는 CPU 만으로 다시 임무 수행을 해야만하는 mission critical 한 기계라면...
망망대해에 떠 있을 가능성이 높은 이지스함의 CIC 를 담당하는 시스템이 CPU 한개로 구성되거나 기계 한대로 구성되었을리는 없겠죠.

OTL

아르아의 이미지

AMD는 CPU에 메모리콘트롤러가 있기때문에
1-way시스템은 2채널, 2-way시스템은 4채널, 4-way는 8채널입니다.
반면에 INTEL은 메인보드칩셋에 메모리콘트롤러가 있기때문에
CPU개수가 아니라 메인보드칩셋이 메모리대역폭을 정합니다.

한편, 메모리 대역폭만 중요한것이 아니긴 합니다.
메모리를 조금만 사용하거나 캐쉬메모리 덕을 많이 보게 만든 프로그램의 경우
'메인'메모리 대역폭보다는
'캐쉬메모리'의 구조가 중요할테니까요.

danskesb의 이미지

인텔의 네할렘부터는 CPU에 메모리 컨트롤러를 내장한다고 합니다.

여기에서 memory controller로 찾아 보세요.
---- 절취선 ----
http://blog.peremen.name

정태영의 이미지

제가 아키텍쳐 쪽으로는 깊이있게 공부해보지 않았지만 NUMA 같이 CPU 별로 메모리를 구성하는 경우가 아니라면 메모리 자체 속도로 대역폭은 제한될 수 밖에 없을 것 같은데요.

또 그냥 이론적으로만 생각해봐도 한 CPU 에 여러 코어가 있고 캐쉬가 공유되는 시스템과 일반 SMP 시스템을 비교한다면 cache coherence problem 등 때문에 멀티 코어 시스템이 훨씬 유리할 것 같은데...

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

Necromancer의 이미지

앞에서 말씀하신 4CPU대 쿼드코어에서의 메모리대역 문제는 아마 c2d에서 볼 수 있는 공유캐시 대역폭일겁니다.
분리된 캐시 쓰는 쓰는 amd 듀얼코어는 전혀 해당되지 않고요. 페넘도 l3 공유하니 여기서 자유롭지는 않을 거 같네요.

그리고 옵테론은 cpu별로 메모리 달아 쓰기때문에 갯수만큼 대역폭 팍팍 늘어나죠. 물론 운영체제가
NUMA관련 대응을 해줘야 한다는 조건이 있습니다. (가급적이면 프로그램이 돌아가는 CPU와 직접
연결된 메모리를 사용하도록 메모리 할당을 해줘야 함)

네할렘 나오기 전까지 남아있는 amd의 유일한 장점이죠. 대신에 cpu마다 메모리를 다 꽂아줘야 되는 부담은 있지만요.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

mycluster의 이미지

그런데, 현재 1Core 4CPU 머신이 있나요? 아마 Quad Core 4 CPU 머신만 있을건데요?
현실이 그걸 선택할 수 있는 환경이 아닐겁니다. 아주 구형 Single Core 머신을 도입하고자하는 게 아니라면요.

현실적으로 비교의 의미가 없는 시대라고 보이는군요. 굳이 비교를 한다면, Quad Core 1 CPU 와 Dual Core 2 CPU
머신을 비교해서 성능을 내보면 어떨까 하지만, 최근에 사용해본 바로는 Quad Core 1 CPU 머신이 훨씬 좋더군요.
물론 가격도 반 값보다도 훨씬 쌌고...

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

sDH8988L의 이미지

머. 이건 약간 토론 주제와 다른 이야기지만, 성능 측정 단위로 Transactions/sec 을 쓴다는 것 때문에 생각나는 게 있어서 글을 올립니다.

보통 주변에서 볼 수 있는 서버들은, 흠... 그냥 서버죠. 우리가 잘 알고 있는 Computation 능력을 최대화 시켜놓은...

그런데, 아주 고성능의 Throughput을 원하는 경우(은행권 등등)에는 Computation 능력보다는 I/O 능력이 주가 되어 다른 형태의 머신을 사용할 수도 있습니다. 바로 구세대의 유물로 취급되는 Mainframe이죠.

그러나 솔직이 Mainframe이 구세대 기술을 사용하지는 않습니다. 이미 Quad-Core (4.7GHz)까지도 탑재하고 있으며 Computation 능력도 그러 딸리지 않죠. 거기에 엄청난 수준의 가상화까지. (OS를 수 백개 깔 수도 있습니다.)

절라게 비싼 가격이 흠이지만, 서버라고 할 수 있는 것이 우리가 흔히 볼 수 있는 그런 서버 (SMP 등등) 말고 다른 형태도 충분히 있을 수 있습니다. 목적에 따른 시장 분할이라고나 할까요.

mycluster의 이미지

메인프레임의 성능과 유닉스의 성능을 비교해서 테스트 한 결과를 보면....
DB의 성능에 있어서도 뭐 아주 메인프레임이 월등히 낫다고 보기도 힘듦니다. 역시 이 또한 고객의
취향에 따라서 달라질 뿐이죠.

그리고, 메인프레임의 경우 DB도 DB2외에는 뾰족한 대안이 없고, WAS의 경우도 흔히 알고 있는 WAS를 사용할 수 없다는 것이 문제죠. 물론 VM으로 메인프레임용 리눅스를 올리고 그 위에서 WAS를 돌리거나 JAVA를 쓴다던지 뭐 그럴 수는 있겠죠.

SAP같은 경우도 DB2기반으로 메인프레임을 DB로 사용할 경우 Application Server 등은 별도의 유닉스 머신을 p시리즈 SMP로 줄줄이 달아서 사용해야하는 편이고요.
몇 번 Mainframe과 Unix의 BMT결과를 비교해봤을때, 두가지의 차이는 그다지 별로 없다는 것이 제생각입니다. 물론, 메인프레임은 종종 공짜로 주는 경우가 많더군요. 그리고, 유지보수비만 받아가겠다고 하는 경우도 있다고 합니다. 대당 유지보수비가 년 100억 정도 된다고 하니, 뭐 기계값은 안받아도 되는 모양이더군요.

그리고, 유닉스 기계만을 놓고 봤을때도, Single Core 머신과 Dual Core 머신 중에 고르라고 하면 이또한 당연히 Dual Core 머신이 월등히 낫습니다. 왜냐면, 똑같은 가격이면 Single Core CPU 갯수와 Dual Core CPU 갯수를 같이 맞춰서 살수 있는데, 왜 Single Core 머신을 사겠습니까?

-------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

jachin의 이미지

사실 하나의 패키지 안에 Double 2 Core (2개의 반도체 다이 안에 2개의 듀얼코어가 들어있는 것)가 들어가서 Quad Core 가 되었거나 On Die Quad Core 가 되었든, 실제로 Quad Core CPU 와 같은 사양의 Single Core CPU 가 나온적이 무척 드물지 않습니까? 물론 코어 시리즈에는 일부러 전력 소모를 최소화하기 위해 Core 2 Single 제품도 있습니다만, 그렇다고 하여서 외부 메모리 인터페이스 속도(Front Side Bus)도 같지는 않아서 비교가 어렵다고 생각합니다.

만약 같은 사양의 단일 코어 CPU와 쿼드 코어 CPU가 있어서, 단일 코어 CPU를 4개의 소켓에 집어넣어 비교했다고 한다면, 물론 성능은 쿼드 코어 CPU가 빠릅니다. (이렇게 말하면 분명 미친듯이 달려드실 분이 계실지도 모르겠지만...) 4개의 CPU를 SMP 구성으로 만들 때부터 속도의 저하는 나타나게 됩니다. 각 CPU의 캐쉬를 동기화 하기 위해 각 CPU의 거리만큼 속도차가 나는 것은 어쩔 수 없습니다. 아, 물론 싱글코어만을 사용하는 경우라면 별 문제는 일어나지 않습니다. 단일 CPU 의 성능과 같은 속도로 동작합니다. (Multi Thread 에 대한 얘기는 위엣 분들이 계시니 별 얘기는 안합니다.)

저도 4 Way 제품을 구입할 수 있는 기회가 있으면 무척 사고 싶습니다. 하지만 최신의 성능을 갖은 CPU를 지원하는게 제일 좋아요. 메모리 인터페이스도 더 빠르고, 가격도 저렴하니까요. (요즘 Pentium 3 기반 4 Way 서버는 쉽게 볼 수 있게 되어서...)
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

lso0502의 이미지

10년전만 해도 저희집 컴이 셀레론 678헤르츠, 64램, 기본 내장 그래픽 카드 쓰던 시절이 몇칠전 이야기 같은데... 벌써 쿼드급이 나와서
cpu와 램만 해도 8기가램을 쓰는 사람도 있고... 그래픽 카드도 512램을 쓰는 사람도 있으니... 슈퍼 컴퓨터 저리가라는 수준이군요.

[위선,거짓, 인간의 모든 추악함에서 꿋꿋이 살아가는 굶주린 영혼이여 편안한 휴식이 찾아오길 기원하겠습니다.]

[위선,거짓, 인간의 모든 추악함에서 꿋꿋이 살아가는 굶주린 영혼이여 편안한 휴식이 찾아오길 기원하겠습니다.]

kalstein의 이미지

현존시스템에서...어떻게 하던지 간에 1CPU * 4 < Quad CPU 입니다.
이유는...Quad CPU들이...

1) 인텔
듀얼 CPU 2개를 붙여서 만듭니다. 듀얼시스템은 L2를 공유합니다. 즉 Dual > Single * 2 입니다.

2) AMD
AMD는...Quad마저 Native로 붙여버렸습니다. 즉 말할필요없이 Qual > Single * 4 입니다.

근데 더 큰문제는....
싱글시퓨로는 더이상...빠른 녀석이 나오지않습...;;;; -ㅁ-;;;


------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/

nike984의 이미지

계산 능력만 따지고 보면
클럭 수가 높아야 계산 속도가 빨라지는데
1 CPU * 4의 시스템의 각 CPU가 1.8GHZ로 계산하는거와
동일한 성능을 낼려면 쿼드 코어 시스템의 경우 클럭수가
1.8 * 4 GHZ는 나와줘야 하지 않나요? 그래야 동일한 성능이 나지 싶습니다.

실제로 듀얼 코어 컴터에서 프로그램 계산 돌리고
제 4년된 노트북에서 같은 프로그램 돌리면 싱글코어인 제 노트북이 더 빠릅니다.
(개별 프로그램 처리 속도만 놓고 따지면요. )