경제적 인 소비자 용 멀티 코어 프로세서의 출현은 많은 사용자에게 질문을 제기합니다. 멀티 코어 시스템의 실제 속도를 어떻게 효과적으로 계산합니까? 4 코어 3Ghz 시스템은 실제로 12Ghz입니까? 조사하면서 계속 읽으십시오.
오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 드라이브 그룹 인 Stack Exchange의 하위 부문 인 SuperUser가 제공 한 것입니다.
질문
수퍼 유저 독자 NReilingh는 멀티 코어 시스템의 프로세서 속도가 실제로 어떻게 계산되는지 궁금했습니다.
예를 들어, 각각 3GHz에서 실행되는 4 개의 코어가있는 프로세서가 실제로 12GHz에서 실행되는 프로세서라고 말하는 것이 맞습니까?
나는 Mac이 듀얼이기 때문에 1Ghz 기계로만 광고되고 있다고 주장한 지인과 "Mac vs. PC"논쟁 (그런데이 주제의 초점이 아닙니다… -프로세서 G4는 각각 500MHz에서 실행됩니다.
그 당시 나는 이것이 대부분의 사람들에게 명백하다고 생각하는 이유 때문에 이것이 호그 워시라는 것을 알고 있었지만,이 웹 사이트에서“6 코어 x 0.2GHz = 1.2Ghz”의 효과에 대한 코멘트를 보았고 그로 인해 다시 생각하게되었습니다. 이것에 대한 진정한 답이 있습니다.
따라서 이것은 클럭 속도 계산의 의미에 대한 철학적 / 심층적 기술 질문입니다. 두 가지 가능성이 있습니다.
- 각 코어는 실제로 초당 x 계산을 수행하므로 총 계산 수는 x (코어)입니다.
- 클럭 속도는 프로세서가 1 초의 공간에서 통과하는 사이클 수의 개수이므로 모든 코어가 동일한 속도로 실행되는 한 각 클럭 사이클의 속도는 코어 수에 관계없이 동일하게 유지됩니다. . 즉, Hz = (core1Hz + core2Hz +…) / cores입니다.
그렇다면 총 클럭 속도를 나타내는 적절한 방법은 무엇이며 더 중요한 것은 멀티 코어 시스템에서 단일 코어 속도 명명법을 사용할 수도 있다는 것입니다.
대답
수퍼 유저 기여자 Mokubai는 문제를 해결하는 데 도움을줍니다. 그는 다음과 같이 씁니다.
쿼드 코어 3GHz 프로세서가 12GHz 단일 코어만큼 빠르지 않은 주된 이유는 해당 프로세서에서 실행되는 작업 (예 : 단일 스레드 또는 다중 스레드)이 작동하는 방식과 관련이 있습니다. 암달의 법칙 실행중인 작업 유형을 고려할 때 중요합니다.
본질적으로 선형적이고 (매우 간단한 프로그램)과 같이 정확하게 단계별로 수행해야하는 작업이있는 경우
10 : a = a + 120 : 당 10그런 다음 작업은 이전 패스의 결과에 크게 의존하며 값을 손상시키지 않고 여러 복사본을 실행할 수 없습니다.
'ㅏ'각 사본은'ㅏ'다른 시간에 다시 작성합니다. 이것은 작업을 단일 스레드로 제한하므로 작업이 주어진 시간에 단일 코어에서만 실행될 수 있습니다. 다중 코어에서 실행되는 경우 동기화 손상이 발생합니다. 이것은 듀얼 코어 시스템의 CPU 전력의 1/2 또는 쿼드 코어 시스템의 1/4로 제한합니다.이제 다음과 같은 작업을 수행하십시오.
10 : a = a + 120 : b = b + 130 : c = c + 140 : d = d + 150 : 당 10이 모든 라인은 독립적이며 첫 번째 프로그램과 같이 4 개의 개별 프로그램으로 분할되어 동시에 실행할 수 있습니다. 각 라인은 동기화 문제없이 코어 중 하나의 전체 성능을 효과적으로 사용할 수 있습니다. 암달의 법칙 그것에 들어온다.
따라서 무차별 대입 계산을 수행하는 단일 스레드 응용 프로그램이있는 경우 단일 12GHz 프로세서가 이길 것입니다. 어떻게 든 작업을 별도의 부분으로 분할하고 다중 스레드로 만들 수 있다면 4 개의 코어가 가까워 질 수 있지만 도달 할 수는 없습니다. Amdahl의 법칙에 따라 동일한 성능.
다중 CPU 시스템이 제공하는 가장 중요한 것은 반응성입니다. 열심히 작동하는 단일 코어 머신에서는 대부분의 시간이 하나의 작업에 사용되고 다른 작업은 더 큰 작업 사이에서 짧은 시간 동안 만 실행되므로 시스템이 느리거나 부 자연스럽게 보일 수 있습니다. . 멀티 코어 시스템에서 무거운 작업은 하나의 코어를 가져오고 다른 모든 작업은 다른 코어에서 재생하여 작업을 빠르고 효율적으로 수행합니다.
"6 코어 x 0.2GHz = 1.2Ghz"라는 주장은 작업이 완벽하게 평행하고 독립적 인 경우를 제외하고 모든 상황에서 쓰레기입니다. 매우 병렬적인 많은 작업이 있지만 여전히 어떤 형태의 동기화가 필요합니다. 수동 브레이크 는 사용 가능한 모든 CPU를 매우 잘 사용하는 비디오 트랜스 코더이지만 다른 스레드를 데이터로 채우고 처리 된 데이터를 수집하려면 핵심 프로세스가 필요합니다.
- 각 코어는 실제로 초당 x 계산을 수행하므로 총 계산 수는 x (코어)입니다.
각 코어는 워크로드가 병렬로 적합하다고 가정 할 때 초당 x 계산을 수행 할 수 있으며 선형 프로그램에서 보유한 모든 것은 코어 1 개입니다.
- 클럭 속도는 프로세서가 1 초의 공간에서 통과하는 사이클 수의 개수이므로 모든 코어가 동일한 속도로 실행되는 한 각 클럭 사이클의 속도는 코어 수에 관계없이 동일하게 유지됩니다. . 즉, Hz = (core1Hz + core2Hz +…) / cores입니다.
4 x 3GHz = 12GHz라고 생각하는 것은 오류라고 생각합니다. 수학은 작동하지만 사과와 오렌지를 비교하고 있고 합계가 옳지 않습니다. GHz를 모든 상황에서 단순히 합산 할 수는 없습니다. 4 x 3GHz = 4 x 3GHz로 변경합니다.
설명에 추가 할 것이 있습니까? 댓글에서 소리를 내세요. 기술에 정통한 다른 Stack Exchange 사용자의 답변을 더 읽고 싶으신가요? 여기에서 전체 토론 스레드를 확인하십시오. .