멀티 코어 프로세서에서 클럭 속도는 어떻게 계산합니까?


23

예를 들어, 각각 3GHz에서 실행되는 4 개의 코어를 가진 프로세서가 실제로 12GHz에서 실행되는 프로세서라고 말하는 것이 맞습니까?

나는 한때 맥이 1Ghz 머신으로 만 광고되고 있다고 주장하는 지인과 함께 "맥 대 PC"논쟁 (중간 학교에서 돌아 왔던이 주제의 초점은 아니다)에 들어갔다. 각각 500MHz로 실행되는 듀얼 프로세서 G4입니다.

당시 나는 이것이 대부분의 사람들에게 명백하다고 생각하는 이유 때문에 이것이 호그 워시라는 것을 알고 있었지만,이 웹 사이트에서 "6 코어 x 0.2GHz = 1.2Ghz"의 효과에 대한 의견을 보았고, 다시 한 번 생각하게되었다. 이에 대한 실제 답변이 있습니다.

따라서 이것은 클럭 속도 계산의 의미론에 대한 다소 철학적 / 심층적 인 기술적 질문입니다. 두 가지 가능성이 있습니다.

  1. 각 코어는 실제로 초당 x 계산을 수행하므로 총 계산 수는 x (코어)입니다.
  2. 클럭 속도는 프로세서가 1 초 동안 처리하는주기 수의 수입니다. 모든 코어가 동일한 속도로 실행되는 한 각 클럭주기의 속도는 코어 수에 관계없이 동일하게 유지됩니다 . 즉, Hz = (core1Hz + core2Hz + ...) / cores입니다.

예를 들어 쿼드 코어 2 GHz 프로세서가 반드시 단일 코어 8 GHz 프로세서와 같을 필요는없는 이유를 설명하는 데 도움이됩니다. 그러나 요구 사항에 특정 속도와 코어 수를 나열하는 응용 프로그램에 대한 시스템의 적합성을 결정할 때 멀티 코어 프로세서 속도를 어떻게 고려해야하는지 어려움을 겪고 있습니까? (예 : Borderlands 2에는 2.4GHz 듀얼 코어 프로세서가 필요합니다. 저속 쿼드 코어 또는 고속 싱글 코어도 마찬가지로해야합니까?) 여기에 대답 했습니까? 아니면 별도의 질문이어야합니까?
Iszi

@Iszi 또 다른 질문 이겠지만, Borderlands가 요구 사항에 "이중 코어"를 포함하는 경우 하나 이상의 스레드에 최적화되었을 가능성이 있습니다. 이 경우 단일 코어 프로세서는 권장되지 않지만 2 개 이상의 코어를 활용할 수 있는지는 확실하지 않습니다.
NReilingh

클럭 속도와 코어 수는 프로세서의 '속도'만을 결정하지는 않습니다. 예를 들어, 캐시 크기 및 속도는 프로세서가 명령 및 데이터를 기다리는 데 소요되는 시간에 영향을줍니다. 또한 사이클 당 명령 (전력 효율과는 다르지만 '효율'방식)도 계산 속도에 영향을줍니다. 다른 프로세서는 동일한 명령을 실행하는 데 다른 시간이 걸립니다.
Bob

답변:


35

쿼드 코어 3GHz 프로세서가 12GHz 단일 코어만큼 빠르지 않은 주된 이유는 해당 프로세서에서 실행되는 작업, 즉 단일 스레드 또는 다중 스레드와 관련이 있기 때문입니다. Amdahl의 법칙 은 실행중인 작업 유형을 고려할 때 중요합니다.

본질적으로 선형이고 (매우 간단한 프로그램)과 같이 단계별로 정확하게 수행 해야하는 작업이있는 경우

10: a = a + 1
20: goto 10

그런 다음 작업은 이전 단계의 결과에 크게 의존 'a'하며 각 사본이 'a'다른 시간에 값을 가져 와서 다르게 쓰기 때문에 값을 손상시키지 않으면 서 여러 사본을 실행할 수 없습니다 . 이렇게하면 작업이 단일 스레드로 제한되므로 작업은 주어진 시간에 단일 코어에서만 실행될 수 있습니다. 여러 코어에서 실행하는 경우 동기화 손상이 발생합니다. 이는 듀얼 코어 시스템의 CPU 전력의 1/2 또는 쿼드 코어 시스템의 1/4로 제한합니다.

이제 다음과 같은 작업을 수행하십시오.

10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10

이 라인은 모두 독립적이며 제 실행 동시에, 어떤 동기화 문제없이 코어 중 하나의 전체 전력의 효과적인 사용을 할 각각의 수와 같은 4 개 별도의 프로그램으로 분할 될 수있다, 이것은 어디 암달의 법칙 그것에 들어온다.

따라서 무차별 대입 계산을 수행하는 단일 스레드 응용 프로그램이있는 경우 단일 12GHz 프로세서가 손을 떼면 작업이 별도의 부분으로 분할되고 멀티 스레드가 될 수 있다면 4 개의 코어가 근접 할 수는 있지만 암달의 법칙과 동일한 성능.

멀티 CPU 시스템이 제공하는 가장 중요한 것은 응답 성입니다. 열심히 일하는 단일 코어 시스템에서는 한 작업에서 대부분의 시간을 사용할 수 있고 다른 작업은 더 큰 작업 사이에서 짧은 버스트로만 실행되므로 시스템이 느리거나 불안정 해 보입니다. . 멀티 코어 시스템에서 무거운 작업은 하나의 코어를 가져오고 다른 모든 작업은 다른 코어에서 재생하여 작업을 빠르고 효율적으로 수행합니다.

"6 코어 x 0.2GHz = 1.2Ghz"의 주장은 작업이 완벽하게 평행하고 독립적 인 경우를 제외하고는 모든 상황에서 쓰레기입니다. 많은 병렬 작업이 있지만 여전히 일부 형태의 동기화가 필요합니다. 핸드 브레이크 는 사용 가능한 모든 CPU를 사용하는 데 능숙한 비디오 트랜스 코더이지만 다른 스레드에 데이터를 채우고 수행 한 데이터를 수집하려면 핵심 프로세스가 필요합니다.

  1. 각 코어는 실제로 초당 x 계산을 수행하므로 총 계산 수는 x (코어)입니다.

각 코어는 워크로드가 적절한 병렬 처리를 가정 할 때 초당 x 계산을 수행 할 수 있으며 선형 프로그램에서는 1 코어 만 있으면됩니다.

  1. 클럭 속도는 프로세서가 1 초 동안 처리하는주기 수의 수입니다. 모든 코어가 동일한 속도로 실행되는 한 각 클럭주기의 속도는 코어 수에 관계없이 동일하게 유지됩니다 . 즉, Hz = (core1Hz + core2Hz + ...) / cores입니다.

4 x 3GHz = 12GHz라고 생각하면 수학이 작동하지만 사과를 오렌지와 비교하고 합계가 맞지 않습니다 .GHz는 모든 상황에 대해 단순히 함께 추가 할 수는 없습니다. 4 x 3GHz = 4 x 3GHz로 변경하겠습니다.


Nice post .. 1+ 이상 투표 할 수 없습니다 :-(
Gopalakrishnan Subramani

그러나 amdahl의 법칙은 하드웨어 문제가 아니라 잠금으로 인한 프로그래밍 문제입니다. 동기화 할 필요가없는 경우 각 코어는 가능한 빨리 명령을 실행할 수 있습니다. 코어간에 완벽하게 분리되는 병렬 프로그램 (간단한 프로그램)을 설계 할 수 있습니다. 하드웨어 제조업체가이 원가를 광고하지 않습니까?
저스틴 메이 너스

명확히하기 위해, 왜 이것이 3GHz에서 4 코어가 실제로 12ghz만큼 빠르지 않은지, 멀티 코어에서 클록 속도가 계산되는 방식의 일부가 아닌지에 대한 질문에 왜 대답하는지 이해합니다.
저스틴 메이 너스

@JustinMeiners 코어 당 클럭 속도는 단순히 코어가 실행되는 클럭 속도입니다. 단일 코어와 멀티 코어를 동일하게하는 마법 계산은 없습니다. 여러 코어는 더 많은 별도의 작업을 동시에 실행할 수 있음을 의미합니다. 소프트웨어로 인해 Amdahls 법이 적용되며, 필요한 동기화 및 잠금 기능은 소프트웨어만큼 하드웨어에서 작업이 "완벽"하지 못하게합니다. 공유 캐시 및 메모리로 인해 경합 및 잠금이 발생합니다.
Mokubai

@Mokubai 제조업체가 클럭 속도를 표시 할 때 각 개별 코어가 정확한 속도로 실행된다는 것을 명확히하기 위해?
저스틴 메이 너스

6

다른 사람들은 기술적 관점에서 좋은 주장을했습니다. 대신 4 * 3GHz가 1 * 12GHz에 해당하지 않는 이유를 설명 할 몇 가지 간단한 유추를 작성하겠습니다.

예를 들어 한 명의 여성이 9 개월 안에 한 명의 아기를 제조 할 수 있습니다. 한 달에 아홉 명의 여성이 한 명의 아기를 생산할 수 있습니까? 아니요, 임신을 병렬화 할 수 없기 때문에 (적어도이 기술 수준에서는)

여기 또 하나 있습니다 : 최근에 방문한 수력 발전소에서 발전기 중 하나가 업그레이드되고있었습니다. 그들은 선박으로 발전기의 고정자를 운송해야했습니다. 고정자의 6 분의 1은 트럭으로 운송 될 수 있지만 전체 고정자를 운송해야했습니다. 그래서 그들은 6 대의 트럭이 아니라 1 대의 선박을 사용해야했습니다.

또 다른 경우는 이벤트의 정확한 타이밍 일 수 있습니다. 때때로 컴퓨터 프로세서는 정밀한 타이머로 사용됩니다 (대부분의 프로세서에서 가변 클록으로 인해 더 이상 권장되지는 않지만 대신 고정밀 이벤트 타이머를 사용해야합니다). 12GHz 클럭이 비교적 안정적인 프로세서가 있다고 가정하면 3GHz 클럭이있는 프로세서보다 훨씬 높은 해상도로 시간을 측정하는 데 사용할 수 있습니다. 3GHz 코어 수에 관계없이 12GHz 코어의 해상도에 도달 할 수 없습니다. 즉, 각 세그먼트에 정확한 시간이 시간 단위로 표시되는 7 세그먼트 디스플레이가있는 4 개의 시계가 있습니다. 시간이 얼마나 정확하게 표시 되더라도 1 초 범위의 시간 간격을 측정하는 데 사용할 수 없습니다.


덜 기술적 인 생각에 유용한 답변입니다. 또한, 나는 유추를 좋아한다 :)
aff

3

저는이 분야의 전문가는 아니지만 컴퓨터 공학 학위를 받았습니다. 에서는 이론 (이 고도로 개념적 해답), 쿼드 코어 3GHz의 각 프로세서는 , 예를 들어, 하나의 최종 결과에 필요한 계산의 4 개 개의 세트가, 하나 개의 경우 대략 3.0 프로세서의 등가. 이것이 바로 병렬 처리입니다.

논리를 단순화하기 위해 듀얼 코어 프로세서에 대해 이야기한다고 가정 해 봅시다. 일련의 계산이 이루어 졌다면 다음과 같이 말합니다.

a = b + 1;

c = d + 1;

그런 다음이 두 가지 계산을 별도의 코어에서 실행할 수 있으며 xGHz 프로세서는 단일 코어 2 * xGHz 프로세서와 같습니다. x 속도로 수행되지만 두 계산이 동시에 처리되기 때문입니다. 싱글 코어 프로세서는 2 * x 속도로 처리 할 수 ​​있지만, 차례로 처리 할 수 ​​있습니다. 두 CPU가이 코드를 동시에 실행하면 동시에 완료됩니다. 그러나 코드가 다음과 같은 경우

a = b + 1;

c = a + 1;

그 후, 듀얼-코어 프로세서는 단일-코어 프로세서보다 두 배의 시간을 소비하는데, 왜냐하면 두 번째 명령에서 a의 값은 첫 번째 명령에 의존 하므로 병렬로 실행될 수 없기 때문이다. 이것은 일부 소프트웨어가 멀티 스레드 프로세서를 활용할 수있는 방법입니다.

따라서 이론적으로 12GHz 단일 코어 프로세서는 항상 3GHz 쿼드 코어 프로세서보다 빠르거나 더 빠를 수 있지만 그 반대는 아닙니다.


이러한 계산은 멀티 스레딩 된 경우에만 더 빠르며 심지어 약간의 오버 헤드가 있습니다. 그러나 많은 계산을 수행 할 수있는 단일 코어 프로세서를 만들 수는 있지만 열과 물건으로 인해 그럴듯하지는 않습니다.
Phoshi

이 답변은 두 가지 이유로 오해의 소지가 있습니다. 첫째, 현대 핵심은 한 번에 두 가지 이상의 일을합니다. 둘째, 핵심 속도는 작업 속도와 동일하다고 가정합니다. 단일 코어 프로세서가 동일한 작업을 수행하기 위해 더 많은 클럭 사이클이 필요한 경우 12GHz 단일 코어 프로세서는 3GHz 쿼드 코어 프로세서만큼 빠르게 실행되지 않습니다. (그것은 대략 3.0 프로세서 이후 더 이상 파이프 라인을 필요 것이다.)
데이비드 슈워츠

2

이것은 대답하기 어려운 질문이지만 짧은 대답은 다음과 같습니다.

실제 애플리케이션에서 4 개의 3Ghz 프로세서는 비 효율성으로 인해 단일 12Ghz 프로세서만큼 빠르지 않습니다. 그것들은 매우 가까울 수 있지만 처리 능력 측면에서 단일 프로세서와 같지 않을 것입니다.

그 이유는 둘 이상의 프로세서에서 실행될 수있는 프로그램을 처리 할 때 작은 비 효율성에 있습니다. 문제의 프로그램이 병렬로 실행될 수 있다고 가정하면 RAM과 같은 다른 리소스 또는 캐시 및 스레드 동기화 문제에 대해 서로 경쟁하는 다른 코어의 문제가 계속 발생합니다. 또한 병렬화 할 수없고 단일 코어에서 자체적으로 실행해야하는 프로그램의 일부가 항상 있습니다.

이 기사를 살펴보십시오 : http://en.wikipedia.org/wiki/Amdahl%27s_law


당신은 옳고 그름입니다. 4 개의 3ghz 프로세서는 "실제"응용 프로그램의 단일 12ghz 프로세서보다 훨씬 빠릅니다. 요즘 점점 더 많은 프로그램이 멀티 스레딩을 사용하고 있습니다. 링크는 이론적 인 단일 스레드 응용 프로그램을 나타냅니다. 12ghz의 단일 프로세서에는 하나의 스레드 만 있으므로 "실제"프로그램이 제공해야하는 다중 스레딩 이점이 손실됩니다. 멀티 코어 기술의 이점이 빠른 단일 코어 기술의 이점보다 훨씬 뛰어 나기 때문에 업계는 더 빠른 코어 대신 더 느린 코어를 지향하지 않습니다.
ubiquibacon

3
@ typoknig : 사실이 아닙니다. 6GHz 단일 코어 프로세서는 3GHz 듀얼 코어 프로세서와 거의 같은 속도로 멀티 스레드 응용 프로그램을 실행합니다. 응용 프로그램이 모든 스레드를 최대한 활용한다고 가정하면 (실제로 "실제로 작동하지 않는 경우" 세계 응용 프로그램 ", 그러나 그것은 별도의 주장입니다). 12GHz 프로세서는 속도가 느리기보다는 현재 기술로는 너무 어려워 보이지 않습니다.
Sasha Chedygov

4
@ typoknig : 일부 다중 스레드 프로그램을 프로그래밍했으며 단일 12Ghz 프로세서가 있으면 대신 대신 사용하십시오. 단일 스레드 프로그래밍은 muti 스레드 프로그래밍보다 10 배 쉽고 훨씬 효율적입니다. 업계에서 2 차 뮤티 코어 프로세서를 이동시키는 실제 이유는 더 빠르기 때문이 아니라 개별 CPU를 더 빨리 실행할 수 없기 때문입니다! 이것은 p4 일에 인텔의 넷 버스트 기술로 요약되었습니다. 그들은 적어도 10Ghz 프로세서를 추정했는데, 그것은 양자 물리학이 얼굴을 때리고 "noob no!"라고 말했다.
Faken

2
@typokning : F22는 10Ghz와는 매우 다른 초당 100 억 개의 명령어를 달성하기 위해 일련의 powerPC 프로세서를 사용합니다! Radion HD5970이 4600Ghz에서 작동한다고 말하는 것과 같습니다. 4.6 TFLOPS는 가능하지만 병렬성이 높기 때문에 가능합니다.
Faken

1
@typoknig : CPU 주파수와 IPS (초당 명령 수)의 차이를 명확하게 이해하지 못하며, 동일하지 않습니다. 읽어보십시오 : en.wikipedia.org/wiki/Instructions_per_second
Faken

2

3GHz에서 4 코어를 12GHz라고 말할 수는 없습니다.

공유 메모리, 캐시 경합 및 기타 리소스와 같은 다양한 제약 조건도 모든 코어에 공통이므로 이러한 코어에서 코드 조각을 병렬로 실행하는 것은 12Ghz 프로세서에서 실행하는 것만 큼 효율적이지 않습니다 (단, 그러한 프로세서를 구축하는 것은 어렵지만) ).

또한 칩에 내장 된 트랜지스터를 두 배로 늘리면 얻을 수있는 속도가 40 %에 불과하다는 것을 읽었습니다. 이것은 또한이 주제에 대한 중요한 힌트를 제공합니다.


1

클럭 사이클이 실행되는 한, 멀티 코어 프로세서는 x * cores초당 완전한 작업주기를 수행합니다. 일반적으로 클럭 속도는보다 쉬운 비교를 위해 코어별로 표시됩니다 (그렇지 않으면 2GHz / 코어에서 실행되는 4GHz 듀얼 코어 칩과 1GHz / 코어에서 실행되는 4GHz 쿼드 코어 칩을 어떻게 쉽게 비교할 수 있습니까?).

불행히도 실제 응용 프로그램에서 다른 프로세서를 비교하려고하면 문제가 복잡해집니다.

첫째, 대부분의 멀티 코어 프로세서에는 코어간에 일부 리소스가 공유됩니다 (예 : CPU 캐시). 이들은 해당 캐시에 대한 액세스를 공유해야하므로 데이터를 최대 속도로 저장하거나 읽는 코어를 둘 다 가질 수 없습니다. 공유 리소스에서 병목 현상의 가능성을 더 잘 나누기 위해 여러 개의 공유 캐시 (예 : 대부분의 쿼드 코어 칩에는 각각 한 쌍의 코어가 공유하는 2 개의 캐시가 있음)를 사용하여 많은 코어 CPU에서이 문제를 완화 할 수 있습니다.

둘째, 아마도 비 기술 분야에서는 덜 알려져 있습니다. 클럭 속도를 비교하는 것은 때때로 사과와 오렌지를 비교하는 것과 같습니다. 다른 CPU는 단일 클록 사이클에서 다른 양의 작업을 수행하므로 1GHz 대 1.2GHz의 사운드는 훌륭하지만 1GHz 칩은 실제로 주어진 시간 간격으로 더 많은 작업을 수행 할 수 있습니다. 펜티엄 4는이 지점을 집으로 몰아와 메가 헤르츠 신화로 이끈다 .


클럭 속도는 "코어 당"으로 표시되지 않습니다. 속도는 결코 "당"없습니다. 자동차가 시속 50 마일을 달리면 속도는 시속 50 마일입니다. 두 대의 자동차가 시간당 50 마일을가더라도 속도는 여전히 시속 50 마일입니다. "자동차 당 속도"라는 아이디어는 의미가없고 일관성이 없습니다.
David Schwartz

1

시간당 50 마일 씩가는 두 대의 자동차는 시간당 100 마일로 "추가"되지 않습니다. 정말 간단합니다. 프로세서의 클럭 속도 는 작업 수행 속도를 측정하는 것이 아니라 클럭이 얼마나 빨리 틱되는지를 측정 한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.