Al contrario que otros sistemas de cómputo genéricos, los sistemas embebidos de tiempo real (ERTSs) interaccionan con su entorno y están sujetos a restricciones específicas, por lo que su diseño implica desafíos que son únicos en esta disciplina. En estos sistemas, la validez del diseño depende no sólo del hecho de que se calcule un resultado, sino también del hecho de que dicho resultado sea computado antes de un tiempo límite, con un bajo consumo energético, con un uso mínimo de memoria o de tal modo que el comportamiento térmico del chip no degrade su funcionalidad ni su fiabilidad. Estas propiedades no funcionales son tan importantes (o incluso más importantes) que el resultado del cómputo per se. Entre las propiedades no funcionales se incluye el consumo energético, las transacciones con memoria, la contención en el bus o en la red en chip, el balanceo de carga, el tiempo de ejecución, el comportamiento térmico... La optimización de estas propiedades induce una mayor duración de la batería, una interacción con el usuario más fluida, mejor calidad en las transmisiones o una mayor fiabilidad del sistema. Esta tesis presenta varias técnicas para analizar las propiedades no funcionales de sistemas embebidos de tiempo real:
* La primera parte describe varios avances en la técnica de simulación nativa que permiten obtener estimaciones sobre requerimientos no funcionales en las primeras etapas del flujo de diseño. Este enfoque particular en las primeras etapas del flujo de diseño está motivado por la necesidad de elegir una plataforma válida cuando la aplicación aún no ha sido optimizada para ningún objetivo en particular. En esta parte describimos nuestro enfoque acerca de cómo separar el dominio de simulación en tres subdominios (plataformas de un solo núcleo, de varios núcleos comunicados mediante una red-en-chip y plataformas con aceleradores hardware implementados en una FPGA) y combinarlos para obtener resultados rápidos y precisos.
La segunda parte de esta disertación comienza describiendo un sistema de ejecución simbólica para programas LLVM que genera automáticamente trazas que pueden usarse como candidatos para encontrar condiciones de falsificación de propiedades de programas. Para evitar generar trazas inútiles, la ejecución simbólica está guiada por un análisis estático. Para expresar las propiedades a comprobar, el sistema se ha combinado con modelos UML/OCL del comportamiento esperado. Dicho sistema de ejecución simbólica es utilizado en primer lugar para buscar errores en las propiedades funcionales del sistema, y se extiende posteriormente para obtener el tiempo de ejecución de peor caso en programas binarios. Para ello, los modelos de simulación se concretizan para una plataforma particular (ARM920- T) y se combinan con la representación simbólica del estado del programa para obtener límites probados y ajustados del tiempo de ejecución cuando el programa se ejecuta sobre dicha plataforma (WCET).
En cada parte, la velocidad, precisión y conveniencia de las herramientas han sido evaluadas con varios ejemplos de diseños industriales y de investigación. Los ejemplos son interesantes por derecho propio, e ilustran algunos de los problemas reales que se enfrentan al diseñar sistemas embebidos en tiempo real y de alto rendimiento.
La tesis concluye que información útil sobre las propiedades no funcionales de un programa cuando se ejecuta sobre un sistema embebido puede ser obtenida con unaix combinación de las técnicas “simulación nativa”, “ejecución simbólica” y “refinamiento de trazas”. En escenarios en los que la plataforma de destino es bien conocida y bajo ciertas condiciones, los límites sobre el tiempo de ejecución de peor caso se pueden derivar automáticamente utilizando estas técnicas.
Unlike other generic computing systems, embedded real-time systems (ERTSs) interact with their environment and are subject to specific constraints; so their design usually faces particular challenges that are unique to this discipline. In these systems, the correctness of the design depends not only on the fact that it can compute something, but also on non-functional properties, such as the execution time, which are as important as (or even more important than) the result of the computation per se. By ``non-functional'' properties, we refer to energy consumption, memory transactions, bus and NoC contention, memory optimization, load balancing, execution time, thermal behavior, etc. These non-functional properties are meant to induce longer battery life, smoother user interaction, better quality in the transmissions or more reliability. This dissertation presents various techniques and tools for tackling the design challenges that are unique to ERTSs:
* The first part of this thesis (Chapter 3) describes several advances in a native simulation technique that enables to obtain estimates about non-functional requirements in the early stages of the design flow. These estimates only require a rough model of the platform under development and, unlike other state-of-the-art techniques, do not need a precise modeling of the instruction set, memory mapping, or functional models of the peripherals. This particular focus on the early stages of the design flow is motivated by the need to choose a valid platform when the application has not been optimized yet for any particular target. We also describe a technique and implementation details about how to obtain performance estimations in de- signs where only a rough partitioning between hardware and software elements is available. Being able to quickly estimate the effect of accelerating some sections of the code in a hardware accelerator before the tedious work of implementing such parallelization is a significant time-saver and a key element in the effective design flow for heterogeneous embedded devices.
The second part of this dissertation (Chapter 4) addresses a well-known problem of simulation when applied to ensuring certain properties in the design of embedded systems. As the input of the program and the hardware is unknown, even when a simulation is certainly useful to analyze and understand some properties of the system, the observed behavior offers just a limited view of all the possible evolutions. This partial view is limited to the executions observed in the test-benches. To be able to extend the set of observed behaviors automatically, we describe a symbolic execution framework for LLVM programs that generates traces that can be used as candidates to find falsification conditions for properties of programs. We avoid exploring useless traces combining the symbolic execution technique with static analysis. We also extend these techniques developed for the verification of functional properties to the domain of worst-case execution time. In contrast to other state-of-the-art techniques, the described method provides safe and tight bonds, is entirely automated, and does not require a manual mapping between the source code and the final executable.
* In the conclusion part, we wrap up with observations about the techniques and considerations described in previous chapters concerning the benefits that their combination brings to the analysis and design of embedded real-time systems. The requirements of the design toolset change considerably during the different phases that are involved in the creation of an embedded system.
Therefore, it is important to analyze how our design tools can adapt to these changing requirements, how we can integrate the results from the early phases of the design into following steps, and how we can join the analysis produced at different abstraction levels to draw conclusions about the non-functional characteristics of the final result.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados