¿Qué núcleos corresponden a cada "CPU" a continuación?
Suponiendo que tenemos Core 1, 2, 3 y 4, CPU4 y CPU5 representan el núcleo 3.
¿(Digamos) CPU 6 y CPU 7 a continuación representan un núcleo; El HT y el núcleo real?
No hay distinción entre los dos: ambos tienen interfaces de hardware físico para la CPU, la interfaz lógica se implementa en hardware (consulte la Hoja de datos del procesador Intel Core, Volumen 1 para más detalles). Básicamente, cada núcleo tiene dos unidades de ejecución separadas, pero comparte algunos recursos comunes entre ellas. Esta es la razón por la cual, en ciertos casos, hyperthreading realmente puede reducir el rendimiento.
Si, por ejemplo, la CPU 6 representa un núcleo real y la CPU 7 un núcleo HT, ¿un hilo asignado solo a la CPU7 obtendrá solo los recursos sobrantes de un núcleo real? (suponiendo que el núcleo ejecuta otras tareas)
Véase más arriba. Un subproceso asignado a SOLO CPU6 o SOLO CPU7 se ejecutará a la misma velocidad exacta (suponiendo que el subproceso haga el mismo trabajo y los otros núcleos del procesador estén inactivos). Windows conoce los procesadores habilitados para HT, y el planificador de procesos tiene en cuenta estas cosas.
¿El hyperthreaded se gestiona por completo dentro del procesador de tal manera que los hilos están malabarizados internamente? Si es así, ¿está eso en el alcance de la CPU o en el alcance central? Ejemplo: si la CPU 6 y 7 representan un núcleo, ¿no importa a qué proceso se le asigne porque la CPU asignará recursos según corresponda a un hilo en ejecución?
Ambos. El hardware en sí mismo no programa en qué núcleos ejecutar programas, ese es el trabajo del sistema operativo. Sin embargo, la propia CPU es responsable de compartir los recursos entre las unidades de ejecución reales, e Intel dicta cómo puede escribir código para que esto sea lo más eficiente posible.
Noté que los procesos de un solo subproceso de larga ejecución rebotan bastante en los núcleos, al menos según el administrador de tareas. ¿Significa esto que asignar un proceso a un solo núcleo mejorará un poco el rendimiento (evitando cambios de contexto e invalidaciones de caché, etc.)? Si es así, ¿puedo saber que no estoy asignando "solo un núcleo virtual"?
Ese es un comportamiento normal, y no, asignarlo a un solo núcleo no mejorará el rendimiento. Dicho esto, si por alguna razón desea asegurarse de que un solo proceso se ejecute solo en un único núcleo físico, asígnelo a un único procesador lógico.
La razón por la cual el proceso "rebota" se debe al programador del proceso. Este es un comportamiento normal, y lo más probable es que experimente un rendimiento reducido al limitar en qué núcleos se puede ejecutar el proceso (independientemente de cuántos subprocesos tenga), ya que el planificador de procesos ahora tiene que trabajar más para que todo funcione con las restricciones impuestas. Sí, esta penalización puede ser insignificante en la mayoría de los casos, pero la conclusión es que, a menos que tenga una razón para hacerlo, ¡no lo haga !