Subprocesos múltiples simultáneos

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Mejoramiento de eficiencia técnica para las CPUs superscalar

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

Detalles

El término multiproceso 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 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, la otra forma es el multiproceso temporal (también conocido como superproceso). En subprocesos múltiples temporales, solo se puede ejecutar un subproceso de instrucciones en cualquier etapa de canalización determinada a la vez. En subprocesos múltiples simultáneos, las instrucciones de más de un subproceso se pueden ejecutar en cualquier etapa de canalización dada 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 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. Dos subprocesos simultáneos por núcleo de CPU son comunes, pero algunos procesadores admiten hasta ocho subprocesos simultáneos por núcleo.

Debido a que inevitablemente aumenta el conflicto sobre los recursos compartidos, puede ser difícil medir o ponerse de acuerdo sobre su eficacia. Sin embargo, la eficiencia energética medida de SMT con cargas de trabajo administradas y nativas paralelas en implementaciones históricas de 130 nm a 32 nm Intel SMT (hiper-threading) encontró que en implementaciones de 45 nm y 32 nm, SMT es extremadamente eficiente en energía, incluso con Atom en orden procesadores 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.

Algunos investigadores 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 usan 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.

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 trata de 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).

Superescalar 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 subproceso dentro de un chip, a saber:

  • Interleaved multithreading: Edición entrelazada de múltiples instrucciones de diferentes hilos, también conocido como multitelección temporal. Puede dividirse aún más en multitelección fina o multitelección de grano grueso dependiendo de la frecuencia de los problemas entrelazados. Felicitaciones multitelección, como en un procesador de barril, tiene instrucciones para diferentes hilos después de cada ciclo, mientras que tosca-grained Multithreading sólo cambia para emitir instrucciones de otro hilo cuando el hilo de ejecución actual causa algunos eventos de latencia larga (como la falla de la página, etc.). Multitelección de grano grueso es más común para un menor cambio de contexto entre hilos. Por ejemplo, el procesador Montecito de Intel utiliza multitelección de grano grueso, mientras que el UltraSPARC T1 de Sun utiliza multitelección fina. Para aquellos procesadores que tienen sólo un oleoducto por núcleo, la multitelección entrelazada es la única manera posible, porque puede emitir en la mayoría de una instrucción por ciclo.
  • Multithreading simultaneous (SMT): Emitir múltiples instrucciones de múltiples hilos en un ciclo. El procesador debe ser superscalar para hacerlo.
  • Multiprocesamiento de nivel de chip (CMP o multicore): integra dos o más procesadores en un solo chip, cada ejecución de hilos de forma independiente.
  • Cualquier combinación de multitreaded/SMT/CMP.

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, Sun Microsystems' UltraSPARC T1 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 de subprocesos múltiples existen desde la década de 1950, IBM investigó por primera vez los subprocesos múltiples simultáneos en 1968 como parte del proyecto ACS-360. 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 las versiones con hiperprocesos de los microprocesadores Intel Pentium 4, como el "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 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 hilos. Intel afirma una mejora de la velocidad de hasta un 30 % en comparación con un Pentium 4 sin SMT, por lo demás idéntico. La mejora del rendimiento observada depende mucho 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. Esto se debe a que el sistema de reproducción del Pentium 4 ocupa valiosos recursos de ejecución, aumenta la competencia por recursos como ancho de banda, cachés, TLB, reordena las entradas del búfer e iguala 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 fue suficiente para superar por completo ese golpe de rendimiento.

Los últimos diseños de arquitectura MIPS de Imagination Technologies incluyen un sistema SMT conocido como "MIPS MT". MIPS MT proporciona elementos de procesamiento virtual pesados y microprocesos 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, se presenta como un módulo de doble chip (DCM) de doble núcleo o un módulo de múltiples chips (MCM) de cuatro núcleos u ocho núcleos, y cada núcleo incluye un módulo de dos hilos. motor SMT. La implementación de IBM es más sofisticada que las anteriores, porque puede asignar una prioridad diferente a los diversos subprocesos, es más detallada 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 subprocesamiento múltiple de hardware generalmente disponible. 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 subprocesamiento entre un subproceso, dos subprocesos o cuatro subprocesos según 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 simultáneos inteligentes 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 Sun Microsystems' UltraSPARC T1 (conocido como "Niagara" hasta su lanzamiento el 14 de noviembre de 2005) y el ya desaparecido procesador con nombre en código "Rock" (anunciado originalmente en 2005, pero cancelado después de muchos retrasos en 2010) son implementaciones de SPARC centradas casi por completo en explotar las técnicas SMT y CMP, Niagara en realidad no usa SMT. Sun se refiere a estos enfoques combinados como "CMT", y al concepto general como "Informática de rendimiento". El Niagara tiene ocho núcleos, pero cada núcleo tiene solo una canalización, por lo que en realidad utiliza subprocesos múltiples detallados. 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 rotación para emitir instrucciones desde el siguiente subproceso activo en cada ciclo. Esto lo hace más similar a un procesador de barril. Sun Microsystems' Rock Processor es diferente: tiene núcleos más complejos que tienen más de una canalización.

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

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

Intel Itanium Montecito utiliza subprocesos múltiples de granularidad gruesa 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. El Intel Atom, lanzado por primera vez en 2008, es el primer producto de Intel que cuenta con SMT bidireccional (comercializado como Hyper-Threading) sin admitir el reordenamiento de instrucciones, la ejecución especulativa o el cambio de nombre de registro. Intel reintrodujo Hyper-Threading con la microarquitectura Nehalem, luego de su ausencia en la microarquitectura Core.

La microarquitectura FlexFPU de AMD Bulldozer y la memoria 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 parcial de SMT.

La microarquitectura AMD Zen tiene SMT bidireccional.

La arquitectura VISC utiliza la Capa de software virtual (capa de traducción) para enviar un solo hilo de instrucciones al Global Front End que divide las instrucciones en hilos de hardware virtual 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 reordenación de un solo núcleo físico, que puede dividir instrucciones y datos parciales 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 use todos los recursos de la CPU. La asignación de recursos es dinámica en un nivel de latencia de casi un solo ciclo (de 1 a 4 ciclos según el 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 dónde.

Desventajas

Dependiendo del diseño y la arquitectura del procesador, el subprocesamiento múltiple simultáneo puede disminuir el rendimiento si alguno de los recursos compartidos es un cuello de botella para el rendimiento. Los críticos argumentan que es una carga considerable para los desarrolladores de software que tienen que probar si el subprocesamiento múltiple simultáneo es bueno o malo para su aplicación en varias 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í.

También existe un problema de seguridad con ciertas implementaciones simultáneas de subprocesos múltiples. El hyperthreading de Intel en los 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é. También hay vulnerabilidades de aprendizaje automático sofisticadas para la implementación de HT que se explicaron en Black Hat 2018.

Contenido relacionado

Incidencia

Incidencia puede referirse...

T2

T2, T-2, T2, T2 puede referirse...

Conectivo

Conectivo puede referirse...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save