Optimisation de codeEn programmation informatique, l'optimisation de code est la pratique consistant à améliorer l'efficacité du code informatique d'un programme ou d'une bibliothèque logicielle. Ces améliorations permettent généralement au programme résultant de s'exécuter plus rapidement, de prendre moins de place en mémoire, de limiter sa consommation de ressources (par exemple les fichiers), ou de consommer moins d'énergie électrique. La règle numéro un de l'optimisation est qu'elle ne doit intervenir qu'une fois que le programme fonctionne et répond aux spécifications fonctionnelles.
Déroulage de boucleEn informatique, le déroulage de boucle (en loop unrolling) est une technique d'optimisation des boucles visant à en augmenter la rapidité d'exécution. Il s'agit de dupliquer le corps de la boucle de manière à éviter de répéter l'instruction de saut. Il est possible d'appliquer ensuite d'autres optimisations (allocation de registre, ordonnancement des instructions) au code après duplication. Cette technique est fréquemment utilisée par les compilateurs optimisants, et permet aussi de générer du code vectoriel à partir d'une boucle.
Loop nest optimizationIn computer science and particularly in compiler design, loop nest optimization (LNO) is an optimization technique that applies a set of loop transformations for the purpose of locality optimization or parallelization or another loop overhead reduction of the loop nests. (Nested loops occur when one loop is inside of another loop.) One classical usage is to reduce memory access latency or the cache bandwidth necessary due to cache reuse for some common linear algebra algorithms.
Optimizing compilerIn computing, an optimizing compiler is a compiler that tries to minimize or maximize some attributes of an executable computer program. Common requirements are to minimize a program's execution time, memory footprint, storage size, and power consumption (the last three being popular for portable computers). Compiler optimization is generally implemented using a sequence of optimizing transformations, algorithms which take a program and transform it to produce a semantically equivalent output program that uses fewer resources or executes faster.
Optimisation multidisciplinaireL'Optimisation de Conception Multidisciplinaire (OMD ou MDO, Multidisciplinary Design Optimisation, en anglais) est un domaine d'ingénierie qui utilise des méthodes d'optimisation afin de résoudre des problèmes de conception mettant en œuvre plusieurs disciplines. La MDO permet aux concepteurs d'incorporer les effets de chacune des disciplines en même temps. L'optimum global ainsi trouvé est meilleur que la configuration trouvée en optimisant chaque discipline indépendamment des autres, car l'on prend en compte les interactions entre les disciplines.
Mémoire cacheUne mémoire cache ou antémémoire est, en informatique, une mémoire qui enregistre temporairement des copies de données provenant d'une source, afin de diminuer le temps d'un accès ultérieur (en lecture) d'un matériel informatique (en général, un processeur) à ces données. Le principe du cache est également utilisable en écriture, et existe alors en trois modes possibles : write-through, write-back et write-around.
Optimisation de boucleIn compiler theory, loop optimization is the process of increasing execution speed and reducing the overheads associated with loops. It plays an important role in improving cache performance and making effective use of parallel processing capabilities. Most execution time of a scientific program is spent on loops; as such, many compiler optimization techniques have been developed to make them faster. Since instructions inside loops can be executed repeatedly, it is frequently not possible to give a bound on the number of instruction executions that will be impacted by a loop optimization.
Système d'exploitation embarquéUn système d'exploitation embarqué est un système d'exploitation pouvant être installé sur un système embarqué. Ce système d'exploitation est conçu avec des spécificités à gérer afin de répondre à des besoins spécifiques au type de système embarqué. Un système d'exploitation est un programme qui gère le matériel. Il sert d'intermédiaire entre l'application logicielle et le matériel informatique (périphériques, capteurs, moteurs...).
Ingénierie de fiabilitéL'ingénierie de fiabilité est un domaine de l'ingénierie, qui traite de l'étude, de l'évaluation et du Product Lifecycle Management de la fiabilité : l'habilité d'un système ou d'un composant à remplir ses fonctions exigées dans des conditions déterminées pour une période de temps déterminé. L'ingénierie de fiabilité est une sous-discipline au sein de l'ingénierie des systèmes. La fiabilité est souvent mesurée en probabilité de défaillance, fréquence de défaillance, ou en termes de disponibilité, une probabilité dérivée de la fiabilité et de la maintenabilité.
Linux embarquéLinux embarqué (en anglais Embedded Linux) désigne un système d'exploitation dérivé de Linux et adapté à un système embarqué. Il existe de nombreuses versions de Linux embarqués adaptés à différents types de matériels (téléphones portables, set-top boxes, boîtiers Internet (ADSL, Fibre ...), dispositifs lecteurs multimédia sur TV, etc). Contrairement aux versions de Linux destinées aux ordinateurs personnels et aux serveurs, les différents systèmes Linux embarqués sont conçus pour des systèmes aux ressources limitées.
Efficacité énergétique (thermodynamique)En physique et ingénierie mécanique, l'efficacité énergétique (ou efficacité thermodynamique) est un nombre sans dimension, qui est le rapport entre ce qui peut être récupéré utilement de la machine sur ce qui a été dépensé pour la faire fonctionner. Aux États-Unis, pour les appareils et équipements résidentiels, elle est déterminée par le facteur énergétique (energy factor). Cette notion est souvent confondue avec une définition du rendement thermodynamique, pour des systèmes dont l'efficacité énergétique théorique maximale est inférieure à un, comme les moteurs dithermes ou les moteurs électriques.
Système embarquéUn système embarqué est un système électronique et informatique autonome, souvent temps réel, spécialisé dans une tâche précise. Le terme désigne aussi bien le matériel informatique que le logiciel utilisé. Ses ressources sont généralement limitées spatialement (encombrement réduit) et énergétiquement (consommation restreinte). L'un des premiers systèmes modernes embarqués reconnaissables a été le Apollo Guidance Computer en 1967, le système de guidage de la mission lunaire Apollo, développé par Charles Stark Draper du Massachusetts Institute of Technology.
Pipeline logicielLe pipeline logiciel (software pipelining, par opposition aux pipelines matériels) est une technique utilisée par les compilateurs pour optimiser l'exécution des boucles. Elle consiste à superposer l'exécution de plusieurs itérations de la boucle, comme un pipeline matériel le fait pour les différentes phases des instructions : une itération du code généré contiendra en fait des instructions provenant de plusieurs itérations d'origine.
Scratchpad memoryScratchpad memory (SPM), also known as scratchpad, scratchpad RAM or local store in computer terminology, is an internal memory, usually high-speed, used for temporary storage of calculations, data, and other work in progress. In reference to a microprocessor (or CPU), scratchpad refers to a special high-speed memory used to hold small items of data for rapid retrieval. It is similar to the usage and size of a scratchpad in life: a pad of paper for preliminary notes or sketches or writings, etc.
Logiciel enfouiLes logiciels enfouis ou embarqués (embedded software), sont des entités autonomes qui remplissent une mission indépendante, parfois critique, sans intervention humaine, en général en interaction directe avec l’environnement extérieur que celui-ci soit physique ou informatique. Ces systèmes autonomes peuvent être isolés mais ils sont la plupart du temps reliés et communiquent à travers un réseau grâce à un logiciel d'intermédiation.
Object code optimizerAn object code optimizer, sometimes also known as a post pass optimizer or, for small sections of code, peephole optimizer, forms part of a software compiler. It takes the output from the source language compile step - the object code or - and tries to replace identifiable sections of the code with replacement code that is more algorithmically efficient (usually improved speed). The earliest "COBOL Optimizer" was developed by Capex Corporation in the mid 1970s for COBOL.
Cache de processeurUn cache de processeur est une antémémoire matérielle utilisée par l'unité centrale de traitement (CPU) d'un ordinateur pour réduire le coût moyen (temps ou énergie) de l’accès aux données de la mémoire principale. Un cache de processeur est une mémoire plus petite et plus rapide, située au plus près d'une unité centrale de traitement (ou d'un cœur de microprocesseur), qui stocke des copies des données à partir d'emplacements de la mémoire principale qui sont fréquemment utilisés avant leurs transmissions aux registres du processeur.
Optimisation combinatoireL’optimisation combinatoire, (sous-ensemble à nombre de solutions finies de l'optimisation discrète), est une branche de l'optimisation en mathématiques appliquées et en informatique, également liée à la recherche opérationnelle, l'algorithmique et la théorie de la complexité. Dans sa forme la plus générale, un problème d'optimisation combinatoire (sous-ensemble à nombre de solutions finies de l'optimisation discrète) consiste à trouver dans un ensemble discret un parmi les meilleurs sous-ensembles (ou solutions) réalisables, la notion de meilleure solution étant définie par une fonction objectif.
Optimisation (mathématiques)L'optimisation est une branche des mathématiques cherchant à modéliser, à analyser et à résoudre analytiquement ou numériquement les problèmes qui consistent à minimiser ou maximiser une fonction sur un ensemble. L’optimisation joue un rôle important en recherche opérationnelle (domaine à la frontière entre l'informatique, les mathématiques et l'économie), dans les mathématiques appliquées (fondamentales pour l'industrie et l'ingénierie), en analyse et en analyse numérique, en statistique pour l’estimation du maximum de vraisemblance d’une distribution, pour la recherche de stratégies dans le cadre de la théorie des jeux, ou encore en théorie du contrôle et de la commande.
Algorithmes de remplacement des lignes de cacheArticle principal : mémoire cache Les mémoires caches dans les matériels informatiques sont le plus souvent partiellement associatives : une ligne de la mémoire principale ne peut être rangée que dans une partie bien définie de la mémoire cache. Dans le cas d'une mémoire cache logicielle, il est possible qu'elle soit totalement associative et gérée globalement. Dans les deux cas, se pose le problème de devoir dégager une place dans la mémoire cache, ou dans la partie de celle-ci concernée, lorsque celle-ci est pleine et qu'on veut y charger des données de la mémoire principale.