HyperThreaded 쿼드 코어 프로세서에는 실제로 8개의 "코어"가 있습니까?

HyperThreaded 쿼드 코어 프로세서에는 실제로 8개의 "코어"가 있습니까?

저는 2011년 초반 쿼드 코어 i7 Mac을 가지고 있습니다. 하이퍼스레딩으로 인해 많은 프로그램이 8개의 "코어"를 보고합니다. 병렬로 실행되는 프로그램을 작성한다면 이 프로그램의 인스턴스를 8개만 시작할 수 있습니까, 아니면 4개만 시작할 수 있습니까?

원하는 만큼 많은 스레드를 시작할 수 있지만 프로그램의 인스턴스가 4개 또는 8개가 병렬로 실행되는 것을 볼 수 있습니까?

답변1

Intel Core i7 프로세서에는 4개의 물리적 코어가 있지만 각 코어는 한 번에 최대 2개의 스레드를 입력할 수 있어 "사용 가능한 논리 CPU"의 형태로 운영 체제에 총 8개의 스레드를 표시합니다.

실제로 단일 코어는 한 번에 하나의 스레드만 처리할 수 있지만 2개의 스레드가 동시에 "파이프라인"의 서로 다른 단계에 있을 수 있도록 하는 특별한 대기열/타이밍/스케줄링 메커니즘을 갖추고 있습니다. 이를 통해 CPU는 한 번에 하나의 스레드만 처리하는 경우보다 더 빨리 2개의 스레드를 완료할 수 있습니다. 두 스레드가 모두 동일한 파이프라인을 공유하기 때문에 성능 이점은 당연히 2배가 되지 않습니다. 대부분의 테스트에서는 실행되는 명령 유형에 따라 10%에서 50% 사이의 이점을 추정합니다.

귀하의 질문에 대한 답변으로, 프로그램의 인스턴스 4개, 8개 또는 16개를 시작하면 모두 "실행"되지만 각 명령에 대한 지침은 사용 가능한 스레드 수에 따라 대기열에 추가됩니다. 사용 가능한 물리적 코어 수(예: 5개 이상)를 초과하면 기본 4개를 초과하는 모든 스레드가 물리적 CPU 코어를 공유하므로 성능이 저하됩니다.

마지막으로, 사용 가능한 CPU 스레딩 기능의 한계(8개 스레드 초과)에 도달하면 OS는 파이프라인의 작업이 완료될 때까지 기다리기 위해 예약/대기 명령을 시작합니다. 이상적으로는 성능에 부정적인 영향을 미치고 시스템에 병목 현상을 일으킬 수 있으므로 사용 가능한 스레드를 초과하지 않는 것이 좋습니다.

관련 정보