¿Los procesadores multinúcleo tienen hardware interno para cambiar aleatoriamente en qué núcleo se ejecutan las instrucciones?

¿Los procesadores multinúcleo tienen hardware interno para cambiar aleatoriamente en qué núcleo se ejecutan las instrucciones?

Un amigo mío dice que un proceso siempre salta entre núcleos incluso si fija un proceso en un núcleo específico dentro del sistema operativo. Dice que los fabricantes de procesadores hacen esto para que los procesadores no se quemen debido a los puntos de acceso (la quema de núcleos que realmente ocurra o no no viene al caso).

También dice, por ejemplo, que el administrador de tareas de Windows no es correcto ya que no puede seguir lo que hace el procesador internamente. Por lo tanto no es de fiar... Jura que vio alguna documentación de Intel que lo explica. (bueno no pudo encontrarlo)

Intenté decirle que esto es ilógico, ya que hacerlo invalidaría los cachés y las canalizaciones, etc., pero como tampoco hay documentación que indique lo contrario, es un poco difícil de probar.

¿Alguien conoce la documentación o puede hacer una explicación infalible que pruebe cualquiera de las teorías?

¡Gracias!

Respuesta1

No creo que se haya realizado una "aleatorización" deliberada en el procesador para evitar puntos de calor o lo que sea.

El código Ring 0 puede leer los registros de la CPU para identificar en qué núcleo se está ejecutando el código y luego puede ceder su tiempo de CPU si está en el núcleo incorrecto. Como mínimo, un núcleo siempre tiene el indicador de arranque BSP configurado durante el reinicio en la inicialización del BIOS (estamos hablando de una CPU x86). Puede leer ese registro para asegurarse de ejecutar solo en ese núcleo. Pero es casi seguro que existe algún otro mecanismo de identificación que se puede utilizar.

Dado que el código del kernel privilegiado del sistema operativo maneja el cambio de procesos, definitivamente podría darle al sistema operativo una función para bloquear procesos en un núcleo específico, incluso si eso solo significa renunciar al tiempo de la CPU hasta que el cambio llegue a ese núcleo. También puede configurar todos los demás procesos para evitar que ese núcleo lo mantenga abierto para el proceso que desee.

Entonces, ya sea que el administrador de tareas lo haga o no, en teoría definitivamente puedes saber en qué núcleo se está ejecutando qué proceso y bloquearlos en esos núcleos.

Ahora bien, ¿Intel tiene hardware oculto que en realidad cambia las ID de los núcleos para que no sepas en qué núcleo físico estás ejecutando realmente? Dudo. La CPU informa las temperaturas por núcleo y puede ver cómo aumenta la temperatura en diferentes núcleos mediante un proceso de subproceso único que se bloquea en diferentes núcleos.

información relacionada