Hyper-threading

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Aplicación simultánea de multitelección apropiada por Intel
En esta representación de alto nivel de HTT, las instrucciones se recogen de RAM (cajas de colores diferentes representan las instrucciones de cuatro procesos diferentes), decodificadas y reordenadas por el extremo frontal (las cajas blancas representan burbujas de tuberías), y pasan al núcleo de ejecución capaz de ejecutar instrucciones de dos programas diferentes durante el mismo ciclo del reloj.

Hyper-Threading (oficialmente llamado Tecnología de Hyper-Threading o Tecnología HT y abreviado como HTT o HT) es la implementación patentada de subprocesos múltiples simultáneos (SMT) de Intel que se utiliza para mejorar la paralelización de los cálculos (hacer varias tareas a la vez) realizados en microprocesadores x86. Se introdujo en los procesadores de servidor Xeon en febrero de 2002 y en los procesadores de escritorio Pentium 4 en noviembre de 2002. Desde entonces, Intel ha incluido esta tecnología en Itanium, Atom y Core 'i' CPUs de serie, entre otros.

Por cada núcleo de procesador que está físicamente presente, el sistema operativo se dirige a dos núcleos virtuales (lógicos) y comparte la carga de trabajo entre ellos cuando es posible. La función principal de hyper-threading es aumentar la cantidad de instrucciones independientes en la canalización; aprovecha la arquitectura superescalar, en la que múltiples instrucciones operan en datos separados en paralelo. Con HTT, un núcleo físico aparece como dos procesadores para el sistema operativo, lo que permite la programación simultánea de dos procesos por núcleo. Además, dos o más procesos pueden usar los mismos recursos: si los recursos para un proceso no están disponibles, otro proceso puede continuar si sus recursos están disponibles.

Además de requerir soporte de subprocesos múltiples simultáneos en el sistema operativo, el subproceso de hiperprocesamiento se puede utilizar correctamente solo con un sistema operativo específicamente optimizado para ello.

Resumen

Un modelo de 3 GHz del procesador Intel Pentium 4 que incorpora tecnología Hyper-Threading

La tecnología Hyper-Threading es una forma de tecnología de subprocesamiento múltiple simultánea presentada por Intel, mientras que el concepto detrás de la tecnología ha sido patentado por Sun Microsystems. Arquitectónicamente, un procesador con tecnología Hyper-Threading consta de dos procesadores lógicos por núcleo, cada uno de los cuales tiene su propio estado de arquitectura de procesador. Cada procesador lógico se puede detener, interrumpir o dirigir individualmente para ejecutar un subproceso específico, independientemente del otro procesador lógico que comparte el mismo núcleo físico.

A diferencia de una configuración tradicional de dos procesadores que utiliza dos procesadores físicos separados, los procesadores lógicos en un núcleo hiperproceso comparten los recursos de ejecución. Estos recursos incluyen el motor de ejecución, las memorias caché y la interfaz del bus del sistema; compartir recursos permite que dos procesadores lógicos trabajen entre sí de manera más eficiente y permite que un procesador lógico tome prestados recursos de un núcleo lógico bloqueado (suponiendo que ambos núcleos lógicos estén asociados con el mismo núcleo físico). Un procesador se detiene cuando está esperando los datos que ha enviado para poder terminar de procesar el subproceso actual. El grado de beneficio observado cuando se utiliza un procesador multinúcleo o con hiperprocesos depende de las necesidades del software y de qué tan bien se hayan escrito este y el sistema operativo para administrar el procesador de manera eficiente.

Hyper-threading funciona duplicando ciertas secciones del procesador, aquellas que almacenan el estado de la arquitectura, pero no duplicando los principales recursos de ejecución. Esto permite que un procesador de hiperprocesamiento aparezca como el procesador "físico" habitual. procesador y un extra "lógico" procesador al sistema operativo host (los sistemas operativos que no reconocen HTT ven dos procesadores 'físicos'), lo que permite que el sistema operativo programe dos subprocesos o procesos de manera simultánea y adecuada. Cuando los recursos de ejecución no serían utilizados por la tarea actual en un procesador sin Hyper-Threading, y especialmente cuando el procesador está bloqueado, un procesador equipado con Hyper-Threading puede utilizar esos recursos de ejecución para ejecutar otra tarea programada. (El procesador puede detenerse debido a una falta de memoria caché, una predicción errónea de la bifurcación o una dependencia de datos).

Esta tecnología es transparente para los sistemas operativos y programas. Lo mínimo que se requiere para aprovechar Hyper-Threading es la compatibilidad con el multiprocesamiento simétrico (SMP) en el sistema operativo, ya que los procesadores lógicos aparecen como procesadores independientes estándar.

Es posible optimizar el comportamiento del sistema operativo en sistemas multiprocesador con capacidad de hiperprocesamiento. Por ejemplo, considere un sistema SMP con dos procesadores físicos, ambos hiperprocesos (para un total de cuatro procesadores lógicos). Si el programador de subprocesos del sistema operativo no reconoce el hiperprocesamiento, tratará a los cuatro procesadores lógicos de la misma manera. Si solo se pueden ejecutar dos subprocesos, podría elegir programar esos subprocesos en los dos procesadores lógicos que pertenecen al mismo procesador físico; ese procesador estaría extremadamente ocupado mientras que el otro estaría inactivo, lo que conduciría a un rendimiento más bajo que el que es posible al programar los subprocesos en diferentes procesadores físicos. Este problema se puede evitar mejorando el planificador para tratar los procesadores lógicos de forma diferente a los procesadores físicos; en cierto sentido, esta es una forma limitada de los cambios del programador que se requieren para los sistemas NUMA.

Historia

El primer artículo publicado que describe lo que ahora se conoce como hiperprocesamiento en una computadora de propósito general fue escrito por Edward S. Davidson y Leonard. E. Shar en 1973.

Denelcor, Inc. introdujo subprocesos múltiples con el Procesador de elementos heterogéneos (HEP) en 1982. La canalización HEP no podía contener varias instrucciones del mismo proceso. Solo se permitía que una instrucción de un proceso dado estuviera presente en la canalización en cualquier momento. Si una instrucción de un proceso dado bloquea la tubería, las instrucciones de otros procesos continuarían después de que se drene la tubería.

La patente de EE. UU. para la tecnología detrás de hyper-threading se otorgó a Kenneth Okin en Sun Microsystems en noviembre de 1994. En ese momento, la tecnología de proceso CMOS no estaba lo suficientemente avanzada como para permitir una implementación rentable.

Intel implementó Hyper-Threading en un procesador de arquitectura x86 en 2002 con el Xeon basado en Foster MP. También se incluyó en el Pentium 4 basado en Northwood de 3,06 GHz en el mismo año, y luego se mantuvo como una característica en todos los procesadores Pentium 4 HT, Pentium 4 Extreme Edition y Pentium Extreme Edition desde entonces. Intel Core & Las líneas de procesadores Core 2 (2006) que sucedieron a la línea de modelos Pentium 4 no utilizaron hyper-threading. Los procesadores basados en la microarquitectura Core no tenían hiperprocesamiento porque la microarquitectura Core era descendiente de la antigua microarquitectura P6. La microarquitectura P6 se usó en iteraciones anteriores de procesadores Pentium, a saber, Pentium Pro, Pentium II y Pentium III (más sus derivados Celeron y Xeon en ese momento).

Intel lanzó la microarquitectura Nehalem (Core i7) en noviembre de 2008, en la que regresó el hyper-threading. Los procesadores Nehalem de primera generación contenían cuatro núcleos físicos y se escalaron efectivamente a ocho subprocesos. Desde entonces, se han lanzado modelos de dos y seis núcleos, escalando cuatro y doce subprocesos respectivamente. Los núcleos Intel Atom anteriores eran procesadores en orden, a veces con capacidad de hiperprocesamiento, para PC móviles de bajo consumo y PC de escritorio de bajo precio. El Itanium 9300 se lanzó con ocho subprocesos por procesador (dos subprocesos por núcleo) a través de la tecnología mejorada de hiperprocesamiento. El próximo modelo, el Itanium 9500 (Poulson), presenta una arquitectura de 12 problemas de ancho, con ocho núcleos de CPU con soporte para ocho núcleos virtuales más a través de hiperprocesamiento. Los chips de servidor Intel Xeon 5500 también utilizan hiperprocesamiento bidireccional.

Declaraciones de rendimiento

Según Intel, la primera implementación de hiperprocesamiento usó solo un 5 % más de área de matriz que el procesador comparable sin hiperprocesamiento, pero el rendimiento fue entre un 15 % y un 30 % mejor. Intel asegura una mejora del rendimiento de hasta un 30 % en comparación con un Pentium 4 multihilo no simultáneo, por lo demás idéntico. P4 funcionando a 3,6 GHz con HT desactivado." Intel también afirma mejoras significativas en el rendimiento con un procesador Pentium 4 habilitado para hiperprocesamiento en algunos algoritmos de inteligencia artificial.

En general, el historial de rendimiento de Hyper-Threading fue mixto al principio. Como señala un comentario sobre computación de alto rendimiento de noviembre de 2002:

Hyper-Threading puede mejorar el rendimiento de algunas aplicaciones de MPI, pero no todas. Dependiendo de la configuración del cluster y, lo más importante, la naturaleza de la aplicación que se ejecuta en el cluster, las ganancias de rendimiento pueden variar o incluso ser negativas. El siguiente paso es utilizar herramientas de rendimiento para comprender qué esferas contribuyen a los aumentos de rendimiento y qué esferas contribuyen a la degradación del rendimiento.

Como resultado, las mejoras de rendimiento dependen mucho de la aplicación; sin embargo, cuando se ejecutan dos programas que requieren toda la atención del procesador, puede parecer que uno o ambos programas se ralentizan ligeramente cuando se activa la tecnología Hyper-Threading. Esto se debe a que el sistema de reproducción del Pentium 4 ocupa valiosos recursos de ejecución, igualando los recursos del procesador entre los dos programas, lo que agrega una cantidad variable de tiempo de ejecución. El Pentium 4 'Prescott' y el Xeon "Nocona" Los procesadores recibieron una cola de reproducción que reduce el tiempo de ejecución necesario para el sistema de reproducción y supera por completo la penalización de rendimiento.

Según un análisis de Intel de noviembre de 2009, los impactos en el rendimiento de los subprocesos dan como resultado un aumento de la latencia general en caso de que la ejecución de subprocesos no resulte en ganancias de rendimiento general significativas, que varían según la aplicación. En otras palabras, la latencia de procesamiento general aumenta significativamente debido al hiperprocesamiento, y los efectos negativos se reducen a medida que hay más subprocesos simultáneos que pueden usar de manera efectiva la utilización de recursos de hardware adicional proporcionada por el hiperprocesamiento. Un análisis de rendimiento similar está disponible para los efectos de hyper-threading cuando se usa para manejar tareas relacionadas con la gestión del tráfico de red, como para procesar solicitudes de interrupción generadas por controladores de interfaz de red (NIC). Otro documento afirma que no hay mejoras en el rendimiento cuando se usa hyper-threading para el manejo de interrupciones.

Inconvenientes

Cuando se lanzaron los primeros procesadores HT, muchos sistemas operativos no estaban optimizados para la tecnología de hiperprocesamiento (por ejemplo, Windows 2000 y Linux anteriores a 2.4).

En 2006, Hyper-Threading fue criticado por su ineficiencia energética. Por ejemplo, la empresa especializada en diseño de CPU de bajo consumo ARM afirmó que los subprocesos múltiples simultáneos pueden usar hasta un 46 % más de energía que los diseños normales de doble núcleo. Además, afirmaron que SMT aumenta la paliza de caché en un 42 %, mientras que el doble núcleo da como resultado una disminución del 37 %.

En 2010, ARM dijo que podría incluir subprocesos múltiples simultáneos en sus futuros chips; sin embargo, esto fue rechazado a favor de su diseño de 64 bits de 2012.

En 2013, Intel abandonó SMT a favor de la ejecución fuera de orden para sus núcleos de procesador Silvermont, ya que descubrió que esto brindaba un mejor rendimiento con una mejor eficiencia energética que una menor cantidad de núcleos con SMT.

En 2017, se reveló que los procesadores Skylake y Kaby Lake de Intel tenían un error con la implementación de hiperprocesamiento que podía provocar la pérdida de datos. Posteriormente se publicaron actualizaciones de microcódigo para solucionar el problema.

En 2019, con Coffee Lake, Intel dejó de incluir temporalmente la tecnología Hyper-Threading en los principales procesadores de escritorio Core i7, excepto en las piezas Core i9 de gama más alta o en las CPU Pentium Gold. También comenzó a recomendar la desactivación de Hyper-Threading a medida que se revelaron nuevos ataques de vulnerabilidad de CPU que podrían mitigarse al desactivar HT.

Seguridad

En mayo de 2005, Colin Percival demostró que un subproceso malicioso en un Pentium 4 puede usar un ataque de canal lateral basado en el tiempo para controlar los patrones de acceso a la memoria de otro subproceso con el que comparte caché, lo que permite el robo de información criptográfica.. Esto no es realmente un ataque de tiempo, ya que el hilo malicioso mide el tiempo de su propia ejecución. Las posibles soluciones a esto incluyen que el procesador cambie su estrategia de desalojo de caché o que el sistema operativo impida la ejecución simultánea, en el mismo núcleo físico, de subprocesos con diferentes privilegios. En 2018, el sistema operativo OpenBSD inhabilitó el hiperprocesamiento "para evitar la posible fuga de datos de las aplicaciones a otro software" causado por las vulnerabilidades Foreshadow/L1TF. En 2019, un conjunto de vulnerabilidades llevó a los expertos en seguridad a recomendar la desactivación de Hyper-Threading en todos los dispositivos.

Contenido relacionado

Invasores espaciales

Bofors

Intel

Más resultados...
Tamaño del texto:
Copiar