Deterministically assessing the robustness against transient faults of programs
- Dias Lima Gramacho, Joao Artur
- Dolores Isabel Rexachs del Rosario Director/a
Universidad de defensa: Universitat Autònoma de Barcelona
Fecha de defensa: 17 de julio de 2014
- Casiano Rodríguez León Presidente
- Antonio González Colás Secretario/a
- Jan Kwiatkowski Vocal
Tipo: Tesis
Resumen
Los procesadores están evolucionando para obtener más rendimiento, utilizando más transistores y siendo cada vez más densos y más complejos. Un efecto secundario de este escenario es que los procesadores son cada vez menos robustos frente a fallos transitorios. Como las soluciones integradas en los propios procesadores son caras o tienden a degradar el rendimiento del procesador, estas soluciones para hacer frente a estos fallos transitorios se complementan con propuestas en las capas superiores, como en el sistema operativo, o incluso en los programas. Las propuestas de tolerancia a fallos para tratar fallos transitorios integrados en la capa de aplicación, para su validación y evaluación usan frecuentemente experimentos de inyección de fallos, de este modo pueden evaluar el comportamiento de los programas con y sin sus propuestas de detección de fallas. Utilizar experimentos de inyección de fallos para evaluar el comportamiento de los programas en presencia de fallos transitorios, requiere ejecutar el programa evaluado, haciendo la inyección de un fallo (por lo general cambiando un solo bit en un registro del procesador) una cantidad significativa de veces, siempre observando el comportamiento del programa y si este ha finalizado presentando el resultado esperado. Un problema con esta estrategia es que el espacio de inyección de fallos es proporcional a la cantidad de instrucciones ejecutadas multiplicado por la cantidad de bits en el archivo de registros de la arquitectura del procesador. En lugar de ser exhaustivos (que sería inviable), este método consume mucho tiempo de CPU ejecutando o simulando el programa que se está evaluando tantas veces como sea necesario para obtener una aproximación estadística válida razonable (por lo general sólo unos pocos miles de veces). Así, el tiempo requerido para evaluar cómo se comportaría un solo programa en presencia de fallos transitorios podría ser proporcional al tiempo necesario para ejecutar el programa cerca de cinco mil veces. En este trabajo se presenta el concepto de robustez de un programa frente a fallos transitorios y también presenta una metodología llamada ARTFUL diseñada para, en lugar de utilizar las ejecuciones con inyecciones de fallos, hacer el cálculo de la robustez de forma determinística, basada en una traza de ejecución del programa y en la información sobre la arquitectura utilizada. Nuestro método fue evaluado calculando la robustez precisa de conocidos benchmarks reduciendo significativamente el tiempo necesario para realizar la evaluación.