Brevet FR3063360A1 — publié le 20180831

DOMAINE TECHNIQUE AUQUEL SE RAPPORTE L'INVENTION La présente invention concerne un procédé de caractérisation de performances temporelles d'une unité de traitement électronique comprenant au moins un processeur. L'invention s'applique de manière particulièrement intéressante à la détermination de performances temporelles d'une unité de traitement électronique exécutant un algorithme d'aide à la conduite comprenant des opérations de traitement d'image. ARRIERE-PLAN TECHNOLOGIQUE De plus en plus de véhicules automobiles sont équipés d'un dispositif d'aide à la conduite qui comprend une caméra vidéo et une unité de traitement électronique 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. Pour pouvoir comparer entre elles différentes unités de traitement électroniques destinées à exécuter un tel algorithme d'aide à la conduite, ou pour déterminer si une unité de traitement électronique est assez rapide pour exécuter cet algorithme en temps réel, il est nécessaire de disposer d'informations relatives aux capacités de calcul de ces unités de traitement, en particulier en termes de temps d'exécution. Pour la plupart des unités de traitement électronique disponibles commercialement, des informations de bases relatives à ces capacités de calcul sont connues et fournies par le fabriquant de l'unité de traitement. Ces informations de base peuvent notamment comprendre une fréquence d'horloge, ou une bande passante d'un bus de données permettant de transférer des données entre une mémoire et un processeur de l'unité de traitement électronique. Mais ces informations de bases ne fournissent qu'une image partielle 3063360 2 des performances temporelles pouvant être obtenues avec une unité de traitement électronique donnée. OBJET DE L'INVENTION Dans ce contexte, la présente invention propose un procédé de 5 caractérisation d'une unité de traitement électronique comprenant au moins un processeur, ledit processeur comportant au moins un coeur, le procédé comprenant les étapes suivantes : al ) pour au moins deux données de tailles mémoire différentes, mesure d'une durée de transfert nécessaire pour exécuter, au moyen du coeur dudit 10 processeur, une instruction élémentaire de transfert de chaque donnée, a2) mesure d'une durée d'exécution nécessaire pour exécuter successivement, au moyen du coeur dudit processeur, plusieurs instructions élémentaires de calcul, et b) détermination d'un critère caractérisant ladite unité de traitement 15 électronique, en fonction de chaque durée de transfert mesurée à l'étape al ) et de chaque durée d'exécution mesurée à l'étape a2). A l'étape ai), l'instruction élémentaire de transfert de ladite donnée peut correspondre notamment à une lecture ou écriture de la donnée dans une mémoire située dans l'unité de traitement électronique ou hors de celle-ci, ou à un 20 transfert entre deux processeurs de l'unité de traitement électronique. A l'étape ai), le fait de mesurer ladite durée de transfert pour plusieurs tailles mémoire de la donnée transférée permet de mettre en évidence d'éventuels effets de saturation de la mémoire ou de ralentissement du transfert, en fonction de la taille de la donnée transférée. 25 Pour mettre en oeuvre l'étape a2), on peut : - coder la séquence d'instructions élémentaires de calcul à exécuter, sous la forme d'un code source, par exemple au moyen de structures de programmation de type boucles (boucle « for », par exemple), puis - compiler ce code source au moyen d'un compilateur associé à l'unité 30 de traitement électronique. A l'étape a2), le fait de mesurer la durée d'exécution nécessaire pour exécuter plusieurs instructions élémentaires, et non une seule, permet alors de tenir compte de l'influence du compilateur sur les performances temporelles de cette unité de traitement électronique. 3063360 3 Le coeur du processeur mentionné ci-dessus correspond à un groupe de circuits électroniques du processeur implémentant l'ensemble des fonctionnalités nécessaires à l'exécution d'un programme informatique. Pour obtenir des vitesses de traitement élevées, il est connu d'employer 5 une unité de traitement électronique dont le processeur comprend au moins un autre coeur (afin d'exécuter plusieurs instructions en parallèle, d'un point de vue temporel). Généralement, une telle unité de traitement comprend également une mémoire, par exemple une mémoire vive (c'est-à-dire une mémoire à accès direct, 10 ou RAM, selon l'acronyme de l'expression anglo-saxon de « Random Access Memory »), constituant une ressource matérielle commune aux deux coeurs mentionnés ci-dessus. Dans un mode de réalisation du procédé selon l'invention, adapté à caractériser l'unité de traitement électronique qui vient d'être décrite, il est prévu 15 en outre : une étape a2') de mesure d'une autre durée d'exécution nécessaire pour exécuter successivement, au moyen dudit autre coeur dudit processeur, plusieurs instructions élémentaires de calcul, les instructions élémentaires de calcul exécutées à l'étape a2) et à 20 l'étape a2') portant sur des données lues dans ladite mémoire, les étapes a2) et a2') étant au moins en partie exécutées simultanément, l'étape b) étant réalisée en fonction de chaque durée d'exécution mesurée à l'étape a2'). Exécuter ainsi les étapes a2) et a2') simultanément (en parallèle l'une de 25 l'autre) permet avantageusement de tester si le partage, c'est-à-dire la mise en concurrence de l'accès à ladite mémoire, entre les deux coeurs dudit processeur, ralenti l'exécution desdites d'instructions élémentaires de calcul. D'autres caractéristiques non limitatives et avantageuses du procédé de caractérisation conforme à l'invention sont les suivantes : 30 - le procédé comprend une mesure d'une durée d'instruction, nécessaire pour exécuter, au moyen dudit coeur dudit processeur, une première séquence d'instructions élémentaires de calcul ainsi qu'une deuxième séquence d'instructions élémentaires de calcul, la première séquence et la deuxième séquence étant au moins en partie exécutées simultanément par ledit coeur dudit 3063360 4 processeur, l'étape b) étant réalisée en fonction de ladite durée d'instruction mesurée ; - l'étape a2) est exécutée plusieurs fois successivement, en faisant varier à chaque fois le nombre d'instructions élémentaires de calcul exécutées, lesdites 5 instructions élémentaires de calcul portant sur une même donnée ; - au cours dudit procédé, lesdites durées de transfert mesurées à l'étape al ) sont rassemblées sous la forme d'une table de correspondance indiquant, pour chacune desdites tailles mémoire, la valeur de la durée de transfert correspondante ; 10 - l'unité de traitement électronique comprenant ladite mémoire et ledit processeur comprenant ledit autre coeur, le procédé comprend en outre une mesure d'une durée de mémorisation nécessaire pour que les deux coeurs exécutent, simultanément, une instruction élémentaire de transfert d'une donnée, lesdites données transférées provenant de, transitant par, ou aboutissant à ladite 15 mémoire, l'étape b) étant réalisée en fonction de chaque durée de mémorisation mesurée ; - le procédé comprend en outre une étape a2") de mesure d'une durée de traitement nécessaire pour exécuter, par ledit processeur, une fonction de traitement d'une donnée, ladite fonction de traitement comprenant une pluralité 20 d'instructions élémentaires, l'étape a2") étant exécutée plusieurs fois successivement pour une pluralité de données à traiter de tailles mémoire différentes, l'étape b) étant réalisée en fonction de chaque durée de traitement mesurée l'étape a2") ; - à l'étape b), ledit critère est un temps d'exécution d'un algorithme par 25 ladite unité de traitement électronique ; - l'unité de traitement électronique comprenant au moins un autre processeur et ledit algorithme étant scindé sous la forme d'une pluralité de processus élémentaires représentés chacun par un élément de code, l'étape b) comprend les étapes suivantes : 30 b0) attribuer chacun desdits éléments de code, à exécuter, à l'un desdits processeurs, bl ) pour chacun desdits éléments de code, déterminer une durée globale d'exécution de cet élément de code par le processeur correspondant, sur la base au moins des durées d'exécution et de transfert mesurées aux étapes al) 3063360 5 et a2), et b2) déterminer ledit temps d'exécution sur la base des durées globales d'exécution déterminées à l'étape bl ). On peut prévoir également que l'étape b) est exécutée au moins deux 5 fois, en modifiant entre chaque exécution le mode de répartition selon lequel lesdits éléments de code sont attribués auxdits processeurs. Ainsi, on peut déterminer le temps d'exécution de l'algorithme pour plusieurs modes de répartitions différents, sans avoir pour cela à effectuer de nouvelles mesures de durées d'exécution et de transfert. 10 Cette disposition est particulièrement intéressante dans le cas d'un algorithme comprenant des opérations de traitement d'images (tel qu'un algorithme d'aide à la conduite), exécuté en parallèle au moyen de plusieurs processeurs, car dans ce cas de très nombreux de modes de répartition des éléments de code de l'algorithme peuvent en général être envisagés. 15 Eviter d'effectuer de nouvelles mesures pour chacun de ces nombreux modes de répartition permet de les caractériser rapidement. La détermination du temps d'exécution de l'algorithme au moyen de ce procédé, pour différents modes de répartition, est en particulier beaucoup plus rapide qu'une détermination qui serait basée, pour chaque mode de répartition, 20 sur une mesure du temps d'exécution de chaque élément de code par le processeur auquel est attribué cet élément de code (dans cette dernière approche, une série de mesures devrait être réalisée à nouveau pour chaque mode de réalisation). Le procédé de caractérisation décrit ci-dessus peut comprendre en outre 25 une étape b') de détermination du temps d'exécution d'un autre algorithme, sur la base des durées d'exécution et de transfert mesurées aux étapes al) et a2). Le temps d'exécution de cet autre algorithme est alors déterminé sans avoir pour cela à effectuer de nouvelles mesures de durées d'exécution et de transfert, ce qui rend la détermination du temps d'exécution de cet autre 30 algorithme avantageusement rapide. 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. 3063360 6 Sur les dessins annexés : - la figure 1 représente schématiquement une unité de traitement électronique, - la figure 2 représente schématiquement des étapes d'un procédé de 5 caractérisation d'une unité de traitement telle que celle de la figure 1, et - la figure 3 représente schématiquement l'évolution d'une durée nécessaire pour exécuter une séquence de plusieurs instructions élémentaires de calcul en fonction d'une intensité arithmétique correspondant à cette séquence d'instructions élémentaires. 10 Sur la figure 1, on a représenté schématiquement une unité de traitement électronique adaptée à mettre en oeuvre un algorithme, notamment un algorithme de traitement d'images pour un dispositif d'aide à la conduite embarqué dans un véhicule automobile. Cette unité de traitement électronique, désignée plus simplement dans la 15 suite par l'expression « unité de traitement », comprend au moins un processeur, ici plusieurs, adaptés chacun à opérer certaines instructions de l'algorithme portant sur des données (numériques). Telle que représentée sur la figure 1, l'unité de traitement 1 comprend plus précisément : 20 - un premier processeur pi et un deuxième processeur p2, - au moins une mémoire M électronique, par exemple une mémoire vive, adaptée à stocker et restituer des données, et avec laquelle les processeurs pi et P2 de l'unité de traitement 1 peuvent échanger des données, et - un bus permettant à ces processeurs pi, p2 d'échanger des données 25 avec d'autres composants. Ici, le bus relie, entre eux, le premier processeur pi, le deuxième processeur p2, ladite mémoire M, et une mémoire supplémentaire 2 (telle qu'une mémoire vive). Cette mémoire supplémentaire 2 est située ici hors de l'unité de traitement 1. En variante, cette mémoire supplémentaire pourrait toutefois être 30 intégrée à l'unité de traitement. Chaque processeur pi, p2 de l'unité de traitement 1 comprend au moins un coeur, ici plusieurs. Tels que représentés sur la figure 1, chacun de ces processeurs comprend ici un premier coeur Col et un deuxième coeur Co2. 3063360 7 Chacun de ces coeurs Col, Co2 comprend une pluralité d'unités élémentaires de calcul C1, C2, C3, ... adaptées à exécuter certaines catégories d'instructions spécifiques, ainsi qu'une unité de transfert de données UT adaptée à traiter des instructions de transfert de données telles que des instructions de 5 lecture ou d'écriture dans la mémoire M, ou dans la mémoire supplémentaire 2. Ici, chaque processeur pi, p2 comprend notamment : - une unité de logique arithmétique Ci (ou ALU selon l'acronyme anglais de « Arithmetic Logic Unit ») adaptée à opérer des instructions de calcul simples telles que des additions, des instructions de décalage de bits, ou encore des 10 instructions de logique simple de type ET/ OU; - un multiplicateur binaire C2 (OU BMU selon l'acronyme anglais de « Binary Multiplier Unit ») adapté à multiplier des données numériques entières ; et - une unité de calcul sur données flottantes C3 (OU FPU selon l'acronyme 15 anglais « Floating Point Instructions ») adaptée à opérer des instructions de calcul sur des données numériques à virgule flottante. L'unité de traitement 1 est ici intégrée sur une même puce électronique, et on parle alors de système sur puce (ou SoC, selon l'acronyme anglo-saxon de « System-on-Chip »). 20 La figure 2 représente les principales étapes d'un procédé de caractérisation de l'unité de traitement 1 décrite ci-dessus. De manière remarquable, ce procédé comprend les étapes suivantes : al ) pour au moins deux données de tailles mémoire différentes, mesure d'une durée de transfert tF nécessaire pour exécuter, au moyen de l'un des coeurs 25 de l'un desdits processeurs, une instruction élémentaire de transfert de chaque donnée, a2) mesure d'une durée d'exécution tE nécessaire pour exécuter successivement, au moyen de ce même coeur, plusieurs instructions élémentaires de calcul, et 30 b) détermination d'un critère caractérisant ladite unité de traitement électronique, en fonction de chaque durée de transfert tF mesurée à l'étape al ) et de chaque durée d'exécution tE mesurée à l'étape a2). A l'étape ai), l'instruction élémentaire de transfert de ladite donnée peut correspondre notamment à une lecture ou écriture de la donnée dans la mémoire 3063360 8 M de l'unité de traitement 1, ou dans la mémoire supplémentaire 2, ou à un transfert entre le premier et le deuxième processeur de l'unité de traitement. Mesurer ladite durée de transfert tF pour plusieurs tailles mémoire de la donnée transférée permet avantageusement de mettre en évidence d'éventuels 5 effets de saturation de la mémoire M, ou un ralentissement du transfert du fait par exemple par la bande passante limitée de la mémoire M ou du bus qui la relie à la mémoire supplémentaire 2. A l'étape a2), la séquence d'instructions élémentaires de calcul à exécuter est codée, sous la forme d'un code source, par exemple au moyen de 10 structures de programmation de type boucles (boucle « for », par exemple). Ce code source est ensuite compilé au moyen d'un compilateur associé à l'unité de traitement électronique. Ce compilateur peut optimiser l'exécution de cette séquence d'instructions élémentaires, notamment en défaisant des boucles de calcul, ou par auto-vectorisation si cela s'avère avantageux en termes de 15 temps de calcul et de nombre d'instructions à opérer par le processeur. Ainsi, à l'étape a2), le fait de mesurer la durée d'exécution tE nécessaire pour exécuter plusieurs instructions élémentaires, et non une seule, permet de tenir compte de l'influence du compilateur sur les performances temporelles de cette unité de traitement électronique. 20 Le critère déterminé à l'étape b) fournit donc une image précise des performances temporelles de l'unité de traitement, tenant compte de l'interaction éventuelle entre différents composants de celle-ci (processeur, mémoire, bus). Ce critère, dont la détermination sera décrite en détail plus bas, peut notamment être représentatif : 25 - des durées d'exécution tE et de transfert tF précitées, et/ou - d'un temps d'exécution d'un algorithme par l'unité de traitement 1, et/ou - d'un niveau de performance, ou d'un niveau de pénalisation, traduisant l'aptitude de l'unité de traitement 1 à exécuter cet algorithme en respectant des contraintes temporelles données (aptitude à exécuter l'algorithme « en temps 30 réel » notamment). Le procédé comprend ici, en plus des étapes al ) et a2), d'autres étapes de mesure dont les résultats sont pris en compte à l'étape b) pour déterminer le critère caractérisant l'unité de traitement. Ces étapes de mesure, regroupées ici dans une étape a), seront décrites 3063360 9 dans un premier temps, l'étape b) étant décrite ensuite. étape a) : mesures Les étapes de mesure que comprend l'étape a) sont réparties ici en trois groupes B11, B12 et B13 correspondant respectivement à : 5 - des tests « bas niveau », comprenant les étapes al ) et a2), qui impliquent des exécutions d'instructions élémentaires par l'un des coeurs de l'un desdits processeurs seulement ; - des tests « de niveau intermédiaire », impliquant notamment des exécutions d'instructions élémentaires simultanément par le premier coeur et par 10 le deuxième coeur de l'un des processeurs, et - des tests « haut niveau », impliquant l'exécution d'au moins une fonction de traitement de donnée élaborée, par l'unité de traitement, ladite fonction de traitement comprenant plusieurs instructions élémentaires. En pratique, pour réaliser ces tests, l'unité de traitement 1 est par 15 exemple reliée, au moyen d'interfaces adaptées, à un ordinateur. Cet ordinateur réalise alors les opérations de compilation précitées, et pilote l'unité de traitement pour qu'elle exécute l'ensemble d'instructions élémentaires de calcul prévues à l'étape a2), et l'instruction élémentaire de transfert prévue à l'étape ai). Cet ordinateur sert d'interface à un utilisateur pour tester ladite unité de traitement 1. 20 Préférentiellement, cet ordinateur réalise l'ensemble de ces tests de manière automatisée, en exécutant un programme prévu à cette fin. Tests « bas niveau » (bloc B11 de la figure 2) Comme déjà indiqué, ces test bas niveau comprennent notamment les étapes al ) et a2). 25 A l'étape ai), l'instruction élémentaire de transfert de données est exécutée plus précisément par l'unité de transfert UT du premier, ou du deuxième coeur de l'un des processeurs pi, p2 de l'unité de traitement. L'étape al ) permet ainsi de déterminer un débit de lecture ou d'écriture de données de cette unité de transfert UT. On notera toutefois, comme indiqué précédemment, que les durées 30 de transfert tF mesurées à l'étape al ) dépendent non seulement des capacités de cette unité de transfert, mais aussi de la bande passante de la mémoire M et/ou du bus de l'unité de traitement 1. L'instruction élémentaire de transfert de données exécutée à l'étape ai), corresponde ici, plus précisément, à l'une des opérations suivantes : 3063360 10 - une opération de type lecture-lecture, comprenant deux lectures consécutives d'une même donnée stockée dans la mémoire M, ou dans la mémoire supplémentaire 2, - une opération de type lecture-écriture (ou écriture-lecture), comprenant 5 une lecture d'une donnée stockée au niveau d'une adresse mémoire donnée de la mémoire M, ou de la mémoire supplémentaire 2, puis une écriture d'une donnée au niveau de cette même adresse mémoire, - une opération de type écriture-écriture, comprenant deux écritures consécutives au niveau d'un même adresse mémoire de la mémoire M, ou de la 10 mémoire supplémentaire 2, - une opération de copie, comprenant une lecture d'une donnée stockée au niveau d'une première adresse mémoire de la mémoire M, ou de la mémoire supplémentaire 2, puis une écriture de cette donnée au niveau d'une deuxième adresse mémoire de la mémoire M, ou de la mémoire supplémentaire 2. 15 Préférentiellement, l'étape al ) est exécutée plusieurs fois, pour chacune des opérations listées ci-dessus. La taille mémoire de la donnée lue, écrite ou transférée lors de ces opérations peut, en pratique, être comprise par exemple entre 100 kilo-octets, et 10 Méga-octets, et correspond typiquement à la taille mémoire d'une image. 20 Par ailleurs, à l'étape a), en plus de mesurer la durée de transfert tF précitée pour différentes tailles mémoire des données transférées, il est prévu de mesurer une durée de transfert cumulée, nécessaire pour exécuter une pluralité de telles instructions élémentaires de transfert. Cette durée de transfert cumulée est mesurée plusieurs fois, en faisant 25 varier à chaque fois le nombre d'instructions élémentaires de transfert exécutées et/ou le type d'opération concerné. Cela permet de tester l'influence des propriétés de la mémoire de type cache (ou des mémoires de type cache) de chaque processeur sur les débits de lecture et d'écriture précités. Cette disposition est intéressante en pratique car le 30 transit des données par cette mémoire de type cache peut avoir un effet notable sur les débits de lecture et d'écriture mentionné ci-dessus. Ainsi, par exemple, la durée nécessaire pour exécuter une opération d'écriture puis une opération de lecture peut s'avérer beaucoup plus longue que la durée nécessaire pour exécuter deux opérations de lecture consécutives, ce que le test précité permet de détecter. 3063360 11 Au cours du procédé, on peut prévoir, comme ici, de rassembler l'ensemble des durées de transfert tF mesurées à l'étape al ) sous la forme d'une table de correspondance indiquant, pour chacune desdites tailles mémoire, et pour chacun des types d'opération mentionnés ci-dessus, la valeur de la durée de 5 transfert tF correspondante. Disposer d'une telle table de correspondance facilite la mise en oeuvre de l'étape b) de détermination du critère caractérisant l'unité de traitement. Pour ce qui est des instructions élémentaires de calcul exécutées à l'étape a2), elles peuvent correspondre notamment à une addition, à une 10 soustraction, ou encore à une multiplication de deux données numériques. Chacune de ces données numériques peut correspondre par exemple à un nombre entier représenté par 8, 16 ou 32 bits (c'est-à-dire du type « int8 », « int16 », ou « int32 »), ou à un nombre représenté, en virgule flottante, par 32 ou 64 bits (c'est-à-dire du type « float32 », et, respectivement « float64 »). 15 Une telle instruction élémentaire de calcul peut correspondre également à une opération de manipulation, bit à bit, d'une telle donnée numérique (ou « bitwise operation » en anglais). Préférentiellement, l'étape a2) est exécutée plusieurs fois, pour chacune des opérations, et pour chaque type de données mentionnés ci-dessus. 20 Chacune de ces instructions élémentaires de calcul est exécutée par l'une des unités élémentaires de calcul Ci, C2, C3, ... du premier, ou du deuxième coeurs Coi, Co2 de l'un des premier et deuxième processeurs pi, p2. Ainsi, une instruction correspondant à une addition de deux nombres entiers, par exemple, est exécutée par l'unité de logique arithmétique Ci, tandis qu'une multiplication 25 entre deux nombres en représentation à virgule flottante est exécutée par l'unité de calcul sur données flottantes C3. La mesure réalisée à l'étape a2) permet ainsi de déterminer une cadence de traitement (exprimée par exemple en nombre d'instructions exécutable par période d'horloge) de l'une de ces unités élémentaires de calcul Ci, C2, C3, ... (ou 30 de chacun des unités élémentaires de calcul si l'étape a2) est répétée pour chacune des opérations précitées). On notera que la durée d'exécution tE ainsi mesurée dépend également des capacités de l'unité de transfert UT et/ou de la mémoire M, puisque les opérations de calculs mentionnées ci-dessus nécessitent chacune, préalablement, 3063360 12 de lire au moins une donnée numérique sur laquelle porte l'opération de calcul, puis éventuellement d'écrire le résultat de l'opération dans la mémoire M, ou dans la mémoire supplémentaire 2. Pour pouvoir distinguer, dans cette durée d'exécution tE, un temps 5 correspondant aux opérations de calcul en elles-mêmes, d'un temps correspondant à des opérations de lecture ou d'écriture, il est prévu ici d'exécuter l'étape a2) plusieurs fois successivement, en faisant varier à chaque fois le nombre d'instructions élémentaires de calcul exécutées, lesdites instructions élémentaires de calcul portant sur une même donnée. 10 Cela permet de faire varier une donnée appelée « intensité arithmétique IA » est égale, ou tout au moins proportionnelle : - au nombre de ces instructions élémentaires de calcul, - divisé par la quantité de données lues et écrites, dans la mémoire M ou dans la mémoire supplémentaire 2, nécessaires pour pouvoir exécuter l'ensemble 15 desdites instructions élémentaires de calcul. Cette quantité de données lues et écrites, qui correspond à une taille mémoire, ou à une somme de tailles mémoire, peut par exemple s'exprimer sous la forme d'un nombre d'octets lus ou écrits. Comme les instructions élémentaires de calcul exécutées à l'étape a2) portent sur la même donnée, en augmentant le nombre de ces instructions, on 20 augmente l'intensité arithmétique IA associée à l'ensemble d'instructions élémentaires de calcul de l'étape a2). La figure 3 représente schématiquement, pour un exemple d'unité de traitement, la durée d'exécution tE mesurée ainsi, exprimée en unités arbitraires, en fonction de l'intensité arithmétique IA. 25 Comme illustré par cette figure, lorsque l'intensité arithmétique IA est petite, la durée d'exécution tE est approximativement indépendante du nombre d'instructions de calcul, ce qui indique qu'elle est limitée principalement par le temps correspondant à des opérations de lecture ou d'écriture. En revanche, lorsque l'intensité arithmétique IA est grande, la durée d'exécution tE est 30 approximativement proportionnelle à l'intensité arithmétique IA, ce qui indique que la durée d'exécution est alors limitée principalement par le temps correspondant à aux opérations de calcul en elles-mêmes. Une telle série de mesures de la durée d'exécution tE, en fonction de l'intensité arithmétique IA fournit donc, comme illustré par les observations ci- 3063360 13 dessus, de précieuses informations quant aux facteurs limitant les cadences des unités de calcul élémentaires des coeurs des processeurs de l'unité de traitement. Tests de « niveau intermédiaire » (bloc BI2 de la figure 2) Pour tester d'éventuels effets de concurrence entre le premier coeur Col 5 et le deuxième coeur Co2 du premier processeur pi (ou entre le premier coeur Col et le deuxième coeur Co2 du deuxième processeur p2) pour l'accès à la ressource commune que constitue pour eux la mémoire M, ou la mémoire supplémentaire 2, il est prévu ici de réaliser un premier et un deuxième tests Ti et T2 de « niveau intermédiaire » (figure 2). 10 Au cours du premier test Ti une étape a2') de mesure d'une autre durée d'exécution t, nécessaire pour exécuter successivement, au moyen du deuxième coeur Co2 du premier processeur pi, plusieurs instructions élémentaires de calcul, est exécutée simultanément à l'étape a2). La durée d'exécution tE, mesurée lors de cette exécution de l'étape a2), 15 correspond plus précisément à la durée nécessaire pour exécuter successivement, au moyen du premier coeur Col du premier processeur pi, plusieurs instructions élémentaires de calcul. Les instructions élémentaires de calcul exécutées à l'étape a2) et à l'étape a2') portent sur des données lues dans la mémoire M, ou, en variante, 20 dans la mémoire supplémentaire 2. La valeur de la durée d'exécution tE mesurée au cours de ce test peut alors être comparée à celle mesurée lors des tests « bas niveau », pour lesquels seul l'un des coeurs du premier processeur pi exécute des instructions. Cela permet avantageusement de détecter et caractériser une éventuelle diminution 25 des cadences d'exécution du premier coeur Col lorsque le deuxième coeur Co2 accède lui aussi à la mémoire M, ou à la mémoire supplémentaire 2. De manière comparable, la valeur de ladite autre durée d'exécution tE, mesurée au cours de ce test peut être comparée à celle mesurée lors des tests « bas niveau », pour caractériser l'influence éventuelle d'une telle mise en 30 concurrence sur le fonctionnement du deuxième coeur Co2 du premier processeur Pi. Au cours du deuxième test T2, il est prévu de mesurer une durée de mémorisation tm nécessaire pour que le premier coeur Col et le deuxième coeur Co2 de l'un des processeurs, pi ou pz de l'unité de traitement exécutent chacun, 3063360 14 simultanément, une instruction élémentaire de transfert d'une donnée, lesdites données transférées provenant de, transitant par, ou aboutissant à la mémoire M, ou, en variante, à la mémoire supplémentaire 2. La durée de mémorisation tm ainsi mesurée peut alors être comparée à 5 l'une des durées de transfert tF mesurées lors des tests « bas niveau », afin, à nouveau, de tester l'influence éventuelle de la mise en concurrence des premier et deuxièmes coeurs Col et 002 du processeur considéré. Par ailleurs, l'un au moins des premier et deuxième coeurs Col, Co2 du premier processeur pi (ou du deuxième processeur 132), par exemple le premier 10 coeur Col, est adapté ici à exécuter une première séquence d'instructions élémentaires de calcul et une deuxième séquence d'instructions élémentaires de calcul, simultanément l'une de l'autre. Cette exécution simultanée est obtenue en faisant alternativement exécuter au coeur considéré dudit processeur une ou plusieurs instructions 15 élémentaires de la première séquence, et une ou plusieurs instructions élémentaires de la deuxième séquence, par une forme de multiplexage temporel parfois désigné par le terme anglo-saxon « time slicing » (découpage temporel). Aussi est-il prévu ici un troisième test T3 de « niveau intermédiaire », de mesure d'une durée d'instruction tl, nécessaire pour exécuter simultanément, au 20 moyen due coeur précité, la première séquence et la deuxième séquence d'instructions élémentaires. Cette durée d'instruction t1 peut alors être comparée à la durée d'exécution tE, nécessaire pour exécuter au moyen de ce même coeur , la première séquence, puis, ensuite seulement, la deuxième séquence. 25 Comparer ainsi les performances de ce coeur pour une exécution en parallèle (simultanée), et pour une exécution l'une après l'autre de ces deux séquences d'instructions élémentaires est particulièrement intéressant en vue d'une optimisation d'un temps d'exécution d'un algorithme donné au moyen de cette unité de traitement 1. 30 Tests « haut niveau » (bloc BI3 de la figure 2) Comme indiqué précédemment, les tests « haut niveau » impliquent l'exécution d'au moins une fonction de traitement de données élaborée par l'unité de traitement 1. Cette fonction de traitement peut correspondre notamment, comme c'est 3063360 15 le cas ici, à une fonction de filtrage (numérique) d'une donnée représentative d'une image, par exemple par calcul du gradient vertical ou horizontal de cette image, ou par application d'un filtre de Sobel, ou de tout autre type de filtre. Lors de ces tests « haut niveau », il est prévu d'exécuter plusieurs fois 5 successivement une étape a2") de mesure d'une durée de traitement tT nécessaire pour exécuter, par ledit processeur, ladite fonction de traitement, pour une pluralité respective de données à traiter de tailles mémoire différentes. Un tel test « haut niveau » est intéressant notamment lorsque ladite fonction est disponible seulement sous la forme d'un code exécutable, c'est-à-dire 10 en langage machine (ou, autrement formulé, sous la forme d'une suite de données binaires représentant les signaux électriques destinés à être reçus par le premier ou deuxième processeur). En effet, dans ce cas, les mesures réalisées à l'étape a2") permettent de prévoir des durées d'exécution de ladite fonction, pour une taille quelconque de 15 donnée à traiter, sans pour autant que les instructions élémentaires composant la fonction ne soient connues. Ici, il est prévu plus particulièrement d'exécuter plusieurs fois successivement l'étape a2"), non seulement pour des largeurs d'images différentes (en pixels), mais aussi pour des hauteurs d'images différentes (en 20 pixels), ces deux grandeurs pouvant influencer de manière nettement différente ladite durée de traitement tT. étape b) : détermination du critère caractérisant l'unité de traitement Dans l'exemple de procédé décrit ici, le critère caractérisant l'unité de traitement est un temps d'exécution tA d'un algorithme par l'unité de traitement 1, 25 déterminé notamment, en fonction des durées d'exécution tE et de transfert tT mesurées à l'étape a). Cet algorithme est formé d'une pluralité de processus élémentaires. Un tel processus élémentaire peut correspondre à une correction de distorsion de l'image, à un calcul de gradient vertical ou horizontal, à un calcul de gradient 30 d'orientation, ou encore à une classification d'éléments remarquables présents dans une l'image, identifiés sur la base d'une version filtrée de l'image. Chacun des processus élémentaires est représenté, c'est-à-dire codé, par un élément de code k1, k2, , k1, pour pouvoir être exécuté par le premier ou deuxième processeur al, a2 de l'unité de traitement 1. Chaque élément de code ki 3063360 16 est formé d'une pluralité d'instructions élémentaires, de calcul et/ou de transfert. Chaque élément de code ki peut notamment être écrit en langage C, en pseudo-code. Les parties de code ki sont parfois désignées dans la littérature spécialisée par le terme anglo-saxon « kernels », c'est-à-dire « noyaux ». 5 Comme représenté sur la figure 2, l'étape b) comprend plus précisément, ici, les étapes suivantes : b0) attribuer chacun desdits éléments de code k1, k2, ' REVENDICATIONS1. Procédé de caractérisation d'une unité de traitement électronique (1) comprenant au moins un processeur (pi), ledit processeur comportant au moins un coeur (Coi), le procédé étant caractérisé en ce qu'il comprend les étapes suivantes : al ) pour au moins deux données de tailles mémoire différentes, mesure d'une durée de transfert (tF) nécessaire pour exécuter, au moyen du coeur (Coi) dudit processeur (pi), une instruction élémentaire de transfert de chaque donnée, a2) mesure d'une durée d'exécution (tE) nécessaire pour exécuter successivement, au moyen du coeur (Coi) dudit processeur (pi), plusieurs instructions élémentaires de calcul, et b) détermination d'un critère caractérisant ladite unité de traitement électronique (1), en fonction de chaque durée de transfert (tF) mesurée à l'étape al ) et de chaque durée d'exécution (tE) mesurée à l'étape a2). 2. Procédé de caractérisation selon la revendication 1 dans lequel, l'unité de traitement électronique (1) comprenant une mémoire (M) et ledit processeur (pi) comprenant au moins un autre coeur (Co2), il est prévu en outre : une étape a2') de mesure d'une autre durée d'exécution (tE) nécessaire 20 pour exécuter successivement, au moyen dudit autre coeur (Co2) dudit processeur (pi), plusieurs instructions élémentaires de calcul, les instructions élémentaires de calcul exécutées à l'étape a2) et à l'étape a2') portant sur des données lues dans ladite mémoire (M), les étapes a2) et a2') étant au moins en partie exécutées simultanément, 25 et dans lequel l'étape b) est réalisée en fonction de chaque durée d'exécution (tE) mesurée à l'étape a2'). 3. Procédé de caractérisation selon l'une des revendications 1 et 2, dans lequel il est prévu en outre de 30 mesurer une durée d'instruction (t1) nécessaire pour exécuter, au moyen dudit coeur (Coi) dudit processeur (pi), une première séquence d'instructions élémentaires de calcul ainsi qu'une deuxième séquence d'instructions élémentaires de calcul, la première séquence et la deuxième séquence étant au moins en partie 3063360 exécutées simultanément par ledit coeur (Col ), et dans lequel l'étape b) est réalisée en fonction de ladite durée d'instruction (ti) mesurée. 4. Procédé de caractérisation selon l'une des revendications 1 à 3, dans 5 lequel l'étape a2) est exécutée plusieurs fois successivement, en faisant varier à chaque fois le nombre d'instructions élémentaires de calcul exécutées, lesdites instructions élémentaires de calcul portant sur une même donnée. 5. Procédé de caractérisation selon l'une des revendications 1 à 4, dans lequel lesdites durées de transfert (tF) mesurées à l'étape al ) sont rassemblées 10 sous la forme d'une table de correspondance indiquant, pour chacune desdites tailles mémoire, la valeur de la durée de transfert (tF) correspondante. 6. Procédé de caractérisation selon l'une des revendications 1 à 5 dans lequel, l'unité de traitement électronique (1) comprenant une mémoire (M) et ledit processeur (pi) comprenant au moins un autre coeur (Co2), il est prévu en 15 outre une mesure d'une durée de mémorisation (tm) nécessaire pour que les deux coeurs (Coi, Co2) exécutent, simultanément, une instruction élémentaire de transfert d'une donnée, lesdites données transférées provenant de, transitant par, ou aboutissant à ladite mémoire (M), et dans lequel l'étape b) est réalisée en fonction de chaque durée de 20 mémorisation (tm) mesurée. 7. Procédé de caractérisation selon l'une des revendications 1 à 6, comprenant en outre une étape a2") de mesure d'une durée de traitement (tT) nécessaire pour exécuter, par ledit processeur (pi), une fonction de traitement d'une donnée, ladite fonction de traitement comprenant une pluralité d'instructions élémentaires, l'étape a2") étant exécutée plusieurs fois successivement pour une pluralité de données à traiter de tailles mémoire différentes, et dans lequel l'étape b) est réalisée en fonction de chaque durée de traitement (tT) mesurée l'étape a2"). 8. Procédé de caractérisation selon l'une des revendications 1 à 7, dans lequel à l'étape b), ledit critère est un temps d'exécution (tA) d'un algorithme par ladite unité de traitement électronique (1). 9. Procédé de caractérisation selon la revendication 8 dans lequel, l'unité de traitement électronique comprenant au moins un autre processeur (p2) et ledit 3063360 21 algorithme étant scindé sous la forme d'une pluralité de processus élémentaires représentés chacun par un élément de code (ki, k2, ki), l'étape b) comprend les étapes suivantes : b0) attribuer chacun desdits éléments de code, à exécuter, à l'un desdits 5 processeurs (pi, p2), tri ) pour chacun desdits éléments de code, déterminer une durée globale d'exécution (Ti, T2, ..., -ci) de cet élément de code (ki, k2, ki) par le processeur (pi, p2) correspondant, sur la base au moins des durées d'exécution (tE) et de transfert (tF) mesurées aux étapes al ) et a2), et 10 b2) déterminer ledit temps d'exécution (tA) sur la base des durées globales d'exécution (Ti, T2, ... , t ) déterminées à l'étape bl ). 10. Procédé de caractérisation selon la revendication 9, dans lequel l'étape b) est exécutée au moins deux fois, en modifiant entre chaque exécution le mode de répartition (M1) selon lequel lesdits éléments de code sont attribués 15 auxdits processeurs. 11. Procédé de caractérisation selon l'une des revendications 8 à 10, dans lequel il est prévu en outre une étape b') de détermination du temps d'exécution (tA,) d'un autre algorithme, sur la base des durées d'exécution et de transfert mesurées aux étapes al ) et a2).