Brevet FR3031819A1 — publié le 20160722

L'invention concerne un procédé de gestion d'une exécution de tâches, et un processeur programmé pour mettre en oeuvre ledit procédé. ARRIERE PLAN DE L'INVENTION Les processeurs multi-coeurs sont des proces- seurs comportant plusieurs unités de calcul (ou coeurs) gravées sur une même puce de silicium. L'utilisation de ce type de processeur comporte de nombreux avantages en termes de performance et de consommation électrique asso- ciée à ces performances. Dans certains cas, les deux coeurs doivent accé- der à une même mémoire. Les deux accès ne pouvant avoir lieu simultanément, l'un des accès doit alors être retar- dé. Cette situation peut intervenir à plusieurs reprises lors de l'exécution d'un programme, entraînant une fluctuation des temps d'exécution. Comme les demandes d'accès simultanées sont difficilement prévisibles et leur influence particulièrement complexe à simuler, les concep- teurs ont tendance à surestimer des durées « pire cas » de temps d'exécution, ce qui dégrade les performances du système. OBJET DE L'INVENTION L'invention a pour objet de concevoir des ap- plications utilisant des processeurs multi-coeurs en pré- déterminant les accès simultanés pour limiter leur influence sur les performances du système. RESUME DE L'INVENTION En vue de la réalisation de ce but, on propose un procédé de gestion d'une exécution de tâches par un processeur comportant une première unité de calcul et une deuxième unité de calcul destinées à exécuter simultanément respectivement des premières tâches et des deuxièmes tâches de durées prédéterminées, le procédé comprenant les étapes de : synchroniser un premier ordonnanceur de la première unité de calcul adapté à séquencer les premières tâches et un deuxième ordonnanceur de la deuxième unité de calcul adapté à séquencer les deuxième tâches ; séquencer les premières et les deuxièmes tâches de manière à prédéterminer et limiter des accès simultanés de la première et de la deuxième unité de calcul à un module de mémoire commun du processeur auquel chacune des unités de calcul est adaptée à accéder en lecture ou en écriture. La synchronisation du premier et du deuxième ordonnanceur permet de maîtriser temporellement l'exécution des premières et des deuxièmes tâches les unes par rapport aux autres. On peut ainsi prévoir préci- sément les accès simultanés au module de mémoire commun du processeur de la première et de la deuxième unité de calcul, et donc adapter la séquence des tâches pour limiter ces accès simultanés. On propose de plus un processeur comportant deux unités de calcul et un module de mémoire commun aux deux unités de calcul, chaque unité de calcul étant destinée à exécuter des tâches séquencées par un ordonnanceur de l'unité de calcul, le processeur étant programmé pour mettre un oeuvre un procédé de gestion d'une exécu- tion de tâches selon l'une des revendications précédentes. L'utilisation d'un tel processeur permet de bénéficier des avantages décrits ci-dessus. L'invention sera mieux comprise à la lumière de la description qui suit d'un mode de mise en oeuvre particulier non limitatif de l'invention. BREVE DESCRIPTION DES DESSINS Il sera fait référence aux dessins annexés, parmi lesquels : - la figure 1 représente schématiquement un calculateur contenant une carte électrique sur laquelle est monté le processeur de l'invention ; la figure 2 représente schématiquement des en- sembles de premières tâches et de secondes tâches séquencées selon le procédé de gestion de l'invention. DESCRIPTION DETAILLEE DE L'INVENTION Le procédé de gestion d'une exécution de tâches de l'invention et le processeur de l'invention sont ici mis en oeuvre et montés dans un calculateur intégré dans un système temps réel de navigation inertielle pour aéronef. Le calculateur 1, représenté schématiquement à la figure 1, comporte un boîtier 2 dans lequel est montée au moins une carte électrique 3 comprenant le processeur 4 de l'invention. On supposera dans la suite que le processeur 4, la carte électrique 3, et le calculateur 1 coopèrent avec leur environnement respectif conformément aux exigences diverses (fonctionnelles, d'intégration, de sécurité, etc.) du système de navigation inertielle. Le processeur 4 de l'invention est un proces- seur bi-coeur symétrique comportant une première unité de calcul (ou coeur) 5 et une deuxième unité de calcul (ou coeur) 6, les deux unités de calcul 5, 6 étant identiques. Chacune des unités de calcul est associée à un module de mémoire cache de premier niveau formé par un module dit « I-Cache » (pour Cache d'Instructions), réservé aux instructions, et un module dit « D-Cache » (pour Cache de Données), réservé aux données. Ici, les modules I-Cache et D-Cache présentent la même taille de mémoire cache. On nomme L1-1 et L1-2 les modules de mémoire cache de premier niveau respectifs de la première unité de calcul 5 et de la deuxième unité de calcul 6. Le processeur 4 comporte de plus un module de mémoire cache commun de second niveau L2, partagé entre la première unité de calcul 5 et la deuxième unité de calcul 6. Les unités de calcul 5, 6 et leurs modules de mémoire cache L1-1, L1-2, ainsi que le module de mémoire cache L2, sont reliés par un bus 7 dont le trafic est surveillé par un module de surveillance 8 chargé de gérer la cohérence et la consistance mémoire des accès au module de mémoire cache L2. Le processeur 4 comporte en outre un ensemble 9 d'autres composants habituels parmi lesquels des modules d'interface, de gestion de l'alimentation, etc. La première unité de calcul 5 et la deuxième unité de calcul 6 sont destinées à exécuter simultanément des premières tâches et des deuxièmes tâches. On appelle ici tâche un programme ou une partie de programme enre- gistré dans une mémoire associée au processeur pour être exécutée par l'une des unités de calcul. La première unité de calcul 5 est ici un coeur maître et la deuxième unité de calcul un coeur esclave. La première unité de calcul 5 active la deuxième unité de calcul 6 et lui transfère des données nécessaires à l'exécution des deuxièmes tâches. Lorsque les deuxièmes tâches ont été entièrement exécutées, la deuxième unité de calcul 6 prévient la première 5 et lui transfère les données résultant de ces tâches (résultats de calculs, etc.) ou les enregistre dans une mémoire à une adresse prédéfinie. La gestion de l'exécution des premières tâches et des deuxièmes tâches est respectivement confiée à un premier ordonnanceur déterministe de la première unité de calcul 5 et à un deuxième ordonnanceur déterministe de la deuxième unité de calcul 6. Les ordonnanceurs sont des composants d'un système d'exploitation du processeur 4 programmés pour séquencer l'exécution des tâches exécutées par les unités de calcul 5, 6, c'est-à-dire pour dé- finir l'ordre d'exécution des tâches en fonction de con- traintes temporelles et de contraintes liées aux disponibilités de ressources requises. Par déterministe, on entend que la date théorique de début ou de fin de chaque tâche peut être calculée avant le début de la tâche. En référence à la figure 2, le premier et le deuxième ordonnanceur définissent ici respectivement des premières tâches périodiques Ti, T2, T3, T4 de la première unité de calcul 5, regroupées en un premier ensemble Si lui-même répété périodiquement, et des deu- xièmes tâches périodiques Ni, N2,..., N16 de la deuxième unité de calcul 6 regroupées en un deuxième ensemble E2 lui aussi répété périodiquement. Sur la figure 2, le trait horizontal en pointillés 10 représente le module de mémoire cache L2, les flèches en direction du trait 10 représentent des accès en écriture au module de mémoire cache L2 par la première unité de calcul 5 ou la deuxième unité de calcul 6, et les flèches en direction opposée représentent des accès en lecture. La durée T des premières tâches T1,..., T4 est constante et prédéterminée, de même que la durée t des deuxièmes tâches, t étant inférieure à T. Le deuxième ensemble E2 a donc une durée inférieure au premier ensemble El. La deuxième unité de calcul est inactive lorsqu'elle n'exécute pas les deuxièmes tâches Ni,..., N16. Le procédé de gestion d'une exécution de tâches selon l'invention comporte tout d'abord une première étape consistant à synchroniser le premier ordonnanceur et le deuxième ordonnanceur des unités de calcul. On peut ainsi maîtriser parfaitement le lance- ment de l'exécution des tâches d'une unité de calcul par rapport à l'autre. Ici, en l'occurrence, on lance l'exécution de la première tâche Ni du deuxième ensemble E2 exactement à la fin de la première tâche Tl du premier ensemble El. Le procédé de gestion comporte ensuite une deu- xième étape consistant à séquencer les premières et les deuxièmes tâches de manière à limiter des accès simultanés de la première et de la deuxième unité de calcul au module de mémoire cache L2. Au cours de la tâche Tl, la première unité de calcul 5 écrit dans le module L2 les données nécessaires à l'exécution des tâches de l'ensemble E2. Puis, au cours de la première tâche de l'ensemble 62, la deuxième unité de calcul copie ces données dans son module de mémoire cache L1-2. Les deuxièmes tâches d'E2 sont ensuite exécu- tées successivement, la deuxième unité de calcul 6 utilisant son module de mémoire cache L1-2 et écrivant les résultats des tâches dans le module de mémoire cache L2. Lorsque la dernière tâche N16 a été exécutée et les ré- sultats associés à cette tâche écrits dans le module de mémoire cache L2, la première unité de calcul 5 accède à toutes les données écrites dans L2 par la deuxième unité de calcul 6 et les exploite. La deuxième unité de calcul 6 est alors inactive jusqu'à la prochaine occurrence de la tâche Ni. Ainsi, on constate que la durée D des accès simultanés par les deux unités de calcul 5, 6, visible sur la figure 2, au cours de laquelle les deux unités de calcul sont susceptibles d'accéder de manière simultanée au module L2, est de durée réduite, puisqu'elle correspond à une durée ici inférieure à deux périodes T. Ces accès simultanés sont de plus parfaitement prévisibles, car ils se produisent à la fin de la tâche Ti, qui peut être datée du fait du caractère déterministe du premier ordon- nanceur, et s'achèvent à la fin de la tâche N16, qui peut être datée du fait du caractère déterministe du deuxième ordonnanceur. L'invention n'est pas limitée au mode de réali- sation particuliers qui vient d'être décrit, mais, bien au contraire, couvre toute variante entrant dans le cadre de l'invention telle que définie par les revendications. Bien que l'on ait proposé une certaine configu- ration des modules de mémoire cache, l'invention s'applique à tout type de configuration et à tout type de mémoire (par exemple, à une mémoire vive non cache), un module de mémoire devant bien sûr être partagé par au moins deux unités de calcul. Les deux unités de calcul peuvent ne pas être identiques comme décrit précédemment. Le procédé de l'invention et le processeur peu- vent bien sûr être mis en oeuvre avec un nombre d'unités de calcul différent. Par exemple, un processeur pourrait comporter une unité de calcul maître et deux unités de calcul esclaves qui accéderaient successivement à un mo- dule de mémoire partagé. Le nombre de premières tâches et de deuxièmes tâches est bien sûr fourni à titre d'exemple, et pourrait être différent.20 REVENDICATIONS1. Procédé de gestion d'une exécution de tâches par un processeur (4) comportant au moins deux unités de calcul dont une première unité de calcul (5) et une deu- xième unité de calcul (6) destinées à exécuter simultané- ment respectivement des premières tâches (Ti, ..., T4) et des deuxièmes tâches N16) de durées prédétermi- nées, le procédé comprenant les étapes de : - synchroniser un premier ordonnanceur de la pre- mière unité de calcul (5) adapté à séquencer les premières tâches et un deuxième ordonnanceur de la deuxième unité de calcul (6) adapté à séquencer les deuxième tâches ; séquencer les premières et les deuxièmes tâches de manière à prédéterminer et limiter des accès si- multanés de la première (5) et de la deuxième unité de calcul (6) à un module de mémoire commun (L2) du processeur (4) auquel chacune des unités de calcul est adaptée à accéder en lecture ou en écriture. 2. Procédé de gestion d'une exécution de tâches selon la revendication 1, dans lequel les premières et les deuxièmes tâches sont regroupées respectivement en un premier et un deuxième ensembles (El, E2) de tâches synchronisés et périodiques, la durée du deuxième ensemble (E2) étant inférieure à celle du premier ensemble (El). 3. Procédé de gestion d'une exécution de tâches selon la revendication 2, dans lequel les premières et les deuxièmes tâches sont séquencées de sorte que la première (5) et la deuxième unité de calcul (6) n'accèdent au module de mémoire commun (L2) que pendant la durée d'un deuxième ensemble (E2). 4. Processeur comportant au moins deux unités de calcul (5, 6) et un module de mémoire (L2) commun aux deux unités de calcul, chaque unité de calcul étant des- tinée à exécuter des tâches séquencées par un ordonnan- ceur de l'unité de calcul, le processeur (4) étant programmé pour mettre un oeuvre un procédé de gestion d'une exécution de tâches selon l'une des revendications précé- dentes. 5. Processeur selon la revendication 4, dans lequel le module de mémoire commun (L2) est un module de mémoire cache. 6. Processeur selon l'une des revendications pré- cédente, dans lequel les ordonnanceurs sont des ordonnanceurs déterministes.20