하이퍼 스레드는 얼마나 많은 속도를 줍니까? (이론에 의하면)


38

하이퍼 스레드 CPU에서 이론적 인 속도 향상이 무엇인지 궁금합니다. 100 % 병렬화와 통신 0을 가정하면 2 개의 CPU가 2의 속도를 향상시킵니다. 하이퍼 스레드 CPU는 어떻습니까?

답변:


59

다른 사람들이 말했듯이, 이것은 전적으로 과제에 달려 있습니다.

이를 설명하기 위해 실제 벤치 마크를 살펴 보겠습니다.

여기에 이미지 설명을 입력하십시오

이것은 내 석사 논문 (현재 온라인에서 사용할 수 없음)에서 가져 왔습니다.

문자열 매칭 알고리즘 의 상대적 속도 향상 1 을 보여줍니다 (모든 색상은 다른 알고리즘입니다). 알고리즘은 하이퍼 스레딩이있는 두 개의 Intel Xeon X5550 쿼드 코어 프로세서에서 실행되었습니다. 다시 말해, 총 8 개의 코어가 있으며 각 코어는 2 개의 하드웨어 스레드 (= "하이퍼 스레드")를 실행할 수 있습니다. 따라서 벤치 마크는 최대 16 개의 스레드 (이 구성이 실행할 수있는 최대 동시 스레드 수)로 속도 향상을 테스트합니다.

4 가지 알고리즘 중 2 개 (파란색 및 회색)는 전체 범위에 걸쳐 거의 선형 적으로 확장됩니다. 즉, 하이퍼 스레딩의 이점이 있습니다.

다른 두 가지 알고리즘 (빨간색과 초록색, 색맹 인에게는 불행한 선택)은 최대 8 개의 스레드까지 선형으로 확장됩니다. 그 후 그들은 정체되었습니다. 이는 이러한 알고리즘이 하이퍼 스레딩의 이점을 얻지 못한다는 것을 분명히 나타냅니다.

이유? 이 특별한 경우에는 메모리로드입니다. 처음 두 알고리즘은 계산에 더 많은 메모리가 필요하며 주 메모리 버스의 성능에 의해 제한됩니다. 이는 한 하드웨어 스레드가 메모리를 기다리는 동안 다른 하드웨어 스레드는 계속 실행될 수 있음을 의미합니다. 하드웨어 스레드의 주요 사용 사례.

다른 알고리즘은 더 적은 메모리를 필요로하며 버스를 기다릴 필요가 없습니다. 그것들은 거의 전적으로 계산되고 정수 연산 (사실 비트 연산)만을 사용합니다. 따라서 병렬 실행 가능성이 없으며 병렬 명령 파이프 라인의 이점이 없습니다.


1 즉, 4의 속도 향상 요소는 알고리즘이 하나의 스레드로 실행되는 것처럼 4 배 빠르게 실행됨을 의미합니다. 정의에 따라 한 스레드에서 실행되는 모든 알고리즘의 상대 속도 향상 계수는 1입니다.


가장 좋은 답변 :-)
Sklivvz

1
코어 수에 대한 실제 알고리즘 속도는 얼마입니까? 즉,이 테스트에서 가장 빠른 알고리즘의 속도 이득은 무엇입니까? 그냥 궁금해 :).
crazy2be

@ crazy2be 파란 선 ( Horspool의 알고리즘 )의 경우, 실행 시간은 16 개의 스레드에서 4.16 초에서 0.35 초로 감소합니다. 따라서 속도는 11.74입니다. 그러나 그것은 하이퍼 스레딩입니다. 코어 수에 대해 플롯하면이 알고리즘의 속도 향상은 8 코어에서 7.17입니다.
Konrad Rudolph

5
이 답변의 유일한 문제는 한 번만 투표 할 수 있다는 것입니다. 주관적인 질문에 대한 엄청나게 객관적인 답변;)
Journeyman Geek


20

문제는 작업에 따라 다릅니다.

하이퍼 스레딩의 기본 개념은 기본적으로 모든 최신 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에 사용할 수있는 실행 단위에 따라 다릅니다.

계산의 일부 '클래스'는 (일반적으로) 일반적으로 도움이된다고합니다. 그러나 단단하고 빠른 규칙은 없으며 일부 수업의 경우 속도가 느려집니다.


2
"1.7 시간 속도 향상"과 같은 것을 찾고 있었지만이 문제에 대해 흑백 모양을 두드리지 않기 때문에이 대답은 매우 좋습니다.
Mikhail

@ Mikhail : 요점은 간단한 요소가 없다는 것입니다-그것은 종종 인생에서와 같이 다릅니다 :-).
sleske

4
요점이 맞습니다. 그러나 한 가지 문제는 단일 코어가 다중 코어보다 하이퍼 스레딩의 이점을 더 많이 누릴 수있는 선험적 인 이유가 없다는 것입니다. 잘못된 일을 위해서도 이윤도 없습니다. 올바른 작업을 위해서는 두 가지 모두 동일한 요소로 이익을 얻습니다.
Konrad Rudolph

@ Konrad : 내가 얻는 요점은 하나의 코어와 두 코어의 차이가 4와 8 또는 2와 4의 차이보다 더 가치가있을 수 있다고 생각합니다. 조금 더.
geoffc

“나쁜 스레드 응용 프로그램의 경우”– 그것은 중요한 부분입니다. 그러나 현실적으로 대부분의 응용 프로그램의 스레딩 지원은 열악하므로 한 가지 중요한 점이 있습니다.
Konrad Rudolph

5

나는 실제로 하이퍼 스레딩 기능이있는 Core i7 CPU (4 코어)를 가지고 있으며 비디오 트랜스 코딩으로 약간의 재생이 있었기 때문에 geoffc의 답변 에 추가 할 일화적인 증거가 있습니다. 효과적으로 시스템을 완전히로드 할 수있는 병렬 처리.

일반적으로 4 개의 하이퍼 스레딩 된 "추가"코어를 사용하여 작업에 할당 된 CPU 수에 대한 경험은 약 1 개의 추가 CPU 처리 능력에 해당합니다. 여분의 "하이퍼 스레드"코어는 3 개에서 4 개의 "실제"코어로가는 것과 동일한 양의 사용 가능한 처리 능력을 추가했습니다.

모든 인코딩 스레드가 CPU에서 동일한 리소스에 대해 경쟁 할 가능성이 있기 때문에 이것은 공정한 테스트가 아니라는 점을 감안할 때 전반적인 처리 능력이 적어도 약간 향상되었습니다.

하이퍼 스레딩을 사용하거나 사용하지 않는 시스템에서 몇 가지 다른 정수 / 부동 점 / SSE 유형 테스트를 동시에 실행하고 제어 된 시스템에서 사용할 수있는 처리 능력을 확인하는 것이 실제로 도움이되는 유일한 방법은 환경.


1
분명한 점은 응용 프로그램에 따라 다릅니다. 코어 0과 코어 0-h는 느린 RAM을 사용하지 않고 동일한 캐시를 통해 통신하기 때문에 높은 통신 컴퓨팅이 가속화 될 수 있다고 확신합니다.
Mikhail

1
@ Mikhail, 문제는 두 스레드가 많은 양의 처리 능력을 필요로하는 경우 동일한 리소스에 대해 경쟁하고 CPU 공유 L3 캐시 (i7에는 L1 및 L2 캐시가 있음)를 통해 통신하는 것이 훨씬 더 나을 것입니다 코어 및 공유 L3 캐시) 또는 시스템 메모리 및 작업을 개별적으로 수행합니다. 그것은 모두 거대한 스윙과 로터리 운동입니다 ...
Mokubai

3

다른 사람들이 말했듯이 CPU와 워크로드에 많이 의존합니다.

인텔은 말한다 :

하이퍼 스레딩 기술이 적용된 인텔 ® 제온 ® 프로세서 MP에서 측정 된 성능은이 기술에 대한 일반적인 서버 응용 프로그램 벤치 마크에서 최대 30 %의 성능 향상을 보여줍니다

(이것은 약간 보수적 인 것처럼 보입니다.)

그리고 여기에 더 많은 숫자가 있는 긴 종이 (아직 읽지 않은 종이)가 있습니다 . 그 종이에서 한 가지 흥미로운-데려가는 하이퍼 스레딩이 엷게 할 수있다 느리게 몇 가지 작업.

AMD의 불도저 아키텍처는 흥미로울 수 있습니다 . 각 코어를 효과적으로 1.5 코어로 설명합니다. 성능에 얼마나 자신감이 있는지에 따라 일종의 극단적 인 하이퍼 스레딩 또는 하위 표준 멀티 코어입니다. 이 부분의 숫자는 주석 속도가 0.5x에서 1.5x 사이임을 나타냅니다.

마지막으로 성능도 운영 체제에 따라 다릅니다. OS는 아마도 CPU로 가장 한 하이퍼 스레드보다 우선적으로 프로세스를 실제 CPU로 보냅니다 . 그렇지 않으면 듀얼 코어 시스템에서 유휴 CPU 1 개와 2 개의 스레드 스 래싱이있는 매우 바쁜 코어가있을 수 있습니다. 물론 이것은 모든 최신 OS가 적합하게 Windows 2000에서 발생했다는 것을 기억합니다.


1
OS는 스레드가 서로
Mikhail
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.