문제

나는 새로운 CPU의 일부에 대한 문헌에서 인텔 Xeon "Nehalem-Ex" 8 개의 코어와 16 개의 스레드가 있습니다. 그들은 여기서 무엇에 대해 이야기하고 있습니까? 나는 이것에 대한 언급을 참조하여 SPARC도 언급했다. 확실히 이것은 코드로 스폰 된 논리적 스레드가 아니십니까? 이 하이퍼 스레딩이 변경 되었습니까?

도움이 되었습니까?

해결책

예, 네 헤렘 기반 프로세서 구현 하이퍼 스레딩.

당신이 언급 한 새로운 Nehalem-Ex에는 8 개의 물리적 코어가 있으며 각 코어는 총 16 개의 논리적 코어를위한 2 개의 논리적 코어로 볼 수 있으며, 단일 프로세서에서 16 개의 응용 프로그램 스레드를 실행할 수 있습니다.

이것은 하이퍼 스레딩 지원 Pentium 4 프로세서 및 최근에는 Atom 프로세서에서 사용되는 것과 동일한 기술입니다. 내 EEE PC에는 두 개의 논리적 코어가있는 단일 코어 원자 프로세서가 있습니다. Windows Task Manager에는 두 개의 CPU 그래프가 표시됩니다. 각 논리적 코어마다 하나.

태양 Ultrasparc T2 (및 T1)도 허용합니다 동시 멀티 스레딩 (인텔의 구현을 하이퍼 스레딩 (Intel)이라고합니다. 인텔의 상표) 단일 코어가 단일 코어에서 여러 스레드를 실행하기 위해 여러 논리적 코어로 나타날 수 있습니다.

동시 멀티 스레딩의 거친 아이디어는 프로세서 상태를 저장하기위한 여러 레지스터를 갖는 것이므로, 단일 코어에는 여러 개의 풀 스웨어 레지스터가 있기 때문에 실제로 단일 코어에 여러 코어가있는 것으로 보입니다.

ALU 및 FPU와 같은 물리적 시설은 증가하지 않을 수 있지만, 물리적 코어에서 더 많은 스레드를 실행하기 위해 더 많은 레지스터 세트가 있으면 사용 가능한 프로세서 리소스의 활용도를 높일 수 있습니다. 단일 스레드를 실행할 때 코어가 포화되지 않았을 수 있지만, 다중 실행하면 모든 장치를 최대한 활용할 수 있습니다.

그렇다면 프로그래머에게 무엇을 의미합니까?

이는 여전히 멀티 스레드 소프트웨어를 작성해야한다는 것을 의미합니다. 단일 스레드 만있는 프로그램은 단일 논리 코어 만 활용할 수 있습니다. 잘 작성된 멀티 스레드 코드를 사용하면이 프로세서가 제공하는 많은 논리 코어를 활용할 수 있습니다.

동시 멀티 스레딩을 사용하더라도 코드는 논리적 코어 당 하나의 스레드에서 실행됩니다.

다른 팁

다중 스레드 프로세서의 극단은 배럴 프로세서입니다. 이것은 프로세서가 둥근 로빈 방식으로 여러 스레드 사이에 슬롯을 나누는 SMT의 형태입니다. 이를 위해서는 동일한 실행 장치 세트를 사용하는 동안 다양한 레지스터의 사본 만 있으면됩니다. 따라서 4 클럭 사이클에서는 파이프 라인의 스레드 0-3에서 코드를 넣습니다.

이 프로세서의 나머지 부분이 비슷한 방식으로 작용하여 다소 적은 정도로 생각할 수 있습니다. 슬롯을 동일하게 분배하는 대신 프로세서의 제어 또는 데이터 위험으로 인해 비어있는 슬롯을 사용할 수 있습니다.

예를 들어, 분기를 가져 오면 파이프 라인의 지침을 플러시해야 할 수도 있습니다. 모든 것을 완전히 플러시하는 대신 일부 슬롯은 다른 스레드에 사용될 수 있습니다. 전체 아이디어는 CPU 사이클을 낭비하지 않음으로써 성능을 향상시키는 것입니다.

그것이 하드웨어에서 여러 스레드가 작동하는 방식입니다.

하이퍼 스레딩 이름이 바뀌지 않았습니다. 하이퍼 스레딩입니다 (링크가 제공 한이 웹 페이지에 작성되었습니다).

간단히 말해, 프로세서는 OS에 16 개의 코어가 있다고 말하므로 두 배의 코어에 대한 작업의 균형을 맞출 수 있습니다. 하이퍼 스레딩 기술은 어떤 경우에는 하나의 핵심에서 동시에 하나의 코어에서 실행할 수있는 두 가지 다른 프로그램/스레드와의 두 가지 지침을 제공합니다. 그러나 확실히 200% 속도를 높이 지 않을 것입니다. 나는 그러한 프로세서에서 작업하지 않았지만 약 10% -20%의 추가 CPU 시간을 얻을 수 있다고 생각합니다.

OS 레벨 스레드를 질문에 설명 된 것과 같은 하드웨어 레벨 스레드에 매핑하는 것은 각 운영 체제의 스레딩 모델에 달려 있습니다.

응용 프로그램 프로그래머가 사용하는 고급 프로그래밍 언어로 스폰 된 논리 스레드는 물론 매핑을 수행하는 OS 코드에 대해 이야기하지 않는 한 여전히 하드웨어에서 제거 된 OS 레벨입니다.

HyperThreading (Intel의 상표)을 사용하면 각 스레드가 실제로 동시에 실행할 수 있습니다. 따라서이 경우 8x2 응용 프로그램 스레드를 동시에 실행할 수 있습니다.

브로셔에서 ...

인텔의 고유 한 45nm 하이 -K 금속 게이트 기술 프로세스에 구축 된 Intel Nehalem Architecture

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

이를 각 스레드를 예약 해야하는 단일 CPU, 단일 코어 시스템과 비교해보십시오. 하나의 스레드 만 활성화됩니다.

원래 스레딩은 일련의 동시 활동 세트 (실제로 병렬로 실행되지 않음)를 모델링하거나 I/O를 수행하는 동안도 반응하는 시스템의 모양을 생성하는 데 사용되었습니다. 예를 들어 스레드가 없으면 Word-Processor가 문서를 저장하면서 정지되는 것처럼 보입니다.

수년 동안 나는 데스크탑 응용 프로그램에 여러 스레드를 가지고 있다는 아이디어에 저항했습니다. 코드가 복잡하고 성능을 줄였습니다. OS 커널이 참여 해야하는 모든 뮤텍스 작업을 생각해보십시오. 실제로 평행 한 스레드 실행의 출현으로 내 반대 의견이 줄어들지 만 단일 프로세스에서 여러 스레드가 아닌 여러 프로세스가 더 나은 접근 방식이라고 생각합니다.

크리스

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