¿Cuál es la diferencia entre hyper-threading y múltiples núcleos?

42

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?

Josh Stodola
fuente

Respuestas:

20

Hyper-threading expone múltiples núcleos lógicos para un solo núcleo de CPU física . En términos simples, el hiperprocesamiento hace que el cambio de contexto sea más eficiente para cada núcleo de CPU.

Los chips de doble núcleo, por otro lado, en realidad tienen dos núcleos físicos de CPU que pueden ejecutar diferentes procesos simultáneamente.

También hay otros chips multinúcleo que tienen muchos más de dos núcleos y, como mencionó Svish, las últimas ofertas multinúcleo de Intel también admiten Hyper-threading en todos los núcleos.

Puede usar una utilidad de identificación de CPU como CPU-Z para determinar cuántos núcleos tiene. Como puede ver cerca de la parte inferior de la captura de pantalla, la CPU en este caso tiene 2 núcleos físicos. Si el número de subprocesos es mayor que el número de núcleos, se habilita Hyper-threading. Hasta la fecha, todas las CPU orientadas al consumidor con Hyper-threading tienen 2 subprocesos por núcleo, por lo que si HT está habilitado, la cantidad de subprocesos será el doble de la cantidad de núcleos.

ingrese la descripción de la imagen aquí

Si tiene una CPU Intel, puede descargar la utilidad de identificación de CPU de Intel .

robar
fuente
Y chips de múltiples núcleos que admiten hiperprocesamiento para que obtenga el doble de la cantidad de núcleos lógicos.
Svish
¡Gracias! ¿Cómo puedo saber (desde el sistema operativo) qué tipo de CPU tengo?
Josh Stodola
3
El UltraSparc T2 + tiene 8 núcleos, cada uno de los cuales admite 8 subprocesos, lo que lo convierte en 64 CPU virtuales en un solo chip: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre
La forma de conocer la CPU que tiene depende del sistema operativo que esté ejecutando.
jlliagre
@jilliagre: ¡bien!
robar el
16

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

Earlz
fuente
6

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:

ingrese la descripción de la imagen aquí

¿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

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
1
¿Vas a responder tus preguntas "TODO"?
pacoverflow
1
@pacoverflow si algún día aprendo la respuesta, o si alguien la edita por mí :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件