Hiperprocesamiento

Implementación de subprocesos múltiples simultáneos patentada por Intel

En esta representación de alto nivel de HTT, las instrucciones se obtienen de la RAM (los cuadros de diferentes colores representan las instrucciones de cuatro procesos diferentes ), se decodifican y reordenan en el front-end (los cuadros blancos representan burbujas de canalización ) y se pasan al núcleo de ejecución capaz de ejecutar instrucciones de dos programas diferentes durante el mismo ciclo de reloj . [1] [2] [3]

Hyper-threading (oficialmente llamada Hyper-Threading Technology o HT Technology y abreviada como HTT o HT ) es la implementación de subprocesamiento simultáneo multihilo (SMT) patentada por Intel que se utiliza para mejorar la paralelización de los cálculos (realizar múltiples 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. [4] Desde entonces, Intel ha incluido esta tecnología en las CPU de las series Itanium , Atom y Core 'i' , entre otras. [5]

Por cada núcleo de procesador que esté físicamente presente, el sistema operativo direcciona dos núcleos virtuales (lógicos) y comparte la carga de trabajo entre ellos cuando es posible. La función principal del hyper-threading es aumentar la cantidad de instrucciones independientes en la secuencia de comandos; 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, entonces otro proceso puede continuar si sus recursos están disponibles.

Además de requerir soporte de subprocesamiento múltiple simultáneo en el sistema operativo, el hiperprocesamiento puede utilizarse correctamente solo con un sistema operativo específicamente optimizado para ello. [6]

Descripción general

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

La tecnología Hyper-Threading es una forma de tecnología de subprocesamiento simultáneo de múltiples hilos 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 arquitectónico de procesador. Cada procesador lógico puede detenerse, interrumpirse o dirigirse individualmente para ejecutar un hilo específico, independientemente del otro procesador lógico que comparte el mismo núcleo físico. [8]

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 hiperprocesado comparten los recursos de ejecución. Estos recursos incluyen el motor de ejecución, las memorias caché y la interfaz de 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 (suponiendo que ambos núcleos lógicos estén asociados con el mismo núcleo físico). Un procesador se estanca cuando debe esperar los datos que ha solicitado para terminar de procesar el hilo actual. El grado de beneficio que se observa al utilizar un procesador hiperprocesado o de múltiples núcleos depende de las necesidades del software y de lo bien que este y el sistema operativo estén escritos para administrar el procesador de manera eficiente. [8]

El hiperprocesamiento funciona duplicando ciertas secciones del procesador (aquellas que almacenan el estado de la arquitectura ), pero sin duplicar los recursos de ejecución principales . Esto permite que un procesador con hiperprocesamiento aparezca como el procesador "físico" habitual más un procesador " lógico " adicional para el sistema operativo anfitrión (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 apropiada. Cuando los recursos de ejecución en un procesador con hiperprocesamiento no están en uso por la tarea actual, y especialmente cuando el procesador está estancado, esos recursos de ejecución se pueden usar para ejecutar otra tarea programada. (El procesador puede estancarse debido a una falla de caché , una predicción incorrecta de la rama o una dependencia de datos ). [9]

Esta tecnología es transparente para los sistemas operativos y los programas. Lo mínimo que se requiere para aprovechar el hyper-threading es el soporte de multiprocesamiento simétrico (SMP) en el sistema operativo, ya que los procesadores lógicos no se diferencian en nada de los procesadores físicos para el sistema operativo.

Es posible optimizar el comportamiento del sistema operativo en sistemas con múltiples procesadores y capacidad para hiperprocesamiento. Por ejemplo, considere un sistema SMP con dos procesadores físicos que son hiperprocesadores (para un total de cuatro procesadores lógicos). Si el programador de subprocesos del sistema operativo no es consciente de la hiperprocesación, tratará a los cuatro procesadores lógicos de la misma manera. Si solo dos subprocesos son elegibles para ejecutarse, podría optar por programar esos subprocesos en los dos procesadores lógicos que pertenecen al mismo procesador físico. Ese procesador estaría extremadamente ocupado y compartiría recursos de ejecución, mientras que el otro procesador permanecería inactivo, lo que provocaría un rendimiento inferior al que se obtendría si los subprocesos se programaran en procesadores físicos diferentes. Este problema se puede evitar mejorando el programador para que trate a los procesadores lógicos de forma diferente a los procesadores físicos, lo que es, en cierto sentido, una forma limitada de los cambios del programador necesarios 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. [10]

Denelcor, Inc. introdujo el procesamiento multihilo con el procesador de elementos heterogéneos (HEP) en 1982. El pipeline HEP no podía contener múltiples instrucciones del mismo proceso. Solo se permitía que una instrucción de un proceso determinado estuviera presente en el pipeline en cualquier momento. Si una instrucción de un proceso determinado bloqueaba el pipeline, las instrucciones de otros procesos continuarían después de que el pipeline se agotara.

La patente estadounidense para la tecnología detrás del hyper-threading fue otorgada a Kenneth Okin de 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. [11]

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 permaneció como una característica en cada procesador 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 de modelos Pentium 4 no utilizaron hyper-threading. Los procesadores basados ​​en la microarquitectura Core no tenían hyper-threading porque la microarquitectura Core era descendiente de la antigua microarquitectura P6 . La microarquitectura P6 se ​​utilizó 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). Windows 2000 SP3 y Windows XP SP1 han agregado soporte para hyper-threading.

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

Reclamaciones de rendimiento

Según Intel, la primera implementación de hyper-threading utilizó solo un 5% más de área de chip que el procesador comparable sin hyper-threading, pero el rendimiento fue entre un 15 y un 30% mejor. [17] [18] Intel afirma una mejora de rendimiento de hasta un 30% en comparación con un Pentium 4 multithreading no simultáneo, idéntico en todo lo demás. Tom's Hardware afirma: "En algunos casos, un P4 funcionando a 3,0 GHz con HT activado puede incluso superar a un P4 funcionando a 3,6 GHz con HT desactivado". [19] Intel también afirma mejoras significativas de rendimiento con un procesador Pentium 4 habilitado con hyper-threading en algunos algoritmos de inteligencia artificial.

En general, el historial de rendimiento del hiperprocesamiento fue desigual al principio. Como señala un comentario sobre informática de alto rendimiento de noviembre de 2002: [20]

La tecnología Hyper-Threading puede mejorar el rendimiento de algunas aplicaciones MPI , pero no de 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 mejoras de rendimiento pueden variar o incluso ser negativas. El siguiente paso es utilizar herramientas de rendimiento para comprender qué áreas contribuyen a las mejoras de rendimiento y cuáles a su degradación.

Como resultado, las mejoras de rendimiento dependen en gran medida de la aplicación; [21] sin embargo, cuando se ejecutan dos programas que requieren la atención total del procesador, puede parecer que uno o ambos programas se ralentizan ligeramente cuando se activa la tecnología Hyper-Threading. [22] 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 de rendimiento. [23]

Según un análisis de noviembre de 2009 realizado por Intel, los impactos en el rendimiento de la tecnología hyper-threading resultan en una mayor latencia general en caso de que la ejecución de subprocesos no genere ganancias significativas en el rendimiento general, que varían [21] según la aplicación. En otras palabras, la latencia general de procesamiento aumenta significativamente debido a la tecnología hyper-threading, y los efectos negativos se reducen a medida que hay más subprocesos simultáneos que pueden utilizar de manera efectiva la utilización de recursos de hardware adicionales que proporciona la tecnología hyper-threading. [24] Existe un análisis de rendimiento similar para los efectos de la tecnología hyper-threading cuando se utiliza para gestionar tareas relacionadas con la gestión del tráfico de red, como el procesamiento de solicitudes de interrupción generadas por los controladores de interfaz de red (NIC). [25] Otro artículo afirma que no hay mejoras en el rendimiento cuando se utiliza la tecnología hyper-threading para el manejo de interrupciones. [26]

Desventajas

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). [27]

En 2006, el hyper-threading fue criticado por su ineficiencia energética. [28] Por ejemplo, ARM (una empresa especializada en el diseño de CPU de bajo consumo) afirmó que el multithreading simultáneo puede consumir hasta un 46% más de energía que los diseños de doble núcleo comunes. Además, afirmaron que el SMT aumenta el consumo de caché en un 42%, mientras que el doble núcleo produce una disminución del 37%. [29]

En 2010, ARM dijo que podría incluir subprocesos múltiples simultáneos en sus futuros chips; [30] sin embargo, esto fue rechazado a favor de su diseño de 64 bits de 2012. [31] ARM produjo núcleos SMT en 2018. [32]

En 2013, Intel abandonó el SMT en 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 mejor eficiencia energética que una menor cantidad de núcleos con SMT. [33]

En 2017, se reveló que los procesadores Skylake y Kaby Lake de Intel tenían un error en su implementación de hiperprocesamiento que podía causar pérdida de datos. [34] Posteriormente se lanzaron actualizaciones de microcódigo para abordar el problema. [35]

En 2019, con Coffee Lake , Intel se alejó temporalmente de incluir hyper-threading en los procesadores de escritorio Core i7 convencionales, excepto en las piezas Core i9 de gama más alta o las CPU Pentium Gold. [36] También comenzó a recomendar deshabilitar el hyper-threading, ya que se revelaron nuevos ataques de vulnerabilidad de CPU que podrían mitigarse deshabilitando HT. [37]

Seguridad

En mayo de 2005, Colin Percival demostró que un hilo malicioso en un Pentium 4 puede usar un ataque de canal lateral basado en tiempo para monitorear los patrones de acceso a la memoria de otro hilo 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 solo 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 evite la ejecución simultánea, en el mismo núcleo físico, de hilos con diferentes privilegios. [38] En 2018, el sistema operativo OpenBSD ha desactivado el hiperprocesamiento "para evitar que los datos potencialmente se filtren de las aplicaciones a otro software" causado por las vulnerabilidades Foreshadow/L1TF . [39] [40] En 2019, un conjunto de vulnerabilidades llevó a los expertos en seguridad a recomendar la desactivación del hiperprocesamiento en todos los dispositivos. [41]

Véase también

Referencias

  1. ^ Stokes, Jon (3 de octubre de 2002). "Introducción al multithreading, superthreading e hyperthreading". Ars Technica . págs. 2–3 . Consultado el 30 de septiembre de 2015 .
  2. ^ 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 la 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 .
  3. ^ Anand Lal Shimpi (5 de octubre de 2012). "El front-end Haswell: análisis de la arquitectura Haswell de Intel". AnandTech . Consultado el 30 de septiembre de 2015 .
  4. ^ "CPU Intel Pentium 4 de 3,06 GHz con tecnología Hyper-Threading: matar dos pájaros de un tiro". X-bit labs. Archivado desde el original el 31 de mayo de 2014. Consultado el 4 de junio de 2014 .
  5. ^ "Tecnología Intel® Hyper-Threading (Intel® HT Technology)". Intel . Consultado el 24 de octubre de 2021 .
  6. ^ 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 (versiones Professional y Personal)
  7. ^ "Buscador de especificaciones de procesadores Intel: SL6WK".
  8. ^ ab Thomadakis, Michael E. (17 de marzo de 2011). "La arquitectura del procesador Nehalem y las plataformas SMP Nehalem-EP" (PDF) . Universidad Texas A&M. pág. 23. Archivado desde el original (PDF) el 11 de agosto de 2014. Consultado el 21 de marzo de 2014 .
  9. ^ Hennessy, John L.; Patterson, David A. (7 de diciembre de 2017). Arquitectura informática: un enfoque cuantitativo . Asanović, Krste , Bakos, Jason D., Colwell, Robert P., Bhattacharjee, Abhishek, 1984-, Conte, Thomas M., 1964- (sexta edición). Cambridge, MA. ISBN 978-0128119051.OCLC 983459758  .{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  10. ^ "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
  11. ^ Okin, Kenneth (1 de noviembre de 1994), Patente de los Estados Unidos: 5361337 - Método y aparato para conmutar rápidamente procesos en un sistema informático, archivado desde el original el 21 de septiembre de 2015 , consultado el 24 de mayo de 2016
  12. ^ "Juegos extremos con el procesador Intel® Core™ i7 Extreme Edition". www.intel.com . Archivado desde el original el 1 de diciembre de 2008.
  13. ^ "Microarquitectura del procesador Intel® Atom™". Intel.com. 18 de marzo de 2011. Consultado el 5 de abril de 2011 .
  14. ^ "Intel revela nuevas características de Itanium Poulson". Tomshardware.com. 24 de agosto de 2011. Consultado el 2 de julio de 2017 .
  15. ^ "Página de índice de procesadores de servidor". Intel.com. 18 de marzo de 2011. Consultado el 5 de abril de 2011 .
  16. ^ "Procesador Intel Xeon serie 5500". Intel.com . Consultado el 5 de abril de 2011 .
  17. ^ "Tecnología Hyper-Threading" (PDF) . Intel Technology Journal . 06 (1). 14 de febrero de 2012. ISSN  1535-766X. Archivado desde el original (PDF) el 19 de octubre de 2012.
  18. ^ "Cómo determinar la eficacia de la tecnología Hyper-Threading con una aplicación". software.intel.com . 28 de abril de 2011. Archivado desde el original el 2 de febrero de 2010.
  19. ^ "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 .
  20. ^ Tau Leng; Rizwan Ali; Jenwei Hsieh; Christopher Stanton (noviembre de 2002). "Un estudio de hiperprocesamiento en clústeres informáticos de alto rendimiento" (PDF) . Dell. pág. 4 . Consultado el 12 de noviembre de 2012 .
  21. ^ por Joel Hruska (24 de julio de 2012). "Maximización del rendimiento: comparación de los efectos de Hyper-Threading y actualizaciones de software". extremetech.com . Consultado el 2 de marzo de 2015 .
  22. ^ "Evaluación del rendimiento de la CPU - Benchmark - Pentium 4 2.8 y 3.0". users.telenet.be . Archivado desde el original el 24 de febrero de 2021 . Consultado el 12 de abril de 2011 .
  23. ^ "Replay: Unknown Features of the NetBurst Core. Página 15". Replay: Unknown Features of the NetBurst Core . Xbitlabs. Archivado desde el original el 14 de mayo de 2011. Consultado el 24 de abril de 2011 .
  24. ^ Valles, Antonio (20 de noviembre de 2009). "Perspectivas de rendimiento de la tecnología Hyper-Threading de Intel". Intel . Archivado desde el original el 17 de febrero de 2015 . Consultado el 26 de febrero de 2015 .
  25. ^ "Ajuste y rendimiento de la red". calomel.org . 12 de noviembre de 2013 . Consultado el 26 de febrero de 2015 .
  26. ^ "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 utilizando la utilidad mpstat, pero tenga en cuenta que en los procesadores con hiperprocesamiento (HT), cada hiperprocesamiento se representa como una CPU independiente. Para el manejo de interrupciones, HT no ha demostrado ningún beneficio en las pruebas iniciales, por lo que se debe limitar la cantidad de colas a la cantidad de núcleos de CPU en el sistema.
  27. ^ "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 .
  28. ^ 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.
  29. ^ "ARM no es partidario del HyperThreading". theinquirer.net. 2 de agosto de 2006. Archivado desde el original el 6 de septiembre de 2009. Consultado el 29 de febrero de 2012 .{{cite web}}: CS1 maint: URL no apta ( enlace )
  30. ^ Jermoluk, Tom (13 de octubre de 2010). "About MIPS and MIPS | TOP500 Supercomputing Sites". Top500.org . Archivado desde el original el 13 de junio de 2011. Consultado el 5 de abril de 2011 .
  31. ^ "ARM lanza el primer núcleo de procesador de 64 bits para servidores y teléfonos inteligentes". Tech Design Forum . 30 de octubre de 2012.
  32. ^ "Arm lanza el primer núcleo Cortex con capacidad SMT | bit-tech.net". bit-tech.net . Consultado el 2 de diciembre de 2023 .
  33. ^ Rik Myslewski (8 de mayo de 2013). «En profundidad el primer procesador móvil viable de Intel: Silvermont». The Register . Consultado el 13 de enero de 2014 .
  34. ^ Chirgwin, Richard (25 de junio de 2017). "Las CPU Skylake y Kaby Lake de Intel tienen un desagradable error de hiperprocesamiento". The Register . Consultado el 4 de julio de 2017 .
  35. ^ "Los chips Skylake y Kaby Lake tienen un error de bloqueo con el hiperprocesamiento habilitado". Ars Technica . 26 de junio de 2017 . Consultado el 25 de noviembre de 2017 .
  36. ^ Cutress, Ian (23 de abril de 2019). "Procesadores Intel Core de novena generación: todas las CPU de 45 W para computadoras de escritorio y dispositivos móviles anunciadas". AnandTech .
  37. ^ Armasu, Lucian (14 de mayo de 2019). "La nueva falla similar a Spectre de Intel afecta a los chips fabricados desde 2008". Tom's Hardware . Archivado desde el original el 4 de agosto de 2019.
  38. ^ Percival, Colin (14 de mayo de 2005). "Cache Missing for Fun and Profit" (PDF) . Daemonology.net . Consultado el 14 de junio de 2016 .
  39. ^ "OpenBSD desactiva el hyper-threading de Intel por temor a fugas de datos de la CPU" . Consultado el 24 de agosto de 2018 .
  40. ^ "'Deshabilitar SMT/Hyperthreading en todas las BIOS de Intel' - MARC". marc.info . Consultado el 24 de agosto de 2018 .
  41. ^ Greenberg, Andy (14 de mayo de 2019). "Meltdown Redux: Intel Flaw Lets Hackers Saphon Secrets from Millions of PCs" (Meltdown Redux: una falla de Intel permite a los piratas informáticos extraer secretos de millones de PC). WIRED . Consultado el 14 de mayo de 2019 .
  • Intel demuestra un diseño de procesador innovador, 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: el hyperthreading perjudica el rendimiento del servidor, dicen los desarrolladores
  • ARM no es partidario de HyperThreading: describe los problemas de las soluciones SMT
  • El impacto de la tecnología Hyper-Threading en la utilización de los recursos del procesador en aplicaciones de producción
Obtenido de "https://es.wikipedia.org/w/index.php?title=Hyper-threading&oldid=1232787250"