왜 CPU 코어가 모두 다른 속도가 아닌 동일한 속도를 갖는가?
새로운 CPU에 대한 비교 쇼핑을 많이 해본 경험이 있다면 코어가 다른 것의 조합보다는 속도를 갖는 것처럼 보였을 것입니다. 그게 왜? 오늘의 수퍼 유저 Q & A 게시물에는 궁금한 독자의 질문에 대한 답변이 있습니다..
오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..
질문
수퍼 유저 Jamie는 왜 CPU 코어가 다른 코어가 아닌 동일한 속도를 가지는지 알고 싶어합니다.
일반적으로 새 컴퓨터를 구입할 경우 예상되는 컴퓨터 작업 부하에 따라 구매할 프로세서를 결정해야합니다. 비디오 게임의 성능은 단일 코어 속도에 의해 결정되는 경향이 있지만 비디오 편집과 같은 애플리케이션은 코어 수에 의해 결정됩니다. 시장에서 얻을 수있는 것의 관점에서 볼 때, 모든 CPU가 대략 동일한 속도를 가지고있는 것처럼 보입니다. 주요 차이점은 더 많은 스레드 또는 더 많은 코어가됩니다..
예 :
- Intel Core i5-7600K, 기본 주파수 3.80 GHz, 코어 4 개, 스레드 4 개
- Intel Core i7-7700K, 기본 주파수 4.20 GHz, 코어 4 개, 스레드 8 개
- AMD Ryzen 5 1600X, 기본 주파수 3.60 GHz, 6 코어, 12 스레드
- AMD Ryzen 7 1800X, 기본 주파수 3.60 GHz, 8 코어, 16 스레드
왜 우리는 증가하는 코어의 패턴을 보지만, 모든 코어가 동일한 클럭 속도를 갖는지? 클록 속도가 다른 변종이없는 이유는 무엇입니까? 예를 들어, 두 개의 "큰"코어와 많은 수의 작은 코어.
예를 들어 4.0GHz (4x4GHz, 최대 16GHz)의 4 개 코어 대신 4.0GHz에서 실행되는 2 개의 코어와 2.0GHz에서 실행되는 4 개의 코어 (즉, 2x4.0GHz + 4x2.0)를 갖는 CPU는 어떻습니까? GHz, 최대 16 GHz)? 두 번째 옵션은 단일 스레드 작업 부하에서 동일하게 좋지만 멀티 스레드 작업 부하에서 잠재적으로 더 나을 수 있습니까??
위에서 언급 한 CPU 나 특정 작업 부하와 관련하여 일반적인 질문은 아니지만 구체적으로 묻습니다. 나는 그 패턴이 왜인지 궁금하다..
왜 CPU 코어가 모두 다른 속도가 아닌 동일한 속도를 갖는가??
대답
수퍼 유저 기부자 bwDraco가 우리에게 답을줍니다 :
이것은 이기종 멀티 프로세싱 (HMP)으로 알려져 있으며 모바일 장치에 널리 채택됩니다. big.LITTLE을 구현하는 ARM 기반 장치에서 프로세서에는 성능 및 전원 프로필이 다른 코어가 포함되어 있습니다. 즉, 일부 코어는 빠르게 실행되지만 많은 전력 (빠른 아키텍처 및 / 또는 더 높은 클럭)을 이끌어내는 반면 다른 코어는 에너지 효율적이지만 느린 느린 아키텍처 및 / 또는 더 낮은 클록). 이는 특정 시점을 지나면 성능을 향상 시킴에 따라 전력 사용이 과도하게 증가하는 경향이 있기 때문에 유용합니다. 여기에있는 아이디어는 필요할 때 성능을 얻지 않고 배터리 수명을 늘리는 것입니다..
데스크톱 플랫폼에서 전력 소비는별로 문제가되지 않기 때문에 이것이 꼭 필요한 것은 아닙니다. 대부분의 응용 프로그램은 각 코어가 유사한 성능 특성을 가질 것으로 기대하며 HMP 시스템의 스케줄링 프로세스는 기존의 대칭 다중 처리 (SMP) 시스템에 대한 스케줄링보다 훨씬 복잡합니다. 기술적으로 Windows 10은 HMP를 지원하지만 주로 모바일 ARM big.LITTLE을 사용하는 장치).
또한 오늘날 대부분의 데스크탑 및 랩탑 프로세서는 열적 또는 전기적으로 제한되지 않기 때문에 짧은 버스트에도 일부 코어가 다른 것보다 빠르게 실행되어야합니다. 우리는 기본적으로 얼마나 빨리 개별 코어를 만들 수 있는지에 대한 벽을 쳤습니다. 따라서 일부 코어를 느린 코어로 바꾸면 남아있는 코어를 더 빠르게 실행할 수 없습니다.
다른 것보다 빠르게 실행할 수있는 하나 또는 두 개의 코어가있는 데스크탑 프로세서가 있지만이 기능은 현재 일부 최고급 인텔 프로세서 (Turbo Boost Max Technology 3.0으로 알려져 있음)로만 제한되어 있습니다. 더 빠르게 실행할 수있는 코어의 성능.
대량 x86 코어 프로세서는 크고 빠른 코어와 작고 느린 코어를 사용하여 과도한 스레드 작업 부하를 최적화하도록 설계 할 수 있지만 프로세서 설계에 상당한 복잡성이 추가되고 응용 프로그램이 제대로 지원하지 않을 수 있습니다.
2 개의 빠른 Kaby Lake (7 세대) 코어와 8 개의 느린 Goldmont (Atom) 코어가있는 가상의 프로세서를 사용하십시오. 총 10 개의 코어가 있으며 이러한 종류의 프로세서에 최적화 된 과도기 스레드 작업 부하는 일반적인 쿼드 코어 Kaby Lake 프로세서보다 성능과 효율성이 향상 될 수 있습니다. 그러나 다른 유형의 코어는 성능 수준이 크게 다르며 느린 코어는 AVX처럼 빠른 코어가 지원하는 일부 명령어도 지원하지 않습니다 (ARM은 큰 코어와 작은 코어가 동일한 명령어를 지원해야하므로이 문제를 피합니다. ).
다시 말하지만 대부분의 Windows 기반 멀티 스레드 응용 프로그램은 모든 코어가 동일하거나 거의 동일한 수준의 성능을 갖고 동일한 명령어를 실행할 수 있다고 가정하므로 이러한 종류의 비대칭 성은 이상적인 성능을 나타내지 않을 가능성이 있으며 심지어는 느린 코어에서 지원하지 않는 명령어를 사용하면 충돌이 발생합니다. 인텔은 모든 코어가 모든 명령어를 실행할 수 있도록 고급 명령어 지원을 추가하기 위해 저속 코어를 수정할 수 있지만 이기종 프로세서에 대한 소프트웨어 지원과 관련된 문제는 해결되지 않습니다.
자신의 질문에서 생각하고있는 것과 가까운 애플리케이션 디자인에 대한 다른 접근 방법은 애플리케이션의 고도로 병렬화 된 부분을 가속화하기 위해 GPU를 사용합니다. 이것은 OpenCL 및 CUDA와 같은 API를 사용하여 수행 할 수 있습니다. 단일 칩 솔루션과 관련하여 AMD는 기존의 CPU와 고성능 통합 GPU를 동일한 칩에 결합한 APU에서 하드웨어 지원을 촉진합니다 (이종 시스템 아키텍처와 마찬가지로). 몇 가지 특수 응용 프로그램.
설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..
이미지 크레딧 : Mirko Waltermann (Flickr)