Performance Assessment and Improvement for Cache Predictability in Multi-Core Based Avionic Systems

Jean-Baptiste Lefoul · PolyPublie (École Polytechnique de Montréal) · 2019

Les systèmes avioniques sont parmi les systèmes les plus critiques.Une erreur d'exécution d'un de ces systèmes peut avoir des conséquences assez catastrophiques jusqu'à un accident mortel.Afin de contrôler au maximum l'exécution de ces systèmes et d'utiliser des technologies établies, ces derniers sont en grande majorité des systèmes munis d'un processeur à un seul cœur.Il y a donc un seul flot d'exécution, ce qui permet d'avoir plus de déterminisme que sur un système multicœur avec plusieurs flots d'exécution en parallèle.Cependant, les fournisseurs de processeurs délaissent les systèmes single-core afin de se concentrer sur les systèmes multicœurs qui sont plus demandés.Les concepteurs de systèmes avioniques doivent donc s'adapter à ce changement d'offre.La question qui se pose est donc la suivante: comment limiter au maximum la baisse du déterminisme qu'apportent les systèmes multicœurs dans le cadre des systèmes avioniques?Dans le cadre de ce projet de recherche, nous nous sommes intéressés aux systèmes avioniques partitionnés et en particulier aux systèmes d'exploitation temps-réels qui gèrent les ressources et l'exécution des applications du système.La revue de littérature nous a montré plusieurs impacts que peuvent avoir les systèmes multicœurs sur le déterminisme de l'exécution des applications.L'influence d'une application sur l'exécution d'une autre est communément appelée interférence.Après avoir passé en revue les causes connues de ces interférences, nous nous sommes concentrés sur les mémoires caches, qui exercent la plus grosse influence sur le déterminisme des systèmes en termes de temps d'exécution.Une des solutions existantes pour réduire les interférences dans les mémoires cache est de verrouiller des données dans le cache afin qu'elles ne soient pas évinçables, cette technologie est connue sous le nom de "cache locking".La question qui se pose est donc de comment choisir les données à verrouiller dans le cache.Nous proposons donc un framework capable de profiler les accès mémoire lors de l'exécution d'un système.Le framework est également muni d'un simulateur de cache, ce qui nous permet de prévoir le comportement de la mémoire cache suivant les configurations qu'on lui donne.Un algorithme peut donc tirer profit des informations qu'offre le framework.Nous avons validé notre approche en implémentant dans notre framework un algorithme de sélection d'adresses à verrouiller dans le cache.Nous obtenons, comme prévu, une réduction de fautes de cache dans les caches privés et une hausse de déterminisme en temps d'exécution.Cela met bien en évidence que notre solution contribue à la réduction d'interférences au niveau du cache (plus de 25%).vi

Read the paper · More papers on PaperTik