문제

SSE 레지스터는 논리 프로세서 (하이퍼 스레딩)간에 공유 또는 복제됩니까? 정상적인 프로그램과 같은 SSE 무거운 프로그램에 대한 병렬화로부터 동일한 종류의 속도를 기대할 수 있습니까 (하이퍼 스레딩이있는 프로세서의 Intel은 30%를 주장)?

도움이 되었습니까?

해결책

하이퍼 스레딩 프로세서가 스레드간에 레지스터 파일을 공유하거나 두 개의 다른 것들이 있다면 인텔의 문서에서 나에게 불분명합니다 (그렇지 않으면 HT 스레드 사이의 컨텍스트 스위치 시간이 상당히 높기 때문에 실제로 뚜렷하다고 생각합니다. 추측).

속도에 관해서는 - 지침 믹스 및 스케줄링에 따라 다릅니다. HT CPU에는 추가 실행 리소스 (ALUS,로드/스토어 단위 등)가 없으며, 성능 향상은 일반적인 코드, 특히 현대 프로세서에서 합리적인 금액을 소비하기 때문에 해당 리소스의 활용도로 인한 것입니다. 실행이 계속되기 전에 메모리 부하와 매장이 완료되기를 기다리는 시간이 차단되었습니다. HT는 이러한 하중과 상점을 인터리브 할 수 있도록하여 한 스레드가 읽기에 실속 될 수 있고 다른 스레드는 전환하고 이전에 유휴 상태였던 실행 자원을 사용하여 시작할 수 있습니다.

Multithreading A SSE 프로그램에서 볼 수있는 성능 증가는 Memory Ops 대 산술 작전의 비율에 따라 다를 것입니다. 예를 들어, SSE 프로그램이 메모리에서 4 개의 SSE 레지스터를로드하고, 10,000 SSE 작업을 수행 한 다음 4 개의 레지스터를 작성하면 HT에서 메모리 액세스를 중첩 할 수있는 많은 이점을 볼 수 없을 것입니다. 프로그램 런타임의 99%가 SIMD ALUS에서 메모리 액세스가 아닌 SIMD ALUS에서 사용됩니다.

반면에 프로그램이 매우 빠른 경우, 멀티 스레딩 프로그램은 멀티 코어 프로세서에서 성능을 크게 향상시킬 수 있으며,이 경우 코드가 전체 실행 자원에 액세스 할 수 있기 때문에 30% 개선보다 훨씬 나을 수 있습니다. 한 번에 여러 코어.

다른 팁

그것들은 논리적으로 복제되어 있습니다 - 각 스레드는 자체 상태를 얻습니다. 물리적으로 공유 될 수 있습니다. 하이퍼 스레딩 구현에 따라 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top