FR 3047821 A1 20170818 FR 1751176 A 20170214 1 Domaine de l'invention La présente invention se rapporte à un procédé et à un dispositif de gestion d'un appareil de commande, notamment pour un véhicule, l'appareil de commande ayant au moins une unité d'exécution pour exécuter des programmes de tâches, selon lequel on exécute au moins de temps en temps un premier programme de tâches et un second programme de tâches, le premier programme fournissant à la fin d'un premier intervalle de temps prédéfini, des données pour le second programme. Etat de la technique On connaît un document DE 102 29 520 A 1 concernant ce domaine. Dans un véhicule, les opérations de commande se font avec des systèmes de gestion comme bases pour l'exécution des opéra- tions de commande. Les systèmes de gestion, notamment les systèmes de gestion en temps réel, tels que par exemple les systèmes intégrés dans le domaine automobile, répartissent souvent les fonctions entre plusieurs programmes de tâches avec des temps de détection différents de sorte que les parties critiques dans le temps sont plus fréquentes que les algorithmes ou programmes ou parties de programme moins critiques dans le temps. Un programme de tâches est une unité de programme qui est appelée « tâche » dans la suite de la description. Dans le cas normal, le système de gestion sécurise la consistance des données. C'est ainsi que des données sont utilisées dans plusieurs tâches et sont fournies comme copies à des instants appropriés, pour que par exemple dans une tâche longue, la valeur des données ne change pas entre deux accès si les données ont été inscrites à une taille correspondant à une tâche plus rapide. Dans les applications en technique de régulation comme par exemple les systèmes de dynamique de roulage ESP ou dans le cadre d'une commande de moteur ou de boîte de vitesses, il faut garantir le comportement déterministique. Cela signifie que pour les mêmes conditions de sortie, les résultats des calculs (par exemple l'émission cyclique de commande d'actionneur) ne doivent dépendre que des gran- deurs d'entrée (par exemple les valeurs des capteurs fournies par une 3047821 2 détection cyclique) et être indépendants de la répartition des unités de programme entre les noyaux de calcul disponibles et la charge du système. De plus, la communication déterministique garantit que le temps de parcours (latence) d'une chaîne de signaux d'activité qui traverse 5 plusieurs unités de programme ne bouge que dans un petit cadre pré- défini, c'est-à-dire que l'effet jitter reste petit dans les temps de parcours. Il faut également garantir naturellement que toutes les tâches soient exécutées dans les durées prédéfinies pour ne pas surcharger les noyaux de calcul. 10 Le comportement déterministique peut en général amélio- rer la qualité des systèmes de régulation et permet de simplifier le calibrage et les tests dans le procédé de développement ; il facilite la migration vers d'autres unités de calcul, par exemple avec plus de noyaux de calcul avec une distribution optimisée des unités de pro- 15 gramme entre les noyaux de calcul, et facilite la sécurité de fonctionne- ment dans les unités de calcul avec un ou plusieurs noyaux de calcul. De plus, cela garantit dans le cadre, par exemple d'un procédé de développement fondé sur des modèles, le système se comporte toujours de la même manière, fonctionnellement sur les différentes plateformes 20 d'exécution, par exemple l'environnement de simulation, le calculateur de développement, et l'appareil de commande en série. But de l'invention La présente invention a pour but de développer un pro- cédé de communication entre les tâches qui demande beaucoup moins 25 de ressources de calcul que les solutions connues, par exemple des mémoires, des temps de parcours et des temps de calcul, et réduit les pointes de charge des canaux de communication. Exposé et avantages de l'invention A cet effet, l'invention a pour objet un procédé de gestion 30 d'un appareil de commande, notamment pour un véhicule, ayant au moins une unité d'exécution pour exécuter des programmes de tâches et consistant à exécuter au moins de temps en temps un premier programme de tâches et un second programme de tâches, le premier programme fournissant à la fin d'un premier intervalle de temps prédéfini, 35 des données pour le second programme de tâches, la transmission des 3047821 3 données du premier programme de tâches vers le second programme de tâches ne se faisant qu'après chaque dernière exécution du premier programme à l'intérieur d'un second intervalle de temps prédéfini pour l'exécution du second programme, le second intervalle de temps étant 5 plus long que le premier. L'invention a également pour objet un dispositif pour la mise en oeuvre d'un tel procédé. Selon l'invention, les données sont transmises à des ins- tants déterminés entre les unités de programme contrôlées par le sys- 10 tème de gestion, la transmission physique entre les différents partenaires en communication étant répartie dans le temps. Ainsi, il suffit de beaucoup moins de ressources de calcul et on réduit les pointes de charge appliquées aux canaux de communication. L'avantage par rapport à un procédé de communication 15 déterministique du type évoqué dans le préambule est la suppression d'une mémoire intermédiaire et le fait d'éviter plus d'une mémoire de réception pour les données à transmettre, ce qui permet une économie de place de mémoire considérable pour les données échangées entre les tâches et ainsi une réduction de coûts. 20 Un autre avantage est que l'émission/réception des don- nées ne se fait pas selon la réalisation de l'émetteur ou du récepteur mais de façon ciblée en fonction des rapports des périodes d'activité entre deux tâches seulement à des instants déterminés pour la communication des données. Cela se traduit par une réduction de la charge 25 appliquée au bus et de la demande de temps de calcul. De façon avantageuse, on supprime une tâche supplémentaire par relation de communication pour économiser des ressources de calcul. De plus, dans certaines conditions, on économise encore plus de ressources par l'utilisation multiple de la même mémoire 30 d'entrée. De façon avantageuse, le premier programme de tâches se fait dans une première unité d'exécution et le second programme de tâches dans une seconde unité d'exécution de l'appareil de commande. Cela permet l'échange de données entre des tâches qui s'exécutent en 35 parallèle dans des noyaux de calcul différents. 3047821 4 De manière avantageuse, la durée du second intervalle est un multiple entier de celle du premier intervalle. Ainsi, les limites des intervalles entre les tâches démarrées simultanément seront synchrones. 5 De manière avantageuse, on transmet les données d'une première plage de mémoire associée au premier programme de tâches, directement dans une plage de mémoire associée au second programme de tâches. Ainsi, les données seront transmises directement d'un émetteur au récepteur par une seule opération de copie, sans avoir à copier 10 d'abord les données dans une mémoire intermédiaire. Bien que l'on évite les pointes de charge de communication et qu'on économise de la place de mémoire et du temps de calcul, le comportement global déterministique est conservé. De manière avantageuse, on exécute en plus un troisième 15 programme de tâches pour transmettre les données d'une plage de mé- moire associée au premier programme de tâches à une mémoire intermédiaire et à partir de cette mémoire intermédiaire, dans une seconde plage de programme associée au second programme de tâches. Cela permet la communication entre les tâches qui n'ont pas démarré simul- 20 tanément ou qui ont entre elles une longueur qui ne correspond pas à un multiple entier. De manière avantageuse, le premier programme de tâches et le second programme de tâches ont des temps de cycle différents, le temps de cycle du premier programme de tâches étant plus pe- 25 tit que le temps de cycle du second programme de tâches et les données sont transmises de la première plage de mémoire associée au premier programme de tâches à une plage de mémoire associée au second programme de tâches à l'intérieur du cycle du premier programme de tâches qui se situe dans le temps, dans la plage de la fin de cycle du 30 second programme de tâches. Ainsi, le résultat de la première exécution du premier programme de tâches qui se répète plus rapidement sera utilisé pour la communication avec le second programme de tâches qui se répète plus lentement. Ainsi, les résultats les plus rapides seront disponibles pour la communication. 3047821 5 De façon préférentielle, dans le premier état de fonctionnement, à l'intérieur d'un intervalle de temps (durée) associé au programme de tâches respectif, un autre programme de tâches n'accède pas à la plage de mémoire associée au premier programme de tâches et 5 dans un second état de fonctionnement, à l'intérieur de cet intervalle de temps, le programme de tâches respectif n'accède plus à cette plage de mémoire. Ainsi, les grandeurs de sortie ne seront pas copiées avant que des valeurs actuelles soient disponibles, c'est-à-dire que les grandeurs de sortie ne seront pas modifiées pendant l'opération de copie. 10 De façon préférentielle, dans un programme de tâches, on attribue une première plage de mémoire aux données d'entrée et le programme de tâches a une seconde plage de mémoire pour les données de sortie, des informations d'état indiquant qu'à l'intérieur de l'exécution du programme de tâches, avant la fin de l'intervalle actuel, 15 on n'accède plus aux données d'entrée et il n'y aura pas de modification des données de sortie. L'information supplémentaire commande l'accès aux données de sorte que l'opération de copie est elle-même « sans attente » c'est-à-dire « wait-free ». Dessins 20 La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'exemples de réalisation d'un procédé de gestion d'un appareil de commande d'un véhicule, représentés dans les dessins annexés dans lesquels les éléments identiques ou analogues des différentes figures portent les mêmes références. 25 Ainsi : la figure 1 montre schématiquement une succession de tâches, la figure 2 montre schématiquement une commande, la figure 3 montre schématiquement des routines de copie et de transfert, 30 la figure 4 montre schématiquement un procédé de commande avec un bit d'état, la figure 5 montre schématiquement un procédé de commande avec plus de deux tâches en communication, la figure 6 montre schématiquement d'autres variantes du procédé 35 de commande, 3047821 6 - la figure 7 montre schématiquement une communication non harmonique entre deux tâches. Description de modes de réalisation La figure 1 montre un exemple de système à deux unités 5 de programme. Les unités de programme sont des programmes de tâches qui se déroulent sous la forme d'une tâche 5 ms et d'une tâche 10 ms. La figure 1 montre la tâche 5 ms sous la forme d'un rectangle 1. La figure 1 montre un exemple d'une tâche 10 ms sous la forme d'un rectangle 2. Les programmes de tâches selon la figure 1 n'occupent pas 10 la totalité de la durée de 5 ms ou de 10 ms. La longueur des rectangles 1, 2 et leur position sur l'axe du temps t montrent à titre d'exemple, le début et la fin et la durée des différents calculs. Cela signifie que les programmes de tâches seront activés toutes les 5 ms ou 10 ms. L'activation se fait non nécessairement au début d'une tâche. Les 15 tâches sont exécutées à l'intérieur d'un intervalle prédéfini d'une durée de 5 ms, représenté par la double flèche 3 ou d'une durée de 10 ms, représenté par la double flèche 4. Toutes les 10 ms, on échange aux limites communes les intervalles 5 donnés entre les tâches, par un échange logique. L'échange des données est représenté schématique- 20 ment sous la forme d'une double flèche 6. L'échange des données se fait de manière directionnelle ou seulement dans l'une des deux directions. Le maximum du besoin de communication correspond aux limites 5 entre les intervalles, lorsque comme représenté, on implémente la communication 6. 25 Le système de gestion du type défini ci-dessus assure les déroulements correspondants. Le procédé correspondant suppose au préalable un rap- port fixe de nombres entiers entre les taux d'activation des différentes tâches, et s'utilise sans autres extensions seulement pour les unités de 30 calcul avec un unique noyau de calcul (Single Core Processeur). L'exemple de la figure 1 montre une telle implémentation de la tâche sur les mêmes noyaux de calcul avec une exécution commandée en priorité. Une autre communication entre les tâches utilise une 35 mémoire intermédiaire dans laquelle l'émetteur inscrit ses données de 3047821 7 sortie à la fin de la tâche et dans laquelle le récepteur lit ces données d'entrée au début de la tâche. Pour garantir la cohérence des données, il faut protéger l'accès à la mémoire intermédiaire, ce qui signifie par exemple que pendant que l'émetteur inscrit des données dans la mé- 5 moire intermédiaire, le récepteur ne peut pas copier de données d'entrée et doit attendre. Pour la communication entre une première et une se- conde tâche, on peut prévoir que la première tâche active une notification de tâche supplémentaire pour coordonner la communication, dans 10 le contexte de la seconde tâche. La notification de tâche informe la pre- mière tâche ou la seconde tâche de la communication imminente. Dans la suite de la description, on utilisera l'expression « temps d'exécution logique » (LET) qui décrit le comportement chronologique des unités de programme, notamment le comportement de 15 communication entre les unités, indépendamment de la répartition entre les unités de calcul et la capacité des unités de calcul d'exécution. Cette expression est définie dans l'ouvrage « T.A. Henzinger, B. Horowitz, et C.M. Kirsch. Embedded control systems development with Giotto. In Proc. ACM SIGPLANWorkshop on Languages, Compilers, and 20 Tools for Embedded Systems (LCTES). ACM, 2001". Cette expression sera utilisée ci-après. Pour l'exécution des unités de programme, on dispose d'un intervalle de temps prédéfini. Au début de l'intervalle de temps, on dispose des grandeurs d'entrée de l'unité de programme et précisément 25 à la fin de l'intervalle, on fournit les grandeurs de sortie calculées par l'unité de programme, aux autres unités de programme. L'exécution de l'unité de programme peut se faire à des instants quelconques à l'intérieur de l'intervalle de temps. La communication entre les unités de programme se fait 30 de manière logique chaque fois au début et à la fin des intervalles de temps, soit par une communication précise à ces instants (par exemple en établissant des copies des données de sortie dans la plage de travail du récepteur) ou en établissant des mémoires multiples pour les données entre lesquelles on commutera en fonction du temps de parcours, 35 c'est-à-dire pendant que l'émetteur inscrit dans la mémoire, le récepteur 3047821 8 peut lire des données consistantes d'un cycle d'émission précédent à partir d'une autre mémoire. Le procédé décrit ci-dessus assure la coordination de communication entre les différentes unités de programme d'exécution, 5 c'est-à-dire les programmes de tâches dans un cycle de régulation en temps réel. Pour cela, on s'assure que la communication entre les tâches ne se fait qu'à des instants déterminés dans le but de garantir un comportement déterministique et reproductible de l'ensemble du 10 système indépendamment de la charge de l'unité de calcul qui assure l'exécution. La figure 2 montre schématiquement un appareil de commande électronique 33 à deux unités d'exécution 30. Il s'agit par exemple de noyaux de calcul ou d'unités de calcul qui exécutent de ma- 15 nière cyclique une unité de programme 31 respective, les données étant échangées de l'une à l'autre unité de programme. Cette transmission de données est indiquée par la flèche portant la référence 32 à la figure 2. Une grandeur d'entrée 34 ou plusieurs grandeurs d'entrée 34 ou données d'entrée telles que des valeurs mesurables physiquement, seront 20 mesurées et traitées dans l'appareil de commande 33. Une grandeur de sortie 35 ou plusieurs grandeurs de sortie 35 ou données de sortie de l'appareil de commande 33 sont par exemple émises sous la forme de grandeurs de réglage vers l'environnement physique. Pour cela, l'appareil de commande 33 a des mémoires non volatiles ou des inter- 25 faces de données. Dans la suite de la description, à l'aide de plusieurs grandeurs d'entrée 34 ou de plusieurs grandeurs de sortie 35, on décrira comment se fait la communication 32 entre les différentes unités de programme 31 en économisant les ressources en ce que les grandeurs 30 de sortie 35 ne dépendent des grandeurs d'entrée 34 que de manière déterministique, indépendamment de la répartition des unités de programme 31 entre les unités d'exécution 30 et indépendamment de la charge des unités d'exécution 30. Cette remarque s'applique à une grandeur d'entrée 34 ou une grandeur de sortie 35. 3047821 9 La figure 3 montre une communication entre une tâche de 5 ms et une tâche de 10 ms. Le déroulement du programme garantit que la transmission des données de l'émetteur vers le récepteur se fait précisément une fois au cours de l'intervalle de temps le plus court. Un 5 mécanisme de comptage garantit que la tâche la plus lente transmet des données seulement après la dernière exécution respective de la tâche la plus rapide dans l'intervalle de temps. Le compteur 5 ms, 5 ms ready et 10 ms ready du mécanisme de comptage est représenté à la figure 3 sous les références 22, 20 et 21. 10 On garantit ainsi le comportement déterministique dans le sens de LET (temps logique d'exécution). Dans l'exemple de la figure 3, la tâche 5 ms a le taux d'activité le plus élevé par comparaison avec la tâche 10 ms. C'est pourquoi, ce n'est que pour chaque seconde exécution 12a/b que l'on trans- 15 fère les données mais non pour les exécutions 19. Pour cela, chaque fois à la fin de la tâche la plus rapide, on décrémente un compteur 22. La transmission des données est autorisée lorsque l'état de comptage du compteur 22 arrive à zéro, et le compteur est remis à une valeur qui correspond au rapport du temps de détection le plus lent 20 par le rapport du temps de détection le plus rapide. Dans l'exemple de la figure 3, le compteur 22 est mis à la valeur 2. L'information 5 ms ready 20 et l'information 10 ms ready 21 représentent les états de fonctionnement. Par exemple, l'état 1 indique que la tâche respective est prête pour l'échange des données et, l'état 0 indique que la tâche res- 25 pective n'est pas prête pour un échange des données. Les tâches peuvent être exécutées par le même noyau de calcul ou un noyau de calcul différent. Une condition de l'implémentation de l'invention est cha- cune des deux tâches accède à la plage de mémoire caractéristique pour 30 la communication, de l'autres tâche respective. Les plages de mémoire sont caractérisées à la figure 3 sous la forme de tampons de chaque tâche. La plage de mémoire 11 de la tâche 5 ms, 12a/b ou 19, contient les grandeurs de sortie calculées pour la tâche 5 ms et qui doi- 35 vent être transférées de la plage de mémoire 15 de la tâche 10 ms 13. 3047821 10 La transmission 14 des données de l'émetteur vers le récepteur doit se faire lorsque chaque seconde tâche 5 ms 12a/b termine le calcul des données à émettre et qu'en même temps la tâche 10 ms a terminé le traitement des données reçues 15 dans le cycle précédent. 5 Cela est le cas au plus tard lorsque les deux tâches seront terminées. La même remarque s'applique à la communication dans l'autre direction, pour passer de la tâche 10 ms à la tâche 5 ms. Les données à émettre 16 calculées par la tâche 10 ms 13 peuvent être copiées 18, simultanément dans la zone de mémoire 17 de la tâche 5 ms 10 12a/b ou 19. Pour arriver au comportement souhaité, la tâche 5 ms 12a/b insère un bit d'information 20 dans la plage de mémoire que peuvent atteindre les deux tâches dès que les calculs dans l'intervalle commun 10 ms sont terminés et ne nécessitent plus d'accès aux don- 15 nées reçues, c'est-à-dire au plus tard à la fin de chaque seconde tâche 5 ms, 12a/b. De façon analogue, la tâche 10 ms 13 place un bit d'information 21 dès que l'exécution des calculs est terminée et ne nécessite plus d'accès aux données reçues, c'est-à-dire au plus tard à la 20 fin de chaque tâche 10 ms. La transmission des données entre les tâches se fait à la fin de la tâche 5 ms 12a/b ou à la fin de la tâche 10 ms 13 selon l'évènement qui se produit en dernier. Dans le cas 12a, la tâche 10 ms fait passer les données 22a dans les deux directions car la tâche 5 ms 25 12a s'est déjà terminée préalablement. Dans le cas 12b, la tâche 5 ms 12b transmet les données 22b car celle-ci s'est terminée après la tâche 10 ms 13. La reconnaissance de la tâche responsable de la trans- mission des données se fait à l'aide des bits d'état 20 et 21. Chacune 30 des deux tâches place le bit d'état correspondant lorsqu'elle est prête pour l'échange des données et demande l'autre bit d'état. Lorsque les deux bits sont mis, la communication est faite par l'appel de l'une des fonctions de communication 22a, 22b et les bits d'état sont remis à l'état initial. Par exemple, un bit d'état qui aura été mis définit une zone 35 à la fin de la tâche respective. 3047821 11 De façon générale, un cycle d'une première tâche se place dans la plage de la fin d'un cycle d'une seconde plage si le cycle de la première plage se termine pendant le cycle de la seconde tâche dans une plage dans laquelle la seconde tâche est prête pour l'échange de 5 données. De façon préférentielle, la durée du cycle de la première tâche est plus courte que la durée du cycle de la seconde tâche. Ainsi, par exemple un cycle de la première tâche se place par exemple chronologiquement, dans la plage de la fin du cycle de la seconde tâche si la première tâche commence après le début de ce cycle de la seconde tâche et 10 il se termine dans la plage dans laquelle la seconde tâche de ce cycle est prête pour l'échange des données. Les bits d'état 20 et 21 sont protégés contre un accès si- multané par les deux tâches. L'opération de copie ou de communication proprement dite est toutefois non verrouillée et sans attente. 15 Dans le cas idéal, les fonctions 22a et 22b responsables de la transmission des données sont identiques et sont appelées à la fin de l'une ou de l'autre tâche. De façon préférentielle, ces fonctions sont générées selon les relations de communication, en étant soutenues par le matériel. 20 Les exemples de programmes suivants montrent schéma- tiquement comment arriver au comportement souhaité dans l'exemple d'une communication entre une tâche 5 ms et une tâche 10 ms : A la fin de la tâche dont la durée de détection est la plus courte 12/b ou 19, on insère un code programme analogue à ce qui suit 25 selon les expressions anglo-saxonnes usuelles dans cette technique : END 5 ms: Counter 5 ms = counter 5 ms - 1 If (counter 5 ms == 0 30 { Protection on 5 ms ready = true If (10 ms ready == true) copy = true Protection off 35 3047821 12 Counter 5 ms = 2 ! Rapport des durées de détection } If (copy == true) { 5 Call copydata ! Fonction générée pour copier les 5 ms ready = false données dans les deux directions 10 ms ready = false Copy = false } 10 A l'aide d'un compteur (counter 5 ms), on vérifie tout d'abord si des données doivent être échangées dans cette étape. Cela ne concerne que les tâches de durée de détection la plus courte ; pour les autres cas, on supprime le compteur. Dans l'exemple de la figure 3, la tâche 10 ms 13 ne né- 15 cessite pas de compteur car dans chaque étape, on échange les données avec la tâche 5 ms 12a/b plus rapide. Dans la mesure où l'on constate à l'aide du compteur qu'il faut échanger les données, on vérifie quelle tâche est responsable de l'échange des données. Avant d'interroger le bit d'état correspondant 20 et de manipuler, il faut s'assurer que les deux tâches participant à la communication n'accéderont pas simultanément. Pour cela, dans la majorité des cas, il faut des mécanismes de protection supplémentaires (protection on/protection off) insérés dans le code programme pour garantir les valeurs consistantes des états « 5 ms ready » et « 10 25 ms ready ». Avec les mécanismes connus du système de gestion, on ga- rantit qu'à chaque fois, seulement l'une des deux unités de programme concernées puisse accéder à la plage protégée par une « protection ». Selon la répartition de la tâche entre les unités d'exécution, le mécanisme de protection agit localement seulement sur une unité 30 d'exécution, c'est-à-dire sur le noyau de calcul local, par exemple en ce que l'on interdit pendant une courte durée, le changement de tâche, ou encore au-delà des limites du noyau de calcul par exemple par l'utilisation de spin-Locks (verrous tournants). Après le placement du bit de commande « 5 ms ready », 35 pour signaler que la tâche 5 ms est prête à émettre et recevoir des don- 3047821 13 nées, on vérifie l'état de l'autre tâche à l'aide du bit de commande « 10 ms ready ». Si ce bit est également mis, la tâche 10 ms est prête à échanger et la communication peut se faire immédiatement ; dans le cas contraire, la communication se fera ultérieurement, à la fin de la 5 tâche 10 ms. A titre d'exemple, on transmet les données d'un cycle 5 ms d'une première unité de programme 31. Le cycle 5 ms dont on transmet les données se situe par exemple dans le temps, dans la plage d'une fin d'un cycle 10 ms de la seconde unité de programme 31. La 10 plage de la fin de cycle de la seconde unité de programme 31 est la plage dans laquelle la seconde unité de programme 31 est déjà prête pour l'échange de données. La plage commence par exemple dès que les calculs dans l'exécution de la seconde unité de programme 31 sont terminés et qu'il n'est plus nécessaire d'accéder aux données reçues. La 15 plage se termine par exemple à la fin du cycle respectif de la seconde unité de programme 31. Pour que le temps reste court, pendant lequel la protec- tion d'accès (protection) est active, on commande l'exécution de l'action de copie par une grandeur logique « copy » de façon que l'action de copie 20 proprement dite puisse se faire en dehors de la plage protégée. A la fin de la tâche correspondant au temps de détection 13 le plus long, on insère le code programme comme suit : END 10 ms: Protection on 25 10 ms ready = true If (5 ms ready == true) copy = true Protection off If (copy == true) ! Fonction générée pour copier les données dans les deux directions 30 { Call copydata 5 ms ready = false 10 ms ready = false Copy = false 35 } 3047821 14 Le code programme est très analogue au code à la fin de la tâche 5 ms, à la différence que l'on n'a pas de compteur car le contrôle peut se faire à la fin de chaque exécution de la tâche la plus lente. La figure 4 montre une optimisation en option du procédé 5 de réduction de la demande de temps de mémoire et de calcul qui doit être appliquée dans un système à plus de deux tâches en communication. L'optimisation repose sur le fait qu'en principe toutes les tâches de réception de données, dans la mesure où elles ont une durée de période ou durée de cycle plus petite (ou identique) que celle de la tâche émet- 10 tant les données, peuvent utiliser les mêmes données reçues. La figure 4 montre un exemple avec une tâche 20 ms 40 émettant des données et deux tâches 41 et 42 recevant des données, ayant une durée de période plus courte, de 5 ms et 10 ms. La tâche 20 ms 40 inscrit ces données à émettre dans sa plage de mémoire 43. Les 15 tâches plus rapides 41 et 42 ont besoin des données d'entrée de la tâche 20 ms et au moins certaines données d'entrée sont nécessaires aux deux tâches, pour économiser des ressources par cette optimisation. A la fin 44 de l'intervalle commun de toutes les tâches 40, 20 41, 42 qui participent, on détermine selon un procédé analogue à celui décrit ci-dessus, laquelle des tâches s'est terminée en dernier. Cette tâche appelle alors comme décrit ci-dessus, la fonction de communication 45 ou 46 qui copie les données d'entrée nécessaires aux tâches de réception 41 et 42 à partir de la plage de mémoire 43 vers la plage de 25 mémoire 47. A titre d'exemple, la fonction de communication 45 est ap- pelée à la fin du premier intervalle commun de la tâche 20 ms 40 car cette tâche se terminera après les tâches 41 et 42. A la fin du second intervalle commun, la tâche 5 ms 42 se termine la dernière et appelle la fonction de communication 46. 30 La plage de mémoire 47 contient toutes les données de sortie de la tâche 20 ms 40 qui sont nécessaires à l'une des deux tâches réceptrices 41 et 42 ou par les deux, comme données d'entrée. Les deux tâches réceptrices lisent leurs données d'entrée dans la même plage de mémoire 47. 3047821 15 Il en résulte qu'il suffit de copier et d'enregistrer une seule fois dans la plage de mémoire 47, les données d'entrée nécessaires aux deux tâches réceptrices, ce qui permet d'économiser de la place de mémoire et du temps de calcul. 5 En revanche, la logique pour déterminer la tâche qui exé- cute l'action de communication est plus complexe car plus de deux tâches possibles sont maintenant concernées. En tenant compte de la répartition des tâches réceptrices entre les unités de calcul, on détermine une combinaison optimale entre le temps de fonctionnement et la 10 place de mémoire. La figure 4 montre la communication seulement dans une direction. Les fonctions de communication 45 et 46 peuvent toutefois se faire également dans l'autre direction, c'est-à-dire à partir des zones de mémoire de sortie des tâches les plus rapides 41 et 42 vers la 15 zone de mémoire d'entrée de la tâche 20 ms 40. La figure 5 montre une optimisation en option du procédé qui peut s'appliquer dans un système à plus de deux tâches en communication. L'optimisation permet en tenant compte de la répartition 20 de programme, de l'échéancement et/ou des données copiées, de déca- ler les opérations de copie de la fin d'un intervalle au début de l'intervalle suivant. Ainsi, on évite de manière ciblée les pointes de charge par le chevauchement des différentes longueurs d'intervalle et la charge est 25 encore plus rectifiée pour le système de bus en dessous. A la figure 5, une tâche 5 ms 50 communique avec une tâche 10 ms 51 chaque fois à la fin de l'intervalle comme décrit ci-dessus. La fonction de communication 52 est appelée comme dé- 30 crit, chaque fois à la fin de la tâche qui se termine la dernière dans l'intervalle commun. La communication 53 entre la tâche 10 ms 51 et la tâche 20 ms 52 est décalée, au début du nouvel intervalle pour les raisons indiquées. Au début de chaque seconde tâche 10 ms 51, on appelle la 35 fonction de communication 54 qui a copié les valeurs calculées dans 3047821 16 l'intervalle précédent entre les tâches, dans les deux sens chaque fois dans les plages de mémoire correspondantes (cela n'est pas représenté). Cela fonctionne sans autre moyen s'il est certain que le partenaire de communication, c'est-à-dire dans ce cas, la tâche 20 ms 5 52, est appelé la seulement lorsque la communication est terminée. Ce- la est automatiquement le cas si par un échelonnement fondé sur la priorité, les deux tâches sont activées dans la même unité d'exécution et si la communication est faite par la tâche de priorité la plus élevée, c'est-à-dire dans ce cas, la tâche 10 ms qui est la plus rapide. 10 La figure 6 montre une variante en option du procédé dont le comportement s'écarte du schéma décrit ci-dessus de « Logical Execution Time » LTG. L'objectif est de réduire le temps de passage du signal (la- tence) dans une chaîne de signaux tout en conservant un comporte- 15 ment déterministique. Une tâche 5 ms 60 communique avec une tâche 10 ms 61. La communication 64 entre la tâche 61 la plus lente vers la tâche 60 la plus rapide se fait toujours à la fin de l'intervalle commun et elle est exécutée chaque fois par la tâche 61a ou 60c qui se termine en der- 20 nier, par l'appel des fonctions de communication 62 ou 63. La communication 65 de la tâche 5 ms 60 la plus rapide vers la tâche 10 ms 61 ne se fait toutefois pas à la fin de l'intervalle commun mais directement après la première exécution de la tâche 5 ms 60a ou 60b la plus rapide dans l'intervalle commun. 25 La condition pour ce type de communication est d'exécuter d'abord la tâche réceptrice 61a ou 61 la plus lente si la communication a été établie, c'est-à-dire à la fin de la tâche 60a ou 60b. Cela est automatiquement le cas pour un ordonnancement à taux monotone, commandé en priorité, si les deux tâches sont exécutées par la 30 même unité d'exécution c'est-à-dire le même noyau de calcul car dans ce cas, les tâches les plus rapides ont une priorité d'exécution supérieure à celle des tâches les plus lentes. Si les tâches sont traitées par des unités d'exécution dif- férentes, la tâche la plus lente 61a ou 61 sera activée à la fin de la tâche 35 émettrice 60a ou 60b. 3047821 17 Grâce à cette variante de l'invention, pour les chaînes de signaux d'activité qui, sur le trajet, par exemple allant d'un capteur, par exemple le capteur 34 de la figure 1 vers un actionneur, par exemple l'actionneur 35 de la figure 1, se font par une tâche rapide puis une 5 tâche plus lente, on réduit le temps de passage (latence) ce qui est avantageux pour les applications en technique de régulation. Dans cette variante, on répartit les tâches entre les uni- tés d'exécution en tenant compte des dépendances entre les espaces de temps d'exécution à l'intérieur des intervalles. 10 La figure 7 montre la communication entre une tâche 2 ms 70 et une tâche 5 ms 71. La longueur de la tâche 5 ms 71 n'est pas un multiple entier de la longueur de la tâche 2 ms. La communication entre de telles tâches sera appelée ci-après communication non harmonique. 15 Les procédés décrits ci-dessus partent de limites d'intervalle, communes, se produisant régulièrement, et auxquelles on communique logiquement. Dans le cas d'une communication non harmonique, par exemple entre une tâche 2 ms et une tâche 5 ms, cela n'est le cas que toutes les 10 ms. A de telles limites d'intervalle 72, 20 communes, avec le procédé décrit ci-dessus, on effectue la communica- tion 73 à la fin de l'intervalle commun par la tâche qui s'est terminée la dernière. Les résultats du calcul de la seconde tâche 2 ms dans l'intervalle commun doivent également être communiqués de manière 25 déterministique à la tâche 5 ms mais dans ce cas, il n'y a pas de limites d'intervalle, communes. Les valeurs ne peuvent être copiées directement dans la mémoire d'entrée 74 de la tâche 5 ms car celle-ci est encore bloquée pour un accès en lecture par la première tâche 5 ms 71a. C'est pourquoi la seconde tâche 2 ms 70a inscrit les va- 30 leurs à communiquer à la fin de la tâche par l'appel d'une fonction de communication 75, en inscrivant tout d'abord dans la mémoire intermédiaire 76. La seconde tâche 5 ms 7 lb copie alors les valeurs de la mémoire intermédiaire 76 dans la mémoire d'entrée 74 au début de la tâche en appelant une fonction de communication 77. 3047821 18 La communication dans l'autre direction allant de la tâche 5 m vers la tâche 2 ms fonctionne de manière équivalente. La première tâche 5 ms copie les valeurs dans une autre mémoire intermédiaire. La quatrième tâche 2 ms, c'est-à-dire la première tâche 2 ms qui 5 est activée après la fin garantie de la première tâche 5 ms dans l'intervalle de 6 ms-8 ms, copie les données de la mémoire intermédiaire dans sa mémoire d'entrée. La communication à la fin commune de l'intervalle se dé- roule comme la communication dans l'autre direction, selon l'un des 10 procédés décrits ci-dessus. Les programmes de mission sont de préfé- rence répétés cycliquement. Les intervalles correspondent alors au temps de cycle. La communication se fait de préférence également de manière cyclique. Les partenaires en communication peuvent être réalisés 15 comme dans le procédé décrit ci-dessus, par les mêmes noyaux de cal- cul ou des noyaux différents. Le placement des bits d'état 20 ou 21 se fait de préfé- rence lorsqu'au cours de l'exécution d'une tâche, on n'accède plus aux données d'entrée 17 ou 15 et on ne modifie plus les données de sortie 20 11 ou 16, c'est-à-dire à un instant qui précède la fin de la tâche. Cela permet de fixer la plage à la fin du cycle de l'unité de programme 31 correspondante. Les avantages du principe sont regroupés ci-après : 1 Le procédé selon DE 102 29 520 A 1 est étendu pour qu'il puisse 25 également s'appliquer à des unités de calcul ayant plusieurs noyaux de calcul, par exemple des processeurs multi-core, en conservant le comportement déterministique et reproductible. Le concept du « Logical Execution Time » LTG s'applique à cela. 2 Le procédé garantit la cohérence entre les données échangées entre 30 deux tâches, ce qui signifie que toutes les données disponibles au début d'une tâche réceptrice doivent provenir de la même exécution de la tâche émettrice et les données d'entrée ne doivent pas être modifiées pendant que la tâche réceptrice y accède. 3 Le comportement est soutenu par une unité de programme (tâche) 35 contrôlée par un système de gestion et dont les taux d'activation 3047821 19 sont dans un rapport entier fixe, les uns par rapport aux autres (voir figure 1). On peut également avoir plusieurs tâches avec le même taux d'activation. 4 - Le procédé sollicite moins les canaux de communication (par 5 exemple les bus) que la communication qui se fait précisément aux limites d'intervalle comme représenté à la figure 1. 5 . Pour mieux pouvoir utiliser la puissance de calcul disponible, le procédé est très largement sans attente « wait free », ce qui signifie que l'exécution par aucun des partenaires en communication n'est 10 bloquée pour une durée significative, par exemple pour garantir la cohérence des plages de mémoire utilisées en commun. 6 . Le procédé peut être implémenté sans extension dans les systèmes de gestion utilisés habituellement dans le domaine automobile (par exemple AUTOSAR-OS). 15 7 . Le procédé est optimisé pour économiser des tâches « notification » supplémentaires et réduire les ressources de calcul nécessaires (mémoire, temps de parcours). 8 - Le procédé est optimisé pour que dans certaines conditions, l'utilisation commune des données reçues par plusieurs récepteurs 20 permet d'économiser des ressources (mémoire, temps de parcours). 9 . La communication peut se faire de manière bidirectionnelle, ce qui signifie que dans les espaces de temps lorsqu'il y a une communication entre deux tâches, celle-ci peut se faire dans les deux directions dans la mesure où il y a une demande. Ainsi, l'infrastructure 25 d'exécution (les fonctions, les compteurs et les mémoires d'état) n'est nécessaire qu'une fois par paire de tâches et non pour chaque sens de communication. 10 . Le procédé est optimisé en option de façon qu'en tenant compte de l'architecture de programme et de répartition des programmes, on 30 évite les pointes de charge et on utilise de façon optimale les res- sources (mémoire, temps de parcours). 11 . Le procédé offre en option la possibilité de réduire les latences d'une chaîne de signaux d'activité entre plusieurs tâches. 12 . Le procédé peut être étendu en option pour la communication dé- 35 terministique entre les tâches avec des intervalles non harmo- 3047821 20 niques, par exemple pour la communication entre une tâche 2 ms et une tâche 5 ms. 5 REVENDICATIONS1°) Procédé de gestion d'un appareil de commande (33), notamment pour un véhicule, l'appareil de commande (33) ayant au moins une unité d'exécution (30) pour exécuter des programmes de tâches (31), on exécute au moins de temps en temps un premier programme (31) et un second programme de tâches (31), le premier programme de tâches (31) fournissant à la fin d'un premier intervalle de temps prédéfini, des données (32) pour le second programme de tâches (31), procédé caractérisé en ce que la transmission des données du premier programme (31) vers le second programme (31) ne se fait qu'après chaque fois la dernière exécution du premier programme (31) à l'intérieur d'un second intervalle de temps prédéfini pour l'exécution du second programme (31), le second inter- valle de temps étant plus long que le premier intervalle de temps. 2°) Procédé selon la revendication 1, caractérisé en ce que le premier programme de tâches (31) est appliqué par une première uni- té d'exécution (30) et le second programme de tâches est appliqué par une seconde unité d'exécution (30) dans l'appareil de commande (33). 3°) Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que la longueur du second intervalle de temps est un multiple entier de la longueur du premier intervalle de temps. 4°) Procédé selon l'une des revendications 1 à 3, caractérisé en ce que les données de la plage de mémoire associée au premier programme de tâches (31) sont transmises directement dans une plage de mémoire associée au second programme de tâches (31). 3047821 22 5°) Procédé selon l'une des revendications 1 à 4, caractérisé en ce qu' en plus, on exécute un troisième programme de tâches (75, 77) pour transmettre les données de la plage de mémoire associée au premier 5 programme de tâches (31) dans une mémoire intermédiaire (76) et de cette mémoire intermédiaire (76), dans une plage de mémoire associée au second programme de tâches (31). 6°) Procédé selon l'une des revendications 1 à 5, 10 caractérisé en ce que le premier programme de tâches (31) et le second programme (31) ont des durées de cycle différentes, la durée de cycle du premier programme (31) étant inférieure à la durée de cycle du second programme (31), et 15 les données de la plage de mémoire associée au premier pro- gramme (31) étant transmises dans une plage de mémoire (114) associée au second programme (31) à l'intérieur du cycle du premier programme (31) qui se situe dans le temps, dans la plage d'une fin de cycle du second programme de tâches (31). 20 7°) Procédé selon l'une des revendications 1 à 6, caractérisé en ce que dans un premier état de fonctionnement, à l'intérieur d'un intervalle de temps associé au programme de tâches (31) respectif, 25 l'autre programme de tâches (31) n'accède pas à la plage de mé- moire associée au programme de tâches (31) respectif, dans un second état de fonctionnement, à l'intérieur de cet intervalle de temps, le programme de tâches (31) respectif n'accède pas à cette plage de mémoire. 30 8°) Procédé selon l'une des revendications 1 à 7, caractérisé en ce qu' on associe une première plage de mémoire pour les données d'entrée (17, 15) à un programme de tâches (31), 3047821 23 on associe au programme de tâches (31) une seconde plage de mémoire pour les données de sortie (11, 16), une information d'état (20, 21) indique qu'à l'intérieur de l'exécution du programme de tâches (31), avant la fin de l'intervalle 5 de temps actuel, on n'accède plus aux données d'entrée (17, 15) et on ne fait aucune modification des données de sortie (11, 16). 9°) Appareil de commande (33), notamment pour un véhicule automobile, réalisé pour exécuter le procédé selon l'une des revendications 10 1 à 8, ayant une unité d'exécution (30) pour exécuter des programmes de tâches (31), consistant à exécuter au moins de temps en temps un premier (31) et un second programme de tâches (31), - le premier programme (31) fournissant à la fin d'un premier inter- valle de temps prédéfini, des données (32) pour le second pro- 15 gramme (31), la transmission des données du premier programme de tâches (31) vers le second programme (31) ne se faisant qu'après chaque dernière exécution du premier programme (31) dans un second intervalle de temps prédéfini pour l'exécution du second programme (31), ce second inter- 20 valle de temps étant plus long que le premier intervalle de temps.