Hyper-Threading (oficialmente llamada Hyper-Threading o la tecnología HT y abreviado como HTT o HT ) es Intel 's propietaria multihilo simultáneo aplicación (SMT) que se utiliza para mejorar la paralelización de los cálculos (hacer varias tareas a la vez) realizado en x86 microprocesadores. Fue introducido el Xeon servidor procesadores en febrero de 2002 y el Pentium 4 procesadores de escritorio en noviembre de 2002. [4] Desde entonces, Intel ha incluido esta tecnología en Itanium ,CPU de la serie Atom y Core 'i' , entre otras. [ cita requerida ]
Para 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 el número de instrucciones independientes en la canalización; aprovecha la arquitectura superescalar , en la que varias 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 hiperproceso se puede utilizar correctamente solo con un sistema operativo específicamente optimizado para él. [5]
Descripción general
La tecnología Hyper-Threading es una forma de tecnología de múltiples subprocesos simultáneos introducida 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 puede detenerse, interrumpirse o dirigirse individualmente para ejecutar un subproceso específico, independientemente del otro procesador lógico que comparta el mismo núcleo físico. [7]
A diferencia de una configuración tradicional de doble procesador que utiliza dos procesadores físicos separados, los procesadores lógicos en un núcleo de hiperproceso comparten los recursos de ejecución. Estos recursos incluyen el motor de ejecución, las cachés y la interfaz del bus del sistema; el uso compartido de 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 estancado (asumiendo 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 hilo actual. El grado de beneficio que se observa cuando se usa un procesador de múltiples núcleos o hiperproceso depende de las necesidades del software y de qué tan bien este y el sistema operativo están escritos para administrar el procesador de manera eficiente. [7]
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 hiperprocesos aparezca como el procesador "físico" habitual y un procesador " lógico " adicional para el 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 forma 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á parado, un procesador equipado con Hyper-Threading puede usar esos recursos de ejecución para ejecutar otra tarea programada. (El procesador puede bloquearse debido a una falta de caché , predicción errónea de rama o dependencia de datos ). [8]
Esta tecnología es transparente para los sistemas operativos y programas. El mínimo que se requiere para aprovechar el hiperproceso es la compatibilidad con multiprocesamiento simétrico (SMP) en el sistema operativo, ya que los procesadores lógicos aparecen como procesadores estándar separados.
Es posible optimizar el comportamiento del sistema operativo en sistemas con capacidad de hiperprocesamiento multiprocesador. Por ejemplo, considere un sistema SMP con dos procesadores físicos que son hiperprocesos (para un total de cuatro procesadores lógicos). Si el programador de subprocesos del sistema operativo no es consciente del hiperproceso, tratará a los cuatro procesadores lógicos de la misma manera. Si solo dos subprocesos son elegibles para ejecutarse, puede optar por 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 pobre de lo 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 manera 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 Hyper-Threading en una computadora de propósito general fue escrito por Edward S. Davidson y Leonard. E. Shar en 1973. [9]
Denelcor, Inc. introdujo múltiples subprocesos con el Procesador de elementos heterogéneos (HEP) en 1982. La tubería HEP no podía contener múltiples instrucciones del mismo proceso. Solo se permitió que una instrucción de un proceso dado estuviera presente en la tubería en cualquier momento. Si una instrucción de un proceso determinado bloquea la tubería, las instrucciones de otros procesos continuarán después de que se drene la tubería.
En noviembre de 1994, Kenneth Okin, de Sun Microsystems, recibió una patente estadounidense para la tecnología detrás de los hiperprocesos . En ese momento, la tecnología de proceso CMOS no estaba lo suficientemente avanzada como para permitir una implementación rentable. [10]
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 de 3.06 GHz basado en Northwood en el mismo año, y luego permaneció como una característica en todos los procesadores Pentium 4 HT, Pentium 4 Extreme Edition y Pentium Extreme Edition desde entonces. Las líneas de procesadores Intel Core y Core 2 (2006) que sucedieron a la línea del modelo 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 microarquitectura P6 más antigua . 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 & Xeon en ese momento).
Intel lanzó la microarquitectura Nehalem (Core i7) en noviembre de 2008, en la que el hyper-threading hizo un regreso. 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. [11] Los primeros núcleos Intel Atom eran procesadores en orden, a veces con capacidad de hiperprocesamiento, para PC móviles de baja potencia y PC de escritorio de bajo precio. [12] El Itanium 9300 se lanzó con ocho subprocesos por procesador (dos subprocesos por núcleo) a través de la tecnología de subprocesos mejorada. El siguiente modelo, el Itanium 9500 (Poulson), presenta una arquitectura de problemas de 12 anchos, con ocho núcleos de CPU con soporte para ocho núcleos virtuales más a través de Hyper-Threading. [13] Los chips de servidor Intel Xeon 5500 también utilizan Hyper-Threading bidireccional. [14] [15]
Reclamaciones de rendimiento
Según Intel, la primera implementación de Hyper-Threading utilizó solo un 5% más de área de troquel que el procesador comparable sin Hyper-Threading , pero el rendimiento fue entre un 15% y un 30% mejor. [16] [17] Intel afirma una mejora en el rendimiento de hasta un 30% en comparación con un Pentium 4 de subprocesos múltiples no simultáneos idénticos. Tom's Hardware afirma: "En algunos casos, un P4 que se ejecuta a 3.0 GHz con HT activado puede incluso vencer a un P4 funcionando a 3,6 GHz con HT desactivado ". [18] Intel también afirma importantes mejoras de rendimiento con un procesador Pentium 4 habilitado para Hyper-Threading en algunos algoritmos de inteligencia artificial.
En general, el historial de rendimiento de Hyper-Threading fue mixto al principio. Como se señala en un comentario sobre informática de alto rendimiento de noviembre de 2002: [19]
Hyper-Threading puede mejorar el rendimiento de algunas aplicaciones MPI , pero no todas. Según la configuración del clúster y, lo que es más importante, la naturaleza de la aplicación que se ejecuta en el clúster, las ganancias de rendimiento pueden variar o incluso ser negativas. El siguiente paso es utilizar herramientas de rendimiento para comprender qué áreas contribuyen a las mejoras del rendimiento y qué áreas contribuyen a la degradación del rendimiento.
Como resultado, las mejoras de rendimiento dependen en gran medida de la aplicación; [20] sin embargo, cuando se ejecutan dos programas que requieren la atención completa del procesador, en realidad puede parecer que uno o ambos programas se ralentizan ligeramente cuando la tecnología Hyper-Threading está activada. [21] 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. Los procesadores Pentium 4 "Prescott" y Xeon "Nocona" 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 del rendimiento. [22]
Según un análisis de noviembre de 2009 realizado por Intel, los impactos en el rendimiento de los hiperprocesos dan como resultado un aumento de la latencia general en caso de que la ejecución de los subprocesos no genere ganancias de rendimiento general significativas, que varían [20] según la aplicación. En otras palabras, la latencia de procesamiento general aumenta significativamente debido al hiperproceso, y los efectos negativos se vuelven más pequeños a medida que hay más subprocesos simultáneos que pueden utilizar de manera efectiva la utilización de recursos de hardware adicional proporcionada por el hiperproceso. [23] Se dispone de un análisis de rendimiento similar para los efectos del hiperproceso cuando se utiliza 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). [24] Otro documento afirma que no hay mejoras en el rendimiento cuando se utiliza el hiperproceso para el manejo de interrupciones. [25]
Inconvenientes
Cuando se lanzaron los primeros procesadores HT, muchos sistemas operativos no estaban optimizados para la tecnología Hyper-Threading (por ejemplo, Windows 2000 y Linux anteriores a 2.4). [26]
En 2006, el Hyper-Threading fue criticado por ineficiencia energética. [27] Por ejemplo, la empresa especializada en diseño de CPU de bajo consumo ARM declaró que el subproceso múltiple simultáneo puede utilizar hasta un 46% más de energía que los diseños ordinarios de doble núcleo. Además, afirmaron que SMT aumenta la eliminación de caché en un 42%, mientras que el doble núcleo da como resultado una disminución del 37%. [28]
En 2010, ARM dijo que podría incluir subprocesos múltiples simultáneos en sus futuros chips; [29] sin embargo, esto fue rechazado a favor de su diseño de 64 bits de 2012. [30]
En 2013, Intel abandonó SMT a favor de la ejecución fuera de orden para sus núcleos de procesador Silvermont , ya que descubrieron que esto brindaba un mejor rendimiento con una mejor eficiencia energética que una menor cantidad de núcleos con SMT. [31]
En 2017, se reveló que los procesadores Skylake y Kaby Lake de Intel tenían un error con su implementación de Hyper-Threading que podría causar la pérdida de datos. [32] Posteriormente se publicaron actualizaciones de microcódigo para abordar el problema. [33]
En 2019, con Coffee Lake , Intel comenzó a alejarse de la inclusión de hiperprocesos en los procesadores de escritorio Core i7 convencionales, excepto en las piezas Core i9 de gama alta o las CPU Pentium Gold. [34] 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 desactivando HT. [35]
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 monitorear los patrones de acceso a la memoria de otro subproceso con el que comparte un caché, lo que permite el robo de información criptográfica. En realidad, esto no es 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. [36] En 2018, el sistema operativo OpenBSD ha desactivado el Hyper-Threading "para evitar que los datos se filtren potencialmente de las aplicaciones a otro software" debido a las vulnerabilidades Foreshadow / L1TF . [37] [38] En 2019, una serie de vulnerabilidades llevó a los expertos en seguridad a recomendar la desactivación de Hyper-Threading en todos los dispositivos. [39]
Ver también
- Procesador de barril
- Multitarea por computadora
- Procesador multinúcleo
Referencias
- ^ Stokes, Jon (3 de octubre de 2002). "Introducción a Multithreading, Superthreading e Hyperthreading" . Ars Technica . págs. 2-3 . Consultado el 30 de septiembre de 2015 .
- ^ Deborah T. Marr; Frank Binns; David L. Hill; Glenn Hinton; David A. Koufaty; J. Alan Miller; Michael Upton (12 de diciembre de 2006). "Arquitectura y microarquitectura de tecnología Hyper-Threading" (PDF) . cs.sfu.ca . Archivado desde el original (PDF) el 23 de septiembre de 2015 . Consultado el 30 de septiembre de 2015 .
- ^ Anand Lal Shimpi (5 de octubre de 2012). "La interfaz de usuario de Haswell - Arquitectura Haswell de Intel analizada" . AnandTech . Consultado el 30 de septiembre de 2015 .
- ^ "CPU Intel Pentium 4 3.06GHz con tecnología Hyper-Threading: matando a dos pájaros de una piedra". Laboratorios X-bit. Archivado desde el original el 31 de mayo de 2014 . Consultado el 4 de junio de 2014 .
- ^ Lista de intercambiabilidad de componentes requeridos por Intel para el procesador Intel Pentium 4 con tecnología HT , incluye una lista de sistemas operativos que incluyen optimizaciones para la tecnología Hyper-Threading; son Windows XP Professional 64, Windows XP MCE, Windows XP Home, Windows XP Professional, algunas versiones de Linux como COSIX Linux 4.0, RedHat Linux 9 (versiones Professional y Personal), RedFlag Linux Desktop 4.0 y SuSe Linux 8.2 (Professional y Versiones personales)
- ^ "Buscador de especificaciones del procesador Intel: SL6WK" .
- ^ a b Thomadakis, Michael E. (17 de marzo de 2011). "La arquitectura del procesador Nehalem y las plataformas SMP Nehalem-EP" (PDF) . Universidad Texas A & M. pag. 23. Archivado desde el original (PDF) el 11 de agosto de 2014 . Consultado el 21 de marzo de 2014 .
- ^ Hennessy, John L .; Patterson, David A. Arquitectura informática: un enfoque cuantitativo . Asanović, Krste ,, Bakos, Jason D. ,, Colwell, Robert P. ,, Bhattacharjee, Abhishek, 1984-, Conte, Thomas M., 1964- (Sexta ed.). Cambridge, MA. ISBN 0128119055. OCLC 983459758 .
- ^ "Un sistema multiminiprocesador implementado mediante canalización", por Leonard Shar y Edward Davidson, IEEE Computer, febrero de 1974, págs. 42-51, vol. 7 https://www.computer.org/csdl/magazine/co/1974/02/4251/13rRUyoyhIt
- ^ Okin, Kenneth (1 de noviembre de 1994), Patente de los Estados Unidos: 5361337 - Método y aparato para cambiar rápidamente los procesos en un sistema informático , archivado desde el original el 21 de septiembre de 2015 , recuperado el 24 de mayo de 2016
- ^ "Página no disponible" . www.intel.com .
- ^ "Microarquitectura del procesador Intel® Atom ™" . Intel.com. 18 de marzo de 2011 . Consultado el 5 de abril de 2011 .
- ^ "Intel revela nuevas características de Itanium Poulson" . Tomshardware.com . Consultado el 2 de julio de 2017 .
- ^ "Página de índice del procesador del servidor" . Intel.com. 18 de marzo de 2011 . Consultado el 5 de abril de 2011 .
- ^ "Procesador Intel Xeon serie 5500" . Intel.com . Consultado el 5 de abril de 2011 .
- ^ (PDF) . 19 de octubre de 2012 https://web.archive.org/web/20121019025809/http://www.intel.com/technology/itj/2002/volume06issue01/vol6iss1_hyper_threading_technology.pdf . Archivado desde el original (PDF) el 19 de octubre de 2012. Falta o vacío
|title=
( ayuda ) - ^ 12331095 (28 de abril de 2011). "Cómo determinar la eficacia de la tecnología Hyper-Threading con una aplicación" . software.intel.com .CS1 maint: nombres numéricos: lista de autores ( enlace )
- ^ "Resumen: en algunos casos, el P4 3.0HT puede incluso superar a la versión de 3.6 GHz: CPU única en funcionamiento dual: P4 3.06 GHz con tecnología Hyper-Threading" . Tomshardware.com. 14 de noviembre de 2002 . Consultado el 5 de abril de 2011 .
- ^ Tau Leng; Rizwan Ali; Jenwei Hsieh; Christopher Stanton (noviembre de 2002). "Un estudio de Hyper-Threading en clústeres de computación de alto rendimiento" (PDF) . Dell. pag. 4 . Consultado el 12 de noviembre de 2012 .
- ^ a b Joel Hruska (24 de julio de 2012). "Rendimiento maximizado: comparación de los efectos de Hyper-Threading, actualizaciones de software" . extremetech.com . Consultado el 2 de marzo de 2015 .
- ^ "Evaluación del rendimiento de la CPU - Benchmark - Pentium 4 2.8 y 3.0" . users.telenet.be .
- ^ "Reproducción: características desconocidas del NetBurst Core. Página 15" . Reproducción: Funciones desconocidas del NetBurst Core . Xbitlabs. Archivado desde el original el 14 de mayo de 2011 . Consultado el 24 de abril de 2011 .
- ^ Valles, Antonio (20 de noviembre de 2009). "Información sobre el rendimiento de la tecnología Intel Hyper-Threading" . Intel . Archivado desde el original el 17 de febrero de 2015 . Consultado el 26 de febrero de 2015 .
- ^ "Rendimiento y puesta a punto de la red" . calomel.org . 12 de noviembre de 2013 . Consultado el 26 de febrero de 2015 .
- ^ "Documentación del kernel de Linux: Escalado en la pila de redes de Linux" . kernel.org . 1 de diciembre de 2014 . Consultado el 2 de marzo de 2015 .
La carga por CPU se puede observar mediante la utilidad mpstat, pero tenga en cuenta que en los procesadores con hyperthreading (HT), cada hyperthread se representa como una CPU independiente. Para el manejo de interrupciones, HT no ha mostrado ningún beneficio en las pruebas iniciales, así que limite el número de colas al número de núcleos de CPU en el sistema.
- ^ "Tecnología Hyper-Threading: sistemas operativos que incluyen optimizaciones para la tecnología Hyper-Threading" . Intel.com. 19 de septiembre de 2011 . Consultado el 29 de febrero de 2012 .
- ^ Prácticas sostenibles: conceptos, metodologías, herramientas y aplicaciones . Asociación de Gestión de Recursos de Información. Diciembre de 2013. p. 666. ISBN 9781466648524.
- ^ "ARM no es fanático de HyperThreading" . theinquirer.net. 2 de agosto de 2006 . Consultado el 29 de febrero de 2012 .
- ^ Jermoluk, Tom (13 de octubre de 2010). "Acerca de MIPS y MIPS | Sitios de supercomputación TOP500" . Top500.org . Archivado desde el original el 13 de junio de 2011 . Consultado el 5 de abril de 2011 .
- ^ "ARM lanza el primer núcleo de procesador de 64 bits para servidores y teléfonos inteligentes" . Foro de Diseño Tecnológico . 30 de octubre de 2012.
- ^ Rik Myslewski (8 de mayo de 2013). "En lo más profundo del primer procesador móvil viable de Intel: Silvermont" . El registro . Consultado el 13 de enero de 2014 .
- ^ Chirgwin, Richard (25 de junio de 2017). "Las CPU de Intel Skylake y Kaby Lake tienen un desagradable error de hiperprocesamiento" . El registro . Consultado el 4 de julio de 2017 .
- ^ "Skylake, Kaby Lake Chips tienen un error de choque con Hyperthreading habilitado" . Ars Technica . 26 de junio de 2017 . Consultado el 25 de noviembre de 2017 .
- ^ Cutress, Ian (23 de abril de 2019). "Procesadores Intel 9th Gen Core: se anunciaron todas las CPU de escritorio y móviles de 45 W" . AnandTech .
- ^ Armasu, Lucian (14 de mayo de 2019). "Nuevo defecto de Intel tipo espectro afecta a los chips fabricados desde 2008" . Hardware de Tom .
- ^ Percival, Colin (14 de mayo de 2005). "Caché que falta por diversión y ganancias" (PDF) . Daemonology.net . Consultado el 14 de junio de 2016 .
- ^ "OpenBSD desactiva el hiperproceso de Intel sobre los temores de fuga de datos de la CPU" . Consultado el 24 de agosto de 2018 .
- ^ " ' Deshabilitar SMT / Hyperthreading en todos los BIOS de Intel' - MARC" . marc.info . Consultado el 24 de agosto de 2018 .
- ^ Greenberg, Andy (14 de mayo de 2019). "Meltdown Redux: falla de Intel permite a los piratas informáticos sifón secretos de millones de PC" . CON CABLE . Consultado el 14 de mayo de 2019 .
enlaces externos
- Intel Demonstrates Breakthrough Processor Design , un comunicado de prensa de agosto de 2001
- Intel: descripción general de alto nivel de Hyper-Threading
- Hyper-threading en MSDN Magazine
- artículo introductorio de Ars Technica
- Número de patente de EE. UU. 4.847.755
- Merom, Conroe y Woodcrest pierden HyperThreading
- ZDnet: Hyperthreading perjudica el rendimiento del servidor, dicen los desarrolladores
- ARM no es fanático de HyperThreading : describe los problemas de las soluciones SMT
- El impacto de Hyper-Threading en la utilización de recursos del procesador en aplicaciones de producción