El procesamiento multihilo simultáneo ( SMT ) es una técnica para mejorar la eficiencia general de las CPU superescalares con procesamiento multihilo por hardware . SMT permite que múltiples hilos de ejecución independientes utilicen mejor los recursos que ofrecen las arquitecturas de procesadores modernas .
Detalles
El término multihilo es ambiguo, ya que no solo se pueden ejecutar varios hilos simultáneamente en un mismo núcleo de CPU, sino también varias tareas (con tablas de páginas , segmentos de estado , anillos de protección , permisos de E/S , etc.). Aunque se ejecutan en el mismo núcleo, están completamente separadas entre sí. El multihilo es similar en concepto a la multitarea preventiva , pero se implementa a nivel de hilo en los procesadores superescalares modernos.
El multihilo simultáneo (SMT) es una de las dos implementaciones principales de multihilo, siendo la otra el multihilo temporal (también conocido como superhilo). En el multihilo temporal, solo un hilo de instrucciones puede ejecutarse en una etapa de la tubería a la vez. En el multihilo simultáneo, las instrucciones de más de un hilo pueden ejecutarse en una etapa de la tubería a la vez. Esto se logra sin grandes cambios en la arquitectura básica del procesador: las principales adiciones necesarias son la capacidad de obtener instrucciones de múltiples hilos en un ciclo y un archivo de registros más grande para almacenar datos de múltiples hilos. El número de hilos concurrentes lo deciden los diseñadores del chip. Dos hilos concurrentes por núcleo de CPU son comunes, pero algunos procesadores admiten muchos más. [ 1 ]
Debido a que inevitablemente aumenta el conflicto por los recursos compartidos, medir o consensuar su efectividad puede ser difícil. Sin embargo, la eficiencia energética medida de SMT con cargas de trabajo nativas y gestionadas paralelas en implementaciones históricas de Intel SMT ( hiper-hilo ) de 130 nm a 32 nm reveló que, en implementaciones de 45 nm y 32 nm, SMT es extremadamente eficiente energéticamente, incluso con procesadores Atom de ejecución en orden. [ 2 ] En los sistemas modernos, SMT aprovecha eficazmente la concurrencia con muy poca potencia dinámica adicional. Es decir, incluso cuando las ganancias de rendimiento son mínimas, el ahorro en el consumo de energía puede ser considerable. [ 2 ]
Algunos investigadores incluso han demostrado que los hilos adicionales pueden utilizarse de forma proactiva para inicializar un recurso compartido , como una caché, y así mejorar el rendimiento de otro hilo. Afirman que esto demuestra que SMT no solo aumenta la eficiencia. Otros utilizan SMT para proporcionar computación redundante, con cierto nivel de detección y recuperación de errores.
Sin embargo, en la mayoría de los casos actuales, SMT consiste en ocultar los bloqueos durante actividades de alta latencia, como el acceso a la memoria, aumentando así la eficiencia y el rendimiento de los cálculos por cantidad de hardware utilizado, al hacer un mayor uso de los recursos existentes.
Taxonomía
En el diseño de procesadores, existen dos maneras de aumentar el paralelismo en el chip con menores requisitos de recursos: una es la técnica superescalar, que intenta explotar el paralelismo a nivel de instrucción (ILP); la otra es el enfoque de multihilo, que explota el paralelismo a nivel de hilo (TLP).
Superscalar significa ejecutar múltiples instrucciones al mismo tiempo, mientras que el paralelismo a nivel de hilo (TLP) ejecuta instrucciones de múltiples hilos dentro de un mismo chip de procesador al mismo tiempo. Existen muchas maneras de admitir más de un hilo dentro de un chip, a saber:
- Multihilo entrelazado: Emisión entrelazada de múltiples instrucciones desde diferentes hilos, también conocido como multihilo temporal . Se puede subdividir en multihilo de grano fino o de grano grueso, según la frecuencia de las emisiones entrelazadas. El multihilo de grano fino , como en un procesador de barril , emite instrucciones para diferentes hilos después de cada ciclo, mientras que el multihilo de grano grueso solo cambia para emitir instrucciones desde otro hilo cuando el hilo actual en ejecución causa eventos de larga latencia (como fallos de página, etc.). El multihilo de grano grueso es más común para un menor cambio de contexto entre hilos. Por ejemplo, el procesador Montecito de Intel utiliza multihilo de grano grueso, mientras que el UltraSPARC T1 de Sun utiliza multihilo de grano fino. Para aquellos procesadores que tienen solo una tubería por núcleo, el multihilo entrelazado es la única opción posible, ya que puede emitir como máximo una instrucción por ciclo.
- Multiprocesamiento simultáneo (SMT): Permite emitir múltiples instrucciones desde múltiples subprocesos en un solo ciclo. Para ello, el procesador debe ser superescalar.
- Multiprocesamiento a nivel de chip (CMP o multinúcleo ): integra dos o más procesadores en un solo chip, cada uno de los cuales ejecuta hilos de forma independiente.
- Cualquier combinación de multihilo/SMT/CMP.
La clave para distinguirlos reside en la cantidad de instrucciones que el procesador puede emitir en un ciclo y en la cantidad de subprocesos de los que provienen dichas instrucciones. Por ejemplo, el UltraSPARC T1 de Sun Microsystems es un procesador multinúcleo que utiliza una técnica de multihilo de grano fino en lugar de multihilo simultáneo, ya que cada núcleo solo puede emitir una instrucción a la vez.
Implementaciones históricas
Aunque las CPU multihilo existen desde la década de 1950, la multihilo simultánea fue investigada por primera vez por IBM en 1968 como parte del proyecto ACS-360 . [ 3 ] El primer microprocesador comercial importante desarrollado con SMT fue el Alpha 21464 (EV8). Este microprocesador fue desarrollado por DEC en coordinación con Dean Tullsen de la Universidad de California, San Diego, y Susan Eggers y Henry Levy de la Universidad de Washington. El microprocesador nunca se lanzó, ya que la línea de microprocesadores Alpha se descontinuó poco antes de que HP adquiriera Compaq , que a su vez había adquirido DEC . El trabajo de Dean Tullsen también se utilizó para desarrollar las versiones con hyper-threading de los microprocesadores Intel Pentium 4, como el "Northwood" y el "Prescott".
Implementaciones comerciales modernas
x86/x86-64
El Intel Pentium 4 fue el primer procesador de escritorio moderno en implementar multihilo simultáneo, comenzando con el modelo de 3,06 GHz lanzado en 2002, y desde entonces introducido en varios de sus procesadores. Intel denomina a esta funcionalidad Tecnología Hyper-Threading y proporciona un motor SMT básico de dos hilos. Intel afirma una mejora de velocidad de hasta un 30 % [ 4 ] en comparación con un Pentium 4 idéntico, sin SMT. La mejora de rendimiento observada depende mucho de la aplicación; sin embargo, al ejecutar dos programas que requieren la atención completa del procesador, puede parecer que uno o ambos programas se ralentizan ligeramente cuando se activa Hyper-Threading. [ 5 ] Esto se debe a que el sistema de repetición del Pentium 4 ocupa valiosos recursos de ejecución, aumentando la contención por recursos como el ancho de banda, las cachés, las TLB , las entradas del búfer de reordenamiento y ecualizando los recursos del procesador entre los dos programas, lo que añade una cantidad variable de tiempo de ejecución. El núcleo Pentium 4 Prescott incorporó una cola de reproducción, lo que reduce el tiempo de ejecución necesario para el sistema de reproducción. Esto fue suficiente para superar por completo esa pérdida de rendimiento. [ 6 ]
El Intel Atom , lanzado por primera vez en 2008, fue el primer producto de Intel en incorporar SMT bidireccional (comercializado como Hyper-Threading) sin admitir la reordenación de instrucciones, la ejecución especulativa ni el cambio de nombre de registros. Intel reintrodujo Hyper-Threading con la microarquitectura Nehalem , tras su ausencia en la microarquitectura Core .
Intel Xeon Phi (2010 – 2020) tiene SMT de 4 vías (con multihilo multiplexado por tiempo) con hilos basados en hardware que no se pueden deshabilitar, a diferencia del Hyper-Threading regular. [ 7 ]
La microarquitectura AMD Bulldozer (2011) utiliza "módulos" de dos hilos. En cada módulo hay dos núcleos enteros separados, pero la FlexFPU y la caché L2 se comparten, por lo que se trata solo de una implementación SMT parcial. [ 8 ] [ 9 ]
La familia de microarquitecturas Zen de AMD cuenta con SMT bidireccional. La mayoría de los recursos en un núcleo Zen 5 se comparten de forma competitiva en SMT, lo que permite que el hilo activo tome todos los recursos (o "la mayoría" en el caso de los recursos con marca de agua). Las excepciones particionadas estáticamente son la cola de microoperaciones, la cola de retiro y la cola de no planificación de la FPU. [ 10 ]
MIPS
Los diseños de arquitectura MIPS más recientes de Imagination Technologies incluyen un sistema SMT conocido como "MIPS MT". [ 11 ] MIPS MT proporciona elementos de procesamiento virtual de alto rendimiento y microhilos de hardware más ligeros. RMI , una empresa emergente con sede en Cupertino, es el primer proveedor de MIPS en ofrecer un SoC de procesador basado en ocho núcleos, cada uno de los cuales ejecuta cuatro hilos. Los hilos pueden ejecutarse en modo de grano fino, donde se puede ejecutar un hilo diferente en cada ciclo. También se pueden asignar prioridades a los hilos. Las CPU MIPS de Imagination Technologies tienen dos hilos SMT por núcleo.
POWER/PowerPC/Power ISA
El encapsulado Blue Gene /Q de IBM cuenta con montaje superficial (SMT) de 4 vías.
El IBM POWER5 , anunciado en mayo de 2004, se presenta como un módulo de doble núcleo y doble chip (DCM), o como un módulo multichip (MCM) de cuatro u ocho núcleos, con cada núcleo incluyendo un motor SMT de dos hilos. La implementación de IBM es más sofisticada que las anteriores, ya que puede asignar una prioridad diferente a los distintos hilos, es más granular y el motor SMT se puede activar y desactivar dinámicamente para ejecutar mejor aquellas cargas de trabajo donde un procesador SMT no aumentaría el rendimiento. Esta es la segunda implementación de IBM de multihilo de hardware disponible de forma general. En 2010, IBM lanzó sistemas basados en el procesador POWER7 con ocho núcleos, cada uno con cuatro hilos inteligentes simultáneos. Esto cambia el modo de subprocesos entre uno, dos o cuatro hilos dependiendo del número de subprocesos de proceso que se estén programando en ese momento. Esto optimiza el uso del núcleo para obtener un tiempo de respuesta mínimo o un rendimiento máximo. El IBM POWER8 tiene 8 hilos simultáneos inteligentes por núcleo (SMT8).
IBM Z
Los procesadores IBM Z , a partir del z13 en 2013, tienen dos hilos por núcleo (SMT-2).
SPARC
Aunque muchos informaron que el UltraSPARC T1 de Sun Microsystems (conocido como "Niagara" hasta su lanzamiento el 14 de noviembre de 2005) y el ahora desaparecido procesador con nombre en clave " Rock " (anunciado originalmente en 2005, pero cancelado en 2010 tras numerosos retrasos) son implementaciones de SPARC centradas casi exclusivamente en la explotación de las técnicas SMT y CMP, Niagara en realidad no utiliza SMT. Sun se refiere a estos enfoques combinados como "CMT" y al concepto general como "Throughput Computing". Niagara tiene ocho núcleos, pero cada núcleo tiene solo una tubería, por lo que en realidad utiliza multihilo de grano fino. A diferencia de SMT, donde las instrucciones de múltiples hilos comparten la ventana de emisión en cada ciclo, el procesador utiliza una política de round robin para emitir instrucciones del siguiente hilo activo en cada ciclo. Esto lo hace más similar a un procesador de barril . El procesador Rock de Sun Microsystems es diferente: tiene núcleos más complejos que tienen más de una tubería.
El procesador SPARC T3 de Oracle Corporation tiene ocho subprocesos de grano fino por núcleo; los procesadores SPARC T4, SPARC T5, SPARC M5, M6 y M7 tienen ocho subprocesos de grano fino por núcleo, de los cuales dos pueden ejecutarse simultáneamente.
El Fujitsu SPARC64 VI tiene multihilo vertical (VMT) de grano grueso; el SPARC VII y los modelos más recientes tienen SMT de 2 vías.
Otras arquitecturas de conjuntos de instrucciones
Los procesadores Intel Itanium (IA-64, 2001-2020 ) Montecito utilizan multihilo de grano grueso, mientras que Tukwila y los más recientes utilizan SMT de dos vías (con multihilo de doble dominio).
La arquitectura VISC (2016) [ 12 ] [ 13 ] [ 14 ] [ 15 ] utiliza la capa de software virtual (capa de traducción) para enviar un único hilo de instrucciones al Front End global que divide las instrucciones en hilos de hardware virtuales que luego se envían a núcleos virtuales separados. Estos núcleos virtuales pueden luego enviarlos a los recursos disponibles en cualquiera de los núcleos físicos. Múltiples núcleos virtuales pueden enviar hilos al búfer de reordenamiento de un solo núcleo físico, que puede dividir instrucciones parciales y datos de múltiples hilos a través de los puertos de ejecución al mismo tiempo. Cada núcleo virtual mantiene un seguimiento de la posición de la salida relativa. Esta forma de multihilo puede aumentar el rendimiento de un solo hilo al permitir que un solo hilo utilice todos los recursos de la CPU. La asignación de recursos es dinámica en un nivel de latencia cercano a un ciclo (1–4 ciclos dependiendo del cambio en la asignación según las necesidades de cada aplicación. Por lo tanto, si dos núcleos virtuales compiten por recursos, hay algoritmos apropiados para determinar qué recursos se asignarán dónde.
Desventajas
SMT introduce el uso compartido de recursos. Algunos esquemas de compartición (por ejemplo, la división estática) no permiten que un hilo tome más de un recurso incluso cuando otro hilo no lo está utilizando, lo que crea un posible cuello de botella en el rendimiento en comparación con el caso sin SMT. [ 16 ] También existe un posible problema de equidad. Las implementaciones más recientes de SMT intentan minimizar la aparición de estos problemas con una combinación de particionamiento estático, compartición competitiva y compartición competitiva con marca de agua, siendo esta última una combinación de ambas. [ 17 ]
Los críticos argumentan que supone una carga considerable para los desarrolladores de software tener que probar si el multihilo simultáneo es bueno o malo para su aplicación en diversas situaciones e insertar lógica adicional para desactivarlo si disminuye el rendimiento. Los sistemas operativos de 2009 carecen de llamadas API convenientes para este propósito y para evitar que los procesos con diferente prioridad se quiten recursos entre sí. [ 18 ] Existe una biblioteca hwloc multiplataforma para detectar la presencia de configuraciones SMT y NUMA , las cuales a menudo requieren la consideración del programador. Prime95 es un programa que utiliza hwloc: por defecto, utiliza los hilos SMT adicionales al realizar la división de prueba de enteros, pero solo utiliza un hilo por núcleo para sus operaciones habituales con gran cantidad de coma flotante. [ 19 ]
preocupación por la seguridad
También existe un problema de seguridad con ciertas implementaciones de multihilo simultáneo debido a errores y fugas de información por canales laterales. El hyperthreading de Intel en los procesadores basados en NetBurst tiene una vulnerabilidad que permite que una aplicación robe una clave criptográfica de otra aplicación que se ejecuta en el mismo procesador mediante el monitoreo del uso de su caché. [ 20 ] También existen exploits sofisticados de aprendizaje automático para la implementación de HT que se explicaron en Black Hat 2018. [ 21 ]
Véase también
Referencias
- ↑ "El primer tejido fotónico de malla a malla directa" (PDF) . Archivado del original (PDF) el 8 de febrero de 2024. Consultado el 8 de febrero de 2024 .
- 1 2 ASPLOS'11
- ↑ Smotherman, Mark (25 de mayo de 2011). "Fin del proyecto IBM ACS" . Escuela de Informática, Universidad de Clemson . Recuperado el 19 de enero de 2013 .
- ↑ Marr, Deborah (14 de febrero de 2002). "Arquitectura y microarquitectura de la tecnología Hyper-Threading" (PDF) . Intel Technology Journal . 6 (1): 4. doi : 10.1535/itj . Archivado del original (PDF) el 24 de octubre de 2016. Recuperado el 25 de septiembre de 2015 .
- ↑ "Evaluación del rendimiento de la CPU Pentium 4 2.8 y 3.0" . Archivado del original el 24 de febrero de 2021. Consultado el 22 de abril de 2011 .
- ↑ "Reproducción: Características desconocidas del núcleo NetBurst. Página 15" . Reproducción: Características desconocidas del núcleo NetBurst . xbitlabs.com. Archivado del original el 14 de mayo de 2011. Consultado el 24 de abril de 2011 .
- ↑ Barth, Michaela; Byckling, Mikko; Ilieva, Nevena; Saarinen, Sami; Schliephake, Michael (18 de febrero de 2014). Weinberg, Volker (ed.). "Guía de mejores prácticas Intel Xeon Phi v1.1" . Partnership for Advanced Computing in Europe. Archivado del original el 3 de mayo de 2017. Recuperado el 22 de noviembre de 2016 .
- ↑ "Multiprocesamiento del módulo de la familia AMD Bulldozer" . wccftech. Julio de 2013. Archivado del original el 17 de octubre de 2013. Consultado el 22 de julio de 2013 .
- ↑ Halfacree, Gareth (28 de octubre de 2010). "AMD presenta Flex FP" . bit-tech.
- ↑ "SIN COMPROMISOS: IMPULSANDO EL RENDIMIENTO Y LA EFICIENCIA DE LOS SERVIDORES CON AMD EPYC™ Y SMT" (PDF) . Abril de 2025.
- ↑ "Descripción de MIPS MT ASE" . Imagination Technologies .
- ↑ "Soft Machines presenta la arquitectura de chip virtual VISC | bit-tech.net" .
- ↑ Cutress, Ian (12 de febrero de 2016). "Análisis de la arquitectura de las máquinas blandas: un elemento de VISC para mejorar la comunicación entre procesos" . AnandTech. Archivado del original el 13 de febrero de 2016.
- ↑ "Se revela el rendimiento del procesador de próxima generación" . VR World . 4 de febrero de 2016. Archivado del original el 13 de enero de 2017.
- ↑ "Ondas arquitectónicas" . Soft Machines. 2017. Archivado del original el 29 de marzo de 2017.
- ↑ "Reproducción: Características desconocidas del núcleo NetBurst. Página 15" . Reproducción: Características desconocidas del núcleo NetBurst . xbitlabs.com. Archivado del original el 14 de mayo de 2011. Consultado el 24 de abril de 2011 .
- ↑ "Multiprocesamiento simultáneo: Impulsando el rendimiento y la eficiencia en las CPU AMD EPYC" . 2025.
- ↑ "¿Qué tan bueno es el hyperthreading?" . 2009. Archivado del original el 17 de junio de 2025.
- ↑ Prime95 versión 30.19, cuadro de diálogo del programa "Opciones/Límites de recursos/Avanzado"
- ↑ El uso de subprocesos múltiples se considera perjudicial
- ↑ TLBleed: Cuando proteger la caché de la CPU no es suficiente
- General
- Shar, Leonard E.; Davidson, Edward S. (febrero de 1974). "Un sistema multiminiprocesador implementado mediante segmentación". Computer . 7 (2): 42– 51. Bibcode : 1974Compr...7b..42S . doi : 10.1109/MC.1974.6323457 . S2CID 27957358 .
- Tullsen, DM; Eggers, SJ; Levy, HM (1995). «Multiprocesamiento simultáneo: Maximización del paralelismo en el chip» . 22.º Simposio Internacional Anual sobre Arquitectura de Computadoras . IEEE. págs. 392–403 . ISBN 978-0-89791-698-1.
- Tullsen, DM; Eggers, SJ; Emer, JS; Levy, HM; Lo, JL; Stamm, RL (1996). "Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor" . 23rd Annual International Symposium on Computer Architecture . IEEE. p. 191. doi : 10.1145/232973.232993 . ISBN 978-0-89791-786-5. S2CID 1402376 .
- Esmaeilzadeh, H.; Cao, T.; Yang, X.; Blackburn, SM; McKinley, KS (2011). «Retrospectiva sobre las revoluciones del lenguaje y el hardware: potencia medida, rendimiento y escalabilidad» (PDF) . Actas de la decimosexta conferencia internacional ASPLOS XVI sobre soporte arquitectónico para lenguajes de programación y sistemas operativos . ACM. págs. 319–332 . doi : 10.1145/1950365.1950402 . ISBN 978-1-4503-0266-1. S2CID 6845129 .
Enlaces externos
- Artículos de noticias y trabajos académicos de SMT
- Investigación sobre SMT en la Universidad de Washington
- Smotherman, Mark (noviembre de 2007). "Cronología de las tecnologías de multihilo" . Escuela de Informática, Universidad de Clemson.
- unidad central de procesamiento
- Arquitectura de computadoras
- La taxonomía de Flynn
- microprocesadores superescalares
- Hilos (informática)