Thread Level Speculation (TLS) es una técnica para ejecutar especulativamente una sección de código de computadora que se anticipa que se ejecutará más adelante en paralelo con la ejecución normal en un hilo independiente separado . Un hilo tan especulativo puede necesitar hacer suposiciones sobre los valores de las variables de entrada. Si resultan no válidos, el hilo especulativo deberá descartarse y aplastarse. Si las suposiciones son correctas, el programa puede completarse en menos tiempo, siempre que el hilo se pueda programar de manera eficiente.
También se conoce como multiproceso especulativo (SpMT). [ cita requerida ]
Descripción
TLS extrae subprocesos del código de serie y los ejecuta especulativamente en paralelo con un subproceso seguro. El hilo especulativo deberá descartarse o volver a ejecutarse si sus presunciones sobre el estado de entrada resultan no válidas. Es una técnica de paralelización dinámica (en tiempo de ejecución) que puede descubrir un paralelismo que las técnicas de paralelización estática (en tiempo de compilación) pueden no aprovechar porque en el 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 recursos de CPU disponibles que se puedan ejecutar de manera eficiente en paralelo con el subproceso seguro principal. [1] : 2
Referencias
- ^ Martínez, José F .; Torrellas, Josep (2002). "Sincronización especulativa" (PDF) . Actas de la décima conferencia internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos (ASPLOS-X) - ASPLOS '02 . ACM. pag. 18. doi : 10.1145 / 605397.605400 . ISBN 1581135742. S2CID 9189828 . Archivado desde el original (PDF) el 18 de noviembre de 2018.
Otras lecturas
- Yiapanis, Paraskevas; Brown, Gavin; Lujan, Mikel (2016). "Especulación de software impulsada por el compilador para el paralelismo a nivel de subprocesos" . Transacciones ACM sobre lenguajes y sistemas de programación . 38 (2): 1–45. doi : 10.1145 / 2821505 .
- Yiapanis, Paraskevas; Rosas-Ham, Demian; Brown, Gavin; Lujan, Mikel (2013). "Optimización de sistemas de tiempo de ejecución de software para la paralelización especulativa" . Transacciones ACM sobre arquitectura y optimización de código . 9 (4): 1–27. doi : 10.1145 / 2400682.2400698 .
- Johnson, Nick P .; Kim, Hanjun; Prabhu, Prakash; Zaks, Ayal; Agosto, David I. (2012). "Separación especulativa para privatizaciones y reducciones" (PDF) . Actas de la 33ª Conferencia ACM SIGPLAN sobre diseño e implementación de lenguajes de programación . PLDI '12. págs. 359–370. doi : 10.1145 / 2254064.2254107 .
- Bhowmik, Anasua; Franklin, Manoj (2002). "Un marco general de compilación para multiproceso especulativo". Actas del decimocuarto simposio anual de ACM sobre algoritmos y arquitecturas paralelas . SPAA '02. págs. 99–108. doi : 10.1145 / 564870.564885 .
- Bruening, Derek; Devabhaktuni, Srikrishna; Amarasinghe, Saman (2000). Softspec: Paralelismo especulativo basado en software (PDF) . FDDO-3. págs. 1-10.
- Chen, Michael K .; Olukotun, Kunle (1998). "Explotación del paralelismo de nivel de método en programas Java de un solo subproceso". Congreso Internacional de Arquitecturas Paralelas y Técnicas de Compilación . PACT 1998. págs. 176-184. doi : 10.1109 / PACT.1998.727190 .
- Chen, Michael K .; Olukotun, Kunle (2003). "El sistema Jrpm para paralelizar dinámicamente programas Java". Actas del 30º simposio internacional anual sobre arquitectura informática . ISCA '03. págs. 434–446. doi : 10.1145 / 859618.859668 .
- Cintra, Marcelo; Llanos, Diego R. (2003). "Hacia una paralelización especulativa de software eficiente y robusto en multiprocesadores". Actas del noveno simposio ACM SIGPLAN sobre Principios y práctica de la programación paralela . PPoPP '03. págs. 13-24. doi : 10.1145 / 781498.781501 .
- Cook, Jonathan J. (2002). "Ejecución inversa de código de bytes Java". The Computer Journal . 45 (6): 608–619. CiteSeerX 10.1.1.20.4765 . doi : 10.1093 / comjnl / 45.6.608 .
- Quiñones, Carlos García; Madriles, Carlos; Sánchez, Jesús; Marcuello, Pedro; González, Antonio; Tullsen, Dean M. (2005). "Compilador de mitosis: una infraestructura para el subprocesamiento especulativo basado en cortes de precomputación". Actas de la conferencia ACM SIGPLAN de 2005 sobre diseño e implementación de lenguajes de programación . PLDI '05. págs. 269-279. doi : 10.1145 / 1065010.1065043 .
- Hu, Shiwen; Bhargava, Ravi; John, Lizy Kurian (2003). "El papel de la predicción del valor de retorno en la explotación del paralelismo especulativo a nivel de método" (PDF) . JILP . 5 : 1-21.
- Kazi, Iffat H. (2000). Un modelo de paralelización dinámicamente adaptativo basado en multiproceso especulativo (tesis doctoral). Universidad de Minnesota. págs. 1-188.
- Pickett, Christopher JF; Verbrugge, Clark (2005). "SableSpMT: un marco de software para analizar el multiproceso especulativo en Java". Actas del VI Workshop ACM SIGPLAN-SIGSOFT sobre Análisis de programas para herramientas e ingeniería de software . PASTA '05. págs. 59–66. doi : 10.1145 / 1108792.1108809 .
- Pickett, Christopher JF; Verbrugge, Clark (2005). "Especulación de nivel de subproceso de software para el lenguaje Java y el entorno de máquina virtual" (PDF) . Actas de la 18ª conferencia internacional sobre lenguajes y compiladores para computación paralela . LCPC '05. LNCS. 4339 . págs. 304–318. doi : 10.1007 / 978-3-540-69330-7_21 .
- Porter, Leo; Choi, Bumyong; Tullsen, Dean M. (2009). "Mapeo de un camino desde la memoria transaccional de hardware a multiproceso especulativo". XVIII Congreso Internacional de Arquitecturas Paralelas y Técnicas de Compilación . PACT '09. págs. 313–324. doi : 10.1109 / PACT.2009.37 .
- Rundberg, Peter; Stenstrom, Per (2001). "Un sistema de especulación de dependencia de datos a nivel de subprocesos de software para multiprocesadores" (PDF) . JILP . 3 : 1–28.
- Steffan, J. Gregory; Colohan, Christopher; Zhai, Antonia; Mowry, Todd C. (2005). "El enfoque STAMPede para la especulación a nivel de subprocesos". Transacciones ACM en sistemas informáticos . 23 (3): 253–300. CiteSeerX 10.1.1.79.4317 . doi : 10.1145 / 1082469.1082471 . S2CID 10499545 .
- Whaley, John; Kozyrakis, Christos (2005). "Heurística para paralelización especulativa a nivel de método impulsada por perfiles". Conferencia Internacional sobre Procesamiento Paralelo . ICPP 2005, págs. 147-156. doi : 10.1109 / ICPP.2005.44 .
- Renau, José; Strauss, Karin; Ceze, Luis; Liu, Wei; Sarangi, Smruti; Tuck, James; Torrellas, Josep (2006). "Especulación a nivel de subprocesos energéticamente eficientes" (PDF) . IEEE Micro . 26 (1): 80–91. doi : 10.1109 / MM.2006.11 . S2CID 206472480 .
- Yoshizoe, Kazuki; Matsumoto, Takashi; Hiraki, Kei (1998). "Ejecución paralela especulativa en JVM" . Taller británico sobre HPNC . págs. 1–20.
- Oancea, Cosmin E .; Mycroft, Alan; Harris, Tim (2009). "Una implementación local ligera para la especulación a nivel de subprocesos de software" (PDF) . Actas del vigésimo primer simposio anual sobre paralelismo en algoritmos y arquitecturas . SPAA '09. págs. 1-10. doi : 10.1145 / 1583991.1584050 .