하이퍼 스레딩의 성능 영향


6

방금 읽은 Heise 온라인 기사 하이퍼 - 스레딩은 코어의 두 번째 스레드를 사용하지는 않지만 단일 스레드 프로그램의 속도를 늦추 게한다고 주장했다. 나. BIOS에서 HT를 비활성화하면 단일 스레드 응용 프로그램이 약간 더 빠르게 실행됩니다.

이것이 사실입니까, 아니면 측정 오류입니까? 벤치마킹에 관한 정보를 가지고있는 사람이 있습니까?

답변:


6

그것은 아마도 측정 오류가 아닙니다. 사실 게임의 성능에 대한 영원한 논쟁입니다. 대개 싱글 코어 성능이 최대가되도록 설계 되었기 때문입니다. 인텔의이 기사에 따르면 인텔의 기사 하이퍼 스레딩은 다음과 같습니다.

인텔의 하이퍼 스레딩 기술은 하나의 물리적 프로세서   패키지는 두 개의 분리 된 논리 프로세서로 인식되어야합니다.   운영 체제. 하이퍼 스레딩에 사용할 수있는 프로세서 리소스   기술은 대부분의 자원을 복제, 태그 지정 또는 공유합니다. 나누는   리소스를 사용하면 프로세서를보다 효율적으로 사용할 수 있습니다.   5 % 미만의 다이 크기 및 전력으로 상당한 성능 향상   단일 프로세서 패키지에 비해 소비가 증가합니다. 하나,   하이퍼 스레딩 기술은 성능 기대치를 가질 수 없습니다   다중 프로세서의 경우와 동일합니다. 모든 프로세서   리소스가 복제됩니다.

표시된 표에서 Cinebench는 프로세서의 단일 코어를 테스트합니다. 즉, HT (HyperThreading)는 하나의 물리적 코어 (테스트에서 평가되는 코어)에 대해 두 개의 가상 코어를 가능하게합니다. 테스트가 분할 될 필요가없는 단일 프로세스를 실행하는 것을 기반으로하는 경우 두 코어간에 리소스를 공유하면 테스트 결과가 저하됩니다 (활성 상태 일 때 발생하는 균형이 비활성화 될 때 발생하지 않기 때문에 Windows 및 Cinebench는 단일 프로세서).

다른 테스트를 추가하면 Tom 's Hardware의 표시된 테이블과 비교해보십시오 (Cinebench R11.5).

그리고 멀티 스레드 :

단일 스레드 성능에 대한 결과는 그래서 귀하의 페이지에 귀하가 보여 주신 것과는 다릅니다. 별도의 실행 상태를 가진 두 개의 논리 프로세서가 시스템 버스 또는 캐시와 같은 리소스를 공유하므로 항상 작업을 병렬 처리 할 수는 없으며 때로는 발생할 수 있다는 점에 유의해야합니다 스레드 실속 이는 단일 스레드 스트레스 테스트에서 리소스 공유가 약간의 성능 결과를 제공하는 일부 스레드를 큐잉하는 경향이 있음을 의미합니다.

또한 여기에서 다른 게임의 다양한 시나리오가 overclock.net 결과가 어떤 경우에는 성능에 상처를 입히는 것으로 나타났습니다. 나는 "HT가 단일 스레드 성능을 향상시키지 못하도록"하지만 "게임은 최대 4 코어 용으로 최적화되었습니다"또는 "HT를 이용하지 않는"것으로 간주되어야한다고 생각하지 않습니다. 첫 번째 가정은 다음과 같은 몇 가지 기사를 읽음으로써 검증 될 수 있습니다. HT가 i7과 비교할 때 i3의 단일 코어 성능이 어떻게 성능을 향상시키는지를 보여줍니다.

결론적으로, 우리는 HyperThreading을 비활성화하면 단일 스레드 성능에 비해 최소한의 개선 만이있는 경우가 있지만 전체적인 비용 편익 비율로 인해 HyperThreading을 사용하지 않도록 설정할 수는없는 경우가 있음을 알았습니다. OS와 소프트웨어가 HT 아키텍쳐로 설계된 한, OS를 사용하지 않는 것은 가치가 없습니다.


업데이트 된 답변.
jgorosdev

2

네, 분명해야합니다. HT를 활성화 할 때 두 배의 코어를 광고합니다.

이것은 대부분의 프로그램이 충분히 멀티 스레드가 아니기 때문에 더 많은 병렬 처리가 가능하도록 설계되었습니다. 그러나 프로그램을 완전히 멀티 스레드하면, 리소스가 과도하게 커지고 스레드 당 여분의 오버 헤드로 인해 성능이 저하됩니다. 그러나 작은 수의 코어 및 프로세서에서 100 % CPU를 사용하는 것보다 응용 프로그램을 사용하면 HT를 사용하면 성능이 약 2-3 % 떨어집니다.

이제 격리 된 단일 스레드 프로그램의 경우, 프로그램 자체가 자원을 과도하게 사용할 수 없기 때문에 문제가 아닌 것처럼 들리지만 OS가 여분의 코어가 있다고 생각하고 리소스를 과도하게 사용할 수 있다고 생각한다는 것을 기억하십시오. 여전히 사용되지 않는 코어가 있더라도 스레드를 최적으로 배치하지 않고 단일 실제 코어에 고정시키는 스케줄러에 의한 오버 헤드를 측정 할 수 있습니다.

이러한 관찰은 10 년 이상의 실시간 소프트웨어 개발 및 벤치 마크를 기반으로합니다. 비록 시스템의 성능을 극대화하려고 시도 할 때 매우 작은 차이는 있지만 분명히 관찰 가능한 차이가 있습니다.


0

벤치 마크는 없지만 다음에 기반하여 사실 일 수 있습니다.

"하이퍼 스레딩"에 관한 Wikipedia 기사에서

그러나 프로세서의 모든 관심을 필요로하는 두 개의 프로그램을 실행할 때 Hyper-Threading Technology가 켜져있을 때 프로그램 중 하나 또는 둘 모두가 약간 느려지는 것처럼 보일 수 있습니다. 이는 Pentium 4의 재생 시스템이 중요한 실행 리소스를 묶어서 두 프로그램간에 프로세서 리소스를 균등하게하기 때문에 실행 시간이 다양 해졌습니다.

이것은 SMT가 비활성화되었을 때 적용되지 않는 것입니다. OS는 하드웨어 쓰레드가 아닌 코어 사이에 스레드를 배포합니다.

최신 Intel (및 AMD) CPU는 " 투기 적 실행 "여기서 실제 명령 포인터 앞에 명령을 실제로 가져 와서 사전 실행하여 실제 실행이 중단 될 때 결과를 준비합니다.

예기치 않은 가지와 인터럽트 같은 것들은 CPU가 그 투기를 버리고 다시 시작해야하며 SMT가 발생할 수있는 더 많은 상황을 소개하는 것처럼 들립니다. 많은 조건 (즉, GPU 작업)을 가지지 않거나 처리하지 않는 "직선 작업"의 경우 이점이 있습니다.


0

HT를 활성화하면 CPU가 두 개의 논리적 CPU로 나뉘며 두 CPU가 모두 단일 코어보다 느려지지만 결합 된 전력은 100 %를 넘습니다. 펜티엄 4 일 동안 한 CPU 코어를 두 개의 논리적 코어 (약 55 %의 속도로)로 나눌 수있었습니다. 하이퍼 스레딩이 코어 아키텍처에 다시 추가되어 55 % 이상 향상되었습니다.

문제는 운영 체제가 논리적 코어를 물리적 코어로 취급하는 경향이 있으므로 우선 순위가 높은 작업이 동일한 CPU 코어에서 우선 순위가 낮은 작업과 나란히 실행될 수 있다는 것입니다. 이제는 우선 순위 차이로 인한 것이 아니더라도 두 스레드 또는 작업 모두 동일한 CPU주의를 얻습니다. 벤치 마크를 실행할 때 OS는 논리적 코어에서 우선 순위가 낮은 작업을 예약하고 벤치 마크 프로그램을 느리게 진행시킬 수 있습니다. 물론 하나의 논리 코어가 유휴 상태가되면 HT가 효과적으로 비활성화되고 나머지 코어는 100 % 속도로 돌아갑니다.

CPU 사용량이 많은 화면 보호기가있는 바쁜 서버를 상상해보십시오. 화면 보호기가 켜져 낮은 우선 순위로 설정 되더라도 CPU 코어를 두 부분으로 나눠서 65 % 나 빠릅니다. 이제 서버는 사용 가능한 CPU 코어의 65 % 만 가지고 있습니다.

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