stringtranslate.com

Multiprocesamiento simultáneo

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

Detalles

El término multihilo 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 tarea , 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 multihilo 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 multihilo simultáneo (SMT) es una de las dos principales implementaciones del multihilo, la otra forma es el multihilo temporal (también conocido como super-threading). En el multihilo temporal, solo se puede ejecutar un hilo de instrucciones en cualquier etapa de la cadena de procesamiento a la vez. En el multihilo simultáneo, se pueden ejecutar instrucciones de más de un hilo en cualquier etapa de la cadena de procesamiento 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 hilos en un ciclo y un archivo de registro más grande para almacenar datos de varios hilos. La cantidad de hilos simultáneos la deciden los diseñadores del chip. Dos hilos simultáneos por núcleo de CPU son comunes, pero algunos procesadores admiten muchos más. [1]

Debido a que inevitablemente aumenta el conflicto sobre los recursos compartidos, medir o acordar su efectividad puede ser 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 procesadores Atom en orden. [2] En los sistemas modernos, SMT explota eficazmente 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énes? ] 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 demuestra que SMT no solo aumenta la eficiencia. Otros [ ¿quiénes? ] 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 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

En el diseño de procesadores, hay dos maneras 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); la otra es el enfoque 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 subprocesos (TLP) ejecuta instrucciones de múltiples subprocesos dentro de un chip de procesador al mismo tiempo. Existen 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, el UltraSPARC T1 de Sun Microsystems es un procesador multinúcleo combinado con una técnica de multiproceso de grano fino en lugar de multiproceso simultáneo, ya que cada núcleo solo puede emitir una instrucción a la vez.

Implementaciones históricas

Aunque las CPU con multihilo existen desde la década de 1950, IBM investigó por primera vez el multihilo 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 en 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 hiperprocesamiento de los microprocesadores Intel Pentium 4, como el "Northwood" y el "Prescott".

Implementaciones comerciales modernas

El Intel Pentium 4 fue el primer procesador de escritorio moderno en implementar multihilo simultáneo, a partir del modelo de 3,06 GHz lanzado en 2002, y desde entonces introducido 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 velocidad de hasta un 30% [4] en comparación con un Pentium 4 idéntico y sin SMT. La mejora de rendimiento observada depende mucho de la aplicación; sin embargo, cuando se ejecutan dos programas que requieren la atención total del procesador, en realidad puede parecer que uno o ambos programas se ralentizan ligeramente cuando se activa el Hyper-Threading. [5] Esto se debe a que el sistema de reproducción del Pentium 4 ata valiosos recursos de ejecución, lo que aumenta la contención de recursos como ancho de banda, cachés, TLB , reordenamiento de entradas de 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 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 esa pérdida 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 de gran peso y microhilos de hardware más ligeros. RMI , una startup con sede en Cupertino, es el primer proveedor de MIPS en proporcionar un SOC de procesador basado en ocho núcleos, cada uno de los cuales ejecuta cuatro hilos. Los hilos se pueden ejecutar 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.

El 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 de doble núcleo (DCM), o un módulo multichip de cuatro núcleos u ocho núcleos (MCM), con cada núcleo incluyendo 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 diversos 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 no aumentaría el rendimiento. Esta es la segunda implementación de IBM de multihilo 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 subproceso entre un subproceso, dos subprocesos o cuatro subprocesos según la cantidad de subprocesos de proceso que se estén programando 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 mucha gente informó que el UltraSPARC T1 de Sun Microsystems (conocido como "Niagara" hasta su lanzamiento el 14 de noviembre de 2005) y el ahora extinto procesador con nombre en código " Rock " (anunciado originalmente en 2005, pero luego de muchos retrasos cancelado en 2010) son implementaciones de SPARC enfocadas casi por completo en explotar 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 "Throughput Computing". El Niagara tiene ocho núcleos, pero cada núcleo tiene solo una tubería, por lo que en realidad usa subprocesos múltiples de grano fino. A diferencia de SMT, donde las instrucciones de múltiples subprocesos comparten la ventana de emisión en cada ciclo, el procesador usa una política de round robin para emitir instrucciones desde el 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.

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 pueden ejecutarse simultáneamente.

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

Intel Itanium Montecito utiliza subprocesamiento múltiple de grano grueso y Tukwila y los más nuevos utilizan SMT bidireccional (con subprocesamiento múltiple de dominio dual).

Intel Xeon Phi tiene SMT de 4 vías (con subprocesamiento múltiple multiplexado en el tiempo) con subprocesos basados ​​en hardware que no se pueden deshabilitar, a diferencia del Hyper-Threading normal. [8] El Intel Atom , lanzado por primera vez en 2008, es el primer producto de Intel que presenta SMT de 2 vías (comercializado como Hyper-Threading) sin admitir reordenamiento de instrucciones, ejecución especulativa o cambio de nombre de registros. 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 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 threadlets de hardware virtual que 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. Múltiples núcleos virtuales pueden insertar threadlets en el búfer de reordenación de un único núcleo físico, que puede dividir instrucciones parciales y datos de múltiples threadlets 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 multihilo puede aumentar el rendimiento de un solo hilo al permitir que un solo hilo 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 (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, la ejecución simultánea de múltiples subprocesos puede reducir el rendimiento si alguno de los recursos compartidos constituye un cuello de botella para el rendimiento. [15] Los críticos sostienen que es una carga considerable para los desarrolladores de software tener que probar si la ejecución simultánea de múltiples subprocesos es buena o mala para su aplicación en diversas situaciones e insertar lógica adicional para desactivarla si reduce el rendimiento. Los sistemas operativos actuales carecen de llamadas API convenientes para este propósito y para evitar que los procesos con diferentes prioridades se quiten recursos entre sí. [16]

También existe un problema de seguridad con ciertas implementaciones simultáneas de subprocesamiento múltiple. El hiperprocesamiento 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 el uso de su caché. [17] También existen sofisticados exploits de aprendizaje automático para la implementación de hiperprocesamiento múltiple que se explicaron en Black Hat 2018. [ 18]

Véase también

Referencias

  1. ^ "El primer tejido fotónico de malla a malla directo" (PDF) . Archivado desde el original (PDF) el 2024-02-08 . Consultado el 2024-02-08 .
  2. ^ desde ASPLOS'11
  3. ^ Smotherman, Mark (25 de mayo de 2011). "Fin del proyecto IBM ACS". Facultad de Informática, Universidad de Clemson . Consultado el 19 de enero de 2013 .
  4. ^ 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 desde el original (PDF) el 24 de octubre de 2016. Consultado el 25 de septiembre de 2015 .
  5. ^ "Evaluación del rendimiento de 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. ^ "Replay: Unknown Features of the NetBurst Core. Page 15". Replay: Unknown Features of the 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 para 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. ^ "Multithreading 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". bit-tech.
  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 la IPC". AnandTech.
  13. ^ "Revelado el rendimiento del procesador de próxima generación". VR World. 4 de febrero de 2016. Archivado desde el original el 13 de enero de 2017.
  14. ^ "Ondas arquitectónicas". Soft Machines. 2017. Archivado desde el original el 29 de marzo de 2017.
  15. ^ "Replay: Unknown Features of the NetBurst Core. Page 15". Replay: Unknown Features of the 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. ^ Se considera que el hiperprocesamiento es perjudicial
  18. ^ TLBleed: Cuando proteger los cachés de la CPU no es suficiente
General

Enlaces externos