Optimisation de codes multimédias pour systèmes embarqués
Institution:
Paris 11Disciplines:
Directors:
Abstract EN:
Image processing algorithms tend to become more and more computation-power hungry, while video applications ask for greater amounts of data to process. In order to be able to sustain real-time video streams, microprocessor-based embedded systems have to be carefully tuned. This thesis focuses on studying the required optimizations on several scales. Firstly by modifying the instruction set and computation units of a processor, to improve its computation efficiency at a reasonable hardware cost, leading to interesting electrical consumption results. An applicative example is given through the implementation of a robust embedded localization algorithm based on interval analysis. Secondly by studying the best way to generate hardware modules for soft-core processors on FPGA, in order to not simply accelerate a few instructions but a complete computation bloc. Finally, at a complete treatment scale, a low-level image-processing code generation tool – IPLG – is proposed. This tool automatically generates optimally written stencil-based C code, by exploring all possible computation-loop fusions, and by applying variable rotation, loop-unrolling and data-locality improvement techniques
Abstract FR:
Les algorithmes de traitement d’images requièrent des puissances de calculs de plus en plus grandes pour satisfaire des applications toujours plus gourmandes. Afin d’être capable de traiter efficacement un flux vidéo en temps réel, un système à microprocesseur embarqué doit être optimisé avec le plus grand soin. Cette thèse se propose d’étudier ces optimisations à plusieurs niveaux. Tout d’abord au plus proche du matériel à travers la modification du jeu d’instructions et des unités de calcul d’un processeur, pour que celui-ci travaille de façon efficace pour un ajout minimal de matériel et une consommation électrique maîtrisée. Un cas d’ application est présenté pour des algorithmes de localisation embarqués robustes faisant appel au calcul par intervalles. Ensuite par l’étude de la génération de blocs matériels pour processeurs logiciels sur FPGA, capables d’accélérer non plus seulement une instruction mais toute une fonction de calcul. Enfin à l’échelle d’un traitement complet, un outil de génération de code de filtres bas-niveau – IPLG – est présenté. Celui-ci permet de trouver automatiquement la forme optimale d’un code C de traitement systématique à base de stencils, en explorant les possibilités de fusion de nids de boucle de calcul, et en appliquant les techniques de rotation de variables, de déroulage de boucles et d’optimisation de la localité des données au code créé.