답변:
다른 사람들이 말했듯이, 이것은 전적으로 과제에 달려 있습니다.
이를 설명하기 위해 실제 벤치 마크를 살펴 보겠습니다.
이것은 내 석사 논문 (현재 온라인에서 사용할 수 없음)에서 가져 왔습니다.
문자열 매칭 알고리즘 의 상대적 속도 향상 1 을 보여줍니다 (모든 색상은 다른 알고리즘입니다). 알고리즘은 하이퍼 스레딩이있는 두 개의 Intel Xeon X5550 쿼드 코어 프로세서에서 실행되었습니다. 다시 말해, 총 8 개의 코어가 있으며 각 코어는 2 개의 하드웨어 스레드 (= "하이퍼 스레드")를 실행할 수 있습니다. 따라서 벤치 마크는 최대 16 개의 스레드 (이 구성이 실행할 수있는 최대 동시 스레드 수)로 속도 향상을 테스트합니다.
4 가지 알고리즘 중 2 개 (파란색 및 회색)는 전체 범위에 걸쳐 거의 선형 적으로 확장됩니다. 즉, 하이퍼 스레딩의 이점이 있습니다.
다른 두 가지 알고리즘 (빨간색과 초록색, 색맹 인에게는 불행한 선택)은 최대 8 개의 스레드까지 선형으로 확장됩니다. 그 후 그들은 정체되었습니다. 이는 이러한 알고리즘이 하이퍼 스레딩의 이점을 얻지 못한다는 것을 분명히 나타냅니다.
이유? 이 특별한 경우에는 메모리로드입니다. 처음 두 알고리즘은 계산에 더 많은 메모리가 필요하며 주 메모리 버스의 성능에 의해 제한됩니다. 이는 한 하드웨어 스레드가 메모리를 기다리는 동안 다른 하드웨어 스레드는 계속 실행될 수 있음을 의미합니다. 하드웨어 스레드의 주요 사용 사례.
다른 알고리즘은 더 적은 메모리를 필요로하며 버스를 기다릴 필요가 없습니다. 그것들은 거의 전적으로 계산되고 정수 연산 (사실 비트 연산)만을 사용합니다. 따라서 병렬 실행 가능성이 없으며 병렬 명령 파이프 라인의 이점이 없습니다.
1 즉, 4의 속도 향상 요소는 알고리즘이 하나의 스레드로 실행되는 것처럼 4 배 빠르게 실행됨을 의미합니다. 정의에 따라 한 스레드에서 실행되는 모든 알고리즘의 상대 속도 향상 계수는 1입니다.
문제는 작업에 따라 다릅니다.
하이퍼 스레딩의 기본 개념은 기본적으로 모든 최신 CPU에 둘 이상의 실행 문제가 있다는 것입니다. 일반적으로 십여 개 정도에 가깝습니다. Integer, 부동 소수점, SSE / MMX / Streaming (오늘 뭐라고하더라도)으로 구분됩니다.
또한 각 장치의 속도가 다릅니다. 즉, 무언가를 처리하는 데 정수 수학 단위 3주기가 필요할 수 있지만 64 비트 부동 소수점 나누기는 7주기가 걸릴 수 있습니다. (이것들은 아무것도 근거하지 않은 신화적인 숫자입니다).
비 순차적 실행은 다양한 단위를 가능한 한 많이 유지하는 데 도움이됩니다.
그러나 모든 단일 작업이 모든 단일 실행 단위를 매 순간 사용하지는 않습니다. 스레드를 분할하지 않아도 완전히 도움이 될 수 있습니다.
따라서 이론은 두 번째 CPU가 있다고 가정하여 다른 스레드가 실행될 수 있으며 실행 코드를 사용하지 않는 사용 가능한 실행 단위 (98 % SSE / MMX 항목)를 사용하여 다른 스레드가 실행될 수 있으며 int 및 float 단위는 완전히 일부 물건을 제외하고 유휴 상태입니다.
나에게 이것은 단일 CPU 세계에서 더 의미가 있습니다. 두 번째 CPU를 가짜로 만들면이 가짜 두 번째 CPU를 처리하기 위해 추가 코딩이 거의없는 스레드가 임계 값을보다 쉽게 넘어갈 수 있습니다.
6/8/12/16 CPU를 가진 3/4/6/8 코어 세계에서 도움이 되나요? 던노 많이 요? 진행중인 작업에 따라 다릅니다.
따라서 실제로 질문에 대답하기 위해서는 프로세스의 작업, 사용중인 실행 단위 및 CPU의 유휴 / 사용되지 않고 두 번째 가짜 CPU에 사용할 수있는 실행 단위에 따라 다릅니다.
계산의 일부 '클래스'는 (일반적으로) 일반적으로 도움이된다고합니다. 그러나 단단하고 빠른 규칙은 없으며 일부 수업의 경우 속도가 느려집니다.
나는 실제로 하이퍼 스레딩 기능이있는 Core i7 CPU (4 코어)를 가지고 있으며 비디오 트랜스 코딩으로 약간의 재생이 있었기 때문에 geoffc의 답변 에 추가 할 일화적인 증거가 있습니다. 효과적으로 시스템을 완전히로드 할 수있는 병렬 처리.
일반적으로 4 개의 하이퍼 스레딩 된 "추가"코어를 사용하여 작업에 할당 된 CPU 수에 대한 경험은 약 1 개의 추가 CPU 처리 능력에 해당합니다. 여분의 "하이퍼 스레드"코어는 3 개에서 4 개의 "실제"코어로가는 것과 동일한 양의 사용 가능한 처리 능력을 추가했습니다.
모든 인코딩 스레드가 CPU에서 동일한 리소스에 대해 경쟁 할 가능성이 있기 때문에 이것은 공정한 테스트가 아니라는 점을 감안할 때 전반적인 처리 능력이 적어도 약간 향상되었습니다.
하이퍼 스레딩을 사용하거나 사용하지 않는 시스템에서 몇 가지 다른 정수 / 부동 점 / SSE 유형 테스트를 동시에 실행하고 제어 된 시스템에서 사용할 수있는 처리 능력을 확인하는 것이 실제로 도움이되는 유일한 방법은 환경.
다른 사람들이 말했듯이 CPU와 워크로드에 많이 의존합니다.
인텔은 말한다 :
하이퍼 스레딩 기술이 적용된 인텔 ® 제온 ® 프로세서 MP에서 측정 된 성능은이 기술에 대한 일반적인 서버 응용 프로그램 벤치 마크에서 최대 30 %의 성능 향상을 보여줍니다
(이것은 약간 보수적 인 것처럼 보입니다.)
그리고 여기에 더 많은 숫자가 있는 더 긴 종이 (아직 읽지 않은 종이)가 있습니다 . 그 종이에서 한 가지 흥미로운-데려가는 하이퍼 스레딩이 엷게 할 수있다 느리게 몇 가지 작업.
AMD의 불도저 아키텍처는 흥미로울 수 있습니다 . 각 코어를 효과적으로 1.5 코어로 설명합니다. 성능에 얼마나 자신감이 있는지에 따라 일종의 극단적 인 하이퍼 스레딩 또는 하위 표준 멀티 코어입니다. 이 부분의 숫자는 주석 속도가 0.5x에서 1.5x 사이임을 나타냅니다.
마지막으로 성능도 운영 체제에 따라 다릅니다. OS는 아마도 CPU로 가장 한 하이퍼 스레드보다 우선적으로 프로세스를 실제 CPU로 보냅니다 . 그렇지 않으면 듀얼 코어 시스템에서 유휴 CPU 1 개와 2 개의 스레드 스 래싱이있는 매우 바쁜 코어가있을 수 있습니다. 물론 이것은 모든 최신 OS가 적합하게 Windows 2000에서 발생했다는 것을 기억합니다.