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