¿Qué es hyper-threading y cómo funciona?

Respuestas:

38

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.

Earlz
fuente
66
+1 debería agregar que el hiperprocesamiento es específico de la implementación de SMT por parte de Intel, por ejemplo, el procesador SPARC tiene una forma diferente de SMT implementada pero con objetivos similares.
sybreon
@ Earlz, ¿estás sugiriendo que el procesador ejecuta dos hilos dividiendo los núcleos en dos? ¿o parece que el paralelismo hecho en realidad hyperthreading está causando que el procesador cambie de un hilo a otro?
Doopy Doo
44
@DoopyDoo tampoco. Básicamente, el procesador tiene dos "núcleos de ejecución", que es la canalización de instrucciones y tal, y también tiene dos conjuntos de registros y otras cosas esenciales. Sin embargo, la diferencia entre hyper-threading y dual-core regular es que algunas cosas NO son duplicado Por ejemplo, solo puede haber una ALU. Entonces, esto significaría que, si bien un procesador de doble núcleo puede agregar dos conjuntos de números separados al mismo tiempo, para que un procesador de hiperprocesamiento tenga que hacer que uno de los núcleos virtuales espere hasta que sea el turno con la ALU. Por supuesto, este es un ejemplo simplificado
Earlz
12

Hyper-Threading es donde dos subprocesos pueden ejecutarse en un núcleo de subproceso único. Cuando un subproceso en el núcleo en cuestión se detiene o se detiene, el hiperprocesamiento permite que el núcleo trabaje en un segundo subproceso.

Hyper-threading hace que el sistema operativo piense que el procesador tiene el doble de núcleos, y a menudo produce una mejora en el rendimiento, pero solo en la región del 15-30% en general, aunque en algunas circunstancias, puede haber un impacto en el rendimiento (= <20%).

Actualmente, la mayoría de los chips Atom y todos los i7 (y los chips equivalentes a Xeon) tienen hiperprocesamiento, al igual que algunos P4 más antiguos. En el caso de los átomos, es un intento desesperado de mejorar el rendimiento sin aumentar mucho el consumo de energía; en el caso de i7s, los diferencia de la gama de chips i5.

El trabajo de procesamiento complejo no se beneficiará mucho de HT, pero ciertas tareas (simples, altamente multiproceso), como la codificación de video, se benefician de HT. En realidad, no hay mucho en eso ...

CJM
fuente
95% correcto. Si un núcleo normal = A + B, entonces un núcleo hiperprocesador es más como A + 2 x B. PUEDEN ejecutar dos subprocesos simultáneamente siempre que ambos subprocesos no necesiten A.
Vincent Vancalbergh
5

Cuando un solo núcleo puede actuar como un doble núcleo

es Hyperthreading

En detalle

La implementación de Intel de subprocesos múltiples simultáneos se conoce como tecnología Hyper-Threading o tecnología HT.

La tecnología HT hace que un único procesador aparezca, desde la
perspectiva del software , como múltiples procesadores lógicos. Esto permite que los sistemas operativos y las aplicaciones programen múltiples subprocesos a procesadores lógicos como
lo harían en sistemas multiprocesador.


Hyperthreading permite que un solo procesador ejecute dos subprocesos simultáneamente, pero no en todas las condiciones.

Hyperthreading no duplica el rendimiento de un sistema, puede aumentar el rendimiento al utilizar mejor los recursos inactivos que conducen a un mayor rendimiento para ciertos tipos de carga de trabajo importantes. Una aplicación que se ejecuta en un procesador lógico de un núcleo ocupado puede esperar un poco más de la mitad del rendimiento que obtiene mientras se ejecuta solo en un procesador no hiperprocesado. Las mejoras de rendimiento de Hyperthreading dependen en gran medida de las aplicaciones, y algunas aplicaciones pueden ver una degradación del rendimiento con hyperthreading porque muchos recursos del procesador (como la memoria caché) se comparten entre procesadores lógicos.

La tecnología Intel Hyper-Threading hace que cada núcleo pueda tener dos procesadores lógicos que comparten la mayoría de los recursos del núcleo, como cachés de memoria y unidades funcionales

Función principal

de Hyperthreading es aumentar el número de instrucciones independientes en la tubería; aprovecha la arquitectura superescalar, en la que varias instrucciones operan en datos separados en paralelo

Intel dice que el hiperprocesamiento es altamente eficiente porque utiliza recursos que de otro modo estarían inactivos o subutilizados.

Campo de golf:

Wikipedia
StackOverflow
Multi-Core Programming Digital_Edition pg # 8

ingrese la descripción de la imagen aquí

Imagen de Intel

Johnny Blaze
fuente
3

Para ampliar lo que ya se ha dicho, hyperthreading significa que un solo núcleo de CPU puede mantener dos contextos de ejecución separados y cambiar rápidamente entre ellos, emulando efectivamente dos núcleos a nivel de hardware.

Obtiene un beneficio de velocidad modesta para cargas de trabajo de subprocesos múltiples en comparación con un núcleo normal de un solo núcleo. Sin embargo, no está cerca del beneficio de tener dos núcleos independientes. En términos de rendimiento, es mejor considerarlo como un pequeño impulso en el rendimiento de subprocesos múltiples en un solo núcleo en lugar de tener un rendimiento cercano a dos núcleos. El tamaño del aumento de velocidad varía según la carga de trabajo; de hecho, para algunas cargas de trabajo, el aumento de rendimiento es bastante decente.

El núcleo hiperprocesado solo tiene una unidad de ejecución principal, pero otras partes de una CPU asociadas con las instrucciones de preparación para procesar y mantener un estado de ejecución se duplican.

Los núcleos de procesador tienen una canalización de instrucciones: una cola de instrucciones futuras que se ejecutarán, que se actualiza constantemente, lista para que la CPU ejecute las instrucciones en la cabecera de esa cola. Las CPU los utilizan para optimizar la velocidad de ejecución al observar estas instrucciones futuras y realizar un preprocesamiento simple de bajo nivel cuando sea posible (tales optimizaciones incluyen "ejecución fuera de orden" y "predicción de bifurcación").

Los núcleos hiperprocesados ​​tienen dos canales de instrucción, y esto, junto con un segundo conjunto de registros, es donde obtienes el beneficio de velocidad para cargas de trabajo multiproceso. El cambio entre contextos de subprocesos no elimina la canalización o los registros, y la canalización y los registros para el otro subproceso permanecen listos y "activos" para que puedan cambiarse y utilizarse de inmediato.

thomasrutter
fuente