De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El subproceso múltiple simultáneo ( SMT ) es una técnica para mejorar la eficiencia general de las CPU superescalares con subprocesos múltiples de hardware . SMT permite múltiples subprocesos de ejecución independientes para utilizar mejor los recursos proporcionados por las arquitecturas de procesador modernas .

Detalles [ editar ]

El nombre de subprocesos múltiples es ambiguo, porque no solo se pueden ejecutar múltiples subprocesos simultáneamente en un núcleo de CPU, sino también múltiples tareas (con diferentes tablas de páginas , diferentes segmentos de estado de tareas , diferentes anillos de protección , diferentes permisos de E / S , etc.). Aunque se ejecutan en el mismo núcleo, están completamente separados entre sí. El subproceso múltiple es similar en concepto a la multitarea preventiva, pero se implementa en el nivel de ejecución del subproceso en los procesadores superescalares modernos.

El subproceso múltiple simultáneo (SMT) es una de las dos implementaciones principales del subproceso múltiple, la otra forma es el subproceso múltiple temporal(también conocido como superhilo). En el subproceso múltiple temporal, solo se puede ejecutar un subproceso de instrucciones en cualquier etapa de canalización determinada a la vez. En el subproceso múltiple simultáneo, las instrucciones de más de un subproceso se pueden ejecutar en cualquier etapa de canalización determinada a la vez. Esto se hace sin grandes cambios en la arquitectura básica del procesador: las principales adiciones necesarias son la capacidad de obtener instrucciones de varios subprocesos en un ciclo y un archivo de registro más grande para contener datos de varios subprocesos. Los diseñadores de chips pueden decidir el número de subprocesos simultáneos. Son comunes dos subprocesos simultáneos por núcleo de CPU, pero algunos procesadores admiten hasta ocho subprocesos simultáneos por núcleo.

Debido a que inevitablemente aumenta el conflicto sobre los recursos compartidos, puede resultar difícil medir o acordar su eficacia. Sin embargo, la eficiencia energética medida de SMT con cargas de trabajo nativas y administradas paralelas en implementaciones históricas de Intel SMT ( Hyper-Threading ) de 130 nm a 32 nm encontró que en implementaciones de 45 nm y 32 nm, SMT es extremadamente eficiente desde el punto de vista energético, incluso con procesadores Atom inorder. [1] En los sistemas modernos, SMT explota efectivamente la concurrencia con muy poca potencia dinámica adicional. Es decir, incluso cuando las ganancias de rendimiento son mínimas, los ahorros en el consumo de energía pueden ser considerables. [2]

Algunos investigadores [ ¿quién? ] han demostrado que los subprocesos adicionales se pueden usar de forma proactiva para generar un recurso compartido como un caché, para mejorar el rendimiento de otro subproceso único, y afirman que esto muestra que SMT no solo aumenta la eficiencia. Otros [ ¿quién? ] utilizan SMT para proporcionar computación redundante, para cierto nivel de detección y recuperación de errores.

Sin embargo, en la mayoría de los casos actuales, SMT se trata de ocultar la latencia de la memoria , aumentar la eficiencia y aumentar el rendimiento de los cálculos por cantidad de hardware utilizado. [ cita requerida ]

Taxonomía [ editar ]

En el diseño de procesadores, hay dos formas de aumentar el paralelismo en el chip con menos requisitos de recursos: una es la técnica superescalar que intenta explotar el paralelismo a nivel de instrucción (ILP); el otro es un enfoque de subprocesos múltiples que explota el paralelismo a nivel de subprocesos (TLP).

Superscalar significa ejecutar varias instrucciones al mismo tiempo, mientras que el paralelismo a nivel de subprocesos (TLP) ejecuta instrucciones de varios subprocesos dentro de un chip de procesador al mismo tiempo. Hay muchas formas de admitir más de un hilo dentro de un chip, a saber:

  • Subprocesos múltiples intercalados: Problema entrelazado de varias instrucciones de diferentes subprocesos, también conocido como subprocesos múltiples temporales . Se puede dividir a su vez en subprocesos múltiples de grano fino o subprocesos múltiples de grano grueso dependiendo de la frecuencia de problemas intercalados. El subproceso múltiple de grano fino , como en un procesador de barril, emite instrucciones para diferentes subprocesos después de cada ciclo, mientras que el subproceso múltiple de grano grueso solo cambia para emitir instrucciones desde otro subproceso cuando el subproceso en ejecución actual causa algunos eventos de latencia prolongada (como fallas de página, etc. ). El subproceso múltiple de grano grueso es más común para cambiar menos contexto entre subprocesos. Por ejemplo, Montecito de IntelEl procesador utiliza subprocesos múltiples de grano grueso, mientras que UltraSPARC T1 de Sun utiliza subprocesos múltiples de grano fino. Para aquellos procesadores que tienen solo una canalización por núcleo, el subproceso múltiple intercalado es la única forma posible, porque puede emitir como máximo una instrucción por ciclo.
  • Múltiples subprocesos simultáneos (SMT): emita varias instrucciones desde varios subprocesos en un ciclo. El procesador debe ser superescalar para hacerlo.
  • Multiprocesamiento a nivel de chip (CMP o multinúcleo ): integra dos o más procesadores en un chip, cada uno de los cuales ejecuta subprocesos de forma independiente.
  • Cualquier combinación de multiproceso / SMT / CMP.

El factor clave para distinguirlos es observar cuántas instrucciones puede emitir el procesador en un ciclo y cuántos subprocesos de donde provienen las instrucciones. Por ejemplo, UltraSPARC T1 de Sun Microsystems es un procesador multinúcleo combinado con una técnica de subprocesos múltiples de grano fino en lugar de subprocesos múltiples simultáneos porque cada núcleo solo puede emitir una instrucción a la vez.

Implementaciones históricas [ editar ]

Si bien las CPU de subprocesos múltiples han existido desde la década de 1950, IBM investigó por primera vez el subproceso múltiple simultáneo 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 Alpha de microprocesadores se suspendió 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 elVersiones hiperprocesadas de los microprocesadores Intel Pentium 4, como "Northwood" y "Prescott".

Implementaciones comerciales modernas [ editar ]

El Intel Pentium 4 fue el primer procesador de escritorio moderno en implementar subprocesos múltiples simultáneos, a partir del modelo de 3.06 GHz lanzado en 2002, y desde entonces se introdujo en varios de sus procesadores. Intel llama a la funcionalidad Tecnología Hyper-Threading y proporciona un motor SMT básico de dos subprocesos. Intel afirma una mejora de la velocidad de hasta un 30% [4] en comparación con un Pentium 4 que no es SMT, por lo demás idéntico. La mejora de rendimiento observada depende en gran medida 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 Hyper-threading está activado. [5] Esto se debe al sistema de reproducción.del Pentium 4 atando valiosos recursos de ejecución, aumentando la contención por recursos como ancho de banda, cachés, TLB , reordenar las entradas del búfer , igualar los recursos del procesador entre los dos programas, lo que agrega una cantidad variable de tiempo de ejecución. El núcleo Pentium 4 Prescott ganó una cola de reproducción, lo que reduce el tiempo de ejecución necesario para el sistema de reproducción. Esto es suficiente para superar por completo ese impacto en el rendimiento. [6]

Los últimos diseños de arquitectura MIPS de Imagination Technologies incluyen un sistema SMT conocido como "MIPS MT" . [7] MIPS MT proporciona elementos de procesamiento virtual pesados ​​y microhilos de hardware más livianos. RMI , una startup con sede en Cupertino, es el primer proveedor de MIPS en proporcionar un procesador SOC basado en ocho núcleos, cada uno de los cuales ejecuta cuatro subprocesos. Los subprocesos se pueden ejecutar en modo de grano fino donde se puede ejecutar un subproceso diferente en cada ciclo. También se pueden asignar prioridades a los subprocesos. Las CPU MIPS de Imagination Technologies tienen dos subprocesos SMT por núcleo.

Blue Gene / Q de IBM tiene SMT de 4 vías.

El IBM POWER5, anunciado en mayo de 2004, viene como un módulo de doble chip de doble núcleo (DCM) o un módulo de chip múltiple de núcleo cuádruple o de núcleo múltiple (MCM), y cada núcleo incluye un motor SMT de dos hilos. La implementación de IBM es más sofisticada que las anteriores, porque puede asignar una prioridad diferente a los distintos subprocesos, es más detallada y el motor SMT se puede encender y apagar dinámicamente, para ejecutar mejor aquellas cargas de trabajo donde un procesador SMT lo haría. no aumentar el rendimiento. Esta es la segunda implementación de IBM de subprocesos múltiples de hardware generalmente disponibles. En 2010, IBM lanzó sistemas basados ​​en el procesador POWER7 con ocho núcleos, cada uno con cuatro subprocesos inteligentes simultáneos. Esto cambia el modo de subprocesos entre un subproceso, dos subprocesos o cuatro subprocesos dependiendo del número de subprocesos de proceso que se programan en ese momento.Esto optimiza el uso del núcleo para un tiempo de respuesta mínimo o un rendimiento máximo. IBMPOWER8 tiene 8 subprocesos simultáneos inteligentes por núcleo (SMT8).

IBM z13 tiene dos subprocesos por núcleo (SMT-2).

Aunque muchas personas informaron que UltraSPARC T1 de Sun Microsystems (conocido como "Niagara" hasta su lanzamiento el 14 de noviembre de 2005) y el procesador ahora desaparecido con nombre en código " Rock " (anunciado originalmente en 2005, pero después de muchas demoras canceladas en 2010) son implementaciones de SPARCCentrado casi por completo en explotar las técnicas SMT y CMP, Niagara en realidad no está utilizando SMT. Sun se refiere a estos enfoques combinados como "CMT" y al concepto general como "Computación de rendimiento". El Niagara tiene ocho núcleos, pero cada núcleo tiene solo una tubería, por lo que en realidad utiliza subprocesos múltiples de grano fino. A diferencia de SMT, donde las instrucciones de varios subprocesos comparten la ventana de emisión en cada ciclo, el procesador utiliza una política de turnos para emitir instrucciones del siguiente subproceso 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 Oracle Corporation SPARC T3 tiene ocho hilos de grano fino por núcleo, SPARC T4, T5 SPARC, SPARC M5, M6 y M7 tener ocho hilos de grano fino por núcleo de las cuales dos pueden ser ejecutados simultáneamente.

Fujitsu SPARC64 VI tiene subprocesos múltiples verticales de grano grueso (VMT) SPARC VII y los más nuevos tienen SMT bidireccional.

Intel Itanium Montecito utilizó subprocesos múltiples de grano grueso y Tukwila y los más nuevos utilizan SMT bidireccional (con subprocesos múltiples de dominio dual).

Intel Xeon Phi tiene SMT de 4 vías (con subprocesos múltiples multiplexados en el tiempo) con subprocesos basados ​​en hardware que no se pueden deshabilitar a diferencia del Hyperthreading normal. [8] El Intel Atom , lanzado en 2008, es el primer producto de Intel a la función de SMT 2 vías (comercializado como Hyper-Threading) sin apoyar el reordenamiento de instrucciones, la ejecución especulativa, o cuando se registra el cambio de nombre. Intel reintrodujo Hyper-Threading con la microarquitectura Nehalem , después de su ausencia en la microarquitectura Core .

La microarquitectura AMD Bulldozer FlexFPU y la caché L2 compartida son multiproceso, pero los núcleos enteros en el módulo son de un solo subproceso, por lo que es solo una implementación SMT parcial. [9] [10]

La microarquitectura AMD Zen tiene SMT bidireccional.

La arquitectura VISC [11] [12] [13] [14] utiliza la capa de software virtual (capa de traducción) para enviar un único hilo de instrucciones al Global Front End que divide las instrucciones en hilos de hardware virtualque luego se envían a núcleos virtuales separados. Estos núcleos virtuales pueden enviarlos a los recursos disponibles en cualquiera de los núcleos físicos. Varios núcleos virtuales pueden enviar subprocesos al búfer de reorden de un solo núcleo físico, que puede dividir instrucciones parciales y datos de varios subprocesos a través de los puertos de ejecución al mismo tiempo. Cada núcleo virtual realiza un seguimiento de la posición de la salida relativa. Esta forma de subprocesos múltiples puede aumentar el rendimiento de un solo subproceso al permitir que un solo subproceso utilice todos los recursos de la CPU. La asignación de recursos es dinámica en un nivel de latencia de ciclo casi único (1 a 4 ciclos dependiendo del cambio en la asignación según las necesidades de la aplicación individual. Por lo tanto, si dos núcleos virtuales compiten por los recursos,existen algoritmos apropiados para determinar qué recursos se asignarán y dónde.

Desventajas [ editar ]

Según el diseño y la arquitectura del procesador, el subproceso múltiple simultáneo puede disminuir el rendimiento si alguno de los recursos compartidos constituye un cuello de botella para el rendimiento. [15] Los críticos argumentan que es una carga considerable imponer a los desarrolladores de software que tienen que probar si el subproceso múltiple simultáneo es bueno o malo para su aplicación en varias situaciones e insertar lógica adicional para apagarlo si disminuye el rendimiento. Los sistemas operativos actuales carecen de llamadas API convenientes para este propósito y para evitar que los procesos con diferente prioridad tomen recursos entre sí. [dieciséis]

También existe un problema de seguridad con ciertas implementaciones de subprocesos múltiples simultáneos. El hyperthreading de Intel en procesadores basados en NetBurst tiene una vulnerabilidad a través de la cual es posible que una aplicación robe una clave criptográfica de otra aplicación que se ejecuta en el mismo procesador al monitorear su uso de caché. [17] También hay exploits sofisticados de aprendizaje automático para la implementación de HT que se explicaron en Black Hat 2018 . [18]

Ver también [ editar ]

  • Explorador de hardware
  • Multiproceso especulativo
  • Multiprocesamiento simétrico

Referencias [ editar ]

  1. ^ ASPLOS'11
  2. ^ ASPLOS'11
  3. ^ Smotherman, Mark (25 de mayo de 2011). "Fin del Proyecto IBM ACS" . Escuela de Computación, Universidad de Clemson . Consultado el 19 de enero de 2013 .
  4. ^ Marr, Deborah (14 de febrero de 2002). "Arquitectura y microarquitectura de tecnología Hyper-Threading" (PDF) . Revista de tecnología de Intel . 6 (1): 4. doi : 10.1535 / itj . Consultado el 25 de septiembre de 2015 .
  5. ^ "Evaluación de rendimiento de CPU Pentium 4 2.8 y 3.0" .
  6. ^ "Reproducción: características desconocidas del NetBurst Core. Página 15" . Reproducción: Funciones desconocidas del NetBurst Core . xbitlabs.com. Archivado desde el original el 14 de mayo de 2011 . Consultado el 24 de abril de 2011 .
  7. ^ "Descripción de MIPS MT ASE" .
  8. ^ 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" . Asociación para la informática avanzada en Europa.
  9. ^ "AMD Bulldozer Family Module Multithreading" . wccftech. Julio 2013.
  10. ^ Halfacree, Gareth (28 de octubre de 2010). "AMD presenta Flex FP" . bit-tech.
  11. ^ "Soft Machines presenta la arquitectura de chip virtual VISC | bit-tech.net" . CS1 maint: parámetro desalentado ( enlace )
  12. ^ Cutress, Ian (12 de febrero de 2016). "Examinar la arquitectura de máquinas blandas: un elemento de VISC para mejorar IPC" . AnandTech.
  13. ^ "Rendimiento del procesador de próxima generación revelado" . VR World. 4 de febrero de 2016. Archivado desde el original el 13 de enero de 2017.
  14. ^ "Olas arquitectónicas" . Máquinas blandas. 2017. Archivado desde el original el 29 de marzo de 2017.
  15. ^ "Reproducción: características desconocidas del NetBurst Core. Página 15" . Reproducción: Funciones desconocidas del NetBurst Core . xbitlabs.com. Archivado desde el original el 14 de mayo de 2011 . Consultado el 24 de abril de 2011 .
  16. ^ ¿Qué tan bueno es el hyperthreading?
  17. ^ Hyper-Threading considerado nocivo
  18. ^ TLBleed: cuando proteger los cachés de su CPU no es suficiente
General
  • Shar, Leonard E .; Davidson, Edward S. (febrero de 1974). "Un sistema multiminiprocesador implementado mediante pipelining". Computadora . 7 (2): 42–51. doi : 10.1109 / MC.1974.6323457 . S2CID  27957358 .
  • Tullsen, DM; Eggers, SJ; Levy, HM (1995). "Múltiples subprocesos simultáneos: maximizar el paralelismo en el chip" . 22º Simposio Internacional Anual de 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). "Explotación de elección: obtención y emisión de instrucciones en un procesador de subprocesamiento múltiple simultáneo implementable" . 23º Simposio Internacional Anual de Arquitectura de Computadores . IEEE. pag. 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). "Mirando hacia atrás en las revoluciones del lenguaje y el hardware: potencia medida, rendimiento y escalamiento" (PDF) . ASPLOS XVI Actas de la decimosexta conferencia internacional 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 [ editar ]

  • Artículos de noticias y trabajos académicos de SMT
  • Investigación SMT en la Universidad de Washington
  • Smotherman, Mark (noviembre de 2007). "Cronología de las tecnologías multiproceso" . Escuela de Computación, Universidad de Clemson.