000006393 001__ 6393
000006393 005__ 20150325135851.0
000006393 037__ $$aTAZ-PFC-2011-553
000006393 041__ $$aspa
000006393 1001_ $$aLópez Ara, Marta
000006393 24500 $$aDesarrollo de fases de compilación para descubrir el tiempo de ejecución de peor caso
000006393 260__ $$aZaragoza$$bUniversidad de Zaragoza$$c2011
000006393 506__ $$aby-nc-sa$$bCreative Commons$$c3.0$$uhttp://creativecommons.org/licenses/by-nc-sa/3.0/
000006393 520__ $$aLos dispositivos con requisitos de tiempo real son cada vez más utilizados, por ejemplo en automóviles (e.g. ABS), aeronáutica, electrodomésticos, etc. Para poder planificar los requisitos temporales de cualquier tarea, el primer paso es conocer (una cota superior de) su tiempo de ejecución en el peor caso (worst case execution time o WCET). Este cálculo depende de factores hardware y software, como por ejemplo de las memorias cache y del compilador utilizado, y debe conocerse previamente a su ejecución. Además, requiere información que maneja internamente el compilador pero no queda explícita en el ejecutable final, con lo que recuperarla es muy complejo. Cuanto más ajustada sea la cota superior obtenida, mejor se aprovecharán los recursos del sistema, aumentando así la planificabilidad del mismo. Por todo lo anterior, se ha realizado este proyecto de fin de carrera, cuyo objetivo principal ha sido la implementación de una serie de pasos (fases en la terminología usual de compiladores) que obtengan la información necesaria directamente en el proceso de compilación: reúsos de bloques de memoria y número máximo de iteraciones en bucles. Para ello se ha utilizado la infraestructura de compilación Low Level Virtual Machine (LLVM). Se han creado dos bibliotecas para ayudar al cálculo de la cota superior de los procesos. Estas bibliotecas van a sacar a relucir los accesos a memoria que existen, pudiendo así saber el reúso de variables y constantes, tanto temporal como espacial, y el número de veces que se ejecuta cada bucle de instrucciones como máximo. En particular: La biblioteca libmarcarLoadsStores localiza en el código intermedio de LLVM los accesos a memoria que existen (loads y stores) añadiéndoles los metadatas de depuración para su posterior reconocimiento con sus correspondientes instrucciones en el fichero que contiene el código ensamblador ARM. La biblioteca libbuclesReusos analiza en profundidad el código LLVM Intermediate Repesentation (IR) en busca de iteraciones y subiteraciones, indicando en el fichero ARM el máximo número de veces que se puede ejecutar un bloque básico de instrucciones, siempre que se sepa este dato en tiempo de compilación. Además, recoge los datos de los accesos a memoria, para poder identificar el reúso espacial y temporal, la variable o constante a la cual se refiere, y el desplazamiento que existe.
000006393 521__ $$aIngeniero en Informática
000006393 540__ $$aDerechos regulados por licencia Creative Commons
000006393 6531_ $$allvm
000006393 6531_ $$allvm ir
000006393 6531_ $$aarm
000006393 6531_ $$awcet
000006393 6531_ $$aoptimización
000006393 700__ $$aSegarra Flor, Juan$$edir.
000006393 7102_ $$aUniversidad de Zaragoza$$bInformática e Ingeniería de Sistemas$$cArquitectura y Tecnología de Computadores
000006393 8560_ $$f497517@celes.unizar.es
000006393 8564_ $$s260518$$uhttps://zaguan.unizar.es/record/6393/files/TAZ-PFC-2011-553.pdf$$yMemoria (spa)
000006393 8564_ $$s368318$$uhttps://zaguan.unizar.es/record/6393/files/TAZ-PFC-2011-553_ANE.pdf$$yAnexos (spa)
000006393 909CO $$ooai:zaguan.unizar.es:6393$$pdriver$$pproyectos-fin-carrera
000006393 950__ $$a
000006393 980__ $$aTAZ$$bPFC$$cCPS