stringtranslate.com

Multiprocesamiento especulativo

La especulación a nivel de subproceso ( TLS ), también conocida como multiproceso especulativo o paralelización especulativa, [1] es una técnica para ejecutar especulativamente una sección de código informático que se prevé que se ejecutará más adelante en paralelo con la ejecución normal en un subproceso independiente separado . Un subproceso especulativo de este tipo puede necesitar hacer suposiciones sobre los valores de las variables de entrada. Si estas resultan ser inválidas, entonces las partes del subproceso especulativo que dependen de estas variables de entrada deberán descartarse y eliminarse. Si las suposiciones son correctas, el programa puede completarse en un tiempo más corto siempre que el subproceso haya podido programarse de manera eficiente.

Descripción

TLS extrae subprocesos del código serial y los ejecuta especulativamente en paralelo con un subproceso seguro. El subproceso especulativo deberá descartarse o volver a ejecutarse si sus presunciones sobre el estado de entrada resultan ser inválidas. Es una técnica de paralelización dinámica (en tiempo de ejecución) que puede descubrir paralelismos que las técnicas de paralelización estática (en tiempo de compilación) pueden no explotar porque en tiempo de compilación no se puede garantizar la independencia de los subprocesos. Para que la técnica logre el objetivo de reducir el tiempo de ejecución general, debe haber un recurso de CPU disponible que pueda ejecutarse de manera eficiente en paralelo con el subproceso seguro principal. [2]

TLS asume de manera optimista que una porción dada de código (generalmente bucles) puede ejecutarse en paralelo de manera segura. Para ello, divide el espacio de iteración en fragmentos que son ejecutados en paralelo por diferentes subprocesos. Un monitor de hardware o software garantiza que se mantenga la semántica secuencial (en otras palabras, que la ejecución avance como si el bucle se estuviera ejecutando secuencialmente). Si aparece una violación de dependencia, el marco especulativo puede optar por detener toda la ejecución paralela y reiniciarla; detener y reiniciar los subprocesos infractores y todos sus sucesores, para que se les proporcionen los datos correctos; o detener exclusivamente el subproceso infractor y sus sucesores que han consumido datos incorrectos de él. [3]

Referencias

  1. ^ Estebanez, Alvaro (2017). "Una encuesta sobre técnicas de especulación a nivel de subproceso". ACM Computing Surveys . 49 (2): 1–39. doi :10.1145/2938369. S2CID  423292.
  2. ^ Martínez, José F.; Torrellas, Josep (2002). "Sincronización especulativa" (PDF) . Actas de la 10ª conferencia internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos (ASPLOS-X) - ASPLOS '02 . ACM. p. 18. doi :10.1145/605397.605400. ISBN . 1581135742. S2CID  9189828. Archivado desde el original (PDF) el 18 de noviembre de 2018.
  3. ^ García Yaguez, Alvaro (2014). "Alternativas de aplastamiento para la paralelización especulativa basada en software" . IEEE Transactions on Computers . 63 (7): 1826–1839. doi :10.1109/TC.2013.46. S2CID  14081801.

Lectura adicional