Os processadores multi-core possuem hardware interno para alterar aleatoriamente em qual núcleo as instruções são executadas?

Os processadores multi-core possuem hardware interno para alterar aleatoriamente em qual núcleo as instruções são executadas?

Um amigo meu diz que um processo sempre alterna entre núcleos, mesmo se você fixar um processo em um núcleo específico do sistema operacional. Ele diz que os fabricantes de processadores fazem isso para que os processadores não queimem devido a pontos de acesso (a queima de núcleos realmente acontecendo ou não está fora de questão).

Ele também diz que, por exemplo, o gerenciador de tarefas do Windows não está correto, pois não consegue acompanhar o que o processador faz internamente. Portanto não confiável... Ele jura que viu alguma documentação da Intel que explica isso. (bem, ele não conseguiu encontrar)

Tentei dizer a ele que isso é ilógico, pois isso invalidaria caches e pipelines, etc., mas como também não há documentação dizendo o contrário, é meio difícil de provar.

Alguém conhece a documentação ou pode fazer uma explicação à prova de balas que comprove qualquer uma das teorias?

Obrigado!

Responder1

Não acho que haja uma "randomização" deliberada no processador para evitar pontos de calor ou algo assim.

O código do anel 0 pode ler os registros da CPU para identificar em qual núcleo o código está sendo executado e pode então desistir do tempo da CPU se estiver no núcleo errado. No mínimo, um núcleo sempre tem o sinalizador de inicialização BSP definido durante a redefinição na inicialização do BIOS (estamos falando de uma CPU x86). Você pode ler esse registro para garantir que você execute apenas nesse núcleo. Mas é quase certo que existe algum outro mecanismo de identificação que pode ser usado.

Como o código do kernel privilegiado do sistema operacional lida com a alternância de processos, você definitivamente poderia fornecer ao sistema operacional um recurso para bloquear processos em um núcleo específico, mesmo que isso signifique apenas abrir mão do tempo da CPU até que a alternância chegue a esse núcleo. Você também pode definir todos os outros processos para evitar esse núcleo e mantê-lo aberto para o processo desejado.

Portanto, quer o gerenciador de tarefas faça isso ou não, você pode, em teoria, saber definitivamente em qual núcleo o processo está sendo executado e bloqueá-los nesses núcleos.

Agora, a Intel tem hardware oculto que está realmente trocando os IDs dos núcleos para que você não saiba em qual núcleo físico está realmente executando? Duvido. A CPU informa as temperaturas por núcleo, e você pode ver o aumento da temperatura em diferentes núcleos usando um único processo de thread que você bloqueia em diferentes núcleos.

informação relacionada