멀티 코어 프로세서에는 명령이 실행되는 코어를 무작위로 변경할 수 있는 내부 하드웨어가 있습니까?

멀티 코어 프로세서에는 명령이 실행되는 코어를 무작위로 변경할 수 있는 내부 하드웨어가 있습니까?

내 친구는 운영 체제 내의 특정 코어에 프로세스를 고정하더라도 프로세스가 항상 코어 사이를 이동한다고 말합니다. 그는 프로세서 제조업체가 핫스팟으로 인해 프로세서가 연소되지 않도록 이렇게 한다고 말합니다(실제로 코어 연소가 발생하는지 여부는 중요하지 않습니다).

그는 또한 예를 들어 Windows 작업 관리자는 프로세서가 내부적으로 수행하는 작업을 따라갈 수 없기 때문에 정확하지 않다고 말합니다. 그러므로 신뢰할 수 없습니다... 그는 이를 설명하는 인텔 문서를 보았다고 맹세합니다. (글쎄 그는 그것을 찾을 수 없었습니다)

나는 그렇게 하면 캐시와 파이프라인 등이 무효화되기 때문에 이것이 비논리적이라고 그에게 말하려고 했습니다. 그러나 그렇지 않다는 문서도 없기 때문에 증명하기가 다소 어렵습니다.

문서를 알고 있거나 이론을 증명하는 완벽한 설명을 할 수 있는 사람이 있습니까?

감사해요!

답변1

나는 열점 등을 피하기 위해 프로세서에서 의도적으로 "무작위화"가 수행되었다고 생각하지 않습니다.

링 0 코드는 CPU 레지스터를 읽어 코드가 실행 중인 코어를 식별한 다음 잘못된 코어에 있는 경우 CPU 시간을 포기할 수 있습니다. 최소한 하나의 코어에는 BIOS 초기화 시 재설정 중에 항상 BSP 부트스트랩 플래그가 설정되어 있습니다(x86 CPU에 대해 이야기하고 있습니다). 해당 레지스터를 읽어 해당 코어에서만 실행되는지 확인할 수 있습니다. 그러나 사용할 수 있는 다른 ID 메커니즘도 거의 확실합니다.

OS 권한이 있는 커널 코드는 프로세스 전환을 처리하므로 스위치가 해당 코어에 도달할 때까지 CPU 시간을 포기하는 것을 의미하더라도 특정 코어에 프로세스를 잠그는 기능을 OS에 확실히 제공할 수 있습니다. 원하는 프로세스에 대해 코어를 열어두기 위해 해당 코어를 피하도록 다른 모든 프로세스를 설정할 수도 있습니다.

따라서 작업 관리자가 수행하는지 여부에 관계없이 이론적으로 어떤 프로세스가 어떤 코어에서 실행되고 있는지 확실히 알 수 있으며 해당 코어에 잠글 수 있습니다.

이제 인텔에는 실제로 코어의 ID를 전환하여 실제로 어떤 물리적 코어에서 실행되고 있는지 알 수 없도록 하는 숨겨진 하드웨어가 있습니까? 의심해보세요. CPU는 코어당 온도를 보고하며, 다양한 코어에 고정된 단일 스레드 프로세스를 사용하여 다양한 코어에서 온도가 상승하는 것을 확인할 수 있습니다.

관련 정보