FR 3090157 A1 20200619 FR 1872750 A 20181212 Description Titre de l'invention : Procédé de commande d'une unité de contrôle moteur à processeur multicoeur Domaine technique [0001] L'invention a trait au domaine de l'automobile et concerne la commande des unités de contrôle moteur qui pilotent le fonctionnement du moteur à combustion interne d'un véhicule automobile. [0002] La plupart des véhicules automobiles actuels disposent d'une unité de contrôle moteur généralement placée sous le capot moteur. Cette unité de contrôle moteur est reliée à des capteurs permettant d'acquérir des informations sur l'état du moteur (températures, pressions, vibrations, position des différents organes, etc.). En tenant compte des données recueillies par ces capteurs, l'unité de contrôle moteur pilote le moteur à combustion interne en commandant des actionneurs tels que des injecteurs de carburant, d'éventuelles bougies d'allumage, des vannes disposées dans les différents circuits de fluide associés au moteur, etc. L'unité de contrôle moteur comporte, pour assurer sa fonction, des moyens électroniques de traitement de l'information, tel que des microprocesseurs. [0003] Les véhicules automobiles récents embarquent un nombre croissant de capteurs et leurs unités de contrôle moteur sont programmées pour piloter les capteurs avec une complexité et une finesse croissante. Les unités de contrôle moteur sont donc généralement dimensionnées à la hausse du point de vue de leur capacité de calcul, c'est-à-dire de la capacité de leur microprocesseur. Dans ce cadre, les recherches récentes conduisent à employer, au sein des unités de contrôle moteur, des microprocesseurs multicoeurs c'est-à-dire des microprocesseurs possédant plusieurs coeurs physiques fonctionnant simultanément. Plusieurs programmes peuvent donc être exécutés en parallèle et indépendamment les uns des autres. 100041 Cependant, la fonction d'une unité de contrôle moteur étant de piloter un organe physique complexe tel qu'un moteur à combustion interne, son taux de défaillance est nécessairement proche de zéro dans la mesure où sa défaillance entraînerait des dysfonctionnements pouvant aller jusqu'à la casse du moteur, ainsi que poser des problèmes de sécurité pour les passagers du véhicule. La fiabilité des opérations numériques au sein d'une unité de contrôle moteur est donc critique. L'exploitation des possibilités offertes par les microprocesseurs multicoeurs (l'exécution de plusieurs programmes en parallèle) ne peut avoir Heu qu'avec une garantie que ces possibilités offertes ne se traduisent pas par une perte de fiabilité. Or, certaines opérations sont particulièrement critiques car elles doivent avoir Heu à des fréquences élevées. C'est le cas 2 par exemple des opérations cycliques indexées sur la rotation du moteur, lors des hauts régimes moteur. [0005] Dans l'art antérieur, pour sécuriser ces opérations, les procédés de commande d'une unité de contrôle moteur disposant d'un microprocesseur multicoeur utilisent généralement des principes de sémaphore, c'est-à-dire que lorsqu'un exécutable d'une tâche lit ou modifie une variable, il verrouille cette variable de sorte qu'aucun autre exécutable ne puisse lire ou modifier de manière concurrente la variable. Ces procédés sont satisfaisants du point de vue de la sécurité, mais entraînent un temps de latence important puisque les exécutables sont alors exécutés séquentiellement et ces procédés ne tirent donc pas le meilleur parti des possibilités de traitement en parallèle offert par les processeurs multicoeurs. Résumé de l'invention [0006] L'invention propose un procédé de commande d'une unité de contrôle moteur qui sécurise les opérations lors de l'usage d'au moins deux coeurs de microprocesseur. [0007] À cet effet, l'invention vise un procédé de commande d'une unité de contrôle moteur qui est reliée à des capteurs et des actionneurs associés au moteur à combustion interne d'un véhicule, l'unité de contrôle moteur comportant au moins deux coeurs de microprocesseur, le procédé de commande comportant des étapes d'exécution d'une tâche cyclique, l'exécution de cette tâche étant déclenchée par un évènement récurent qui se répète selon une période liée à la rotation du moteur, cette tâche cyclique étant composée d'exécutables répartis en une sous-tache mère, déclenchée par l'évènement récurent et exécutée par un coeur de microprocesseur, et au moins une sous-tâche fille exécutée à la suite de la sous-tâche mère par un autre coeur de microprocesseur. [0008] Le procédé comporte les étapes suivantes: - déterminer le nombre d'exécutables qui restent à exécuter dans la dernière sous-tâche fille de la première période, lorsque la sous-tâche mère de la deuxième période démarre; - déterminer le nombre d'exécutables déjà exécutés dans la sous-tâche mère de la deuxième période, lorsque la dernière sous-tâche fille de la première période se termine. [0009] Ce procédé selon l'invention est particulièrement avantageux pour les tâches cycliques indexées sur la rotation moteur, c'est-à-dire lorsque l'exécution d'une telle tâche cyclique est déclenchée par un évènement qui se répète selon une période liée à la rotation du moteur. Cette même tâche cyclique se répète donc selon une période qui diminue lorsque le régime du moteur augmente. À haut régime, un nouveau cycle de cette tâche cyclique recommence donc très rapidement après le début de la tâche précédente. 3 [0010] Le procédé répartit chaque tâche à réaliser dans un cycle en différentes sous-tâches distribuées sur les différents coeurs du microprocesseur. Le découpage d'une tâche en sous-tâches permet de répartir la charge de calcul sur les coeurs de microprocesseur disponibles. Ce découpage est avantageux car il permet de tirer parti de l'ensemble des moyens de calcul disponibles, et permet un traitement plus rapide et plus puissant, ainsi que d'équilibrer les charges de calcul entre les différents coeurs de microprocesseur. [0011] Le procédé permet de sécuriser l'enchaînement des tâches cycliques. Lorsque la dernière sous-tâche fille d'un cycle se termine et que la sous-tâche mère du cycle suivant commence, le procédé détermine combien d'exécutables de la sous-tâche fille reste à exécuter ainsi que le nombre d'exécutables déjà exécutés dans la sous-tâche mère. La période de recouvrement entre la dernière sous-tâche fille et la sous-tâche mère du cycle suivant est ainsi identifiée. [0012] Le procédé selon l'invention peut permettre un diagnostic de l'unité de contrôle moteur. Ainsi, à intervalle régulier ou ponctuellement, le recouvrement de sous-tâches au moment de l'enchainement des tâches cycliques peut être étudié pour identifier des exécutables qui entreraient en conflit les uns avec les autres, durant les phases de chevauchement qui ont été identifiées. En effet, lorsqu'une sous-tâche fille et la sous-tâche mère du cycle suivant se chevauche, des exécutables peuvent entrer en conflit s'ils sont exécutés simultanément. Les exécutables qui peuvent entrer en conflit sont par exemple des exécutables qui modifient une même variable. [0013] Le procédé selon l'invention permet également une répartition plus sûre des exé- cutables au sein d'une même tâche. En effet, les exécutables amenés à être exécutés pendant le recouvrement des tâches sont identifiés. De manière dynamique (en cours de fonctionnement) ou de manière statique (lors des phases de maintenance), les exécutables connus pour être concurrents peuvent être déplacés au sein d'une tâche pour être exécutés en dehors de cette plage de recouvrement. [0014] Le procédé selon l'invention permet donc une meilleure connaissance des dysfonc- tionnements potentiels d'une unité de contrôle moteur et permet d'éviter ces dysfonctionnements, notamment ceux qui sont liés à l'exécution d'exécutables concurrents pendant la période de recouvrement. [0015] L'unité de contrôle moteur, et donc le moteur lui-même, bénéficie ainsi d'un contrôle plus précis et plus fiable. Par exemple, si une tâche mère comporte des exécutables permettant de calculer dans quel cylindre doit être réalisée la prochaine injection de carburant, l'unité de contrôle moteur empêche que les exécutables d'une tâche fille amenés à être exécutés pendant le recouvrement avec une tâche mère du cycle suivant n'utilisent un numéro de cylindre erroné (qui serait calculé par la nouvelle tâche mère) par rapport au cycle en cours. En conséquence, la quantité d'essence injectée est optimale et l'émission de produit polluants ou la consommation est mieux maitrisée. [0016] Le procédé de commande d'une unité de contrôle moteur peut présenter les caracté- ristiques additionnelles suivantes, seules ou en combinaison : - suite à l'étape de déterminer le nombre d'exécutables qui restent à exécuter dans la dernière sous-tâche fille de la première période, le procédé comporte l'étape de mémoriser ce nombre d'exécutables dans une mémoire ; - suite à l'étape de déterminer le nombre d'exécutables déjà exécutés dans la sous-tâche mère de la deuxième période, le procédé comporte l'étape de mémoriser ce nombre d'exécutables dans une mémoire ; - le nombre d'exécutables mémorisé dans une mémoire est de plus sauvegardé dans une mémoire de diagnostic ; - le procédé comporte une étape de diagnostic consistant à lire la mémoire de diagnostic ; - l'étape de déterminer le nombre d'exécutables qui restent à exécuter dans la dernière sous-tâche fille de la première période, comporte la mise en oeuvre d'un compteur d'exécutables de la sous-tâche fille ; - la valeur initiale du compteur d'exécutables de la sous-tâche fille correspond au nombre total d'exécutables dans la sous-tâche fille, cc compteur étant décrémenté lors de l'exécution de chaque exécutable de la sous-tâche fille ; - l'étape de déterminer le nombre d'exécutables déjà exécutés dans la sous-tâche mère de la deuxième période, comporte la mise en oeuvre d'un compteur d'exécutables de la sous-tâche mère ; - la valeur initiale du compteur d'exécutables de la sous-tâche mère est de zéro, ce compteur étant incrémenté lors de l'exécution de chaque exécutable. Brève description des dessins [0017] Un exemple préféré de réalisation de l'invention va maintenant être décrit en référence aux dessins annexés dans lesquels : [0018] [fig.1] représente une unité de contrôle moteur apte à mettre en oeuvre le procédé de commande selon l'invention' [0019] [fig.21 est un diagramme illustrant l'enchaînement de deux tâches cycliques sans période de recouvrement. [0020] [fig.3] est similaire à la figure 2 et illustre le cas où les tâches s'enchainent avec une période de recouvrement. [0021] [fig.4] est une vue de détail de la figure 2. [0022] [fig.5] est une vue de détail de la figure 3. Description des modes de réalisation 100231 La figure 1 représente schématiquement une unité de contrôle moteur 1 destinée au pilotage d'un moteur à combustion interne d'un véhicule automobile. [0024] L'unité de contrôle moteur 1 est reliée à une série de capteurs 3 tels que des capteurs de position, de température, de pression, de débit, etc. L'unité de contrôle moteur 1 est par ailleurs reliée à des sorties de contrôle 4 aptes à contrôler les actionneurs intervenant dans le pilotage du moteur. Ces actionneurs sont, par exemple, des bougies d'allumage, des injecteurs de carburant, des vannes, etc. [0025] L'unité de contrôle moteur 1 est programmée de manière connue pour, d'une part, faire l'acquisition des valeurs de mesure fournies par les capteurs 3, et d'autre part pour commander les actionneurs pour assurer le fonctionnement du moteur. [0026] L'unité de contrôle moteur 1 comporte un microprocesseur 2 qui est, dans le présent exemple, muni de deux coeurs Cl, C2. En plus des éléments classiques permettant le fonctionnement du microprocesseur 2 tels que mémoire vive, bus divers, etc. (non représentés), l'unité 1 comporte un premier compteur d'exécutable RTF et un deuxième compteur d'exécutable RTM destinés à la mise en oeuvre du procédé décrit plus loin. Ces compteurs d'exécutables RTF et RTM sont associés chacun à une mémoire d'exécutable 11, 12. Une mémoire de diagnostic 13 permet la sauvegarde des mémoires d'exécutables 11, 12. [0027] La figure 2 illustre le déroulement d'une tâche cyclique au sein du micro- processeur 2. [0028] Le microprocesseur 2 est un microprocesseur multicoeur classique. L'unité de contrôle moteur 1 comporte un système d'exploitation adapté à mettre en oeuvre les programmes informatiques conçus pour l'unité de contrôle moteur I. Le microprocesseur 2 est ainsi amené à exécuter des tâches (une tâche est également dénommée fil d'exécution ») correspondant aux diverses fonctions remplies par l'unité de contrôle moteur 1. L'une de ces tâches peut être par exemple la commande d'une séquence d'injection de carburant, d'une séquence d'allumage d'une bougie d'allumage, ou de l'ouverture d'une vanne. Certaines de ces tâches sont cycliques et sont indexées sur la rotation du moteur, c'est le cas par exemple pour les tâches d'injection et d'allumage. Dans ces cas, l'exécution de la tâche est déclenchée par un évènement qui est repéré par l'un des capteurs 3, cet évènement étant lié à la rotation du moteur. Par exemple, le fait que l'un des pistons du moteur parvienne à son point mort haut, ou à une autre position prédéterminée, est un évènement déclenchant une séquence d'injection de carburant dans le cylindre correspondant. Ces tâches cycliques sont donc déclenchées par un évènement qui se répète selon une période liée au régime du moteur. L'augmentation de la vitesse de rotation du moteur entraine donc une diminution de la période qui s'écoule entre deux évènements. [0029] Sur la figure 2, un évènement déclencheur 14A est représenté en début de graphique. Cet évènement 14A déclenche une tâche FA. En poursuivant l'exemple donné pré- 6 cédemment, l'évènement 14A est la présence d'un piston du moteur au point mort haut, ou à une position proche de cc point mort haut, et la tâche FA est une tâche d'injection de carburant dans le cylindre correspondant. Cet évènement est cyclique puisqu'il se répète à chaque cycle de rotation du moteur, lorsque le piston revient à cette même place. [0030] Sur la figure 2, l'évènement 14B correspond au même évènement survenant au cours du cycle de moteur suivant. Les évènements 14A, 14B se succèdent donc selon une période RA, 8B qui dépend du régime de rotation du moteur. [0031] Sur l'exemple de la figure 2, le régime moteur est constant et la durée de la période RA, 8B est supérieure à la durée de déroulement des tâches FA, FB. [0032] Le microprocesseur 2 étant, dans le présent exemple, un microprocesseur à doubles coeurs Cl, C2, l'exécution de chaque tâche FA, FB est répartie sur les différents coeurs Cl, C2 du microprocesseur 2. Sur le diagramme schématique de la figure 2, le bandeau supérieur porte la référence Cl et correspond aux opérations exécutées par le premier coeur Cl tandis que le bandeau inférieur portant la référence C2 correspond aux opérations réalisées par le deuxième coeur C2 du microprocesseur 2. Chaque tâche FA, FB est ainsi divisée en deux sous-tâches dénommées « sous-tâche mère » FA1, FBI et « sous-tâche fille » FA2, FB2. La sous-tâche mère FA1, FB1 est exécutée sur le premier coeur Cl tandis que la sous-tâche fille FA2, FB2 est exécutée par le deuxième coeur C2. [0033] Pour chaque tâche FA, FB, l'enchaînement de la sous-tâche mère FAL FBI et de la sous-tâche fille FA2, FB2 se fait de manière chainée, c'est-à-dire que la sous-tâche fille FA2, FB2 ne commence que lorsque la sous-tâche mère FAI, FBI est terminée. [0034] La figure 3 représente les mêmes éléments que la figure 2 lorsque la vitesse de rotation du moteur a été augmentée. La période 9A, 9B, 9C entre deux évènements 14A, 14B, 14C est inférieure à la période 8A, 8B de la figure 2. [0035] Dans cet exemple de la figure 3, la période 9A, 9B, 9C est maintenant inférieure au temps nécessaire pour l'exécution d'une tâche FA, FB, FC. Ainsi, chaque sous-tâche fille FA2, FB2 se termine alors que la sous-tâche mère FB1, FC1 du cycle suivant a déjà commencé. Une zone temporelle de recouvrement 10 (représentée en hachuré sur la figure 3) existe donc entre une tâche FA, FB, FC d'une période 9A, 9B, 9C et la tâche de la période suivante. [0036] Les figures 4 et 5 illustrent plus en détail le procédé permettant la gestion de cette zone de recouvrement 10. [0037] Les figures 4 et 5 sont similaires et illustrent chacune la sous-tâche fille FA2 d'une première période et la sous-tâche mère FB1 de la période suivante. La figure 4 correspond à la configuration de la figure 2 dans laquelle la période 8A. 8B a une 7 durée suffisante pour que la sous-tâche fille FA2 et la sous-tâche mère FB1 du cycle suivant ne se recouvrent pas. La figure 5 correspond à la configuration de la figure 3 dans laquelle la période 9A, 9B réduite entraîne le recouvrement de la sous-tâche fille FA2 et de la sous-tâche mère FB1 du cycle suivant. [0038] Sur les figures 4 et 5, le détail des tâches a été représenté. Les tâches sont en effet constituées d'exécutables R schématisés sur ces figures. Une tâche telle qu'une opération d'injection de carburant comporte généralement aux alentours d'une cinquantaine d'exécutables R qui sont chacun une fonction (une opération mathématique simple) ou un groupe de fonctions pouvant être exécutés par le microprocesseur 2. La mise à jour d'une variable indiquant le numéro du cylindre du moteur où aura lieu la prochaine injection de carburant est un exemple d'exécutable R. [0039] Le procédé de commande de l'unité de contrôle moteur 1 met en oeuvre un premier compteur d'exécutable RTF pour les exécutables de la sous-tâche fille FA2, ainsi qu'un deuxième compteur d'exécutable RTM pour les exécutables de la sous-tâche mère FB1. [0040] Sur les figures 4 et 5, les compteurs d'exécutables RTF et RTM ont été représentés sous les sous-tâches FA2, FB1 avec les valeurs successivement prises par ces derniers. [0041] Lorsque la sous-tâche file FA2 démarre, le compteur RTF prend une valeur initiale égale au nombre total d'exécutables R constituant la sous-tâche fille FA2. Lors de l'exécution du premier exécutable R de la sous-tâche fille FA2, le compteur RTF vaut donc 6 (selon l'exemple illustré). Le compteur RTF est un compteur décrémental, partir du premier exécutable, l'exécution de chaque nouvel exécutable R entraîne la décrémentation du compteur RTF. Lors de l'exécution du deuxième exécutable R, le compteur RTF est alors décrémenté à la valeur 5 et ainsi de suite. Pendant l'exécution du dernier exécutable R, le compteur RTF vaut 1 et, à la fin de l'exécution de ce dernier exécutable R, le compteur RTF prend alors la valeur O. [0042] En ce qui concerne le deuxième compteur d'exécutable RTM, celui-ci est un compteur incrémentai et est associé au comptage des exécutables R de la sous-tâche mère FB1. Avant le début de la sous-tâche mère FB1, le compteur RTM prend la valeur initiale de zéro. Lors de l'exécution du premier exécutable R de la sous-tâche mère FB1, le compteur RTM prend la valeur de 1. Le compteur RTM démarre par la valeur 0 et est incrémenté d'une unité à chaque nouvel exécutable R exécuté durant la sous-tâche mère FBI. En démarrant l'exécution du dernier exécutable R, le compteur RTM prend la valeur de 5 (dans l'exemple illustré, la sous-tâche mère FB1 comporte 5 exécutables R). [0043] À la clôture de la tâche FA, c'est-à-dire de la sous-tâche fille FA2, l'unité de contrôle moteur 1 va lire la valeur du compteur RTM. De même, au moment du démarrage de la tâche FB du cycle suivant, c'est-à-dire du démarrage de la sous-tâche mère FB1, l'unité 8 de contrôle moteur 1 va lire la valeur du compteur RTF. [0044] Dans l'exemple de la figure 4 où la sous-tâche fille FA2 et la sous-tâche mère FB1 ne se recouvrent pas, le compteur RTM vaut 0 au moment de sa lecture (à la fin de la sous-tâche fille FA2), et le compteur RTF vaut 0 au moment de sa lecture (au démarrage de la sous-tâche mère FB1). [0045] En référence à la figure 5, la sous-tâche fille FA2 et la sous-tâche mère FB1 du cycle suivant se chevauchent. Dans ce cas, lorsque la sous-tâche mère FB1 démarre le compteur RTF vaut 4. Lorsque l'exécution de la sous-tâche fille FA2 est terminée, la valeur du compteur RTM vaut 3. [0046] La valeur du compteur RTF indique, dans cet exemple, qu'il reste encore 4 exé- cutables R à exécuter pour la sous-tâche fille FA2 lorsque la sous-tâche mère b'Bl démarre. La valeur du compteur RTM indique quant à lui que, lorsque la sous-tâche fille FA2 est terminée, la sous-tâche mère FB1 du cycle suivant a déjà exécuté 3 exécutables R (plus précisément : les deux premiers exécutables R ont été exécutés complètement et le troisième exécutable est en cours d'exécution). [0047] Les mémoires de compteur 11, 12 relatives aux compteurs d'exécutable RTF et RTM, permettent de stocker la dernière valeur lue par l'unité de contrôle moteur 1. En fin de sous-tâche fille FA2, la valeur du compteur RTM est lue et stockée dans la mémoire 12 et, au démarrage de la sous-tâche mère FB1, la valeur du compteur RTF est lue et stockée dans la mémoire 11. La mémoire de diagnostic 13 sauvegarde toutes les valeurs de compteurs RTM et RTF, mémorisées par les mémoires ii, 12 lorsqu'elles sont supérieures à zéro. [0048] Lors d'un diagnostic de l'unité de contrôle moteur 1, la mémoire de diagnostic 13 pourra être consultée pour connaître quels sont les enchaînements de tâches qui, par le passé, ont présenté un recouvrement 10 et quels ont été les exécutables qui ont été exécutés pendant ce recouvrement. Ce diagnostic peut être fait ponctuellement ou périodiquement. Dans le cas où ce diagnostic est fait périodiquement, l'organisation des tâches peut être modifiée pour que les exécutables R considérés comme critiques lorsqu'ils font partie d'une zone de recouvrement 10, puissent être déplacés en début de sous-tâche fille FA2 ou en fin de sous-tâche mère FB1 de manière à ne plus être présents dans les zones de recouvrement 10. Cette réorganisation des tâches peut également être faite de manière dynamique d'un cycle à l'autre. [0049] Des variantes de l'exemple décrit précédemment peuvent être mises en oeuvre sans sortir du cadre de l'invention. Par exemple, l'exemple décrit se réfère à une unité de contrôle moteur équipée d'un microprocesseur 2 comportant deux coeurs Cl, C2, cependant l'invention s'applique également à tous moyens de traitements numériques permettant d'exécuter des sous-tâches en parallèle, par exemple une unité de contrôle moteur à plusieurs microprocesseurs et/ou des processeurs avec un nombre quelconque 9 de coeurs supérieur à 2. Dans le cas d'un nombre de moyens de traitement numérique supérieur à 2, par exemple un microprocesseur à 4 coeurs, la sous-tâche mère FA] donnera naissance à autant de tâches filles en cascade, que de coeurs de microprocesseur disponibles pour la traiter. Par exemple, si un microprocesseur comporte 4 coeurs, la sous-tâche mère s'exécutera sur un premier coeur et pourra donner naissance à une première sous-tâche fille exécutée sur le deuxième coeur, cette sous-tâche fille donnant elle-même naissance, lorsqu'elle se termine, à une deuxième sous-tâche fille exécutée sur le troisième coeur, une quatrième sous-tâche fille étant ensuite exécutée sur le quatrième coeur. Le procédé selon l'invention mettra alors en oeuvre les compteurs d'exécutable RTF et RTM lors de l'enchaînement de la dernière sous-tâche fille et de la sous-tâche mère du cycle suivant. [Revendication 1] [Revendication 2] [Revendication 3] [Revendication 4] [Revendication 5]