Brevet FR3142578A1 — publié le 20240531

Procédé implémenté dans un microcontrôleur multi-cœur avec un premier cœur et un deuxième cœur, le procédé comprenant : - définir une tâche chainée récurrente exécutable par parties sur les premier et deuxième cœurs, avec une implémentation nominale associée à une répartition de référence des parties sur les différents cœurs, le deuxième cœur nécessitant un deuxième délai de latence (DL2) pour prendre en charge une deuxième partie (TK2) de la tâche chainée, - estimer une valeur courante du deuxième délai de latence, - si la valeur courante du deuxième délai de latence est supérieure à une première valeur seuil (DS2a), alors activer un mode de délestage du deuxième cœur pour lequel une portion de tête de la deuxième partie est exécutée sur le premier cœur et désactivée sur le deuxième cœur, - si la valeur du deuxième délai de latence est inférieure à une deuxième valeur seuil, alors revenir à l’implémentation nominale. Figure 2 Procédé et système avec un microcontrôleur multi-cœurs avec tâche chaînée et logique de délestage La présente invention est relative aux procédés implémentés dans un microcontrôleur multi-cœurs dans une unité de commande dans un véhicule automobile. On cible en particulier une unité de commande dans un véhicule automobile, notamment une unité de commande de moteur à combustion interne, ou une unité de répartition de couple dans une motorisation hybride. Etat de la technique On utilise de plus en plus des microcontrôleurs multi-cœurs dans les unités de commande électronique dans les véhicules automobiles. Cette architecture permet une souplesse importante dans la gestion et l’exécution de la multiplicité des tâches qui doivent être réalisées par l’unité de commande électronique. Dans certaines configurations logicielles, parmi les tâches à exécuter périodiquement, il est une catégorie d’un intérêt particulier dans le cadre de la présente invention, il s’agit des tâches dites « chainées ». Une tâche chainée est exécutée par parties sur plusieurs cœurs. Les parties en question sont exécutées de manière séquentielle, par chaque cœur respectif impliqué. En pratique, pour une tâche chainée d’intérêt, une première partie de la tâche est réalisée par un premier cœur du microcontrôleur, une deuxième partie de la tâche est réalisée par un deuxième cœur du microcontrôleur, et ainsi de suite. La première partie de la tâche donne un résultat qui est utilisé par la deuxième partie de la tâche, et ainsi de suite. Dans une unité de commande telle que mentionnée en introduction, la période de récurrence de certaines tâches chainées est liée à la vitesse de rotation du moteur et, de plus, certaines tâches additionnelles sont déclenchées sur des seuils de vitesse de rotation. Dans ces conditions, il est possible que la tâche chaînée d’intérêt, dans son implémentation nominale, ait un temps d’exécution qui devienne supérieur à la période de récurrence de la tâche. Lorsque ce phénomène s’installe et s’amplifie, cela peut conduire à des résultats de tâche erronés, voire un reset du microcontrôleur. De plus, lorsque l’exécution d’une tâche chaînée est terminée sur un cœur donné, son exécution sur le cœur suivant démarre lorsque le système d’exploitation de ce cœur le lui permet, en fonction de sa priorité et des tâches potentiellement plus prioritaires en attente d’exécution. Donc, si la tâche chaînée n’est pas exécutée de suite sur le cœur suivant parce que d’autres tâches plus prioritaires le sont, cette tâche chaînée sera exécutée avec un retard. Les inventeurs ont cherché à améliorer la situation. A cet effet, selon la présente divulgation, il est proposé un procédé implémenté dans un microcontrôleur multi-cœur dans une unité de commande dans un véhicule automobile, le microcontrôleur comprenant un premier cœur, un deuxième cœur et possiblement au moins un troisième cœur, le procédé comprenant les étapes suivantes : a- définir une tâche chainée exécutable par parties sur au moins les premier et deuxième cœurs, avec une implémentation dite nominale de la tâche chaînée associée à une répartition de référence des parties sur les différents cœurs, et la tâche chainée étant exécutée de manière récurrente, le premier cœur nécessitant un premier délai de latence (DL1) pour prendre en charge une première partie de la tâche chainée, le deuxième cœur nécessitant un deuxième délai de latence (DL2) pour prendre en charge une deuxième partie de la tâche chainée, b2- estimer une valeur courante du deuxième délai de latence (DL2), à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c2- si la valeur courante estimée du deuxième délai de latence (DL2) est supérieure à une première valeur seuil prédéterminée (DS2a), alors activer un mode de délestage du deuxième cœur pour lequel une portion de tête de la deuxième partie est exécutée sur le premier cœur et désactivée sur le deuxième cœur, d2- si la valeur courante estimée du deuxième délai de latence (DL2) est inférieure à une deuxième valeur seuil prédéterminée (DS2b), alors revenir à l’implémentation nominale, avec la portion de tête de la deuxième partie exécutée à nouveau sur le deuxième cœur, et désactivée sur le premier cœur. On nomme première partie de la tâche chaînée, la partie de tâche chainée exécutée par le premier cœur, deuxième partie de la tâche chaînée la partie de tâche chaînée exécutée par le deuxième cœur, etc. Le contenu de la première partie, respectivement deuxième partie peut évoluer d’une exécution à l’autre de la tâche chaînée. On note DS2a la première valeur seuil prédéterminée. On note DS2b la deuxième valeur seuil prédéterminée. On note DL2 le deuxième délai de latence. On note DL1 le premier délai de latence. Quand DL2 > DS2a, cela veut dire que le deuxième cœur est utilisé de manière intensive et est mobilisé par d’autres tâches ce qui conduit à un délai de prise en charge plus long que la normale. On note que les seuils DS2a et DS2b peuvent être identiques ou différents comme il sera vu plus loin. Dans le mode de délestage, la portion de tête de la deuxième partie de tâche chaînée n’est plus exécutée sur le deuxième cœur mais sur le premier cœur, donc on décharge le deuxième cœur d’une partie de son travail. Le délestage est réversible et le mode de délestage est momentané. Dans les cas de faible charge ou de charge modérée des cœurs, les délais de latence sont petits et le temps total d’exécution de la tâche chaînée est inférieur à la période de récurrence de la tâche chaînée. Dans une unité de commande telle que mentionnée en introduction, dans des conditions de récurrence élevée de certaines tâches liées à la vitesse de rotation du moteur, l’invention permet d’éviter ou au moins diminuer le phénomène de dépassement de délai mentionné dans la partie introductive. Grâce au mécanisme de délestage proposé, on diminue les risques d’un tel dépassement et d’un éventuel reset du microcontrôleur, et on améliore ainsi la fiabilité d’un logiciel de commande associé à ladite tâche chaînée. Dans divers modes de réalisation de l’invention, on peut éventuellement avoir recours en outre à l’une et/ou à l’autre des dispositions suivantes, prises isolément ou en combinaison. Selon un aspect de l’invention, il peut être prévu que : - lorsque le troisième cœur est présent, et dans les conditions du mode de délestage du deuxième cœur, une portion de queue de la deuxième partie est exécutée sur le troisième cœur et désactivée sur le deuxième cœur, et - pour le retour à l'implémentation nominale, la portion de queue est exécutée à nouveau sur le deuxième cœur et désactivée sur le troisième cœur. Ceci permet d’organiser un délestage important du deuxième cœur, avec une portion délestée sur le premier cœur et une autre portion délestée sur le troisième cœur. On répartit ainsi la charge délestée sur deux autres cœurs ce qui représente une optimisation. Selon un aspect de l’invention, le procédé peut comprendre en outre les étapes suivantes : b1- estimer une valeur courante du premier délai de latence (DL1), à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c1- si la valeur courante estimée du premier délai de latence (DL1) est supérieure à une troisième valeur seuil prédéterminée (DS1a), alors activer un mode de délestage du premier cœur pour lequel une portion de queue de la première partie est exécutée sur le deuxième cœur et désactivée sur le premier cœur, d1- si la valeur courante estimée du premier délai de latence (DL1) est inférieure à une quatrième valeur seuil prédéterminée (DS1b), alors revenir à l’implémentation nominale, avec la portion de queue de la première partie exécutée à nouveau sur le premier cœur et désactivée sur le deuxième cœur. On peut ainsi délester le premier cœur A1 s’il est trop chargé. On note que le premier délai de latence est défini entre le lancement d’une itération de la tâche chaînée par un séquenceur (l’instant de lancement étant noté LTK(i)) et le début d’exécution (noté tb1) sur le premier coeur A1. Selon un aspect de l’invention, il peut être prévu que, le troisième cœur étant présent, le troisième cœur nécessitant un troisième délai de latence (DL3) pour prendre en charge une troisième partie de la tâche chainée, et le procédé comprend en outre les étapes suivantes : b3- estimer une valeur courante du troisième délai de latence (DL3), à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c3- si la valeur courante estimée du troisième délai de latence (DL3) est supérieure à une cinquième valeur seuil prédéterminée (DS3a), alors activer un mode de délestage du troisième cœur pour lequel une portion de tête de la troisième partie est exécutée sur le deuxième cœur et désactivée sur le troisième cœur, d3- si la valeur courante estimée du troisième délai de latence (DL3) est inférieure à une sixième valeur seuil prédéterminée (DS3b), alors revenir à l’implémentation nominale, avec la portion de tête de la troisième partie exécutée à nouveau sur le troisième cœur et désactivée sur le deuxième cœur. On peut ainsi délester le troisième cœur A3 s’il est trop chargé. Selon un aspect de l’invention, s’agissant du seuil prédéterminé pour déclencher le mode de délestage du deuxième cœur, il peut être prévu que la première valeur seuil prédéterminée (DS2a) est strictement supérieure à la deuxième valeur seuil prédéterminée (DS2b) Autrement dit, le retour au fonctionnement normal, ou nominal, est déclenché sur un seuil de délai de latence plus bas que le seuil ayant enclenché le mode de délestage. Ceci fournit une fonction d’hystérésis qui permet d’éviter des basculements fréquents inutiles entre le mode de délestage et le mode nominal. On note que les valeurs des seuils en question sont de quelques microsecondes, par exemple entre 700 et 2500 microsecondes pour une tâche chainée qui a pour récurrence une période de 10 ms. On remarque qu’en réalisation alternative, les seuils prédéterminés DS2a et DS2b peuvent être égaux et moyennant un filtrage passe bas cela fonctionne aussi correctement. Les valeurs mesurées successivement pour le deuxième délai de latence DL2 peuvent notamment être introduites dans un filtre numérique passe bas ou dans un filtre à moyenne fenêtrée, ce qui évite de déclencher le délestage sur une seule valeur au-dessus du seuil, et dans le sens inverse de retour au nominal, sur une seule valeur au-dessous du seuil. Selon un aspect de l’invention, s’agissant du seuil prédéterminé pour déclencher le mode de délestage du premier cœur, il peut être prévu que la troisième valeur seuil prédéterminée (DS1a) est strictement supérieure à la quatrième valeur seuil prédéterminée (DS1b). Autrement dit le retour au fonctionnement nominal est déclenché sur un seuil du délai de latence plus bas que le seuil ayant enclenché le mode de délestage. Comme précédemment, ceci fournit une fonction d’hystérésis qui permet d’éviter des basculements fréquents inutiles. Selon un aspect de l’invention, la valeur courante du deuxième délai de latence DL2 peut être calculé comme une moyenne sur les M dernières exécutions de la tâche chaînée. De manière similaire, la valeur courante du premier délai de latence DL1 peut être calculé comme une moyenne sur les M dernières exécutions de la tâche chaînée. De manière similaire si le troisième cœur est présent, le troisième délai de latence DL3 peut lui aussi être calculé comme une moyenne sur les M dernières exécutions de la tâche chaînée. Selon un aspect particulier, la tâche chaînée peut être exécutée de manière périodique asynchrone, la période étant dépendante du régime de rotation du moteur du véhicule. En particulier, lorsque la fréquence de récurrence est proportionnelle au régime de rotation moteur, le risque de dépassement évoqué dans la partie introductive augmente, et le délestage tel que présenté ci-dessus est d’autant plus pertinent. Selon un aspect particulier, la tâche chaînée est lancée par un séquenceur du système d’exploitation. La tâche chaînée est un regroupement de fonctions exécutées de manière séquentielle. Lesdites fonctions sont des fonctions de haut niveau, et non de simples fonctions mathématiques. Il s’agit plutôt d’entités, ou procédures, qui regroupent (autrement dit encapsulent) du code définissant des traitements logiques, des calculs, des appels de fonction de librairies, etc. En variante, la tâche chaînée comporte directement le code définissant lesdits traitements logiques, calculs, appels de fonction de librairies, etc. Selon un aspect de l’invention, il peut être prévu que : - la première partie de la tâche chaînée comprend dans, une exécution nominale, une portion de base suivie d’une portion de queue, - la deuxième partie de la tâche chaînée comprend, dans une exécution nominale, une portion de base précédée d’une portion de tête et suivie d’une portion de queue, les portions de base étant issues d’un découpage prédéfini. Selon un aspect de l’invention, le mode de délestage du premier cœur est exclusif du mode de délestage du deuxième cœur. Au vu du mécanisme présenté, le cœur en difficulté de charge est relayé par les cœurs voisins (précédent et/ou suivant), lesquels ne sont pas délestés mais au contraire chargés un peu plus. Selon un aspect de l’invention, on peut choisir de délester préférentiellement le cœur qui est le plus en difficulté, autrement dit celui qui présente un délai de latence le plus long. La présente invention vise également un microcontrôleur multi-cœur configuré pour mettre en œuvre le procédé décrit ci-dessus, le microcontrôleur en question étant utilisé de préférence dans une unité de commande dans un véhicule automobile. La présente invention vise également une unité de commande électronique comprenant le microcontrôleur tel que ci-dessus caractérisé. Description des figures D’autres aspects, buts et avantages de l’invention apparaîtront à la lecture de la description suivante d’un mode de réalisation de l’invention, donné à titre d’exemple non limitatif. L’invention sera également mieux comprise en regard des dessins joints sur lesquels : La illustre un bloc diagramme très simplifié d’un exemple de système de contrôle moteur, la représente un exemple illustratif de chronogramme concernant l’exécution d’une tâche chaînée dans une configuration nominale, la est analogue à la et illustre un cas de délestage du deuxième cœur, la est analogue à la et illustre un cas de délestage du premier cœur, la est analogue à la et illustre un cas de délestage du troisième cœur, la représente schématiquement un logigramme de fonctionnement du délestage du deuxième cœur. Description détaillée d’au moins un mode de réalisation Sur les différentes figures, les mêmes références désignent des éléments identiques ou similaires. Pour des raisons de clarté de l'exposé, certains éléments ne sont pas nécessairement représentés à l'échelle, en particulier les temps et durées représentés aux figures de chronogrammes ne sont pas nécessairement représentés à l’échelle. L’invention est illustrée dans le cadre d’un système de contrôle moteur à combustion interne. L’invention peut être utilisée généralement pour des contrôleurs intelligents embarqués sur véhicule automobile, qui gèrent une grosse complexité de calculs, comme par exemple mais non exclusivement les répartiteurs de couple sur moteur hybrides. En référence à la , ledit moteur repéré 60 est équipé d’actionneurs et de capteurs reliés à une unité de commande repérée 50. Les informations remontées par les capteurs transitent par des conducteurs qui sont raccordés comme des entrées 56 de l’unité électronique de commande 50. L’unité de commande comprend un microcontrôleur repéré 51. Ledit microcontrôleur comprend un premier cœur A1 de calcul, un deuxième cœur A2 de calcul et un troisième cœur A3 de calcul dans l’exemple illustré. Le troisième cœur est optionnel et on note également qu’il pourrait y avoir un quatrième cœur ou un nombre de cœurs plus important. Le microcontrôleur 51 interface une interface de sortie repérée 52, avec par exemple des commutateurs de puissance (‘power switches’). L’unité de commande fournit des commandes de sortie 58 destinées à contrôler les actionneurs agencés sur le moteur ou généralement dans la fonction motorisation. Par ailleurs, le microcontrôleur 51 comprend une zone mémoire 53, qui peut être accédée par les divers cœurs de calcul. Le microcontrôleur 51 est équipé d’un système d’exploitation. Le système d’exploitation comprend un séquenceur de tâches, destiné à ordonnancer et séquencer les diverses tâches qui incombent au microcontrôleur. Certaines tâches sont exécutées sur un cœur particulier. Mais nous nous intéressons ici aux tâches qui sont exécutées sur plusieurs cœurs, et en particulier les tâches qui ne sont pas exécutées en parallèle sur plusieurs cœurs, mais en série. On appelle ce type de tâches les « tâches chaînées ». Pour une tâche chaînée, on définit à l’avance un découpage, c’est-à-dire une répartition des différentes parties de tâche à exécuter, sur différents cœurs de calcul, avec le cas échéant des sous-parties optionnelles, c’est-à-dire des sous-parties exécutées ou pas selon les conditions opérationnelles du moment, comme il sera vu ci-après, e.g. avec délestage ou pas. En pratique, les parties en question sont exécutées de manière séquentielle par chaque cœur respectif impliqué. Pour une tâche chaînée d’intérêt, une première partie de la tâche est réalisée par le premier cœur du microcontrôleur et une deuxième partie de la tâche est réalisée par le deuxième cœur du microcontrôleur. Dans l’exemple illustré, nous avons aussi un troisième cœur exécutant une troisième partie de la tâche chaînée. Dans des variantes non représentées, plus de trois cœurs sont impliqués, exécutant chacun une partie de tâche respective. On nomme première partie de la tâche chaînée, la partie de tâche chainée exécutée par le premier cœur, deuxième partie de la tâche chaînée la partie de tâche chaînée exécutée par le deuxième cœur, etc. Comme nous le verrons plus loin, le contenu de la première partie, respectivement deuxième partie peut évoluer d’une exécution à l’autre de la tâche chaînée. La première partie TK1 comprend, dans une exécution nominale (notée TK1-n) illustrée à la , une portion de base T10 suivie d’une portion de queue T12. La deuxième partie TK2 comprend, dans une exécution nominale (notée TK2-n), une portion de base T20 précédée d’une portion de tête T21 et suivie d’une portion de queue T23. La troisième partie TK3 comprend, dans une exécution nominale (notée TK3-n), une portion de base T30 précédée d’une portion de tête T32. Les portions de base T10, T20, T30 respectives sont issues d’un découpage prédéfini. Elles sont toujours exécutées sur leur cœur respectif. En revanche, les portions de tête et les portions de queue peuvent faire l’objet d’une décision de réallocation permettant de délester un cœur parmi les deux ou les trois cœurs. Une étape préliminaire du procédé selon l’invention consiste à définir une tâche chainée TK exécutable par parties sur au moins les premier et deuxième cœurs (A1,A2), avec une implémentation dite nominale de la tâche chaînée associée à une répartition de référence des parties sur les différents cœurs . Comme illustré aux figures 2 à 5, le premier cœur A1 nécessite un premier délai de latence DL1 pour prendre en charge la première partie TK1 de la tâche chaînée, le deuxième cœur A2 nécessite un deuxième délai de latence DL2 pour prendre en charge la deuxième partie TK2 de la tâche chaînée. De plus, lorsque le troisième cœur est présent comme dans l’exemple illustré, le troisième cœur A3 nécessite un troisième délai de latence DL3 pour prendre en charge une troisième partie TK3 de la tâche chaînée. La tâche chaînée TK est exécutée de manière récurrente. Dans un exemple simple, la fréquence de récurrence est fixe. Dans un autre exemple assez courant, la fréquence de récurrence est proportionnelle au régime de rotation du moteur du véhicule. Plus le moteur tourne vite, plus la fréquence de récurrence de la tâche chaînée est élevée, et donc plus la période de répétition de ladite tâche est petite. Par exemple, pour un moteur tournant à 6000 trs/min, la fréquence de récurrence d’un tour moteur est de 100 Hz, et donc une tâche effectuée à chaque tour a une période de 10 ms. Si plusieurs tâches, chaînées ou non, sont déclenchées sur le signal dent moteur ou sur le signal arbre à cames, la charge des différents cœurs du microcontrôleur peut être très importante. Dans ces conditions, le découpage en parties et portions de tâches peut donner un résultat difficile à prévoir car les temps de latences peuvent devenir très importants, les cœurs étant occupés par des tâches potentiellement plus prioritaires. C’est dans ces conditions que le dépassement de délai évoqué dans la partie introductive peut se produire, d’autant plus que des interruptions hardware prennent la main avec priorité élevée sur les exécutions de tâches en cours et rendent la prévision de charges des différents cœurs aléatoire. Les premier, deuxième, et troisième délais de latence DL1, DL2, DL3 se manifestent pour chaque exécution de la tâche chaînée avec possiblement une évolution pour chacun dans le sens croissant ou dans le sens décroissant. La méthode proposée inclut l’étape : b2- estimer le deuxième délai de latence DL2, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée. Optionnellement, la méthode proposée peut inclure l’étape : b1- estimer le premier délai de latence DL1, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée. Optionnellement, la méthode proposée peut inclure l’étape b3- estimer le troisième délai de latence DL3, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée. Dans la configuration illustrée par la , le deuxième délai de latence DL2 a dépassé un premier seuil prédéfini noté DS2a, et un mode de délestage du deuxième cœur est alors mis en œuvre. Dans ce mode de délestage noté MD2, la première partie de tâche, exécutée sur le premier cœur A1, comprend une portion de base T10 suivie de la portion de queue T12, et suivie de la portion de tête T21 qui était normalement exécutée sur le deuxième cœur mais qui se retrouve maintenant exécutée sur le premier cœur. La première partie de tâche, dans ce mode de délestage MD2, est notée TK1-MD2. Dans l’exemple illustré, le deuxième cœur se contente de réaliser la portion de base T20 de la deuxième partie de tâche. La deuxième partie de tâche, dans ce mode de délestage MD2, est notée TK2-MD2. En effet, selon cette configuration optionnelle avec un troisième cœur, la portion de queue T23 n’est plus exécutée sur le deuxième cœur A2, mais à la place elle est exécutée sur le troisième cœur A3. La troisième partie de tâche, exécutée sur le troisième cœur A3, comprend ainsi, dans le mode MD2, la portion de queue T23 de la deuxième tâche telle que définie dans le mode nominal, la portion de tête T32, et la portion de base T30. La troisième partie de tâche, dans ce mode de délestage MD2, est notée TK3-MD2. Bien entendu, si le deuxième délai de latence DL2 redevient raisonnable et nominal, (en pratique s’il remplit le critère DL2 . Dans la configuration illustrée par la , le premier délai de latence DL1 a dépassé un troisième seuil prédéfini noté DS1a, et un mode de délestage du premier cœur noté MD1 est alors mis en œuvre. La portion de queue T12 de la première partie telle que définie dans le mode nominal, est exécutée alors sur le deuxième cœur A2 et désactivée sur le premier cœur A1. Le fonctionnement du deuxième cœur A2 est modifié par l’adjonction au début de la portion de queue T12. La deuxième partie de tâche, dans ce mode de délestage MD1, est notée TK2-MD1. Dans le mode MD1, Le premier cœur A1 ne réalise que la portion de base T10. La première partie de tâche, dans ce mode de délestage MD1, est notée TK1-MD1. Le fonctionnement du troisième cœur A3 reste ici nominal. Bien entendu, si le délai de latence DL1 redevient raisonnable et nominal, (en pratique s’il remplit le critère DL1 . Dans la configuration illustrée par la , le troisième délai de latence DL3 a dépassé un cinquième seuil prédéfini noté DS3a, un mode de délestage du troisième cœur noté MD3 est mis en œuvre. La portion de tête T32 de la troisième partie telle que définie dans le mode nominal, est exécutée alors sur le deuxième cœur A2 et désactivée sur le troisième cœur A3. La troisième partie de tâche, dans ce mode de délestage MD3, est notée TK3-MD3. Le fonctionnement du deuxième cœur A2 est modifié par l’adjonction à la fin de la portion de tête T32 de la troisième tâche. La deuxième partie de tâche, dans ce mode de délestage MD3, est notée TK2-MD3. Le fonctionnement du premier cœur A1 reste ici nominal. Selon la même logique que précédemment, si le troisième délai de latence DL3 redevient raisonnable et nominal, (en pratique s’il remplit le critère DL3 . Chaque portion de tâche comprend un ensemble de fonctions. La première partie de tâche commence à être exécutée à l’instant Tb1. La première partie de tâche est terminée à l’instant Te1. La deuxième partie de tâche commence à être exécutée à l’instant Tb2. La deuxième partie de tâche est terminée à l’instant Te2. La troisième partie de tâche commence à être exécutée à l’instant Tb3. La troisième partie de tâche est terminée à l’instant Te3. Les temps de latence sont définis par : DL2 = Tb2 – Te1 DL1 = Tb1 – LTK(i), l’indice i représentant la récurrence d’appel de la tâche chainée TK, DL3 = Tb3 – Te2 Le deuxième délai de latence DL2 peut être calculé comme une moyenne sur les M dernières exécutions de la tâche chaînée TK. Il en va de même pour le premier délai de latence DL1 et le troisième délai de latence DL3. On peut choisir par exemple M= 3. La valeur courante du troisième délai de latence DL3 est avantageusement une valeur moyenne calculée sur les M dernières exécutions de la tâche chaînée TK. On comprend du mécanisme tel qu’exposé ci-dessus que le mode de délestage d’un cœur est souvent exclusif du mode de délestage de ses voisins de chaîne (précédent et suivant). Toutefois on note que les cœurs A1 et A3 peuvent être délestés simultanément sur le cœur A2. Les possibilités de délestages simultanés augmentent si le microcontrôleur comprend quatre cœurs ou plus. On remarque aussi que dans le cas où deux délais de latence augmentent en même temps, on privilégiera le délestage du cœur qui présente le plus grand délai de latence. Ainsi, c’est le cœur le plus en difficulté qui va être délesté. La reprend sous forme de logigramme la logique de déclenchement du mode de délestage du deuxième cœur et l’utilisation d’une balise, ou flag, notée FMD2. Le pavé sur la gauche représente le fonctionnement dans le premier cœur A1. Au début, le séquenceur ou le premier cœur procède à l’horodatage du temps système et le stocke dans la variable LTK(i). Par ailleurs, le premier cœur exécute quoi qu’il arrive la portion de base T10. Dans l’exemple illustré du délestage du deuxième cœur, le premier cœur exécute aussi la portion de queue de la première tâche à savoir la portion T12. La suite dépend alors de la valeur du flag FMD2 qui représente le mode de délestage du deuxième cœur lorsqu’il est positionné à la valeur 1. Dans le cas nominal où ce flag FMD2 est à 0, le premier cœur a terminé sa mission concernant la première partie de tâche TK1. Sinon, lorsque FMD2 est à 1, alors le premier cœur A1 exécute aussi la portion de tête T21 de la deuxième tâche. À la fin de l’exécution qui incombe au premier cœur A1, le premier cœur procède à l’horodatage du temps système et le stocke dans la variable Te1. À ce point du processus, les résultats de la première partie de tâche sont mis à disposition du deuxième cœur A2. Au début du processus réalisé par le deuxième cœur A2, illustré par le pavé central de la , le deuxième cœur procède à l’horodatage du temps système et le stocke dans la variable Tb2. Dans le cas nominal où le flag FMD2 est à 0, le deuxième cœur exécute la portion de tête T21 puis la portion de base T20 puis la portion de queue T23. Sinon, lorsque FMD2 est à 1, alors le deuxième cœur exécute uniquement la portion de base T20. On note ici que le délestage dans le troisième cœur est une option qui est implémentée seulement quand ce troisième cœur est présent dans la configuration du microcontrôleur. À la fin de l’exécution qui incombe au deuxième cœur A2, les résultats de la deuxième partie de tâche sont mis à disposition du troisième cœur A3. Dans le cas nominal où le flag FMD2 est à 0, le troisième cœur exécute la portion de tête T32 puis la portion de base T30. Sinon, lorsque FMD2 est à 1, alors troisième cœur exécute portion de queue T23, puis la portion de tête T32, puis la portion de base T30. Pour finir, on calcule la valeur courante du délai de latence DL2, en calculant DL2 = Tb2 – Te1, ce calcul servant pour l’exécution suivante de la tâche TK. Le logigramme présenté peut être complété avec la gestion du flag de délestage FMD1 du premier cœur et optionnellement du flag de délestage du troisième cœur FMD3. Les logiques appliquées sont alors identiques ou similaires, mutatis mutandis, que celles exposées en détails pour le Flag FMD2. Avantageusement, le séquenceur ne s’occupe que de lancer la tâche aux instants LTK(i). Le reste du processus, en particulier l’activation d’un mode de délestage ou le retour au fonctionnement nominal est réalisé à un niveau logique des cœurs de calcul grâce à la gestion des flags FMD2, FMD1, et optionnellement FMD3. Des valeurs typiques pour les délais de latence, notamment les premier, deuxième et troisième délais de latence DL1, DL2 et DL3, sont compris entre 100 µs et 1 ms, plus particulièrement entre 300 µs et 700 µs. Des valeurs typiques de valeurs seuil DSa (première valeur seuil DS2a, respectivement troisième valeur seuil DS1a, respectivement cinquième valeur seuil DS3a) sont d’environ 2 ms, par exemple entre 1,8 ms et 2,2 ms. Des valeurs typiques de valeurs seuil DSb (deuxième valeur seuil DS2b, respectivement quatrième valeur seuil DS1b, respectivement sixième valeur seuil DS3b) sont d’environ 1,2 ms, par exemple entre 1,0 ms et 1,4 ms. Divers : Dans l’exemple illustré, on note que la puissance de calcul d’un des cœurs A1, A2, A3 est inférieure à une puissance de calcul d’un microcontrôleur mono cœur de puissance équivalente, mais la somme des puissances de calcul des cœurs A1 A2 A3 est supérieure à la puissance de calcul d’un microcontrôleur mono cœur de puissance équivalente. Il faut remarquer que le procédé proposé peut être utilisé non seulement sur les véhicules à moteur à combustion interne mais aussi sur des véhicules hybrides et des véhicules 100 % électriques dans le cadre de la commande en couple et vitesse des moteurs électriques. Procédé implémenté dans un microcontrôleur multi-cœur (51) dans une unité de commande (50) dans un véhicule automobile, le microcontrôleur comprenant un premier cœur (A1), un deuxième cœur (A2) et possiblement au moins un troisième cœur (A3), le procédé comprenant les étapes suivantes : a- définir une tâche chainée (TK) exécutable par parties sur au moins les premier et deuxième cœurs (A1,A2), avec une implémentation dite nominale de la tâche chaînée associée à une répartition de référence des parties sur les différents cœurs , et la tâche chainée (TK) étant exécutée de manière récurrente, le premier cœur (A1) nécessitant un premier délai de latence, DL1, pour prendre en charge une première partie (TK1) de la tâche chainée, le deuxième cœur (A2) nécessitant un deuxième délai de latence, DL2, pour prendre en charge une deuxième partie (TK2) de la tâche chainée, b2- estimer une valeur courante du deuxième délai de latence DL2, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c2- si la valeur courante estimée du deuxième délai de latence DL2 est supérieure à une première valeur seuil prédéterminée, DS2a, alors activer un mode de délestage du deuxième cœur pour lequel une portion de tête (T21) de la deuxième partie est exécutée sur le premier cœur (A1) et désactivée sur le deuxième cœur (A2), d2- si la valeur courante estimée du deuxième délai de latence DL2 est inférieure à une deuxième valeur seuil prédéterminée, DS2b, alors revenir à l’implémentation nominale, avec la portion de tête (T21) de la deuxième partie exécutée à nouveau sur le deuxième cœur (A2), et désactivée sur le premier cœur (A1). Procédé selon la revendication 1, le troisième cœur étant présent, dans lequel il est prévu que : pour le mode de délestage du deuxième cœur (A2), une portion de queue (T23) de la deuxième partie est exécutée sur le troisième cœur (A3) et désactivée sur le deuxième cœur (A2), et pour le retour à l'implémentation nominale, la portion de queue (T23) est exécutée à nouveau sur le deuxième cœur (A2) et désactivée sur le troisième cœur (A3). Procédé selon l’une des revendications 1 à 2, comprenant en outre les étapes suivantes : b1- estimer une valeur courante du premier délai de latence DL1, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c1- si la valeur courante estimée du premier délai de latence DL1 est supérieure à une troisième valeur seuil prédéterminée, DS1a, alors activer un mode de délestage du premier cœur pour lequel une portion de queue (T12) de la première partie est exécutée sur le deuxième cœur (A2) et désactivée sur le premier cœur (A1), d1- si la valeur courante estimée du premier délai de latence DL1 est inférieure à une quatrième valeur seuil prédéterminée, DS1b, alors revenir à l’implémentation nominale, avec la portion de queue (T12) de la première partie exécutée à nouveau sur le premier cœur (A1) et désactivée sur le deuxième cœur (A2). Procédé selon l’une des revendications 1 à 3, dans lequel, le troisième cœur étant présent et le troisième cœur (A3) nécessitant un troisième délai de latence, DL3, pour prendre en charge une troisième partie (TK3) de la tâche chainée, le procédé comprend en outre les étapes suivantes : b3- estimer une valeur courante du troisième délai de latence DL3, à partir d'une ou plusieurs exécution(s) antérieure(s) de la tâche chaînée, c3- si la valeur courante estimée du troisième délai de latence DL3 est supérieure à une cinquième valeur seuil prédéterminée, DS3a, alors activer un mode de délestage du troisième cœur pour lequel une portion de tête (T32) de la troisième partie est exécutée sur le deuxième cœur (A2) et désactivée sur le troisième cœur (A3), d3- si la valeur courante estimée du troisième délai de latence DL3 est inférieure à une sixième valeur seuil prédéterminée, DS3b, alors revenir à l’implémentation nominale, avec la portion de tête (T32) de la troisième partie exécutée à nouveau sur le troisième cœur (A3) et désactivée sur le deuxième cœur (A2). Procédé selon la revendication 3 ou 4, dans lequel : la première valeur seuil prédéterminée DS2a est strictement supérieure à la deuxième valeur seuil prédéterminée DS2b et/ou la troisième valeur seuil prédéterminée DS1a est strictement supérieure à la quatrième valeur seuil prédéterminée DS1b. Procédé selon l’une quelconque des revendications 1 à 5, dans lequel la valeur courante du deuxième délai de latence DL2 est une valeur moyenne calculée sur les M dernières exécutions de la tâche chaînée (TK). Procédé selon l’une quelconque des revendications 1 à 6, dans lequel la valeur courante du premier délai de latence DL1 est une valeur moyenne calculée sur les M dernières exécutions de la tâche chaînée (TK). Procédé selon l’une quelconque des revendications 1 à 7, dans lequel la tâche chaînée (TK) est exécutée de manière périodique asynchrone, la période étant dépendante du régime de rotation du moteur (60) du véhicule automobile. Procédé selon l’une quelconque des revendications 1 à 8, dans lequel : - la première partie (TK1) de la tâche chaînée comprend dans, une exécution nominale (TK1-n), une portion de base (T10) suivie d’une portion de queue (T12), - la deuxième partie (TK2) de la tâche chaînée comprend, dans une exécution nominale (TK2-n), une portion de base (T20) précédée d’une portion de tête (T21) et suivie d’une portion de queue (T23), les portions de base (T10, T20) étant issues d’un découpage prédéfini. Procédé selon l’une quelconque des revendications 3 à 9, dans lequel le mode de délestage du premier cœur est exclusif du mode de délestage du deuxième cœur. Microcontrôleur multi-cœur (51) dans une unité de commande (50) dans un véhicule automobile, le microcontrôleur étant configuré pour mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 10. Unité de commande (50) comprenant un microcontrôleur multi cœur (51) selon la revendication 11.