Herramientas de Análisis Estático de Código Binario
Cálculo de Worst Case Execution Time (WCET)
Detección de errores en tiempo de ejecución y errores de concurrencia
¿Qué es el “Worst Case Execution Time”?
En aplicaciones de misión crítica se requiere que el código fuente sea preciso, consistente y determinístico.
Por ejemplo, en aplicaciones aeroespaciales, la norma DO-178C (ED-12C) requiere este objetivo para niveles de criticidad DAL C y superiores.
Entre otras actividades, se requiere la determinación y análisis del peor tiempo de ejecución (WCET) de todas las tareas existentes con el objetivo de garantizar que los tiempos de ejecución requeridos se satisfacen con un cierto margen.
¿Cómo se calcula?
Se calcula obteniendo el peor tiempo de ejecución de la tarea o programa para cualquier condición posible de ejecución. Hay que tener en cuenta las distintas ramas de código más las posibles ejecuciones asíncronas derivadas de interrupciones o cambios de contexto de ejecución de las distintas tareas.
Hay otros efectos de más bajo nivel, tales como los mecanismos del procesador para acelerar la ejecución del programa como “pipeline” y “cache”, por los cuales el tiempo de ejecución de una instrucción es variable dependiendo de lo que se ha ejecutado previamente. Finalmente, con procesadores multi-core el cálculo del WCET se complica ya que a todo lo anterior hay que añadir el efecto de la interferencia entre “cores”.
Por todo ello, obtener la condición de ejecución del programa o la tarea que causa el peor tiempo de ejecución es imposible en las aplicaciones actuales. Lo que se puede obtener es un límite superior del WCET que será superior al real, pero con un margen pequeño.
Análisis de WCET con herramientas AbsInt
Existen tres herramientas de AbsInt que calculan un límite superior del WCET. Las herramientas se basan en análisis estático del código binario final: Timing Profiler, aiT y TimeWeaver