En una conversación con el administrador de la red, mencioné que mi máquina era de doble núcleo. Me dijo que no. Llamé al administrador de tareas, fui a la pestaña de rendimiento y le mostré que hay dos gráficos de uso de CPU separados. Tengo una máquina de cuatro núcleos en casa y tiene cuatro gráficos. Dijo que había dos gráficos en esta máquina en particular debido a la hiperprocesamiento. Solía tener un procesador Hyper-thread pentium 4 en el pasado, pero nunca entendí completamente lo que significaba. Entonces, ¿cuál es la diferencia entre hyper threading y dual-core? ¿Y cómo sabes cuál tienes?
fuente
Hyper-threading es donde su procesador pretende tener 2 núcleos de procesador físico, pero solo tiene 1 y algo de basura adicional.
El punto de hyperthreading es que muchas veces cuando está ejecutando código en el procesador, hay partes del procesador que están inactivas. Al incluir un conjunto adicional de registros de CPU, el procesador puede actuar como si tuviera dos núcleos y, por lo tanto, utilizar todas las partes del procesador en paralelo. Cuando los 2 núcleos necesitan usar un componente del procesador, un núcleo termina esperando, por supuesto. Es por eso que no puede reemplazar a los procesadores de doble núcleo y similares.
Ver también: esta pregunta
fuente
Hyperthreading es una alternativa más barata y más lenta a tener dos núcleos
La Guía de programación del sistema Intel Manual Volumen 3 - 325384-056ES Septiembre de 2015 8.7 "ARQUITECTURA DE LA TECNOLOGÍA INTEL HYPER-THREADING" describe brevemente HT. Contiene el siguiente diagrama:
¿TODO es más lento en cuánto porcentaje en promedio en aplicaciones reales?
Hyperthreading es posible porque los núcleos de CPU individuales modernos ya ejecutan múltiples instrucciones a la vez con la tubería de instrucciones https://en.wikipedia.org/wiki/Instruction_pipelining
La canalización de instrucciones es una separación de funciones dentro de un solo núcleo para garantizar que cada parte del circuito se utilice en cualquier momento dado: memoria de lectura, instrucciones de decodificación, instrucciones de ejecución, etc.
Hyperthreading separa aún más las funciones mediante el uso de:
un único backend, que realmente ejecuta las instrucciones con su canalización.
Dual core tiene dos backends, lo que explica el mayor costo y rendimiento.
dos front-end, que toman dos secuencias de instrucciones y las ordenan para maximizar el uso de canalización del backend único evitando riesgos .
Dual core también tendría 2 front-end, uno para cada backend.
Hay casos extremos en los que el reordenamiento de instrucciones no produce ningún beneficio, lo que hace inútil el hyperthread Pero produce una mejora significativa en promedio.
Dos hyperthreads en un solo núcleo comparten más niveles de caché (TODO ¿cuántos? L1?) Que dos núcleos diferentes, que comparten solo L3, vea:
La interfaz que cada hyperthread expone al sistema operativo es similar a la de un núcleo real, y ambos pueden controlarse por separado. Por lo tanto
cat /proc/cpuinfo
, me muestra 4 procesadores, aunque solo tengo 2 núcleos con 2 hyperthreads cada uno.Sin embargo, los sistemas operativos pueden aprovechar para saber qué hyperthreads están en el mismo núcleo para ejecutar múltiples subprocesos de un programa determinado en un solo núcleo, lo que podría mejorar el uso de la caché.
Este video de LinusTechTips contiene una explicación no técnica alegre: https://www.youtube.com/watch?v=wnS50lJicXc
fuente