아래의 각 "CPU"에 해당하는 코어는 무엇입니까?
코어 1, 2, 3 및 4가 있다고 가정하면 CPU4와 CPU5는 코어 3을 나타냅니다.
아래 (말하기) CPU 6과 CPU 7은 하나의 코어를 나타냅니다. HT와 진짜 코어?
둘 사이에는 구별이 없습니다. 둘 다 CPU에 대한 물리적 하드웨어 인터페이스를 가지고 있으며 논리적 인터페이스는 하드웨어로 구현됩니다 ( 인텔 코어 프로세서 데이터 시트 1 권 자세한 사항은). 기본적으로 각 코어에는 두 개의 별도 실행 단위가 있지만 두 코어간에 공통된 리소스가 있습니다. 따라서 하이퍼 스레딩이 실제로 성능을 저하시킬 수있는 경우가 있습니다.
예를 들어, CPU 6이 실제 코어를 나타내고 CPU 7이 HT 코어 인 경우, 단지 CPU 7에 할당 된 스레드가 실제 코어의 리소스를 남겨 둡니까? (코어가 다른 작업을 실행 중이라고 가정)
위 참조. 유일한 CPU6 또는 유일한 CPU7에 할당 된 스레드는 동일한 속도로 실행됩니다 (스레드가 동일한 작업을 수행하고 프로세서의 다른 코어가 유휴 상태에 있다고 가정). Windows는 HT 지원 프로세서에 대해 알고 있으며 프로세스 스케줄러는 이러한 사항을 고려합니다.
하이퍼 스레딩이 프로세서 내에서 완전히 관리되어 스레드가 내부적으로 저글링됩니까? 그렇다면 CPU 범위 또는 핵심 범위에서입니까? 예 : CPU 6과 7이 하나의 코어를 나타내는 경우, CPU가 실행중인 스레드에 적절한 자원을 할당하기 때문에 어떤 프로세스가 할당되었는지는 중요하지 않습니까?
양자 모두. 실제 하드웨어 자체는 아니 프로그램을 실행할 코어를 계획하십시오. 이것이 운영 체제의 작업입니다. 그러나 CPU 자체는 실제 실행 단위간에 리소스를 공유 할 책임이 있으며 인텔은 가능한 한 효율적으로 코드를 작성하는 방법을 결정합니다.
적어도 작업 관리자에 따르면 오래 동안 실행되는 단일 스레드 프로세스가 코어 주위에서 꽤 많이 튀어 나오는 것을 보았습니다. 즉, 단일 코어에 프로세스를 할당하면 컨텍스트 스위치 및 캐시 무효화 등을 피하면서 성능이 약간 향상됩니다. 그렇다면 "가상 코어"에 할당하지 않는다는 것을 알고 있습니까?
이는 정상적인 동작이며, 아니요, 단일 코어에 할당하면됩니다. 아니 성능을 향상시킵니다. 즉, 어떤 이유로 단일 프로세스가 단일 물리적 코어에서만 실행되도록하려면 단일 논리 프로세서에 할당하십시오.
프로세스가 "반송되는"이유는 프로세스 스케줄러 때문입니다. 이는 정상적인 동작이며 프로세스 스케줄러가 모든 작업을 제한 사항에 적용하기 위해 더 많은 노력을 기울여야하기 때문에 프로세스가 실행할 수있는 코어 (스레드의 수에 관계없이)를 제한하여 성능이 저하 될 가능성이 높습니다. 예, 대부분의 경우이 벌금은 무시할 만하지만 최종선은 이럴 이유가 없다면 !