Brevet FR3133934A1 — publié le 20230929

L’invention concerne un procédé de gestion de l’exécution d’une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions comprenant une alternance de fonctions d’instruction et de fonctions dites « de préemption », suite à l’exécution d’une fonction d’instruction d’une tâche, le procédé comprend les étapes : d’exécution de la fonction de préemption (E5) lors de laquelle une durée prédictive est déterminée en sommant la durée d’exécution de la fonction d’instruction successive à la fonction de préemption et la durée de l’ensemble des fonctions d’instructions de la séquence déjà exécutées, si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, sinon, exécution (E10) de la fonction d’instruction successive à la fonction de préemption. Figure pour l’abrégé : Fig 2 Procédé de gestion d’exécution d’une pluralité de fonctions L’invention concerne le domaine des procédés de gestion d’exécution de tâches par un processeur pour véhicule automobile. De manière connue, un véhicule automobile électrique, hybride ou thermique, comprend une pluralité de dispositifs à commander comme par exemple les éléments constituant la chaîne de traction du véhicule ou les équipements électriques. Afin de commander ces dispositifs, le véhicule automobile comprend une pluralité de processeurs ou CPU pour « central processing unit » en langue anglaise. Chaque processeur comprend une pluralité de cœurs, et chaque cœur est configuré pour exécuter une pluralité de tâches. Chaque tâche est constituée d’une succession de fonctions. Exécuter l’ensemble des fonctions d’une tâche permet par exemple de déterminer les commandes à émettre aux divers dispositifs montés dans le véhicule. Dans le cas d’un système dit « coopératif », chaque tâche coopérative est associée à un niveau de priorité et une tâche coopérative en cours d’exécution peut être interrompue à certains instants prédéfinis afin d’exécuter une tâche coopérative d’un niveau de priorité plus élevé. Par exemple, les tâches à niveau de priorité élevé correspondent à des commandes d’éléments constituants la chaîne de traction du véhicule, et notamment au moteur thermique ou à la machine électrique. Pour cela, certaines tâches coopératives peuvent comprendre au moins une fonction d’arrêt, appelée « point of schedule » en langue anglaise par l’homme du métier. Chaque fonction d’arrêt est placée entre deux fonctions de la séquence de fonctions de la tâche. Lorsqu’une fonction d’arrêt d’une tâche est exécutée, cela permet de vérifier si l’exécution d’une tâche coopérative de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution est demandée. Auquel cas, la tâche en cours d’exécution est interrompue, autrement dit suspendue, après la fonction d’arrêt afin d’exécuter la tâche plus prioritaire. Si aucune tâche de niveau de priorité supérieur est en attente d’exécution, alors la tâche en cours d’exécution n’est pas interrompue. L’emplacement des fonctions d’arrêt dans la séquence de fonctions de chaque tâche est prédéfini. Autrement dit, la durée entre deux fonctions d’arrêt successives dépend du temps d’exécution des fonctions à exécuter entre les deux fonctions d’arrêt. Dans le cas où cette durée est relativement longue, notamment lorsqu’elle est supérieure à 300 us, et qu’une tâche plus prioritaire est en attente d’exécution, cela peut engendrer un temps de latence relativement important entre la demande d’exécution d’une tâche de niveau de priorité plus élevé et son exécution. Cela peut également générer un retard, une non-réactivité, dans la détermination et l’application de commandes aux éléments de la chaîne de traction du véhicule. Une solution à ce problème peut être d’augmenter le nombre de fonctions d’arrêts dans chaque tâche. Cependant, à chaque interruption de tâches, il est nécessaire d’enregistrer l’ensemble des paramètres de la tâche interrompue au stade où elle a été interrompue, de sorte à pouvoir reprendre l’exécution de cette tâche après l’exécution d’une deuxième tâche d’un niveau de priorité plus élevé. Cela représente une perte de temps et ajoute de nombreuses étapes dans la gestion de l’exécution des fonctions de chaque tâche. Il existe donc le besoin d’une solution permettant de remédier au moins en partie à ces inconvénients. A cette fin, l’invention concerne un procédé de gestion de l’exécution d’une pluralité de tâches par un processeur destiné à être monté dans un véhicule, le véhicule comprenant une pluralité de dispositifs, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instruction et de fonctions dites « de préemption », l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, suite à l’exécution d’une fonction d’instruction de la tâche, le procédé comprend les étapes : d’exécution de la fonction de préemption lors de laquelle une durée prédictive est déterminée en sommant la valeur de la durée d’exécution de la fonction d'instruction successive à la fonction de préemption et la durée de l’ensemble des fonctions d’instructions de la séquence déjà exécutées depuis un instant dit « de planification », si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception par le processeur d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, sinon, exécution de la fonction d’instruction successive à la fonction de préemption. Ainsi, le procédé permet d’interrompre la mise en œuvre d’une séquence de fonctions d’instructions d’une tâche seulement lorsqu’une tâche de niveau de priorité plus élevé est en attente d’exécution. Cela permet au processeur d’être davantage réactif dans l’exécution de tâches de niveau de priorité plus élevé. Sinon, le procédé permet de laisser la tâche en cours d’exécution s’exécuter. Les tâches mises en œuvre dans ce procédé sont communément désignées tâches « coopératives », puisqu’elles coopèrent entre elles lors de l’exécution d’une fonction de préemption, afin d’exécuter la fonction d’exécution la plus prioritaire. De préférence, si le processeur a reçu une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, le procédé comprend les étapes : d’interruption de la tâche en cours d’exécution, d’exécution de la tâche de niveau de priorité supérieur. De préférence encore, la durée prédictive est comprise entre 200 et 400 us, de préférence 300 us. Avantageusement, le processeur comprend une zone mémoire dans laquelle est enregistrée une table de référence, la table de référence associant à chaque fonction de la tâche une durée d’exécution, le procédé comprend, pour chaque fonction en cours d’exécution, une étape de : détermination de la durée d’exécution de la fonction d’instruction exécutée, mise-à-jour de la valeur de durée associée à la fonction d’instruction exécutée dans la table de référence à partir de la durée d’exécution déterminée. Avantageusement encore, la zone mémoire comprend un compteur et une table de correspondance, la table de correspondance associant chaque tâche au nombre de fonctions d’instruction que ladite tâche comprend, le procédé comprenant les étapes : d’initialisation de la valeur du compteur à zéro, avant l’exécution de la première fonction de la séquence de fonctions d’une tâche, d’incrémentation du compteur lors de l’exécution de chaque fonction d’instruction de ladite séquence de fonctions, lorsque la valeur du compteur est égale au nombre de fonctions d’instruction associé à ladite tâche dans la table de correspondance, réinitialisation du compteur à la valeur zéro. De préférence, une valeur de durée cumulative étant égale à la durée d’exécution de l’ensemble des fonctions d’instruction de la séquence déjà exécutées, est enregistrée dans la zone mémoire, le procédé comprenant, lors de chaque exécution d’une fonction d’instruction de la séquence, une étape de mise à jour de la durée cumulative enregistrée dans la zone mémoire, dans laquelle la durée d’exécution mesurée de ladite fonction d’instruction exécutée est ajoutée à la valeur de la durée cumulative. L’invention concerne également un produit programme d’ordinateur caractérisé en ce qu’il comporte un ensemble d’instructions de code de programme qui, lorsqu’elles sont exécutées par un ou plusieurs processeurs, configurent le ou les processeurs pour mettre en œuvre un procédé tel que décrit précédemment. L’invention concerne encore un processeur pour véhicule automobile, le processeur étant apte à mettre en œuvre une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instructions et de fonctions de préemption, l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, le processeur étant apte à mettre en œuvre le procédé tel que décrit précédemment. Enfin, l’invention concerne un véhicule automobile comprenant au moins un processeur tel que décrit précédemment. D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels : La est une illustration d’un cœur de processeur selon l’invention, La est une illustration du procédé selon l’invention. Procédé de gestion de l’exécution d’une pluralité de tâches par un processeur destiné à être monté dans un véhicule, le véhicule comprenant une pluralité de dispositifs, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instruction et de fonctions dites « de préemption », l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, suite à l’exécution d’une fonction d’instruction de la tâche, le procédé comprend les étapes : d’exécution de la fonction de préemption (E5) lors de laquelle une durée prédictive est déterminée en sommant la valeur de la durée d’exécution de la fonction d’instruction successive à la fonction de préemption et la durée de l’ensemble des fonctions d’instructions de la séquence déjà exécutées depuis un instant dit « de planification », si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception par le processeur d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, sinon, exécution (E10) de la fonction d’instruction successive à la fonction de préemption. Procédé selon la revendication 1, si le processeur a reçu une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, le procédé comprend les étapes : d’interruption (E7) de la tâche en cours d’exécution, d’exécution (E8) de la tâche de niveau de priorité supérieur. Procédé selon l’une quelconque des revendications précédentes, dans lequel la durée prédictive est comprise entre 200 et 400 us. Procédé selon l’une quelconque des revendications précédentes, dans lequel le processeur comprend une zone mémoire (MEM) dans laquelle est enregistrée une table de référence, la table de référence associant à chaque fonction de la tâche une durée d’exécution, le procédé comprenant, pour chaque fonction en cours d’exécution, une étape de : détermination (E2) de la durée d’exécution de la fonction d’instruction exécutée, mise-à-jour (E3) de la valeur de durée associée à la fonction d’instruction exécutée dans la table de référence à partir de la durée d’exécution déterminée. Procédé selon l’une quelconque des revendications précédentes, la zone mémoire (MEM) comprend un compteur et une table de correspondance, la table de correspondance associant chaque tâche au nombre de fonctions d’instruction que ladite tâche comprend, le procédé comprenant les étapes : d’initialisation (E01) de la valeur du compteur à zéro, avant l’exécution de la première fonction de la séquence de fonctions d’une tâche, d’incrémentation (E1’) du compteur lors de l’exécution de chaque fonction d’instruction de ladite séquence de fonctions, lorsque la valeur du compteur est égale au nombre de fonctions d’instruction associé à ladite tâche dans la table de correspondance, réinitialisation du compteur à la valeur zéro. Procédé selon l’une quelconque des revendications précédentes, une valeur de durée cumulative étant égale à la durée d’exécution de l’ensemble des fonctions d’instruction de la séquence déjà exécutées, est enregistrée dans la zone mémoire, le procédé comprenant, lors de chaque exécution d’une fonction d’instruction de la séquence, une étape de mise à jour (E4) de la durée cumulative enregistrée dans la zone mémoire (MEM), dans laquelle la durée d’exécution mesurée de ladite fonction d’instruction exécutée est ajoutée à la valeur de la durée cumulative. Produit programme d’ordinateur caractérisé en ce qu’il comporte un ensemble d’instructions de code de programme qui, lorsqu’elles sont exécutées par un ou plusieurs processeurs, configurent le ou les processeurs pour mettre en œuvre un procédé selon l’une quelconques des revendications 1 à 6. Processeur pour véhicule automobile, le processeur étant apte à mettre en œuvre une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instructions et de fonctions de préemption, l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, le processeur étant apte à mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 6. Véhicule automobile comprenant au moins un processeur selon la revendication précédente.