stringtranslate.com

Multihilo simultáneo

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

Detalles

El término multiproceso es ambiguo, porque no solo se pueden ejecutar varios 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 funcionan con el mismo núcleo, están completamente separados entre sí. El multiproceso 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 multiproceso simultáneo (SMT) es una de las dos implementaciones principales del multiproceso, siendo la otra forma el multiproceso temporal (también conocido como superproceso). En el subproceso múltiple temporal, solo se puede ejecutar un subproceso de instrucciones en cualquier etapa del proceso a la vez. En el subproceso múltiple simultáneo, las instrucciones de más de un subproceso se pueden ejecutar en cualquier etapa del proceso a la vez. Esto se hace sin grandes cambios en la arquitectura básica del procesador: las principales adiciones necesarias son la capacidad de recuperar instrucciones de múltiples subprocesos en un ciclo y un archivo de registro más grande para contener datos de múltiples subprocesos. Los diseñadores de chips deciden el número de subprocesos simultáneos. Son comunes dos subprocesos simultáneos por núcleo de CPU, pero algunos procesadores admiten muchos más [1] .

Debido a que inevitablemente aumenta el conflicto sobre los recursos compartidos, medir o llegar a un acuerdo sobre su eficacia puede resultar difícil. 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 energéticamente, incluso con Atom en orden. procesadores. [2] En los sistemas modernos, SMT explota eficazmente la concurrencia con muy poco poder dinámico 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énes? ] han demostrado que los subprocesos adicionales se pueden usar de manera proactiva para generar un recurso compartido como un caché, para mejorar el rendimiento de otro subproceso único, y afirman que esto demuestra que SMT no solo aumenta la eficiencia. Otros [ ¿quién? ] utilizan SMT para proporcionar cálculos redundantes, para cierto nivel de detección y recuperación de errores.

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

Taxonomía

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 aprovecha el paralelismo a nivel de subprocesos (TLP).

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

El factor clave para distinguirlos es observar cuántas instrucciones puede emitir el procesador en un ciclo y de cuántos subprocesos 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

Si bien las CPU multiproceso existen desde la década de 1950, IBM investigó por primera vez el multiproceso 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 fue lanzado, ya que la línea Alpha de microprocesadores fue descontinuada 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 hiperprocesos de los microprocesadores Intel Pentium 4, como "Northwood" y "Prescott".

Implementaciones comerciales modernas

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 introducido en varios de sus procesadores. Intel llama a esta funcionalidad Tecnología Hyper-Threading y proporciona un motor SMT básico de dos subprocesos. Intel afirma una mejora de velocidad de hasta un 30% [4] en comparación con un Pentium 4 no SMT 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 se activa Hyper-threading. [5] Esto se debe a que el sistema de reproducción del Pentium 4 ocupa valiosos recursos de ejecución, aumenta la contienda por recursos como ancho de banda, cachés, TLB , reordena las entradas del búfer y ecualiza los recursos del procesador entre los dos programas, lo que agrega un cantidad variable de tiempo de ejecución. El núcleo Pentium 4 Prescott obtuvo 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 ese problema de 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 que proporciona un procesador SOC basado en ocho núcleos, cada uno de los cuales ejecuta cuatro subprocesos. Los subprocesos se pueden ejecutar en modo detallado donde se puede ejecutar un subproceso diferente en cada ciclo. A los hilos también se les pueden asignar prioridades. 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, se presenta como un módulo de doble chip (DCM) de doble núcleo o como un módulo de múltiples chips (MCM) de cuatro u ocho núcleos, y cada núcleo incluye un motor SMT de dos subprocesos. 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 en las que un SMT procesador no aumentaría 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 y cada uno de ellos con cuatro subprocesos inteligentes simultáneos. Esto cambia el modo de subproceso entre un subproceso, dos subprocesos o cuatro subprocesos dependiendo de la cantidad de subprocesos de proceso que se programen en ese momento. Esto optimiza el uso del núcleo para un tiempo de respuesta mínimo o un rendimiento máximo. IBM POWER8 tiene 8 subprocesos inteligentes simultáneos por núcleo (SMT8).

IBM Z a partir del procesador z13 en 2013 tiene dos subprocesos por núcleo (SMT-2).

Aunque muchas personas informaron que el 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 muchos retrasos cancelado en 2010) son implementaciones de SPARC. Centrada casi por completo en explotar 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 "Computación de rendimiento". Niagara tiene ocho núcleos, pero cada núcleo tiene solo una canalización, 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 operación por turnos para emitir instrucciones desde el siguiente subproceso activo en cada ciclo. Esto lo hace más parecido 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 canalización.

Oracle Corporation SPARC T3 tiene ocho subprocesos de grano fino por núcleo; SPARC T4, SPARC T5, SPARC M5, M6 y M7 tienen ocho subprocesos de grano fino por núcleo, de los cuales dos se pueden ejecutar simultáneamente.

Fujitsu SPARC64 VI tiene SPARC VII de subproceso múltiple vertical (VMT) de grano grueso y los más nuevos tienen SMT de 2 vías.

Intel Itanium Montecito usa subprocesos múltiples de grano grueso y Tukwila y los más nuevos usan 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 desactivar, a diferencia del Hyper-Threading normal. [8] Intel Atom , lanzado por primera vez en 2008, es el primer producto Intel que presenta SMT bidireccional (comercializado como Hyper-Threading) sin admitir reordenamiento de instrucciones, ejecución especulativa ni cambio de nombre de registros. Intel reintrodujo Hyper-Threading con la microarquitectura Nehalem , tras su ausencia en la microarquitectura Core .

La microarquitectura FlexFPU de AMD Bulldozer y la caché L2 compartida son multiproceso, pero los núcleos enteros del 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 de 2 vías.

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 front-end global que divide las instrucciones en subprocesos de hardware virtuales que luego se envían a núcleos virtuales separados. . Estos núcleos virtuales luego pueden enviarlos a los recursos disponibles en cualquiera de los núcleos físicos. Múltiples núcleos virtuales pueden insertar subprocesos en el búfer de reordenamiento de un único núcleo físico, lo que puede dividir instrucciones parciales y datos de múltiples 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 (de 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

Dependiendo del diseño y la arquitectura del procesador, el multiproceso 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 para los desarrolladores de software el tener que probar si el multithreading 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 actuales carecen de llamadas API convenientes para este propósito y para evitar que procesos con diferente prioridad tomen recursos entre sí. [dieciséis]

También existe un problema de seguridad con ciertas implementaciones simultáneas de subprocesos múltiples. 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 monitoreando 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

Referencias

  1. ^ "El primer tejido fotónico directo de malla a malla" (PDF) . Archivado desde el original (PDF) el 8 de febrero de 2024 . Consultado el 8 de febrero de 2024 .
  2. ^ ab 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 Intel . 6 (1): 4. doi :10.1535/itj. Archivado desde el original (PDF) el 24 de octubre de 2016 . Consultado el 25 de septiembre de 2015 .
  5. ^ "Evaluación del rendimiento de la CPU Pentium 4 2.8 y 3.0". Archivado desde el original el 24 de febrero de 2021 . Consultado el 22 de abril de 2011 .
  6. ^ "Repetición: características desconocidas de NetBurst Core. Página 15". "Reproducción: características desconocidas de 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. Archivado desde el original el 3 de mayo de 2017 . Consultado el 22 de noviembre de 2016 .
  9. ^ "Subproceso múltiple del módulo de la familia AMD Bulldozer". wccftech. Julio de 2013. Archivado desde el original el 17 de octubre de 2013 . Consultado el 22 de julio de 2013 .
  10. ^ Halfacree, Gareth (28 de octubre de 2010). "AMD presenta Flex FP". tecnología de bits.
  11. ^ "Soft Machines presenta la arquitectura de chip virtual VISC | bit-tech.net".
  12. ^ Cutress, Ian (12 de febrero de 2016). "Examen de la arquitectura de las máquinas blandas: un elemento de VISC para mejorar el IPC". AnandTech.
  13. ^ "Se revela el rendimiento del procesador de próxima generación". Mundo de realidad virtual. 4 de febrero de 2016. Archivado desde el original el 13 de enero de 2017.
  14. ^ "Ondas arquitectónicas". Máquinas blandas. 2017. Archivado desde el original el 29 de marzo de 2017.
  15. ^ "Repetición: características desconocidas de NetBurst Core. Página 15". "Reproducción: características desconocidas de 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 se considera perjudicial
  18. ^ TLBleed: Cuando proteger los cachés de su CPU no es suficiente
General

enlaces externos