Brevet FR3063359A1 — publié le 20180831

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne de manière générale une méthode de détermination d'une performance temporelle d'une unité de traitement électronique exécutant un algorithme donné, en particulier lorsque des éléments de code de l'algorithme sont exécutés en parallèle au moyen de plusieurs processeurs de l'unité de traitement. L'invention concerne également une méthode associée de sélection d'un mode de répartition d'éléments de code à exécuter, entre plusieurs processeurs d'une unité de traitement électronique. Elle concerne également une méthode de sélection d'une unité de traitement électronique, parmi plusieurs telles unités. Elle s'applique de manière particulièrement intéressante à la caractérisation et/ou à la sélection d'une unité de traitement électronique, en vue d'installer cette unité de traitement dans un véhicule automobile pour qu'elle y exécute un algorithme d'aide à la conduite comprenant le traitement successif de plusieurs images capturées par une caméra. ARRIERE-PLAN TECHNOLOGIQUE De plus en plus de véhicules automobiles sont équipés de dispositifs d'aide à la conduite qui comprennent une caméra vidéo ainsi qu'une unité de traitement de données configurée pour traiter des images capturées par la caméra afin d'en extraire des informations relatives à l'environnement routier du véhicule automobile. Ces informations, qui peuvent par exemple être relatives à la position d'un obstacle présent dans cet environnement routier, sont alors communiquées à un conducteur du véhicule automobile et/ou prises en compte directement pour commander des actionneurs du véhicule automobile tels qu'un dispositif de freinage d'urgence. En pratique, la caméra capture plusieurs images successivement, et délivre ainsi un flux d'images successives. Deux de ces images, capturées l'une à la suite de l'autre, sont alors séparées au cours du temps par une période de répétition donnée, comprise par exemple entre 10 et 100 millisecondes. Comme les informations obtenues par traitement de ces images sont utilisées dans un algorithme d'aide à la conduite, il est bien sûr souhaitable que ce 3063359 2 traitement soit réalisé « en temps réel ». Pour cela, la puissance de calcul de l'unité de traitement doit être suffisante pour traiter les images capturées au fur et à mesure qu'elles sont délivrées par la caméra. Pour obtenir une vitesse de traitement suffisante, il est connu de répartir 5 les opérations nécessaires au traitement d'une image entre plusieurs processeurs de l'unité de traitement électronique, afin d'effectuer ces opérations en parallèle les unes des autres. L'algorithme d'aide à la conduite, destiné à être exécuté ainsi en parallèle, est alors scindé en plusieurs processus élémentaires. Chaque 10 processus élémentaire est codé sous la forme d'un élément de code, et l'un des processeurs de l'unité de traitement est choisi pour exécuter cet élément de code. Cette répartition de l'algorithme à exécuter, entre les différents processeurs de l'unité de traitement, est parfois désignée dans la littérature spécialisée par le terme anglo-saxon de « mapping », ou « mise en correspondance ». 15 Avant d'installer une telle unité de traitement électronique dans un véhicule automobile, il est important de déterminer si elle pourra effectivement exécuter en temps réel l'algorithme d'aide à la conduite considéré. Par ailleurs, les éléments de code correspondant à cet algorithme peuvent en général être répartis de plusieurs manières différentes au sein des 20 processeurs de l'unité de traitement. Il est alors intéressant de déterminer lequel de ces modes de répartition (c'est-à-dire lequel de ces « mappings ») conduit à l'exécution de l'algorithme la plus rapide. Il est alors connu : - pour chaque élément de code, de mesurer son temps d'exécution par le 25 processeur auquel il a été attribué, puis - pour chaque processeur, d'estimer la durée nécessaire pour que ce processeur exécute l'ensemble des éléments de code qui lui sont attribués, et enfin - de déterminer que l'algorithme d'aide à la conduite peut être exécuté en 30 temps réel par l'unité de traitement électronique, en vérifiant que chacune des durées estimées précédemment est inférieure à la période de répétition précitée. Mais cette approche ne donne qu'une image partielle de la capacité de l'unité de traitement électronique à exécuter l'algorithme d'aide à la conduite en temps réel, et la fiabilité de cette approche reste limitée, notamment parce que le 3063359 3 temps d'exécution de chaque élément de code n'est pas connu avec une parfaite précision et/ou parce que sa valeur peut fluctuer légèrement. OBJET DE L'INVENTION Afin de remédier aux inconvénients précités de l'état de la technique, la 5 présente invention propose une méthode de détermination d'une performance temporelle d'une unité de traitement électronique exécutant un algorithme donné, - l'unité de traitement comprenant plusieurs processeurs, - l'algorithme étant configuré pour traiter successivement plusieurs données représentatives chacune d'une image, deux desdites données étant 10 fournies successivement en entrée de l'unité de traitement en étant séparées temporellement par une période de répétition donnée, - l'algorithme étant mis en oeuvre en exécutant, pour chacune de ces données, une pluralité d'éléments de code, - l'exécution de chaque élément de code étant attribuée à l'un desdits 15 processeurs, conformément à un mode de répartition donné. Selon l'invention, la méthode comprend une détermination d'une valeur d'une fonction de coût globale représentative de ladite performance temporelle, au moyen des étapes suivantes : - pour chacun desdits processeurs : 20 - détermination d'une durée totale d'exécution de l'ensemble des éléments de code attribués à ce processeur, puis - détermination de la valeur d'une fonction de coût individuelle associée à ce processeur en fonction de l'écart entre ladite période de répétition et ladite durée totale d'exécution, et 25 - détermination de la valeur de la fonction de coût globale en fonction des valeurs de chacune desdites fonctions de coût individuelles. Pour traiter en temps réel le flux des données entrant successivement dans l'unité de traitement, il est nécessaire, pour chacun des processeurs, que la durée totale d'exécution de l'ensemble des éléments de code attribués à ce 30 processeur soit (pour chaque donnée entrante) inférieure à la période de répétition. Comme la valeur de la fonction de coût individuelle associée à ce processeur dépend de l'écart entre la période de répétition et la durée totale d'exécution correspondante, la valeur de la fonction de coût globale représente 3063359 4 de manière avantageusement concise, et pour l'ensemble des processeurs, la marge disponible, en termes de durée d'exécution, par rapport à une limite au-delà de la laquelle un traitement en temps réel n'est plus assuré (cette limite correspond à la période de répétition). 5 Par ailleurs, la valeur de la fonction de coût globale dépend directement de la vitesse d'exécution de l'algorithme par la l'unité de traitement. La valeur de la fonction de coût globale est donc représentative de la performance globale obtenue, en termes de temps d'exécution, avec cette unité de traitement électronique, tout en permettant de détecter individuellement, pour 10 chaque processeur, si celui-ci est proche de sa limite de charge (au-delà de laquelle un traitement en temps réel n'est plus assuré). De plus, une telle fonction de coût globale permet de traduire de manière continue la marge disponible entre la période de répétition et chacune des durées totales d'exécution, ce qui est particulièrement intéressant car les valeurs des 15 temps d'exécution des différents éléments de code ne sont en général pas connues avec une précision parfaite. La valeur de cette fonction de coût globale permet en particulier d'estimer le caractère exécutable en temps réel de l'algorithme de manière plus fiable qu'une comparaison directe de la période de répétition T avec chacune des 20 durées totales d'exécution, qui délivrait un résultat booléen du type tout ou rien. Par ailleurs, le calcul de la valeur de la fonction de coût globale ne nécessite qu'un nombre d'opérations numériques limité, et peut donc être réalisé même avec des ressources de calcul restreintes. Une optimisation ultérieure du mode de répartition des différents 25 processus élémentaires, dans les processeurs de l'unité de traitement, peut donc être réalisée efficacement sur la base de la valeur de la fonction de coût globale. Dans un mode de réalisation particulier de la méthode de détermination selon l'invention, la valeur de chaque fonction de coût individuelle augmente lorsque la durée totale d'exécution associée à cette fonction s'approche, par 30 valeurs inférieures, de ladite période de répétition. Dans ce mode de réalisation, la valeur de la fonction de coût globale est d'autant plus grande que chacune des valeurs des fonctions de coût individuelles est grande La valeur de la fonction de coût globale augmente alors lorsque l'une quelconque de ces durées totales d'exécution s'approche de la période de 3063359 5 répétition. Dans ce cas, la valeur de la fonction de coût globale est par ailleurs d'autant plus petite que l'exécution de l'algorithme par l'unité de traitement est rapide. On comprend toutefois que l'invention pourrait être mise en oeuvre de 5 manière équivalente en utilisant plutôt des fonctions de coût individuelles qui soient chacune une fonction décroissante de la durée totale d'exécution correspondante. Dans ce cas, une valeur élevée de la fonction de coût globale serait représentative, au contraire, d'une exécution rapide de l'algorithme, réalisable en temps réel, tandis qu'une valeur faible de la fonction de coût globale 10 permettrait de détecter que l'un des processeurs est en limite de charge. D'autres caractéristiques non limitatives et avantageuses de la méthode de détermination conforme à l'invention sont les suivantes : - l'une au moins desdites fonctions de coût individuelles est une fonction croissante et concave de la durée totale d'exécution associée à cette fonction de 15 coût individuelle ; - l'une au moins desdites fonctions de coût individuelles diverge lorsque la durée totale d'exécution associée à cette fonction de coût individuelle tend vers la période de répétition ou dépasse la période de répétition ; - il est prévu de déterminer une valeur d'un temps de latence, égal à 20 l'écart temporel entre le début et la fin du traitement de l'une desdites données par ledit algorithme, et la valeur de la fonction de coût globale diverge lorsque ledit temps de latence tend vers un seuil de temps de latence préalablement spécifié, ou dépasse ce seuil de temps de latence ; - ledit algorithme est configuré pour qu'un résultat du traitement d'une 25 première desdites données soit pris en compte pour traiter une deuxième desdites données reçue ultérieurement par l'unité de traitement, et dans lequel ladite valeur du temps de latence est déterminée en tenant compte d'une durée liée à la prise en compte de ladite première donnée ; - le traitement de l'une desdites données au moyen dudit algorithme 30 débutant par l'un desdits éléments de code, d'entrée, et se terminant par l'un desdits éléments de code, de sortie, le temps de latence est déterminé au moyen des étapes suivantes : - détermination de chaque chemin d'exécution menant dudit élément de code, d'entrée, audit élément de code, de sortie, 3063359 6 - pour chacun desdits chemins d'exécution, détermination d'un temps de parcours associé, - détermination du temps de latence en fonction du plus grand desdits temps de parcours ; 5 - le temps de latence est déterminé en fonction de temps d'exécution associés chacun à l'un desdits éléments de code, et en fonction d'un ou plusieurs délais associés chacun à un transfert de données réalisé au cours dudit algorithme, entre deux desdits processeurs ; - chaque durée totale d'exécution est déterminée en fonction du temps 10 d'exécution desdits éléments de code, chaque temps d'exécution étant défini sous la forme d'un intervalle de confiance délimité par une valeur minimale et une valeur maximale de ce temps d'exécution, et dans laquelle les valeurs des fonctions de coût individuelles sont déterminées en fonction de valeurs moyennes définies par lesdits intervalles de confiance. 15 On peut prévoir par ailleurs, dans ladite méthode de détermination, de : - déterminer une valeur maximale de chaque durée totale d'exécution, sur la base des valeurs maximales desdits temps d'exécution, - si l'une au moins des valeurs maximales des durées totales d'exécution est supérieure à la période de répétition, déterminer la valeur de la fonction coût 20 globale en fonction des valeurs des fonctions de coût individuelles, ou - sinon, affecter la valeur nulle à la fonction de coût globale. On peut prévoir aussi, dans ladite méthode de détermination de : - déterminer une valeur minimale de chaque durée totale d'exécution, sur la base des valeurs minimales desdits temps d'exécution, 25 - si les valeurs minimales des durées totales d'exécution sont chacune inférieure à la période de répétition, déterminer la valeur de la fonction coût globale en fonction des valeurs des fonctions de coût individuelles, ou - sinon, affecter une valeur infinie à la valeur de la fonction de coût globale. 30 L'invention propose également une méthode de sélection d'un mode de répartition d'éléments de code d'un algorithme de traitement de données entre plusieurs processeurs d'une unité de traitement électronique, parmi plusieurs tels modes de répartitions distincts, dans laquelle : - pour chaque mode de répartition, une valeur d'une fonction de coût 3063359 7 globale est déterminée au moyen d'une méthode de détermination telle que décrite ci-dessus, et dans laquelle - l'un des modes de répartition est sélectionné sur la base desdites valeurs de la fonction de coût globale. 5 L'invention propose aussi une méthode de sélection d'une unité de traitement électronique destinée à exécuter un algorithme, parmi plusieurs unités de traitement électronique, chaque unité de traitement comprenant plusieurs processeurs, l'algorithme étant mis en oeuvre en exécutant plusieurs éléments de code, dans laquelle il est prévu : 10 - pour chaque unité de traitement, de mettre en oeuvre une méthode de sélection telle que décrite ci-dessus, et d'attribuer à l'unité de traitement la valeur de la fonction de coût globale correspondant au mode de répartition ainsi sélectionné, puis - de sélectionner l'une desdites unités de traitement en fonction au moins 15 des valeurs de fonction de coût globale attribuées à chaque unité de traitement. DESCRIPTION DETAILLEE D'UN EXEMPLE DE REALISATION La description qui va suivre en regard des dessins annexés, donnés à titre d'exemples non limitatifs, fera bien comprendre en quoi consiste l'invention et comment elle peut être réalisée. 20 Sur les dessins annexés : - la figure 1 représente schématiquement l'exécution, au cours du temps, de différents éléments de code par des processeurs d'une unité de traitement électronique, - la figure 2 représente schématiquement, sous la forme d'un graphe, un 25 algorithme de traitement de données formé des éléments de code de la figure 1, - la figure 3 représente schématiquement un autre exemple d'algorithme de traitement de données, - la figure 4 représente schématiquement l'évolution de la valeur d'une fonction de coût individuelle, associée à l'un des processeurs de l'unité de 30 traitement électronique, en fonction d'une durée totale d'exécution d'un ensemble d'éléments de code, par ce processeur, et - la figure 5 représente schématiquement, sous la forme d'un organigramme, une méthode de sélection d'un mode de répartition d'éléments de code à exécuter, entre plusieurs processeurs de l'unité de traitement électronique. 3063359 8 Dans cet exposé, un exemple de réalisation d'une méthode de détermination d'une performance temporelle d'une unité de traitement électronique exécutant un algorithme donné sera décrit dans un premier temps en référence aux figures 1 à 4. 5 Une méthode associée de sélection d'un mode de répartition d'éléments de code à exécuter, entre plusieurs processeurs de l'unité de traitement électronique (figure 5), ainsi qu'une méthode de sélection d'une unité de traitement électronique parmi plusieurs telles unités, seront décrites ensuite. Implémentation matérielle de l'algorithme 10 L'unité de traitement électronique, dont on souhaite évaluer les performances en termes de temps de calcul, comprend plusieurs processeurs pui, pu2, pux, adaptés chacun à réaliser des opérations portant sur des données numériques. L'unité de traitement électronique, désignée plus simplement dans la 15 suite par l'expression « unité de traitement », peut comprendre en outre une ou plusieurs mémoires électroniques, et un ou plusieurs périphériques d'interface. L'unité de traitement est ici intégrée sur une même puce électronique (on parle alors de système sur puce, ou SoC, selon l'acronyme anglo-saxon de « Systemon-Chip »). 20 L'algorithme, destiné à être exécuté par l'unité de traitement, est configuré pour traiter successivement plusieurs données D1, D2, , D, représentatives chacune d'une image. En pratique, ces images sont capturées successivement par une caméra vidéo, et transmises au fur et à mesure de leur capture à l'unité de traitement. 25 Lesdites données D1, D2, ... , D, sont fournies en entrée de l'unité de traitement en étant séparées deux à deux, au cours du temps, par une période de répétition T donnée (figure 1). La période de répétition correspond à la durée séparant deux captures d'images successives par la caméra vidéo. La période de répétition T peut par exemple être comprise entre 10 et 30 100 millisecondes. Pour une capture d'images à un taux de 30 images par seconde, par exemple, la période de répétition T est égale à 33 millisecondes environ. Ici, les images traitées sont plus précisément représentatives d'un environnement routier dans lequel circule un véhicule automobile muni de la 3063359 9 caméra vidéo et de l'unité de traitement mentionnées ci-dessus. Ces images pourraient aussi comprendre des images d'un conducteur du véhicule. L'algorithme est adapté, ici, à extraire de ces images des informations relatives à cet environnement routier, à des fins d'aide à la conduite du véhicule. Il 5 peut d'ailleurs être prévu, au cours de cet algorithme, de mettre en oeuvre des fonctionnalités d'aide à la conduite, telles par exemple que des fonctionnalités de freinage d'urgence, de régulation de vitesse, ou d'alerte du conducteur, exécutées sur la base des informations extraites des images traitées. L'algorithme est configuré pour traiter chacune desdites données D1, D2, 10 , D, au moyen d'un même procédé de base dont l'exécution est répétée pour chacune desdites données. Ce procédé de base est formé d'une pluralité de processus élémentaires, qu'il est prévu d'exécuter en série et/ou en parallèle. Chacun de ces processus élémentaires est représenté, c'est-à-dire codé, 15 par un élément de code k1, k2, ki, pour pouvoir être exécuté par l'unité de traitement. Cet élément de code (parfois désigné dans la littérature spécialisée par le terme anglo-saxon « kernel », c'est-à-dire « noyau ») peut être écrit notamment en langage C, en pseudo-code, ou encore en langage machine. Un tel processus élémentaire peut par exemple correspondre à une 20 correction de distorsion de l'image, à un calcul de gradient vertical ou horizontal, à un calcul de gradient d'orientation, ou encore à une classification d'éléments remarquables présents dans l'image, par exemple sur la base de résultats obtenus précédemment par calcul de gradients. Les figures 1 et 3 illustrent schématiquement, pour un exemple 25 d'algorithme tel que décrit ci-dessus, la manière dont le procédé de base se décompose en processus élémentaires qui s'enchaînent les uns avec les autres. L'exécution de chacun desdits éléments de code est attribuée à l'un des processeurs pui, pu2, pux de l'unité de traitement, conformément à un mode de répartition Mi donné (ce mode de répartition étant parfois désigné dans la 30 littérature spécialisée par le terme anglo-saxon de « mapping »). Un tel mode de répartition Mi associe de manière univoque l'un des processeurs de l'unité de traitement à chacun des éléments de code à exécuter, et caractérise ainsi une implémentation matérielle donnée de l'algorithme dans l'unité de traitement. 3063359 10 La figure 1 représente l'exécution, au cours du temps t, des différents éléments de code k1, k2, k3, k4 et k5 associés à l'exemple de l'algorithme considéré. Les traitements des données D1, D2, , D, débutent respectivement aux 5 instants t1, t2, t3, ..., ces instants étant séparés deux à deux par la période de répétition T. Comme représenté, le traitement de chaque donnée D1, D2, , D, est réalisé, dans cet exemple, en exécutant les éléments de code k1 à k5 selon la séquence suivante : 10 - k1 puis k2 au moyen de l'un des processeurs pui de l'unité de traitement, - k3 puis LI puis k5 au moyen d'un autre des processeurs pu2 de l'unité de traitement, les éléments de codes k2 et k3 étant exécutés en parallèle, c'est-à-dire 15 qu'ils sont au moins en partie exécutés à un même instant. Comme le traitement des données D1, D2, ... , D, capturées par la caméra vise à en extraire des informations relatives à l'environnement routier, à des fins d'aide à la conduite, il est souhaitable : - que ces données D1, D2, , D, soient traitées au fur et à mesure de 20 leur capture, ce qui impose un taux de répétition minimal à l'unité de traitement (égal à l'inverse de la période de répétition T) ; autrement formulé, il faut que chaque processeur puisse exécuter l'ensemble des éléments de code qui lui sont attribués en une durée qui est inférieure à la période de répétition T, - mais aussi que la durée nécessaire pour traiter entièrement l'une des 25 données, appelée « temps de latence » (tp sur la figure 1), soit aussi petite que possible, et en particulier inférieure à un temps de réaction typique d'un individu. Le temps de latence tp correspond plus précisément à l'écart temporel entre (figure 1) : - l'instant t1, t2, t3, ... auquel le traitement de l'une des données D1, D2, 30 ..., D, débute, et - l'instant tif, t2f, t3f, ... auquel le résultat du traitement de cette donnée est disponible, ce résultat pouvant correspondre notamment aux informations extraites de cette données, et/ou à une commande à destination d'un dispositif d'aide à la conduite. 3063359 11 La méthode de détermination de la performance temporelle de l'unité de traitement considérée vise notamment à déterminer si l'implémentation matérielle de l'algorithme dans cette unité de traitement permettra d'obtenir une exécution en temps réel de cet algorithme, c'est-à-dire si les deux contraintes mentionnées ci- 5 dessus pourront être respectées. La manière dont est prise en compte la contrainte associée au taux de répétition sera examinée dans un premier temps. La contrainte associée au temps de latence sera quant à elle examinée dans un second temps. Contrainte associée au taux de répétition 10 Comme illustré sur la figure 1, pour obtenir un traitement des différentes données D1, D2, , D, au fur et à mesure de leur réception par l'unité de traitement, il est nécessaire que, à chaque exécution du procédé de base (c'est-à-dire pour chaque image à traiter), chaque processeur exécute l'ensemble des éléments de codes qui lui sont attribués en un temps inférieur à la période de 15 répétition T. Autrement formulé, pour obtenir une exécution en temps réel de l'algorithme, il est nécessaire, pour chacun des processeurs pui, pu2, ...pux, que, à chaque exécution du procédé de base, la durée totale d'exécution tpo, tp,2, tpux de l'ensemble des éléments de code attribués à ce processeur soit inférieure à 20 la période de répétition T. Par exemple, dans le cas de la figure 1, pour obtenir une exécution en temps réel de l'algorithme, il est nécessaire que : - la durée totale d'exécution des éléments de code k1 et k2 par le processeur pui, notée tpul, soit inférieure à la période de répétition T, et que 25 - la durée totale d'exécution des éléments de code k3, k4 et k5 par le processeur pu2, notée tp,2, soit elle aussi inférieure à la période de répétition T. Selon une caractéristique particulièrement remarquable de la méthode de détermination de la performance temporelle de l'unité de traitement exécutant l'algorithme précité, il est prévu de déterminer une valeur d'une fonction de coût 30 globale 3 représentative de ladite performance temporelle, au moyen des étapes suivantes : a) pour chacun desdits processeurs pui, pu2, pux , détermination de la durée totale d'exécution tpux, par ce processeur, de l'ensemble des éléments de code kl, k2, ...k; qui lui sont attribués, 3063359 12 b) pour chacun desdits processeurs pui, pu2, ... pu, , détermination de la valeur d'une fonction de coût individuelle fr(Mi, pur, T) associée à ce processeur pu,, en fonction de l'écart entre ladite période de répétition T et la durée totale d'exécution tpul , tpu2, tpux associée à ce processeur, et 5 c) détermination de la valeur de la fonction de coût globale 3 , en fonction des valeurs de chacune desdites fonctions de coût individuelles. La valeur de la fonction de coût globale 3dépend directement de la vitesse d'exécution de l'algorithme par l'unité de traitement. La valeur de la fonction de coût globale représente ainsi de manière 10 concise la performance globale obtenue, en termes de temps d'exécution, avec cette unité de traitement, tout en permettant de détecter, pour chacun des processeurs pui, Pu2, - , PUX, si celui-ci est proche, en termes de charge de calcul, d'une limite au-delà de la laquelle un traitement en temps réel n'est plus assuré. Ici, chaque fonction de coût individuelle «Mi, pur, T) est plus 15 précisément une fonction croissante de la durée totale d'exécution tpul, tpu2, tpu, associée à cette fonction, et la valeur de la fonction de coût globale 3 est d'autant plus grande que chacune des valeurs des fonctions de coût individuelles fr(Mi, pur, T) est grande. A l'étape a), la durée totale d'exécution tpu, de l'ensemble des éléments 20 de code kl, k2, k; attribués au processeur pu, est déterminée conformément à la formule F1 suivante : tpux = (F1) k,lx dans laquelle la somme porte sur l'ensemble des éléments de code kl, k2, attribués au processeur pu,, notés ki lx - Les valeurs des temps d'exécution T1, T2 , Ti intervenant dans ce 25 calcul sont connues, du fait qu'elles ont été mesurées ou estimées préalablement. Toutefois, en pratique, une incertitude peut subsister quant aux valeurs de ces temps d'exécution Ti, T2 , Ti, du fait d'incertitudes de mesure ou de détermination et/ou du fait de fluctuations éventuelles de ces temps d'exécution au cours du temps. 30 En particulier, la mesure ou l'estimation préalable de l'un de ces temps d'exécution Ti peut montrer que la valeur de ce temps d'exécution est comprise 3063359 13 dans une plage de confiance i- r L- i,min Ti,max17 appelée aussi intervalle de confiance, délimitée par une valeur minimale Ti,min du temps d'exécution Ti, et par une valeur maximale Ti,max de ce temps d'exécution. Dans un tel cas, la valeur du temps d'exécution Ti prise en compte pour calculer la durée totale d'exécution tipi», peut 5 par exemple être correspondre au milieu, c'est-à-dire à la valeur moyenne, de cette plage de confiance. Quoi qu'il en soit, les valeurs des durées totales d'exécution tpo, tp,2,..., tipi», ne sont en général connues qu'avec une précision limitée, du fait de ces incertitudes relatives aux valeur des temps d'exécution T1, T2 , , Ti. 10 Il est donc intéressant que la fonction de coût globale,97-- traduise ainsi de manière continue la marge disponible entre la période de répétition T et chacune des durées totales d'exécution tpul, tp,2,..., t1 En En particulier, pour déterminer que l'algorithme peut être exécuté en temps réel par l'unité de traitement, il est plus fiable de se baser sur la valeur de la fonction globale '9-7- 15 (continue), que de se baser seulement sur un résultat booléen du type tout ou rien qui serait obtenu en comparant directement la période de répétition T avec une valeur moyenne de chacune des durées totales d'exécution. Comme déjà indiqué, chaque fonction de coût individuelle fr(Mi, pur, T) est ici une fonction croissante de la durée totale d'exécution tpux associée à cette 20 fonction. Chaque fonction de coût individuelle fr(Mi, pur, T) est par ailleurs une fonction concave de la durée totale d'exécution tpux. La croissance de cette fonction de coût individuelle est ainsi d'autant plus forte que la durée totale d'exécution tipi», est proche de la période de répétition T. Cette disposition permet 25 de détecter encore plus efficacement, sur la base de la valeur de la fonction de coût globale, que l'un des processeurs est proche de sa limite de charge. De plus, ici, chaque fonction de coût individuelle UN& pur, T) diverge, c'est-à-dire tend vers l'infini, lorsque la durée totale d'exécution tpux associée tend vers la période de répétition T ou la dépasse. En pratique, une valeur infinie ici, 30 par exemple, à la plus grande valeur numérique pouvant être manipulée par un ordinateur chargé du calcul des fonctions de coûts. A nouveau, cette disposition favorise la détection du fait que l'une des durées totales d'exécution s'approche la limite correspondant à la période de répétition T, que l'on souhaite ne pas 3063359 14 dépasser. Plus précisément la valeur de chaque fonction de coût individuelle est calculée ici, à l'étape b, conformément à la formule F2 suivante : +00 si tpux T fr(Mi, pur, = Pr (F2) sinon 1 - tpux/T où le coefficient f3,- est positif. 5 La fonction de coût individuelle fr(Mi, pur, T) est tracée sur la figure 4, en fonction de la durée totale d'exécution tpux, pour trois valeurs différentes du coefficient 0, (en l'occurrence pour 13, = 0,1, pour f3,- = 0,5 et pour f3,- = 2). Comme on peut le voir sur cette figure, la croissance de la fonction de coût individuelle fr(Mi, pur, T) à l'approche de la période de répétition T est 10 d'autant plus abrupte que la valeur du coefficient 0, est petite. Le coefficient f3,- permet ainsi, par un ajustement de sa valeur, de choisir une croissance plus ou moins progressive de la fonction de coût individuelle fr(Mi, pur, T) au voisinage de la période de répétition T. En variante, la fonction de coût individuelle de la formule F2 pourrait bien 15 sûr être remplacée par une fonction différente et présentant néanmoins les caractéristiques utiles mentionnées ci-dessus (croissance, concavité, divergence à l'approche de la période de répétition). A titre d'exemple, une fonction f telle que définie par la formule F3 pourrait par exemple être utilisée à la place de celle de la formule F2: -Fco si tpux > T Pr sinon (F3) { (1 - tpux/T)2 20 Dans une autre variante, on pourrait prévoir que chaque fonction de coût individuelle soit égale à la durée totale d'exécution des éléments de code mis en oeuvre par le processeur associé. On notera que, comme suggéré par la notation fr(Mi, pur, T), cette fonction de coût individuelle dépend du mode de répartition Mi considéré. En effet, 25 le fait d'attribuer l'élément de code ki à l'un ou à l'autre des processeur put pu2, pu>, de l'unité de traitement influe directement sur la valeur du temps d'exécution Ti de cet élément de code, et donc sur la valeur de la durée totale d'exécution tpux. 3063359 15 La valeur de chaque fonction de coût individuelle dépend bien sûr aussi de l'unité de traitement qui exécute l'algorithme, puisque les valeurs des temps d'exécution T1, T2, ..., Ti dépendent des caractéristiques (type de processeurs utilisés, bande passante des mémoires, ... ) de cette unité de traitement. 5 Ici, la valeur de la fonction de coût globale est déterminée, à l'étape en fonction de la somme des valeurs des fonctions de coût individuelles déterminées à l'étape b). La fonction de coût globale 3 est plus précisément égale, ici, à la somme des fonctions de coût individuelles, et d'une ou plusieurs fonctions de coût 10 additionnelles fi (Mi, dtspec, T) : = {dtspec}, = fr(Mi, pur, T) + dtspec, T) (F4) [dtspec} Dans la formule F4 ci-dessus, la première somme porte sur l'ensemble des processeurs pui, pu2, pux de l'unité de traitement. La deuxième somme porte quant à elle sur un ensemble {dtspec} d'une ou plusieurs contraintes temporelles additionnelles, liées à l'exécution de l'algorithme par l'unité de 15 traitement. En particulier, l'une de ces contraintes temporelles additionnelles peut correspondre au fait qu'un seuil limite, à ne pas dépasser, ait été spécifiée pour le temps de latence. Ainsi, si le seuil limite est dépassé, la fonction de coût globale 37-- présentera par exemple une valeur très élevée. En variante, la fonction de coût globale 5 pourrait s'exprimer 20 différemment, en fonction des fonctions de coût individuelles, par exemple sous la forme d'une somme des carrés de ces fonctions de coût individuelles. En variante encore, les fonctions de coûts additionnelles mentionnées ci-dessus pourraient être omises, la fonction de coût globale dépendant alors seulement des fonctions de coût individuelles. 25 Contrainte associée au temps de latence Il est prévu ici, dans ladite méthode de détermination, de déterminer une valeur du temps de latence tp, et, comme indiqué ci-dessus de prendre en compte cette valeur dans le calcul de valeur de la fonction de coût globale :97-. Afin notamment de déterminer la valeur du temps de latence tp, 30 l'algorithme est représenté sous la forme d'un graphe, comme illustré sur la figure 2. 3063359 16 Sur ce graphe, chacun des éléments de code kt k2, k5 mentionnés précédemment correspond à un sommet du graphe. Ces sommets sont reliés entre eux de manière à représenter les dépendances de ces éléments de codes les uns par rapport aux autres. Ce graphe est plus précisément un graphe orienté, 5 et sans boucle. Sur ce graphe, un arc relie deux éléments de code ki et kj lorsque que des données, obtenues ou modifiées en exécutant l'élément de code ' REVENDICATIONS1. Méthode de détermination d'une performance temporelle d'une unité de traitement électronique exécutant un algorithme donné, - l'unité de traitement comprenant plusieurs processeurs (pui, pu2, Pux), - l'algorithme étant configuré pour traiter successivement plusieurs données (D1, D2, ... , De) représentatives chacune d'une image, deux desdites données étant fournies successivement en entrée de l'unité de traitement en étant séparées temporellement par une période de répétition (T) donnée, - l'algorithme étant mis en oeuvre en exécutant, pour chacune de ces données (D1, D2, ... , De), une pluralité d'éléments de code (k1, k2, - l'exécution de chaque élément de code (k1, k2, ki) étant attribuée à l'un desdits processeurs (pui, Pu2, pux), conformément à un mode de répartition (Mi) donné, la méthode étant caractérisée en ce qu'elle comprend une détermination d'une valeur d'une fonction de coût globale (5) représentative de ladite performance temporelle, au moyen des étapes suivantes : - pour chacun desdits processeurs (pui, Pu2, ...Pux) - détermination d'une durée totale d'exécution (tpui, tp,2, tpux) de l'ensemble des éléments de code (k1, k2, ki) attribués à ce processeur, puis - détermination de la valeur d'une fonction de coût individuelle (fr) associée à ce processeur en fonction de l'écart entre ladite période de répétition (T) et ladite durée totale d'exécution (tpul , tpu2, tpux), et - détermination de la valeur de la fonction de coût globale (3--) en fonction des valeurs de chacune desdites fonctions de coût individuelles (fr). 2. Méthode de détermination selon la revendication 1, dans laquelle l'une au moins desdites fonctions de coût individuelles (fr) est une fonction croissante et concave de la durée totale d'exécution (tpui , tpu2, tpux) associée à cette fonction de coût individuelle (fr). 3. Méthode de détermination selon l'une des revendications 1 et 2, dans laquelle l'une au moins desdites fonctions de coût individuelles (fr) diverge lorsque 3063359 30 la durée totale d'exécution associée (tp,,, tpux) à cette fonction de coût individuelle (fr) tend vers la période de répétition (T) ou dépasse la période de répétition (T). 5 4. Méthode de détermination selon l'une des revendications 1 à 3, dans laquelle il est prévu en outre de déterminer une valeur d'un temps de latence (tp), égal à l'écart temporel entre le début et la fin du traitement de l'une desdites données (Dl, D2, ..., Dn) par ledit algorithme, et dans laquelle la valeur de la fonction de coût globale diverge lorsque ledit temps de latence (tp) tend vers _spec, 10 un seuil de temps de latence (dt 1 préalablement spécifié, ou dépasse ce seuil de temps de latence. 5. Méthode de détermination selon la revendication 4, dans laquelle ledit algorithme est configuré pour qu'un résultat du traitement d'une première desdites 15 données (Dm,) soit pris en compte pour traiter une deuxième desdites données (De) reçue ultérieurement par l'unité de traitement, et dans lequel ladite valeur du temps de latence (tp) est déterminée en tenant compte d'une durée liée à la prise en compte de ladite première donnée (Dn-i). 20 6. Méthode de détermination selon l'une des revendications 4 et 5, dans laquelle, le traitement de l'une desdites données (D1, D2, ..., D) au moyen dudit algorithme débutant par l'un desdits éléments de code (k1), d'entrée, et se terminant par l'un desdits éléments de code (k5), de sortie, le temps de latence (tp) est déterminé au moyen des étapes suivantes : 25 - détermination de chaque chemin d'exécution ,'5`fi,5 ;1 , g'1,5 ;2 , g'1,5 ;3 ) menant dudit élément de code (k1), d'entrée, audit élément de code (k5), de sortie, - pour chacun desdits chemins d'exécution (91,5 ;1 , ;2 , 1,5 ; 3 ), détermination d'un temps de parcours associé, - détermination du temps de latence (tp) en fonction du plus grand 30 desdits temps de parcours. 7. Méthode de détermination selon l'une des revendications 4 à 6, dans laquelle le temps de latence (tp) est déterminé : 3063359 31 - en fonction de temps d'exécution associés chacun à l'un desdits éléments de code, et - en fonction d'un ou plusieurs délais () associés chacun à un transfert de données réalisé au cours dudit algorithme, entre deux desdits processeurs (pui, 5 Pu2, Pux)- 8. Méthode de détermination selon l'une des revendications 1 à 7, dans laquelle chaque durée totale d'exécution (tpul, tpu2, tpux) est déterminée en fonction du temps d'exécution desdits éléments de code (k1, k2, k1), chaque 10 temps d'exécution (Ti) étant défini sous la forme d'un intervalle de confiance délimité par une valeur minimale (Ti,min) et une valeur maximale (Ti,m') de ce temps d'exécution, et dans laquelle les valeurs des fonctions de coût individuelles (fr) sont déterminées en fonction de valeurs moyennes définies par lesdits intervalles de confiance. 15 9. Méthode de détermination selon la revendication 8, dans laquelle il est prévu en outre de : - déterminer une valeur maximale (t ,.pux, max) de chaque durée totale d'exécution (tpux), sur la base des valeurs maximales (Ti,,,') desdits temps 20 d'exécution (Ti), - si l'une au moins des valeurs maximales (t '.pux, max) des durées totales d'exécution (tpux) est supérieure à la période de répétition (T), déterminer la valeur de la fonction coût globale ( en fonction des valeurs des fonctions de coût individuelles (fr), ou 25 - sinon, affecter la valeur nulle à la fonction de coût globale (5). 10. Méthode de détermination selon l'une des revendications 8 et 9, dans laquelle il est prévu en outre de : - déterminer une valeur minimale lt ,-pux, min) de chaque durée totale 30 d'exécution (tpux), sur la base des valeurs minimales (Ti,min) desdits temps d'exécution (Ti), - si les valeurs minimales des durées totales d'exécution (tpui, tpu2, tpux) sont chacune inférieure à la période de répétition (T), déterminer la valeur de la 3063359 32 fonction coût globale en fonction des valeurs des fonctions de coût individuelles (fr), ou - sinon, affecter une valeur infinie à la valeur de la fonction de coût globale (J). 5 11. Méthode de sélection d'un mode de répartition (M1) d'éléments de code (k1, k2, ki) d'un algorithme de traitement de données entre plusieurs processeurs (pui, Pu2, ...pur) d'une unité de traitement électronique, parmi plusieurs tels modes de répartitions (M1) distincts, dans laquelle : 10 - pour chaque mode de répartition (M1), une valeur d'une fonction de coût globale (51 est déterminée au moyen d'une méthode de détermination conforme à l'une des revendications 1 à 10, et dans laquelle - l'un des modes de répartition (M1) est sélectionné sur la base desdites valeurs de la fonction de coût globale (,?-). 15 12. Méthode de sélection d'une unité de traitement électronique destinée à exécuter un algorithme, parmi plusieurs unités de traitement électronique, chaque unité de traitement comprenant plusieurs processeurs (pui, pu2, ...pur), l'algorithme étant mis en oeuvre en exécutant plusieurs éléments de code (k1, k2, 20 ..., ki), dans laquelle il est prévu : - pour chaque unité de traitement, de mettre en oeuvre une méthode de sélection conforme à la revendication 11, et d'attribuer à l'unité de traitement la valeur de la fonction de coût globale (5--) correspondant au mode de répartition (M1) ainsi sélectionné, puis 25 - de sélectionner l'une desdites unités de traitement en fonction au moins des valeurs de fonction de coût globale (5--) attribuées à chaque unité de traitement.