왜 모든 코어를 가진 CPU가 같은 속도로 다른 속도의 조합이 아닌가?


79

일반적으로 새 컴퓨터를 구입하는 경우 예상되는 워크로드에 따라 구매할 프로세서를 결정합니다. 게임의 성능은 단일 코어 속도에 의해 결정되는 반면 비디오 편집과 같은 응용 프로그램은 코어 수에 의해 결정됩니다.

시중에서 구할 수있는 것의 관점에서 볼 때 모든 CPU는 대략 같은 속도를 갖는 것 같습니다. 주요 차이점은 더 많은 스레드 또는 코어입니다.

예를 들면 다음과 같습니다.

  • Intel Core i5-7600K, 기본 주파수 3.80GHz, 4 코어, 4 스레드
  • Intel Core i7-7700K, 기본 주파수 4.20GHz, 4 코어, 8 스레드
  • AMD Ryzen 5 1600X, 기본 주파수 3.60 GHz, 6 코어, 12 스레드
  • AMD Ryzen 7 1800X, 기본 주파수 3.60GHz, 8 코어, 16 스레드

그렇다면 왜 모든 코어의 클럭 속도가 동일한 코어 증가 패턴을 볼 수 있습니까?

클록 속도가 다른 변형이없는 이유는 무엇입니까? 예를 들어, 두 개의 '큰'코어와 많은 작은 코어가 있습니다.

예를 들어 4.0GHz에서 최대 4 개의 코어 (즉, 최대 4x4GHz ~ 16GHz) 대신 4.0GHz에서 실행되는 2 개의 코어가있는 CPU와 2GHz에서 실행되는 4 개의 코어 (예 : 2x4.0GHz)는 어떻습니까? + 4x2.0GHz ~ 최대 16GHz). 두 번째 옵션이 단일 스레드 워크로드에서 똑같이 좋지는 않지만 다중 스레드 워크로드에서 더 좋을까요?

이 질문은 일반적으로 위에 언급 한 CPU 나 특정 특정 워크로드에 대한 것이 아니라 일반적인 사항으로 묻습니다. 패턴이 왜 그런지 궁금합니다.


15
빠르고 느린 코어를 가진 많은 모바일이 있으며 거의 ​​모든 현대식 멀티 코어 서버에서 CPU 코어 속도는로드에 따라 독립적으로 클럭되며 일부는 사용하지 않을 때 코어를 끕니다. 에너지 절약을 위해 설계하지는 않지만 두 가지 유형의 코어 (CPU 및 GPU) 만 있으면 범용 플랫폼에서 플랫폼을보다 유연하게 만들 수 있습니다.
eckes

5
스레드 스케줄러가 사용할 코어를 지능적으로 선택하기 전에 프로세스가 여러 코어를 활용할 수 있는지 여부를 결정해야합니다. 그렇게하면 문제가 많고 오류가 발생하기 쉽습니다. 특히 애플리케이션의 요구에 따라 동적으로 변경 될 수있는 경우. 대부분의 경우 스케줄러는 최상의 코어가 사용 중일 때 최적의 하위 선택을해야합니다. 동일한 코어로 작업이 단순 해지고 최대의 유연성을 제공하며 일반적으로 최상의 성능을 제공합니다.
LMiller7 2016 년

33
클록 속도는 설명 된 방식으로 합리적으로 부가 적이라고 말할 수 없습니다. 4GHz에서 4 개의 코어가 실행된다고해서 16GHz의 "전체"가있는 것은 아니며,이 16GHz가 2GHz에서 실행되는 8 개의 프로세서 또는 1GHz에서 실행되는 16 개의 프로세서로 분할 될 수 있다는 의미는 아닙니다.
밥 자비스

16
질문의 전제는 단순히 잘못입니다. 최신 CPU는 다른 속도로 코어를 완벽하게 실행할 수 있습니다
phuclv

답변:


84

이를 HMP ( heterogeneous multiprocessing )라고하며 모바일 장치에서 널리 채택하고 있습니다. 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를 사용하여 응용 프로그램의 병렬 부분을 가속화합니다. OpenCLCUDA 와 같은 API를 사용하여 수행 할 수 있습니다 . 단일 칩 솔루션으로, AMD는 기존의 CPU와 동일한 칩에 고성능 통합 GPU, 결합의 APU 군단에서 GPU 가속을위한 하드웨어 지원 촉진 이기종 시스템 아키텍처를 이 밖에 많은 산업 흡수를 보지있다하더라도, 몇 가지 특수 응용 프로그램 중 하나입니다.


1
Windows에는 이미 '앱', '배경 프로세스'및 'Windows 프로세스'라는 개념이 있습니다. 하드웨어 수준까지 확장되지 않습니까?
Jamie

2
@Jamie "백그라운드"프로세스는 더 작은 시간 조각을 가져오고 중단 될 가능성이 높습니다. Windows 10은 HMP 시스템을 어느 정도 설명하지만 아직 방법에 대한 정보는 많지 않습니다.
Bob

그래서 @bwDraco를 편집 한 후에 나에게 거의 대답했다고 생각합니다. '혼합 된'프로세서가있는 경우 동일한 방식으로 빌드 된 경우 동일한 명령어 세트를 쉽게 지원할 수 있으므로 올바른 코어를 선택하려면 일종의 스케줄러가 필요합니다. 나는 많은 작은 코어로가는 것으로부터 이익을 얻는 응용 프로그램이 많은 작은 코어로가는 것으로부터 훨씬 더 많은 이익을 얻을 것이라고 생각합니다. 따라서 GPU 가속이 있습니다.
Jamie

3
GPU 케이스는 10 개의 작은 코어와 느린 코어에 대해 2 개의 큰 코어를 거래하는 것이 아니라, 1024 개의 작은 코어와 느린 코어에 대해 2 개의 큰 코어를 거래하는 것과 매우 유사합니다. 조금 더 평행이 아닌 대규모 병렬.
Yakk

4
인텔은 아마도 추가 실리콘없이 AVX2 명령을 실행하기 위해 Goldmont 코어를 얻을 수있을 것입니다 (느리게 128b op의 쌍으로 디코딩하여). Knight 's Landing (Xeon Phi)에는 AVX512가 포함 된 Silvermont 기반 코어가 있으므로 Silvermont를 수정하는 것이 불가능하지는 않습니다. 그러나 KNL은 벡터 명령에 대해 순서가 잘못된 실행을 추가하지만 일반 Silver / Goldmont는 정수에 대해서만 OOO를 수행하므로 KNL보다 Goldmont에 더 가깝게 설계하려고합니다. 어쨌든, insn 세트는 실제 문제가 아닙니다. 저전력 코어에서 다이 영역을 사용하는 데있어 실질적인 장애가되는 것은 OS 지원 및 작은 이점입니다.
Peter Cordes

67

당신은 무엇을 요구하는지하여 사용하는 현재의 시스템입니다 왜 대칭 멀티 프로세싱 이 아닌 비대칭 멀티 프로세싱을 .

비대칭 멀티 프로세싱은 예전에는 컴퓨터가 엄청나고 여러 장치에 수용 될 때 사용되었습니다.

최신 CPU는 하나의 다이로 하나의 장치로 캐스트되며, 서로 다른 유형의 CPU를 혼합하지 않는 것이 훨씬 간단합니다. 모두 동일한 버스와 RAM을 공유하기 때문입니다.

CPU 사이클과 RAM 액세스를 제어하는 ​​클럭 제약도 있습니다. 속도가 다른 CPU를 혼합 할 때는 불가능합니다. 시계가없는 실험용 컴퓨터가 존재했으며 꽤 빠르지 만 현대 하드웨어의 복잡성으로 인해 더 단순한 아키텍처가 적용되었습니다.

예를 들어, L3 캐시 버스가 코어와 동일한 클럭 속도로 실행되므로 Sandy Bridge와 Ivy Bridge 코어는 다른 속도로 동시에 실행할 수 없으므로 동기화 문제를 방지하기 위해 모두 해당 속도로 실행해야합니다 주차 / 차단 (링크 : 인텔의 샌디 브리지 아키텍처 노출 ). (Skylake에 대한 아래 의견에서도 확인되었습니다.)

[편집] 어떤 사람들은 CPU 믹싱이 불가능하다고 말하는 내 대답을 착각했습니다. 그들의 이점을 위해 나는 다음과 같이 진술한다. 다른 CPU의 혼합은 오늘날의 기술을 넘어서는 것이 아니라 수행되지는 않는다. 위에서 언급했듯이 이것은 기술적으로 복잡하므로 비용이 많이 들고 재정적 이익이 거의 없거나 전혀 없으므로 제조업체에 관심이 없습니다.

아래는 몇 가지 의견에 대한 답변입니다.

그들이 그렇게 터보 부스트는 CPU의 속도를 변경 할 수 있습니다 변경

터보 부스트는 클럭 속도를 높이고 일부 멀티 플라이어를 변경하여 수행됩니다. 이는 하드웨어가 우리를 대신하여 오버 클럭킹 할 때 사람들이하는 일입니다. 클럭은 동일한 CPU의 코어간에 공유되므로 전체 CPU와 모든 코어의 속도가 균일하게 향상됩니다.

일부 전화의 속도가 다른 CPU가 두 개 이상 있습니다

이러한 전화기에는 일반적으로 두 개의 개별 CPU (또는 CPU 및 GPU와 같은)와 같이 각 CPU와 관련된 사용자 지정 펌웨어 및 소프트웨어 스택이 있으며 시스템 메모리에 대한 단일 뷰가 없습니다. 이러한 복잡성은 프로그래밍하기가 어렵 기 때문에 비대칭 멀티 프로세싱은 범용 데스크톱 OS에서 지원하지 않는 하드웨어에 가까운 소프트웨어 개발이 필요하기 때문에 모바일 영역에 남아 있습니다. PC에서 이러한 구성을 찾을 수없는 이유입니다 (정의를 충분히 늘리면 CPU / GPU 제외).

2 개의 Xeon E5-2670 v3 (HT 코어가있는 12 코어)이있는 서버에는 현재 1.3GHz, 1.5GHz, 1.6GHz, 2.2GHz, 2.5GHz, 2.7GHz, 2.8GHz, 2.9GHz 및 기타 여러 속도의 코어가 있습니다.

코어가 활성 또는 유휴 상태입니다. 동시에 활성화 된 모든 코어는 동일한 빈도로 실행됩니다. 당신이보고있는 것은 단지 타이밍이나 평균화의 유물입니다. 나는 또한 Windows가 오랫동안 코어를 파킹하지 않고 오히려 자원 모니터의 새로 고침 속도보다 훨씬 빠른 속도로 모든 코어를 파킹 / 언 파킹하지만이 동작의 이유를 모릅니다. 위의 말.

인텔 Haswell 프로세서에는 모든 코어에 대해 개별 전압 및 주파수를 지원하는 통합 전압 조정기가 있습니다

개별 전압 레귤레이터는 클럭 속도와 다릅니다. 모든 코어가 동일한 것은 아니며 일부는 더 빠릅니다. 코어가 빠를수록 전력 소비량이 약간 줄어들어 헤드 룸이 약해져 코어가 약해집니다. 코어 전압 레귤레이터는 현재 클럭 속도를 유지하기 위해 가능한 한 낮게 설정됩니다. CPU의 전원 제어 장치는 전압을 조정하고 품질이 다른 코어에 필요한 경우 OS 요청을 무시합니다. 요약 : 개별 레귤레이터는 모든 코어가 개별 코어 속도를 설정하는 것이 아니라 동일한 클럭 속도로 경제적으로 작동하도록하기위한 것입니다.


3
아 더 짧고 요점. +1
Hennes 2016 년

6
@harrymc 완벽하게 잘 관리하는 동기화 블록이 있습니다. DRAM은 코어 속도보다 느리게 실행되며 동일한 칩에서 Intel 코어를 다른 속도로 동적으로 실행할 수 있습니다.
pjc50 2016 년

10
인텔 코어 시리즈 프로세서는 항상 동일한 다이에서 다른 속도로 실행됩니다.
Nick T

9
큰 LITTLE 아키텍처와 독립적 인 코어 클럭 부스트의 유일한 존재는 당신에게 잘못을 증명합니다. 이기종 멀티 프로세싱이 주류입니다. 그것은 할 수 있고, 전화 이루어 지지만 어떤 이유로 데스크탑에서는 불가능합니다.
Agent_L

9
@Agent_L : 이유는 복잡성입니다. 데스크탑 CPU는 이미 충분히 비싸다. 그래서 나는 반복한다. 모든 것이 가능하지만, 실제 질문은 그것이 이루어질 수 있는지 아닌지에 대한 이유이다. 이것이 불가능하다고 주장하는 것처럼 나를 공격하지 마십시오. 내가 말하는 것은 그것이 너무 복잡하고 비용이 많이 들고 제조업체에 관심을 갖기에는 너무 적은 이익이라는 것입니다.
harrymc 2016 년

47

클록 속도가 다른 변형이없는 이유는 무엇입니까? 즉. 2 개의 '큰'코어와 많은 작은 코어.

주머니에 전화가 정확히 그와 같은 배열을 가질 수 있습니다 -ARM big.LITTLE 은 설명대로 작동합니다. 클럭 속도 차이 만있는 것은 아니며, 완전히 다른 코어 유형일 수도 있습니다. 일반적으로 클럭이 느린 클럭은 "더욱 어둡습니다"(순서가없는 실행 및 기타 CPU 최적화 없음).

기본적으로 배터리를 절약하는 것이 좋지만 자체 단점이 있습니다. 다른 CPU 사이에서 물건을 옮기는 부기는 더 복잡하고, 나머지 주변 장치와의 통신은 더 복잡하며, 가장 중요한 것은 그러한 코어를 효과적으로 사용하기 위해서는 작업 스케줄러가 매우 똑똑해야합니다 (그리고 종종 "올바른 추측") .

이상적인 배열은 "작은"코어에서 시간이 중요하지 않은 백그라운드 작업 또는 비교적 작은 대화식 작업을 실행하고 크고 긴 계산 (작은 코어에 소요되는 추가 시간이 끝나는 경우에만) "큰"작업을 깨우는 것입니다. 사용자가 작은 코어에서 느리게 느끼는 중간 규모의 대화식 작업을 위해 배터리를 더 많이 섭취하십시오.

그러나 스케줄러에는 각 작업이 실행중인 작업 종류에 대한 정보가 제한되어 있으며 일정을 어디에서 예약 할지를 결정하기 위해 휴리스틱 (또는 특정 작업에 대한 선호도 마스크를 강제하는 등의 외부 정보)을 사용해야합니다. 이것이 잘못되면 느린 코어에서 작업을 실행하는 데 많은 시간 / 전력을 낭비하고 나쁜 사용자 경험을 제공하거나 우선 순위가 낮은 작업에 "큰"코어를 사용하여 전원 / 소비를 낭비 할 수 있습니다. 필요한 작업을 피할 수 있습니다.

또한 비대칭 멀티 프로세싱 시스템에서는 일반적으로 작업을 SMP 시스템과 다른 코어로 마이그레이션하는 데 비용이 더 많이 들기 때문에 스케줄러는 일반적으로 임의의 무료 코어에서 실행하고 이동하는 대신 초기 추측을 잘해야합니다. 나중에 주위에.


대신 인텔의 선택은 동일한 지능적이고 빠른 코어 수가 적지 만 매우 적극적인 주파수 스케일링입니다. CPU 사용량이 많으면 최대 클럭 속도까지 빠르게 올라가고, 가장 빠른 속도로 작업을 수행 한 다음 가장 낮은 전력 사용 모드로 돌아가도록 크기를 줄입니다. 이것은 스케줄러에 특별한 부담을주지 않으며 위에서 설명한 나쁜 시나리오를 피합니다. 물론, 낮은 클럭 모드에서도 이러한 코어는 "스마트 한"코어이므로 낮은 클럭의 "멍청한"큰 LITTLE 코어보다 더 많이 소비합니다.


1
휴리스틱은 매우 단순해야합니다. 비자발적 작업 전환 (전체 타임 슬라이스 사용)은 느린 CPU가 작업에 적합하지 않음을 나타냅니다. 사용률이 매우 낮고 모든 자발적인 작업 스위치는 작업이 느린 CPU로 이동할 수 있음을 나타냅니다.
R ..

3
또 다른 문제는 4 개의 어리석은 2GHz 코어가 2 개의 스마트 4GHz 코어보다 더 큰 다이 크기를 취하거나 4GHz 코어보다 더 작고 훨씬 적은 전력을 소비하지만 훨씬 느리게 실행
된다는 것입니다.

2
@ R : : 원칙적으로 나는 당신에게 동의하지만, 이것에 대한 일부 기본 스케줄러 지원을 가능하게하더라도 나는 내가 사용한 ARM 보드에서 어리석은 코어 요동을 보았으므로 다른 것이 있어야합니다. 게다가, 대부분의 "정규"멀티 스레딩 소프트웨어는 SMP를 염두에두고 작성되었으므로 스레드 코어를 총 코어 수만큼 크게보고 작업이 느린 코어로 끌리는 것은 일반적이지 않습니다.
Matteo Italia

1
@Ramhound : 120W 10 코어 부품의 전력 예산은 코어 당 12W입니다 (단일 코어 터보 모드 제외). 그렇기 때문에 인텔의 i7-6700k 는 4 코어에 대해 91W의 전력 예산을 사용합니다. 코어 당 22.75W (모든 코어가 활성화 된 상태에서도 4.0GHz로 유지됨) Prime95와 같은 AVX2 + FMA 워크로드). 싱글 코어 터보 헤드 룸이 추가로 0.2GHz에 불과한 이유는 2.2GHz @@ 145W, 3.6GHz 터보를 지원하는 22 코어 Broadwell E5-2699v4입니다.
Peter Cordes

@Ramhound : 이에 대한 답변 이 추가되었습니다 . 많은 코어 Xeon은 OP가 찾고 있는 바로 그 것 같습니다 . 저전력 코어를 여러 개 운영하거나 가능한 경우 단일 스레드를 빠르게 실행하는 데 많은 전력을 소비합니다 (터보).
Peter Cordes

14

게임의 성능은 단일 코어 속도에 의해 결정되는 경향이 있습니다.

과거 (DOS 시대 게임) : 맞습니다.
요즘은 더 이상 사실이 아닙니다. 많은 현대 게임이 스레드되어 있으며 여러 코어의 이점이 있습니다. 일부 게임은 이미 4 개의 코어로 만족하고 있으며 시간이 지남에 따라 그 수가 증가하는 것 같습니다.

비디오 편집과 같은 응용 프로그램은 코어 수에 따라 결정됩니다.

맞습니다.

코어 수 * 코어 속도의 배 * 효율.
하나의 동일한 코어를 동일한 코어 세트와 비교하면 대부분 정확합니다.

시중에서 구할 수있는 것의 관점에서 볼 때 모든 CPU는 대략 같은 속도를 갖는 것 같습니다. 주요 차이점은 더 많은 스레드 또는 코어입니다. 예를 들면 다음과 같습니다.

Intel Core i5 7600k, Base Freq 3.80 GHz, 4 코어 Intel Core i7 7700k, Base Freq 4.20 GHz, 4 코어, 8 스레드 AMD Ryzen 1600x, Base Freq 3.60 GHz, 6 코어, 12 스레드 AMD Ryzen 1800x, Base Freq 3.60 GHz, 8 심, 16 스레드

다른 아키텍처를 비교하는 것은 위험하지만 괜찮습니다 ...

그렇다면 왜 모든 코어의 클럭 속도가 동일한 코어 증가 패턴을 볼 수 있습니까?

부분적으로 우리는 장벽에 부딪 쳤기 때문에. 클럭 속도가 증가하면 더 많은 전력이 필요하고 더 많은 열이 생성됩니다. 더 많은 열은 더 많은 전력이 필요함을 의미했습니다. 우리는 그런 식으로 시도했고 그 결과는 끔찍한 펜티엄이었다. 4. 뜨겁고 힘이 배고프다. 냉각하기 어렵다. 스마트하게 설계된 Pentium-M보다 빠르지는 않습니다 (3.0GHz의 P4는 1.7GHz의 P-mob만큼 빠릅니다).

그 이후로, 우리는 대부분 클럭 속도 향상을 포기하고 대신 더 스마트 한 솔루션을 구축했습니다. 그중 일부는 원시 클럭 속도보다 여러 코어를 사용하는 것이 었습니다.

예를 들어 단일 4GHz 코어는 3 개의 2GHz 코어만큼 많은 전력을 소비하고 열을 발생시킬 수 있습니다. 소프트웨어가 여러 코어를 사용할 수 있으면 훨씬 빠릅니다.

모든 소프트웨어가 그렇게 할 수있는 것은 아니지만 최신 소프트웨어는 일반적으로 할 수 있습니다.

여러 코어를 가진 칩이있는 이유와 다른 개수의 코어를 가진 칩을 판매하는 이유에 부분적으로 답합니다.

클럭 속도와 관련하여 세 가지 점을 식별 할 수 있다고 생각합니다.

  • 저전력 CPU는 원시 속도가 필요하지 않은 경우에 적합합니다. 예를 들어 도메인 컨트롤러, NAS 설정, ...이를 위해 주파수가 낮은 CPU가 있습니다. 때로는 더 많은 코어가있는 경우에도 (예 : 8x 저속 CPU가 웹 서버에 적합 함).
  • 나머지는 일반적으로 현재 디자인이 너무 뜨거워지지 않고 할 수있는 최대 주파수에 가깝습니다. (현재 설계에서는 3 ~ 4GHz).
  • 그리고 우리는 비닝을합니다. 모든 CPU가 동일하게 생성되는 것은 아닙니다. 일부 CPU 점수는 칩의 일부에서 나쁘게 점수를 매기거나 해당 부품을 비활성화하고 다른 제품으로 판매합니다.

이것의 전형적인 예는 4 코어 AMD 칩입니다. 하나의 코어가 고장난 경우 비활성화되어 3 코어 칩으로 판매됩니다. 이 3 개의 코어에 대한 수요가 높았을 때, 일부 4 개의 코어조차도 3 개의 코어 버전으로 판매되었으며 올바른 소프트웨어 해킹으로 4 번째 코어를 다시 활성화 할 수있었습니다.

그리고 이것은 코어 수로 수행 될뿐만 아니라 속도에도 영향을 미칩니다. 일부 칩은 다른 칩보다 더 뜨겁습니다. 너무 뜨겁고 저속 CPU로 판매합니다 (더 낮은 주파수는 열 발생이 적다는 의미입니다).

그리고 생산과 마케팅이 있으며, 그것은 더 엉망이됩니다.

클록 속도가 다른 변형이없는 이유는 무엇입니까? 즉. 2 개의 '큰'코어와 많은 작은 코어.

우리는하다. 휴대 전화와 같이 의미가있는 곳에서는 종종 코어 CPU가 느리고 (저전력) SoC가 몇 개 더 빠릅니다. 그러나 일반적인 데스크톱 PC에서는이 작업이 수행되지 않습니다. 설치가 훨씬 더 복잡하고 비용이 많이 들고 소모되는 배터리가 없습니다.


1
내가 지적한대로 "나는이 질문을 일반적인 요점으로-위에 나열된 CPU에 대해서는 구체적으로 묻지 않습니다."-각 아키텍처에서 두 가지 예를 들었습니다. 우리가 두 시나리오를 모두 큰 코어로, 그리고 두 개의 크고 작은 두 개로 취급한다면, 언급 한 모든 포인트가 두 경우 모두에 적용된다고 생각 합니다. 이론상 최대 단일 코어 속도, 칩 비닝, 사용하지 않을 때 다운 클로킹.
Jamie

단일 최대 속도 코어가 선택되지 않을 때 그다지 흥미롭지는 않습니다. 실제로 고속 코어를 선호하도록 스케줄러를 업데이트해야합니다.
Hennes

10

클록 속도가 다른 변형이없는 이유는 무엇입니까? 예를 들어, 두 개의 '큰'코어와 많은 작은 코어가 있습니다.

전력 소비에 대해 매우 염려하지 않는 한, 추가 코어와 관련된 모든 비용을 수용하고 해당 코어에서 최대한 많은 성능을 얻는 것은 의미가 없습니다. 최대 클럭 속도는 제조 공정에 의해 크게 결정되며, 전체 칩은 동일한 공정으로 만들어집니다. 그렇다면 일부 코어를 제조 공정이 지원하는 것보다 느리게 만드는 이점은 무엇입니까?

전력을 절약하기 위해 속도를 늦출 수있는 코어가 이미 있습니다. 최대 성능을 제한하는 요점은 무엇입니까?


2
이것이 내가 생각한 것입니다. 왜 엘리트가 될 수있을 때 일부 열등한 구성 요소를 의도적으로 사용합니까? +1.
MPW

1
@MPW 선택은 큰 코어를 생성 한 후 중립화하는 것이 아니라, 큰 코어와 몇 개의 크고 작은 코어 사이입니다. 단일 스레드 성능과 다중 스레드 성능이라는 두 가지 경쟁 시나리오가 있기 때문에 두 가지를 모두 극대화하지 않는 이유는 무엇입니까? 크고 작은 코어가 많은 칩을 제조 할 수 없다는 것을 알고 있습니까?
Jamie

@Jamie 몇 개의 크고 작은 코어가있는 칩을 제작할 수 있습니다. 그러나 더 작은 코어는 더 낮은 클럭 속도로 작동하지 않습니다.
David Schwartz

그들은 그런 식으로 설계된다면 ... 문제는 왜 그들이 기존의 제조 공정을 취하지 않고 그것을 중립화하지 않고 처음부터 그런 식으로 설계하지 않았는가하는 것입니다.
Jamie

@Jamie 나는 당신이 무슨 말을하는지 이해하지 못합니다. 전체 CPU는 동일한 제조 공정으로 이루어져야하며, 최대 클록 속도는 제조 공정의 특징입니다. 동일한 제조 수준에서 낮은 클럭 속도를 요구하는 코어는 일반적으로 복잡하고 더 많은 공간을 차지합니다. 그렇지 않으면 왜 낮은 클럭 속도가 필요합니까?
David Schwartz

9

클록 속도가 다른 변형이없는 이유는 무엇입니까? 예를 들어, 두 개의 '큰'코어와 많은 작은 코어가 있습니다.

공칭 클럭 속도는 오늘날 대부분의 대형 프로세서에 대해 너무 많은 의미가있는 것은 아닙니다. 다른 코어를 독립적으로 위아래로 클럭 할 수 있는지 묻습니다.

나는 다른 많은 대답에 놀랐습니다. 최신 프로세서가이를 수행 할 수 있습니다. 예를 들어 스마트 폰에서 CPU-Z를 열어서이를 테스트 할 수 있습니다. Google Pixel은 다른 속도로 다른 코어를 완벽하게 실행할 수 있습니다.

일반적으로 2.15Ghz이지만 두 개의 코어는 1.593Ghz이고 두 개의 코어는 1.132Ghz입니다.

실제로, 2009 년 주류 인텔 CPU는 다른 코어를 언더 클럭킹하면서 개별 코어를 높이고 TDP 예산 내에서 단일 코어 성능을 향상시키는 로직을 가지고 있습니다. http://www.anandtech.com/show/2832/4

"Favored Core"(Intel 마케팅 용어)가 포함 된 최신 Intel 프로세서에는 공장에서 각 코어가 특성화되어 있으며, 가장 빠른 코어는 추가 성능을 향상시킬 수 있습니다. http://www.anandtech.com/show/11550/the-intel -skylakex- 리뷰 코어 -i9-7900x-i7-7820x 및 i7-7800x 테스트 / 7

AMD의 불도저 칩에는 다음과 같은 기본 버전이 있습니다 : http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/4

AMD의 새로운 Ryzen 칩 은 여기에도 명시 적으로 명시되어 있지 않지만 아마도 이것을 가지고 있을 것입니다 : http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -on-1800x-1700x-and-1700 / 11


다른 질문에 대답하고 있습니다. 문제는 두 개의 큰 코어와 두 개의 큰 코어 및 많은 작은 코어에 관한 것입니다. 두 시나리오의 장점입니다. 두 상황 모두 수요에 따라 시계를 올리거나 내릴 수 있습니다.
Jamie

3
그게 내가 질문을 읽는 방법이 아닙니다. 이 질문은 "big"과 "small"이라는 단어를 사용하더라도 건축 적으로 다른 코어를 언급하지 않습니다. 클럭 속도에만 초점을 맞 춥니 다.
Grant Wu

8

현대적인 시스템에서 종종 이렇게 서로 다른 속도로 실행되는 모든 코어가 있습니다. 많이 사용되지 않는 코어를 클로킹하면 전력 사용량과 열 출력이 감소하며, "터보 부스트"와 같은 기능으로 인해 다른 코어가 유휴 상태 인 한 하나 또는 두 개의 코어가 훨씬 더 빠르게 실행될 수 있습니다. 전체 패키지 의 열 출력이 너무 높지 않습니다. 이러한 기능이있는 칩의 경우 목록에 표시되는 속도는 모든 코어에서 한 번에 얻을 수있는 최고 속도입니다. 그리고 왜 모든 코어의 최대 속도가 같을까요? 글쎄, 그것들은 모두 동일한 반도체 칩에 동일한 물리적 칩에 동일한 디자인을 가지고 있는데 왜 서로 달라야 하는가?

모든 코어가 동일한 이유는 한 지점에서 한 코어에서 실행중인 스레드가 다른 지점에서 다른 코어에서 실행을 시작하기 쉬워지기 때문입니다. 다른 곳에서 언급했듯이 동일한 코어의 원칙, 즉 ARM "big.LITTLE"CPU를 따르지 않는 일반적으로 사용되는 칩 이 있습니다. 제 생각에 "큰"코어와 "작은"코어의 가장 중요한 차이점은 클럭 속도가 아닙니다 ( "큰"코어는 더 높은 비용으로 클럭 당 더 많은 명령을 얻는 더 화려하고 넓으며 더 추론적인 코어 인 경향이 있습니다) "작은"코어는 ARM의 단일 문제, 순서가 낮은 저전력 루트에 더 가깝습니다.

또한 이기종 컴퓨팅 영역으로 나아가면서 "CPU"및 "GPU"코어가 동일한 칩에 통합되어있는 것이 일반적입니다. 이들은 완전히 다른 디자인을 가지고 있으며, 서로 다른 명령어 세트를 실행하며, 다르게 다루어지며 일반적으로 시계가 다르게 나타납니다.


7

빠른 단일 스레드 성능과 매우 높은 멀티 스레드 처리량은 Intel Xeon E5-2699v4 와 같은 CPU를 통해 얻을 수있는 것과 정확히 일치합니다 .

22 코어 브로드 웰입니다. 지속적인 클럭 속도는 모든 코어가 활성화 된 상태에서 2.2GHz (예 : 비디오 인코딩)이지만 단일 코어 최대 터보 는 3.6GHz입니다.

따라서 병렬 작업을 실행하는 동안 145W 전력 예산을 22 6.6W 코어로 사용합니다. 그러나 몇 개의 스레드만으로 작업을 실행하는 동안 동일한 전력 예산으로 몇 개의 코어가 최대 3.6GHz까지 터보 할 수 있습니다. ( 큰 Xeon에서 낮은 단일 코어 메모리와 L3 캐시 대역폭은 3.6GHz에서 데스크탑 쿼드 코어만큼 빠르게 실행되지 않을 수 있음을 의미합니다. 데스크탑 Intel CPU의 단일 코어는 더 많은 것을 사용할 수 있습니다. 총 메모리 대역폭.)

2.2GHz 정격 클록 속도는 열 제한으로 인해 매우 낮습니다. CPU의 코어 수가 많을수록 모두 활성화 될 때 실행 속도가 느려집니다. 이 효과는 질문에서 언급 한 4 및 8 코어 CPU에서 그리 크지 않습니다. 8은 코어가 많지 않고 전력 예산이 매우 높기 때문입니다. : 심지어 매니아 데스크탑 CPU는 눈에 띄게이 효과를 보여 인텔의 스카이 레이크-X i9-7900X는 기본 3.3GHz, 최대 터보 4.5GHz와 10c20t 부분입니다 . i7-6700k보다 훨씬 많은 싱글 코어 터보 헤드 룸입니다 (오버 클러킹없는 4.0GHz 지속 / 4.2GHz 터보).

DVFS (주파수 / 전압 스케일링)를 통해 동일한 코어가 광범위한 성능 / 효율 곡선에서 작동 할 수 있습니다. 또한 Skylake 전원 관리에 대한이 IDF2015 프레젠테이션을 참조하십시오. CPU가 효율적으로 수행 할 수있는 작업에 대한 흥미로운 세부 정보와 디자인 타임에 정적으로 또는 DVFS를 사용하여 즉시 성능과 효율성을 교환 할 수 있습니다.

스펙트럼의 다른 쪽 끝에서 Intel Core-M CPU는 4.5W 에서 1.2GHz와 같이 매우 낮은 지속 주파수를 갖지만 최대 2.9GHz까지 터보 할 수 있습니다. 여러 개의 코어가 활성화되면 거대한 Xeon과 마찬가지로 더 효율적인 클럭 속도로 코어를 실행합니다.

많은 이점을 얻기 위해 이기종 big.LITTLE 스타일 아키텍처가 필요하지 않습니다. ARM big.LITTLE의 작은 코어는 계산 작업에 적합하지 않은 매우 까다로운 순서의 코어입니다. 요점은 매우 낮은 전력으로 UI를 실행하는 것입니다. 비디오 인코딩이나 다른 심각한 숫자 처리에는 적합하지 않습니다. ( @ Lưu Vĩnh Phúc은 x86에 big.LITTLE이없는 이유에 대한 토론을 발견했습니다 . 기본적으로 초 저전력 초 저속 코어에 여분의 실리콘을 사용하는 것은 일반적인 데스크탑 / 노트북 사용에 가치가 없습니다.)


비디오 편집과 같은 응용 프로그램은 코어 수에 따라 결정됩니다. [2x 4.0 GHz + 4x 2.0 GHz가 4x 4GHz보다 멀티 스레드 워크로드에서 더 좋지 않을까요?]

이것이 당신의 주요 오해입니다. 더 많은 코어에 확산되는 경우 초당 동일한 총 클럭 틱 수가 더 유용하다고 생각하는 것 같습니다. 그것은 사실이 아닙니다. 더 좋아

cores * perf_per_core * (scaling efficiency)^cores

( perf_per_core3GHz Pentium4는 3GHz Skylake보다 클럭주기 당 작업이 훨씬 적기 때문에 클럭 속도와 동일하지 않습니다.)

더 중요한 것은 효율성이 1.0 인 경우는 매우 드 rare니다. 일부 난처한 병렬 작업은 거의 선형 적으로 확장됩니다 (예 : 여러 소스 파일 컴파일). 그러나 비디오 인코딩은 그렇지 않습니다 . x264의 경우 확장은 최대 몇 코어까지 훌륭하지만 코어가 많을수록 악화됩니다. 예를 들어 1에서 2로 이동하면 속도가 거의 두 배가되지만 32에서 64로 이동하면 일반적인 1080p 인코딩의 경우 훨씬 덜 도움이됩니다. 속도가 안정되는 지점은 설정에 따라 다릅니다. ( -preset veryslow각 프레임에 대해 더 많은 분석을 수행하고보다 많은 코어를 사용 중으로 유지할 수 있습니다 -preset fast).

매우 느린 코어가 많으면 x264의 단일 스레드 부분에 병목 현상이 발생합니다. (예 : 최종 CABAC 비트 스트림 인코딩. h.264는 gzip과 동일하며 병렬화되지 않습니다.) OS가 일정을 계획하는 방법을 알고 있거나 x264가 적절한 스레드를 빠른 코어).

x265는 분석이 더 많기 때문에 x264보다 많은 코어를 활용할 수 있으며 h.265의 WPP 설계는 더 많은 인코딩 및 디코딩 병렬 처리를 허용합니다. 그러나 1080p의 경우에도 어느 시점에서 악용 할 병렬 처리가 부족합니다.


인코딩 할 비디오가 여러 개인 경우 L3 캐시 용량 및 대역폭 및 메모리 대역폭과 같은 공유 리소스에 대한 경쟁을 제외하고 여러 비디오를 병렬로 잘 수행합니다. 더 적은 코어는 동일한 양의 L3 캐시로 더 많은 혜택을 얻을 수 있습니다. 한 번에 문제의 많은 다른 부분을 처리 할 필요가 없기 때문입니다.


4

서로 다른 독립적 인 속도로 실행되는 서로 다른 부품을 가진 컴퓨터를 설계 할 수는 있지만, 자원을 중재하려면 먼저 어떤 요청을 먼저 처리해야하는지 결정해야합니다. . 그러한 것들을 대부분 결정하는 것은 매우 간단합니다. "퀴즈 버저"회로와 같은 것은 두 개의 트랜지스터로 구현 될 수 있습니다. 문제는 신뢰할 수있는 빠른 결정을 내린다는 것입니다분명하다. 많은 경우에이를 수행 할 수있는 실질적인 유일한 방법은 "동기화 기"라고하는 결정을 사용하는 것입니다. "동기화 기"는 모호성을 피할 수 있지만 2 사이클 지연을 유발합니다. 누가 중재에서 이겼는지를 결정하기 위해 모든 작업에서 2 사이클 지연을 허용하려는 경우 별도의 클럭으로 두 시스템간에 안정적으로 중재하는 캐싱 컨트롤러를 설계 할 수 있습니다. 그러나 경합이없는 요청이라도 여전히 2 사이클 지연이 있기 때문에 캐시가 경합이없는 요청에 즉시 응답하기를 원한다면 이러한 접근 방식은 유용하지 않을 것입니다.

공통 클럭으로 모든 것을 실행하면 동기화가 필요하지 않으므로 클럭 도메인간에 정보를 전달하거나 신호를 제어해야 할 때마다 2주기 통신 지연이 발생하지 않습니다.


4

데스크톱 컴퓨터는 이미이 작업을 수행합니다.

그것들은 한 번에 1-72 스레드가 활성화 된 CPU (들)와 16-7168 컴퓨팅 장치를 가진 GPU (들)을 가지고 있습니다.

그래픽은 대규모 병렬 작업이 효율적이라는 것을 발견 한 작업의 예입니다. GPU는 그래픽을 원하는 종류의 작업을 수행하도록 최적화되어 있지만 이에 국한되지는 않습니다.

이것은 몇 개의 큰 코어와 많은 작은 코어 가있는 컴퓨터입니다 .

일반적으로 X FLOPS에서 하나의 코어를 X / 2 FLOPS에서 3 개의 코어로 거래하는 것은 가치가 없습니다. 그러나 X FLOPS에서 하나의 코어를 X / 5 FLOPS에서 100 개의 코어로 거래하는 것은 그만한 가치가 있습니다.

이를 위해 프로그래밍 할 때 CPU와 GPU에 대해 매우 다른 코드를 생성합니다. GPU가 GPU에서 가장 잘 수행되는 작업을 가져오고 CPU가 CPU에서 가장 잘 수행되는 작업을 얻도록 워크로드를 나누기 위해 많은 작업이 수행됩니다.

대규모 병렬 코드가 제대로 작성되지 않기 때문에 CPU 용 코드를 작성하는 것이 훨씬 쉽습니다. 따라서 대가가 때만 멀티 코어 상황에서 단일 코어 성능을 거래 할 가치가 있습니다. GPU를 올바르게 사용하면 큰 효과를 볼 수 있습니다.

이제 모바일 장치는 다른 이유로이 작업을 수행합니다. 저전력 코어는 상당히 느리지 만 컴퓨팅 유닛 당 훨씬 적은 전력을 사용합니다. 이를 통해 CPU 집약적 작업을 수행하지 않을 때 배터리 수명을 훨씬 연장 할 수 있습니다. 여기에 우리는 다른 종류의 "큰 보상"을 가지고 있습니다. 성능이 아니라 전력 효율. OS와 응용 프로그램 작성자가 제대로 작동하려면 여전히 많은 작업이 필요합니다. 큰 보상만으로도 가치가있었습니다.


-1

일반적인 시스템이 같은 속도로 코어를 갖는 이유는 간단한 수학 문제입니다. 단일 상수 세트 (확장 가능 = 여러 단위로 곱할 수 있음)를 기반으로하는 입력 및 출력 타이밍 (최적화)

그리고 누군가는 모바일 장치가 다른 속도의 멀티 CPU를 가지고 있다고 말했습니다. 그건 사실이 아닙니다. 중앙 처리 장치가 아닌 경우 중앙 처리 장치가 아닙니다. 제조업체가 말한 내용과 관계없이 이 경우 [CPU가 아님] 단지 "지원 패키지"입니다.


-10

OP가 기본 전자 장치를 이해한다고 생각하지 않습니다. 모든 컴퓨터에는 시계가 작동하기 위해 한 가지가 필요합니다. 내부 클럭에 의해 생성 된 클럭 사이클은 모든 데이터의 이동을위한 메트로놈입니다. 동기 성을 달성하려면 모든 작업을 공통 클럭에 연결해야합니다. 이는 전체 네트워크뿐만 아니라 격리 된 컴퓨터에서 내부 데이터를 실행하는 경우에도 마찬가지입니다.

다른 주파수에서 코어를 실행하여 CPU에서 코어를 분리하려면 그러한 플랫폼을 설계해야합니다. 그러나 각 개별 코어를 자체 격리 된 마더 보드 기능 서브 세트에 연결하는 마더 보드 솔루션을 엔지니어링해야합니다. 쿼드 코어 컴퓨터 대신 4 대의 개별 컴퓨터가 남아 있습니다.

또는 다른 사람이 지적했듯이 개별적으로 코어 주파수를 조정하는 코드를 커널에 추가 할 수 있습니다. 그러나 성능이 저하 될 수 있습니다. 속도 나 전력 효율성은 있지만 둘 다 가질 수는 없습니다.


1
나는 내 질문이 아닙니다. 인텔 i5 7600과 i5 7600k를 비교하면 기본 클럭이 100MHz이고 차이가 핵심 비율이라는 것을 알 수 있습니다. 따라서 기본 클럭이 100mhz이지만 코어 비율이 다른 두 개의 코어를 가질 수 있습니다.이 시나리오는 동기 요구 사항을 위반합니까?
Jamie

4
예, 너무 지나치게 단순화되었습니다. 모든 작업이 동일한 클럭에 묶여 있어야한다는 것은 사실이 아니며 , 많은 클럭 도메인이 있으며 동일한 속도로 다른 코어를 실행할 수 있습니다. 버스 시계는 내부 시계와 같지 않습니다.
pjc50

11
최신 칩에는 이미 여러 클럭 도메인이 있습니다 (저렴하고 저렴한 마이크로 컨트롤러의 RTC조차도 별도의 32.7kHz 도메인에서 실행 됨). 클럭 도메인간에 동기화하면됩니다. 공통 클럭으로도 2, 4, 8 등으로 나눌 수 있습니다.
Michael

1
모두 사실입니다. 그러나 여전히 운영 효율성이 떨어집니다. 그리고 그것은 항상 성과와 관련된 목표입니다. 그게 내 요점이었다. 물론 할 수 있습니다. 그러나 성능에 타격을 줄 것입니다.
RyRoUK

"성능 감소"– 무엇에 비해? 동일한 클럭으로 n 개의 프로세서를 실행하는 기본 상태를 가정합니다. 반드시 그런 것은 아닙니다. 프로세서 X + 프로세서 Y는 정확히 프로세서 Y가 무엇이든 프로세서 X 단독보다 강력하고 유연한 솔루션입니다.
hmijail 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.