FR 3056786 A1 20180330 FR 1659367 A 20160929 PROCEDE DE GESTION DES TACHES DE CALCUL SUR UN PROCESSEUR MULTI-COEURS FONCTIONNELLEMENT ASYMETRIQUE L'invention porte sur un procédé mis en oeuvre par ordinateur pour la gestion de tâches de calcul sur un processeur multi-coeurs 5 fonctionnellement asymétrique. Elle porte également sur un produit programme d'ordinateur, un processeur multi-coeurs et un système informatique pour la mise en oeuvre d'un tel procédé. Un processeur multi-coeurs peut comprendre une ou plusieurs extensions matérielles, destinées à accélérer des parties de codes logiciels 10 spécifiques. Par exemple, ces extensions matérielles peuvent comprendre des circuits pour du calcul en virgule flottante ou du calcul vectoriel. Un processeur multi-coeurs est dit «fonctionnellement asymétrique » quand tous les coeurs ne possèdent pas les mêmes extensions matérielles, et par conséquent certaines extensions font défaut à certains 15 coeurs de processeurs. Ainsi, un processeur fonctionnellement asymétrique se caractérise par une distribution (ou association) inégale des extensions aux coeurs de processeurs. Il existe un jeu d'instructions commun à tous les coeurs et des jeux d'instructions spécifiques associés à des extensions matérielles respectives, présentes dans certains coeurs. En faisant l'union de 20 tous les jeux d'instructions des coeurs du processeur, toutes les instructions requises par l'exécution d'une tâche de calcul d'une application sont représentées. La gestion d'un processeur multi-coeurs fonctionnellement asymétrique pose plusieurs problèmes techniques, et notamment celui de 25 gérer efficacement le placement des tâches de calcul sur les différents coeurs de processeur. Les applications logicielles utilisent ces extensions matérielles d'une manière dynamique, c'est-à-dire qui varie au cours du temps. Pour une même application, certaines phases de calcul vont utiliser presque à pleine 30 charge une extension donnée (par exemple des calculs sur des données de type virgule flottante) tandis que d'autres phases de calcul l'utiliseront peu voire pas du tout (par exemple des calculs sur des données de type entier). 3056 786 2 Utiliser une extension n'est pas toujours efficace en termes de performance ou d'énergie (« qualité » d'utilisation). Les travaux publiés concernant le placement de tâches de calcul (ordonnancement) sur des processeurs multi-coeurs fonctionnellement 5 asymétriques ne décrivent pas de solutions pleinement satisfaisantes. L'article de H. Shen et F. Pétrot, « Novel Task Migration Framework on Configurable Heterogeneous MPSoC Platforms », Proceedings of the 2009 Asia and South Pacific Design Automation Conference, Piscataway, NJ, USA, 2009, pp. 733-738, décrit une technique 10 d'ordonnancement hors ligne dite « par affinité », qui consiste à figer l'allocation d'une tâche à un processeur (ou à un type de processeur) avant l'exécution suite à une analyse hors ligne de l'application (faite à la main, par des outils d'analyse de code ou par le compilateur) et l'ordonnanceur en ligne suit exactement ces directives. L'inconvénient principal de cette approche est 15 qu'aucune autre optimisation n'est permise en ligne lorsque les applications sont dynamiques et leur ratio d'utilisation des ressources varie avec le temps et les données. L'article de G. Georgakoudis, D. S. Nikolopoulos, H. Vandierendonck, et S. Lalis, « Fast Dynamic Binary Rewriting for flexible 20 thread migration on shared-ISA heterogeneous MPSoCs », 2014 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS XIV), 2014, pp. 156-163, décrit une technique - dite de réécriture binaire dynamique - qui procède à une réécriture sur faute (c'est-à-dire quand une instruction spécialisée est chargée 25 par un coeur ne la supportant pas) par émulation des instructions non supportées. C'est une technique flexible et qui peut être performante, associée à un ordonnanceur dynamique intelligent. Toutefois, les coûts de réécriture et d'émulation peuvent s'avérer très importants. L'article de T. Li, P. Brett, R. Knauerhase, D. Koufaty, D. 30 Reddy et S. Hahn, « Operating system support for overlapping-ISA heterogeneous multi-core architectures », 2010 IEEE 16th International Symposium on High Performance Computer Architecture (HPCA), 2010, pp. 3056786 3 1-12 décrit une technique dite de migration sur faute. Elle consiste à migrer l'exécution d'une tâche (à la granularité d'un quantum d'instructions), dès lors qu'une instruction spécialisée non-supportée par l'unité d'exécution actuelle est rencontrée, vers une ressource possédant l'extension matérielle correspondante. Son principal point faible est qu'elle peut provoquer des migrations intempestives et un déséquilibrage de charge entre coeurs de base et coeurs avec extension. La thèse de A. Aminot « Méthode dynamique pour améliorer le placement de tâches sur processeurs asymétriques en fonctionnalités » Université de Grenoble, France, 2015, décrit un procédé d'allocation dynamique des tâches de calcul dans lequel le choix du coeur sur lequel une tâche est exécutée est effectué à partir d'une estimation à la compilation du coût d'émulation de ladite tâche. Cette estimation est obtenue à partir de la mesure du nombre d'utilisation de différentes instructions spécialisées lors d'exécutions antérieures de la même tâche. Bien qu'intéressante dans son principe, cette technique n'est pas optimisée et nécessite aussi d'embarquer une version du binaire de la tâche par extension présente dans l'architecture ; en outre, elle ne permet pas d'assurer le respect de contraintes de qualité de service (QoS, de l'anglais « Quality of Service »). L'invention vise à surmonter, en tout ou au moins en partie, les inconvénients précités de l'art antérieur. Plus particulièrement elle vise à permettre à la fois une utilisation optimale des ressources de calcul (notamment en termes d'énergie) et le respect de contraintes de QoS. Pour ce faire, elle perfectionne l'approche proposée dans la thèse précitée de A. Aminot. Pour atteindre ce but, l'invention apporte plusieurs améliorations à l'art antérieur, pouvant être mises en oeuvre séparément ou en combinaison. En particulier : - Conformément à l'invention, les choix de gestion sont 3 0 effectués à des instants clés de l'exécution de chaque application, identifiés de manière dynamique au lieu d'être prédéfinis, permettant la garantie de QoS et minimisant l'énergie consommée. 3056786 4 - Dans certains modes de réalisation de l'invention, des moyens matériels spécifiques (compteurs...) sont prévus pour faciliter la détermination de ces instants clés. - Les choix de gestion sont effectués en prenant en compte 5 un « coût d'opportunité » en QoS et en énergie de chaque option d'exécution. Cela permet de quantifier exactement l'écart en termes de performance par rapport à une consigne de QoS minimale qu'on cherche à garantir. Une nouvelle méthode de calcul de ce coût d'opportunité est aussi proposée. - L'invention propose également, dans une première étape 10 de caractérisation, une méthode de sélection de différentes classes d'instructions selon leurs coûts d'émulation en termes de performance et d'énergie, permettant de minimiser l'erreur d'estimation du coût d'opportunité de chaque opportunités (ou « options ») de gestion. Un objet de l'invention est un procédé mis en oeuvre par 15 ordinateur pour la gestion d'une tâche de calcul sur un processeur multicoeurs fonctionnellement asymétrique, l'exécution de ladite tâche comprenant une succession de périodes applicatives, ledit processeur comprenant une pluralité de coeurs partageant des instructions dites basiques, au moins un dit coeur comprenant au moins une extension matérielle, ladite ou chaque 20 extension matérielle étant adaptée pour permettre l'exécution d'instructions, dites spécialisées, différentes desdites instructions basiques, chaque instruction spécialisée étant ainsi associée à une dite extension matérielle, le procédé comprenant les étapes suivantes : a) démarrer l'exécution de la tâche de calcul sur un coeur 25 dudit processeur ; b) effectuer, au cours de ladite exécution, un suivi d'un paramètre indicatif d'une qualité de service de la tâche de calcul, ainsi que d'au moins un nombre d'instructions spécialisées chargées par ledit coeur; c) sur la base dudit suivi, identifier des instants découpant 30 une période applicative de la tâche de calcul en un nombre prédéterminé de portions de telle façon que, au cours de chacune desdites portions, un 3056786 5 nombre sensiblement égal d'instructions spécialisées associées à une extension matérielle prédéfinie soient chargées par ledit coeur ; d) calculer, auxdits instants et en fonction dudit suivi, des coûts ou gains en qualité de service et en consommation énergétique 5 correspondant à différentes options de gestion de la tâche de calcul ; et e) effectuer un choix de gestion comprenant une décision de poursuivre l'exécution sur le même coeur du processeur ou sur un coeur différent en fonction des coûts ou gains ainsi calculés. Selon des modes de réalisation particuliers d'un tel procédé : 10 - Ladite étape c) peut comprendre la prévision du nombre d'instructions spécialisées associées à ladite extension matérielle chargées au cours de chaque portion d'une période applicative courante à partir du nombre de dites instructions spécialisées chargées lors de portions correspondantes d'au moins une période applicative précédente. 15 - Ladite extension matérielle prédéfinie peut être celle adaptée pour permettre l'exécution des instructions spécialisées dont l'émulation présenterait le coût en qualité de service le plus élevé. - Le choix de gestion effectué lors de l'étape e) peut comprendre la décision de poursuivre l'exécution de la tâche de calcul sur le 2 0 même coeur ou sur un coeur différent de manière à minimiser la consommation énergétique du processeur tout en respectant une contrainte de qualité de service. - Plus particulièrement, ladite étape e) peut comprendre : el ) déterminer une marge de qualité de service sur une 25 période applicative précédente ; e2) distribuer cette marge entre les portions de la période courante ; et e3) pour chaque portion de la période courante, effectuer un dit choix de gestion permettant de diminuer la consommation énergétique 3 0 sous contrainte de respect de la marge de qualité de service distribuée audit portion, lorsque cela est possible. 3056786 6 - En variante, lors de l'étape a), l'exécution de la tâche de calcul peut être démarrée sur un coeur ne comprenant pas d'extensions matérielle et, lors de ladite étape e), une décision de poursuive l'exécution de la tâche de calcul sur un autre processeur, comprenant au moins une 5 exécution matérielle, peut être prise lorsque cela est nécessaire pour assurer le respect d'une contrainte de qualité de service. - Ledit choix de gestion peut comprendre également une décision de maintenir ou de changer un couple fréquence d'horloge - tension d'alimentation du coeur. 10 - Les instructions spécialisées associées à chaque extension matérielle peuvent être regroupées en un nombre prédéfini de familles, ce nombre étant supérieur à 1 pour au moins une dite extension matérielle et au moins une dite famille comprenant plusieurs instructions ; et, lors de l'étape d), les instructions d'une même famille peuvent être 15 considérées comme une seule et même instruction aux fins du calcul desdits coûts ou gains en qualité de service et en consommation énergétique. - Plus particulièrement, le nombre de familles dans lequel les instructions spécialisées associées à chaque extension matérielle sont regroupées peut être choisi de manière à minimiser des erreurs affectant le 2 0 calcul des coûts ou gains en qualité de service et en consommation énergétique effectué lors de l'étape d). - L'étape b) peut comprendre le suivi : du nombre d'instructions basiques; du nombre d'instructions spécialisées associées à chaque extension matérielle que ledit coeur ne comprend pas ;du nombre 25 d'instructions spécialisées appartenant à chaque famille d'instructions spécialisées associées à chaque extension matérielle que ledit coeur comprend ; et du nombre d'instructions basiques utilisées pour l'émulation des instructions spécialisées associées à chaque extension matérielle que ledit coeur ne comprend pas ; chargées par ledit coeur. - Le procédé peut comporter également une étape préalable de chargement en mémoire d'un ensemble de paramètres de caractérisation représentatifs d'une distribution statistique des coûts 3056786 7 d'émulation en temps et énergie des instructions spécialisées, dans lequel l'étape d) est mise en oeuvre utilisant lesdits paramètres de caractérisation. - Le procédé peut comporter également une étape préalable d'étalonnage pour déterminer lesdits paramètres d'étalonnage. 5 Un autre objet de l'invention est un produit programme d'ordinateur stocké sur un support non-volatil lisible par ordinateur comprenant des instructions exécutables par ordinateur pour la mise en oeuvre d'un tel procédé. Un autre objet de l'invention est un processeur mufti-coeurs 10 fonctionnellement asymétrique comprenant une pluralité de coeurs partageant des instructions dites basiques, au moins un dit coeur comprenant au moins une extension matérielle, ladite ou chaque extension matérielle étant adaptée pour permettre l'exécution d'instructions, dites spécialisées, différentes desdites instructions basiques, chaque instruction spécialisée étant ainsi 15 associée à une dite extension matérielle, caractérisé en ce qu'il comprend également : - des circuits de filtrage, configurés pour trier les instructions basiques et les instructions spécialisées associées aux différentes extensions matérielles, et pour attribuer chaque instruction spécialisée à une 20 famille ; et - pour chaque coeur : - un compteur d'instructions basiques chargées par le coeur ; - pour chaque extension matérielle non comprise par ledit 25 coeur, un compteur d'instructions spécialisées associées à ladite extension matérielle chargées par le coeur, ainsi qu'un compteur du nombre d'instructions basiques utilisées pour l'émulation des instructions spécialisées associées ; et - pour chaque extension matérielle comprise par ledit coeur, 30 et pour chaque famille d'instructions spécialisées associées à ladite extension matérielle, un compteur d'instructions spécialisées associées à ladite extension matérielle et appartenant à ladite famille chargées par le coeur. 3056786 8 Encore un autre objet de l'invention est un système informatique comprenant un tel processeur multi-coeurs fonctionnellement asymétrique et une mémoire non-volatile stockant des instructions 5 exécutables par ledit processeur pour la mise en oeuvre d'un procédé selon l'invnetion. D'autres caractéristiques, détails et avantages de l'invention ressortiront à la lecture de la description faite en référence aux dessins annexés donnés à titre d'exemple et qui représentent, respectivement : 10 - La figure 1, un exemple de processeur multi-coeurs fonctionnellement asymétrique, dont l'architecture est connue de l'art antérieur ; - La figure 2, un histogramme du coût d'émulation d'une instruction de calcul en virgule flottante ; 15 - La figure 3, le processeur multi-coeurs fonctionnellement asymétrique de la figure 1, équipé de compteurs matériels d'instructions conformément à un mode de réalisation de l'invention ; - La figure 4, un graphique illustrant le découpage de l'exécution d'une application en périodes applicatives, le suivi de la qualité de 20 service pour chaque période et du nombre d'instructions spécialisées chargées pour chaque extension matérielle ; - La figure 5, un graphique illustrant le découpage des périodes applicatives en segments, conformément à un mode de réalisation de l'invention ; et 25 - La figure 6, un graphique illustrant les choix de gestion effectués conformément à un mode de réalisation de l'invention. Dans la suite, on entend par : - « Extension matérielle », ou plus simplement « extension » (« Hardware Extension » en anglais), un circuit tel qu'une unité 30 de calcul sur données flottantes (FPU de l'anglais « Floating Point Unit »), une unité de calcul vectoriel, une unité de traitement cryptographique, une unité de traitement du signal, etc. Une extension matérielle introduit un circuit matériel 3056786 9 spécialisé accessible ou relié à un coeur de processeur, lequel circuit fournit de hautes performances pour des tâches de calcul spécifiques. Un tel circuit spécifique améliore les performances et l'efficacité énergétique d'un coeur pour des calculs particuliers, mais leur utilisation intensive peut conduire à 5 réduire la performance en termes de Watt par unité de surface. Ces extensions matérielles associées au coeur de processeur sont fournies avec un jeu d'instruction qui étend le jeu standard ou par défaut (ISA). Les extensions matérielles sont généralement bien intégrées dans la chaîne de traitement (« pipeline ») du coeur, ce qui permet d'accéder efficacement aux 10 fonctions par des instructions ajoutées à l'ensemble « basique ». La fonction d'une extension matérielle est d'accélérer le traitement d'un jeu d'instructions spécifique: une extension matérielle peut ne pas accélérer le traitement d'un autre type d'instruction (e.g. virgule flottante 15 versus entier). - « Coeur étendu », un coeur de processeur comprenant un coeur « basique », supportant un ensemble minimal d'instructions commun à tous les coeurs du processeur, augmenté d'une ou plusieurs extensions matérielles. 20 - « Tâche de calcul » (« thread » en anglais), l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Un processus comprend en général plusieurs tâches de calcul qui, du point de vue de l'utilisateur, semblent se dérouler en parallèle. Les différentes tâches d'un même processus partagent la même mémoire virtuelle, mais présentent 25 chacune sa propre pile d'appel. Comme cela a été évoqué plus haut, dans une architecture multi-coeurs fonctionnellement asymétrique un coeur de processeur peut être associé avec aucune (i.e. zéro), une ou plusieurs extensions matérielles. Ces extensions matérielles lui sont alors « exclusives », c'est-à-dire une extension 30 matérielle donnée ne peut pas être accédée depuis un coeur tiers. Le coeur de processeur comprend la ou les extensions matérielles. 3056786 10 Un coeur de processeur (ou simplement « coeur ») est un ensemble de circuits physiques capables d'exécuter des programmes de façon « autonome ». Une extension matérielle est capable d'exécuter une partie de programme mais n'est pas « autonome » : elle requiert l'association 5 avec au moins un coeur de processeur. La figure 1 illustre de manière schématique l'architecture d'un processeur multi-coeurs fonctionnellement asymétrique PR intégrant quatre coeurs PC1, PC2, PC3, PC4 qui partagent une base commune appelée « coeur basique » BASE et qui peuvent posséder chacune une ou plusieurs 10 extensions matérielles HW1, HW2, leur procurant des fonctionnalités plus ou moins étendues. Plus précisément, le coeur PC1 est « complet », c'est-à-dire qu'il comprend le coeur basique et les deux extensions matérielles disponibles ; les coeurs PC2 et PC3 comprennent, en plus du coeur basique, la seule extension HW1 ou HW2, respectivement ; et le coeur PC4 est 15 « basique », ne comprenant pas d'extensions matérielles. La référence MM désigne une mémoire morte stockant des instructions exécutables par le processeur PR et permettant de mettre en oeuvre le procédé de l'invention. Les coeurs de processeur autres que PC1 ne comprennent 20 pas toutes les extensions matérielles disponibles. Ainsi, lorsqu'une tâche de calcul est exécutée par un tel coeur, il est possible que ce dernier rencontre des instructions spécifiques associées à des extensions matérielles qu'il ne possède pas. Il est donc nécessaire d'effectuer un « choix de gestion » : continuer l'exécution sur le coeur de processeur actuel en émulant les 25 instructions spécialisées non supportées (c'est-à-dire en les convertissant en séries d'instructions basiques) ou migrer la tâche sur coeur muni des extensions matérielles requises ; dans les deux cas, il est également possible d'agir sur le couple tension-fréquence. Chacune de ces options présente un coût en termes d'énergie consommée et de Qualité de Service (QoS), ce 30 dernier paramètre pouvant notamment être représenté par l'inverse d'un temps d'exécution. 3056786 11 L'invention permet d'optimiser les choix de gestion grâce à une prédiction précise de la qualité de service (QoS) et de l'énergie dissipée liée à chaque opportunité de gestion possible, facilitant ainsi la prise en compte de plusieurs critères. 5 Cette prédiction nécessite une étape préliminaire d'étalonnage, mise en oeuvre « hors ligne », consistant à caractériser les coûts en temps et en énergie d'exécution des différentes instructions spécifiques sur les coeurs basiques (en émulant ces instructions) et étendus (en les exécutants normalement sur ces coeurs). Selon un mode de réalisation 10 préféré de l'invention, cette étape comprend la détermination (généralement empirique) de paramètres d'étalonnage représentatifs de la distribution statistique des coûts d'émulation en temps et énergie des instructions spécialisées. Par exemple, ces paramètres peuvent être le coût maximum, le coût minimum, le coût moyen et l'écart type de la distribution des coûts, 15 mesurés sur plusieurs exécutions de ces instructions, avec des enchainements différents et des jeux de données variées. Avantageusement, ces paramètres ne sont pas déterminés pour chaque instruction considérée de manière isolée, mais pour des « familles » comprenant des instructions spécifiques associées à une même 20 extension matérielle et présentant des coûts d'exécution comparables. Cela présente un double avantage : premièrement, une simplification des opérations de prédiction du coût des tâches (effectuées « en ligne »), deuxièmement - si la décomposition en familles est effectuée de manière opportune - une minimisation de l'erreur d'estimation effectuée lors de ces 25 opérations de prédiction. Par exemple, sur le coeur RISC-V le coût de l'émulation en nombre d'instructions basiques équivalentes pour les instructions spécifiques de type virgule flottantes varie de 150 à 470 instructions basiques. La figure 2 donne le coût d'émulation de l'instruction racine carrée en virgule flottante 30 « fsqrt » en instructions basiques équivalentes (axe des ordonnées). Elle comporte une partie constante (rectangle en trait épais dans la figure 2) avec plus de 120 instructions équivalentes (pour la sauvegarde de contexte, sa 3056786 12 restitution et l'appel à la routine d'émulation) et une partie dépendante de l'instruction à émuler (trait fin). Le coût moyen d'émulation de cette instruction est de 360 instructions basiques avec un écart type important, représenté par une barre d'erreur. 5 La solution consistant à regrouper les instructions spécifiques à virgule flottante en une seule famille et considérer un coût moyen de 282 instructions basiques, correspondant à la caractérisation hors ligne de ces instructions spécifiques, donne une erreur d'estimation de l'ordre de 25-50% sur les jeux de tests considérés, ce qui n'est pas satisfaisant. 10 Selon un mode de réalisation de l'invention, on propose de procéder à une décomposition par l'exploration du nombre de familles « i » et de la largeur de l'intervalle de coût de chaque famille qui minimise l'erreur d'estimation du coût d'émulation (en temps et énergie) des instructions spécifiques considérées. Cette exploration est faite sur la base de jeux de 15 tests incluant des tests unitaires par instruction et des tests d'applications réelles issues d'ensembles de tests communément utilisées par la communauté scientifique. Elle peut être conduite de manière expérimentale / empirique, comme par l'utilisation d'une heuristique ou de tout autre algorithme de recherche opérationnelle. Par exemple, il est avantageux de 20 regrouper les instructions possédants un écart type faible ou une fréquence d'occurrence importante ensemble afin d'éviter de dégrader l'erreur d'estimation finale. L'augmentation du nombre de familles réduit la largeur des intervalles de coûts et de la sorte l'erreur d'estimation de ces coûts. Mais si on 25 augmente énormément le nombre de familles, un phénomène inverse est observé qui fait remonter l'erreur d'estimation dû à l'écart type du coût d'émulation de certaines instructions. Un compromis est donc à trouver aussi parce qu'ensuite, comme cela sera expliqué en détail plus loin, une surveillance est nécessaire en mettant en oeuvre des compteurs spécifiques 30 pour chaque famille d'instructions. Une étude a été effectuée sur la base du coeur de processeur RISC-V. En imposant une erreur d'estimation maximale tolérable de 5%, il a 3056786 13 été possible de délimiter deux familles d'instructions à virgule flottante avec une erreur moyenne de 3% et une erreur maximale de 4%. Pour chaque extension (HWm), et une fois le nombre de familles « i » et leurs coûts moyens en termes de nombre d'instructions 5 basiques équivalent (Coût moy Inst(m ') et d'énergie (Coût moy E(m, 0) déterminés, ces caractéristiques hors ligne vont être embarquées et utilisées en ligne pour l'estimation des coûts/gains en performance et en énergie des différentes opportunités de gestion. Pour obtenir cette estimation, il est nécessaire de mettre en 10 oeuvre - en ligne - plusieurs étapes : 1. Un suivi de la QoS et de l'exécution d'instructions spécialisées ; 2. Un découpage de chaque période applicative de la tâche de calcul considéré en « portions », effectué en fonction de ce suivi ; 15 3. Le calcul des coûts ou gains en qualité de service et en consommation énergétique correspondant à différentes opportunités, ou options, de gestion. Ce calcul se base sur le découpage des périodes applicatives et sur les données obtenues par le suivi. 20 1. Suivi de l'exécution des instructions spécialisées et de la QoS applicative 1.1 Suivi de l'exécution des instructions spécialisées Afin de mieux prédire l'exécution future des instructions spécialisées, un suivi (monitoring) de l'exécution passée de ces instructions et 25 leur classement selon leurs familles respectives est nécessaire. Ce suivi consiste principalement en un comptage du nombre d'instructions spécialisées associées à chaque extension. Plus précisément, chaque coeur doit compter : - le nombre d'instructions spécialisées associées à chaque 3 0 extension matérielle que le coeur ne comprend pas (ces instructions provoquent une exception qui appelle une routine d'émulation) ; 3056786 14 - pour les instructions spécialisées associés aux extensions matérielles que le coeur comprend, le nombre d'instructions spécialisées associées à chaque famille (ces instructions sont exécutées directement) ; et - le nombre d'instructions basiques. 5 Selon un mode de réalisation préféré de l'invention, le suivi est réalisé grâce à des circuits numérique de filtrage d'une partie de l'encodage binaire de chaque instruction (« opcode », de l'anglais « operation code » c'est-à-dire « code d'opération »), permettant de trier les instructions basiques et les instructions spécialisées associées aux différentes extensions 10 matérielles et, le cas échéant, pour attribuer chaque instruction spécialisée à une famille, ainsi qu'à des compteurs matériels semblables aux compteurs communément présents dans les processeurs embarqués (compteurs de cycles, compteurs d'instructions flottantes, compteurs de défaut de caches...), qui compteraient l'occurrence des instructions de chaque famille. Ces 15 compteurs peuvent être lus, et des remises à zéro peuvent être commandées à des instants biens spécifiques de la méthode. On privilégie le comptage d'instructions chargées par le coeur car le chargement des instructions est toujours effectué quel que soit le type de coeur (elles peuvent ensuite être exécutées si le coeur les supporte ou provoquer une exception et appeler une 2 0 routine d'émulation dans le cas contraire). Sur la figure 3 : Le coeur PC1 comprend : - un ensemble de compteurs Nb(HW1,i) comptabilisant le nombre d'instructions chargées appartenant à chaque 25 famille « i » de l'extension matérielle « HW1 » ; - un ensemble de compteurs Nb(HW2,i) comptabilisant le nombre d'instructions chargées appartenant à chaque famille « i » de l'extension matérielle « HW2 » ; et - un compteur Nb_basic comptabilisant le nombre 30 d'instructions basiques chargées. - Le coeur PC2 comprend : 3056786 15 - un ensemble de compteurs Nb(HW1,i) comptabilisant le nombre d'instructions chargées appartenant à chaque famille « i » de l'extension matérielle « HW1 » ; - un compteur Nb(HW2) comptabilisant le nombre 5 d'instructions chargées associées à l'extension matérielle « HW2 », sans distinguer les différentes familles d'instructions ; - un compteur Nb_basic comptabilisant le nombre d'instructions basiques chargées ; et - un compteur Nb_emul(HW2).comptabilisant le 10 nombre d'instructions basiques utilisées pour émules les instructions spécialisées associées à l'extension matérielle « HW2 ». - Le coeur PC3 comprend : - un compteur Nb(HW1) comptabilisant le nombre d'instructions chargées associées à l'extension matérielle « HW1 », 15 sans distinguer les différentes familles d'instructions ; - un ensemble de compteurs Nb(HW2,i) comptabilisant le nombre d'instructions chargées appartenant à chaque famille « i » de l'extension matérielle « HW2 » ; - un compteur Nb_basic comptabilisant le nombre 20 d'instructions basiques chargées ; et - un compteur Nb_emul(HW1).comptabilisant le nombre d'instructions basiques utilisées pour émules les instructions spécialisées associées à l'extension matérielle « HW1 ». - Le coeur PC4 comprend : 25 - un compteur Nb(HW1) comptabilisant le nombre d'instructions chargées associées à l'extension matérielle « HW1 », sans distinguer les différentes familles d'instructions ; - un compteur Nb(HW2) comptabilisant le nombre d'instructions chargées associées à l'extension matérielle « HW2 », 30 sans distinguer les différentes familles d'instructions ; - un compteur Nb_basic comptabilisant le nombre d'instructions basiques chargées 3056786 16 - un compteur Nb_emul(HW1).comptabilisant le nombre d'instructions basiques utilisées pour émules les instructions spécialisées associées à l'extension matérielle « HW1 » ; et - un compteur Nb_emul(HW2).comptabilisant le 5 nombre d'instructions basiques utilisées pour émules les instructions spécialisées associées à l'extension matérielle « HW2 ». Les circuits de filtrage des instructions ne sont pas représentés pour ne pas surcharger la figure. Avantageusement, les circuits numériques de filtrage 10 effectuent le filtrage des instructions chargées par le coeur au moment du décodage d'instruction (filtrage d'opcode) pour identifier si l'instruction courante est de type « m » (c'est-à-dire est associée à l'extension matérielle « m ») et, le cas échéant, si elle appartient à la famille « i » de cette extension. Une optimisation possible de ce mode de réalisation consiste à rectifier la 15 découpe en familles faite dans la première étape de la méthode pour ramener ces intervalles à des classes d'instructions similaires (accès mémoire, calcul, contrôle...) qui partagent un même opcode facilitant ainsi le filtrage des instructions au moment du décodage. Un calcul de l'erreur d'estimation avec la nouvelle découpe doit être effectué pour vérifier qu'elle reste en dessous de 20 l'erreur tolérable. Pour le comptage des instructions basiques (Nb basic), il peut être avantageux d'effectuer le filtrage des instructions spécialisées au moment du décodage par opcode et débrayer le compteur Nb basic lors de l'exécution de ces instructions. Le compteur Nb basic est aussi débrayé à 25 l'entrée d'une exception et embrayé à sa sortie. En principe, ces compteurs pourraient être mis en oeuvre de manière logicielle, mais cela serait coûteux en temps et en énergie. Une réalisation au moins partiellement matérielle est donc préférée. Le suivi des instructions chargées, effectué par l'intermédiaire 3 0 de ces compteurs, permet de calculer le ratio d'utilisation de l'ensemble d'instructions spécialisées associées à chaque extension matérielle « m » 3056786 17 (indépendamment du fait que ces instructions soient effectivement exécutées par l'extension matérielle idoine ou soient émulées par un coeur basique) : Nb(m) [1] Tm_ Nb basic 5 Dans le cas où le comptage se fait par familles, Nb(m) est obtenu en sommant Nb(m,i) pour toutes les valeurs de « i ». 1.2 Suivi de la QoS applicative Ce suivi peut se baser sur une technique d'instrumentation 10 peu intrusive du code applicatif comme la technique « Heartbeat », divulguée par la publication : H. Hoffmann, J. Eastep, M. D. Santambrogio, J. E. Miller, A. Agarwal, « Application Heartbeats: A Generic Interface for Specifying Program Performance and Goals in Autonomous Computing Environments », 15 Proceedings of the 7th International Conference on Autonomic Computing, New York, NY, USA, 2010, pp. 79-88. Elle permet au système de récupérer des évènements applicatifs (appelés « pulsations applicatives », ou simplement « pulsations » dans la suite) permettant de calculer une qualité de service puis de vérifier 20 qu'elle est au-dessus d'une consigne de QoS minimale donnée par l'utilisateur. Ces évènements applicatifs servent aussi à enclencher des actions de gestion qui seraient plus ou moins agressives selon la marge sur la QoS qu'on vient de calculer. Cela est illustré sur la figure 4, qui montre un chronogramme du nombre d'instructions spécialisées chargées qui sont 25 associées aux deux extensions matérielles considérées, HW1 et HW2 ; « t » désigne le temps d'exécution. Les pulsations PS sont indiquées par des traits verticaux, et découpent le temps d'exécution en « périodes applicatives » (ou simplement « périodes ») PRD. La qualité de service QoS est mesurée à chaque pulsation pour la période qui vient de s'écouler, et une marge MRG 3 0 est calculée par rapport à un niveau de qualité minimal Qos_Min. Un niveau 3056786 18 de qualité maximal QoS_Max est également indiqué ; en effet, on ne souhaite généralement pas fournir un niveau de qualité inutilement élevé. 2. Un découpage de chaque période applicative de la tâche 5 de calcul considéré en « portions » La prédiction des exécutions futures des instructions spécialisées se base généralement sur un apprentissage de l'utilisation passée de l'extension. Dans la littérature, la période d'apprentissage est souvent constante, liée à des évènements de l'ordonnanceur. Pour augmenter 10 et affiner les opportunités de gestion à l'intérieur d'une période, l'invention propose de suivre et prédire l'utilisation des instructions spécialisées sur des portions de la « période applicative » et s'adapter ainsi à des profils d'utilisation des instructions spécialisées changeants d'une période à une autre. Une « portion » est l'intervalle de temps minimum pour chaque décision 15 de gestion de la méthode proposée. Conformément à l'invention, chaque période est subdivisée en N « portions » de durées non constantes et ceci en fonction du nombre d'instructions spécialisées chargées associées à l'extension matérielle « HWn, » dont le coût d'émulation sur cette période sera le plus pénalisant en 20 termes de performance. N est un nombre qui peut être arbitrairement fixé dès le début de l'exécution ou à la suite d'une phase d'étalonnage au début de l'exécution. Pour définir quelle est l'extension matérielle « m » qui est la plus pénalisante en termes de performance, on effectue au démarrage de 25 l'application, à la suite d'une phase d'étalonnage (une ou plusieurs pulsations), le calcul du coût d'émulation relatif Coût relatif(m, n) à la fin de la période courante « n » et pour chaque extension matérielle « m »: COÛt relatif (m n) - Nb(',n)x Coût moy Inst(m) , Nb basic(n) 30 3056786 19 = T(m,n) x Coût_moyInst(m) [2] où T(m,n) représente le ratio d'utilisation de l'extension m sur la période n (cf. équation [1]) . On choisit m qui donne le coût : Coût relatif(m,n) = 5 Maxm(COÛt reiatif(n,n)) La détermination de l'extension matérielle la plus pénalisante peut être faite hors ligne pour chaque application à exécuter sur la plateforme. Elle peut être calculée en ligne et mise à jour à chaque exécution d'une nouvelle application (donc avec une seule phase d'étalonnage au début de 10 l'exécution de chaque application) ou au sein de la même application (dans le cas d'applications très dynamiques) après chaque « P » pulsations applicatives (on répète la phase d'étalonnage après chaque P pulsations, P étant un nombre constant et prédéfini avant l'exécution). Le découpage d'une période applicative en portions utilise la 15 connaissance, obtenue par le suivi décrit plus haut, du nombre global (toutes familles confondues) d'instructions spécialisées associées à l'extension matérielle « HWm» chargées à la fin de la période courante « n » : Nboil n). Cette connaissance permet en effet de prédire le nombre global d'instructions spécialisées associées à l'extension matérielle « HWm» 20 pour la période applicative suivante (Nb Pred(m, n+i)). Cette prédiction peut, par exemple, être obtenue en calculant une moyenne mobile exponentielle (EMA), avec un facteur de lissage « a » (a QoSmin est satisfaite, on exécute l'allocation prédite. Sinon, on change de manière incrémentale la fréquence de l'allocation de la portion k, ensuite on considère un changement d'allocation à une basse fréquence et on augmente progressivement la 5 fréquence et ainsi de suite. La mise en oeuvre duale, qui privilégie l'allocation de la portion k sur un coeur étendu en considérant que les autres portions suivantes (k+1 à N) vont être alloués sur un coeur basique est aussi une réalisation possible. Tant que la condition QoS_Pred,±1 > QoSmin n'est pas vérifiée, on décide de 10 continuer à allouer sur le coeur étendu la portion suivante. Dès que cette condition est vérifiée, on prédit de manière incrémentale la QoS en fin de période en estimant, dans le même ordre que dans la méthode précédente, les opportunités de gestion possibles. Un procédé selon l'invention est mis en oeuvre grâce à un 15 produit programme d'ordinateur comprenant des instructions exécutables par un processeur multi-coeurs fonctionnellement asymétrique (processeur PR de la figure 1), stockées sur un support non-volatil lisible par ledit processeur (par exemple une mémoire morte MM, illustrée sur la figure 1). Avantageusement, comme cela a été décrit en particulier en relation à la figure 3, le processeur 20 multi-coeurs fonctionnellement asymétrique peut présenter des moyens matériels spécifiques : circuits de filtrage d'instructions et compteurs. Un tel processeur et une mémoire non volatile stockant le produit programme d'ordinateur peut avantageusement former, avec d'autres composants (mémoires vives, périphériques...), un système informatique, typiquement 25 embarqué. L'invention a été décrite en relation à un mode de réalisation particulier, mais des variantes sont possibles. Par exemple, à titre non limitatif, d'autres formules de calcul des coûts peuvent être utilisées ; les prédictions peuvent ne pas être obtenues par moyenne glissante mais, par exemple, par 3 0 filtrage de Kalman ; la répartition entre fonctionnalités mises en oeuvre de manière logicielle ou matérielle peut varier. REVENDICATIONS1. Procédé mis en oeuvre par ordinateur pour la gestion d'une tâche de calcul sur un processeur multi-coeurs fonctionnellement 5 asymétrique (PR), l'exécution de ladite tâche comprenant une succession de périodes applicatives, ledit processeur comprenant une pluralité de coeurs (PC1 - PC4) partageant des instructions dites basiques, au moins un dit coeur comprenant au moins une extension matérielle (HW1, HW2), ladite ou chaque extension matérielle étant adaptée pour permettre l'exécution d'instructions, 10 dites spécialisées, différentes desdites instructions basiques, chaque instruction spécialisée étant ainsi associée à une dite extension matérielle, le procédé comprenant les étapes suivantes : a) démarrer l'exécution de la tâche de calcul sur un coeur dudit processeur ; 15 b) effectuer, au cours de ladite exécution, un suivi d'un paramètre (QoS) indicatif d'une qualité de service de la tâche de calcul, ainsi que d'au moins un nombre d'instructions spécialisées chargées par ledit coeur; c) sur la base dudit suivi, identifier des instants découpant 20 une période applicative de la tâche de calcul en un nombre prédéterminé de portions (PTS) de telle façon que, au cours de chacune desdites portions, un nombre sensiblement égal d'instructions spécialisées associées à une extension matérielle prédéfinie soient chargées par ledit coeur ; d) calculer, auxdits instants et en fonction dudit suivi, des 25 coûts ou gains en qualité de service et en consommation énergétique correspondant à différentes options de gestion de la tâche de calcul ; et e) effectuer un choix de gestion comprenant une décision de poursuivre l'exécution sur le même coeur du processeur ou sur un coeur différent en fonction des coûts ou gains ainsi calculés. 30 2. Procédé selon la revendication 1 dans lequel ladite étape c) comprend la prévision du nombre d'instructions spécialisées associées à 3056786 32 ladite extension matérielle chargées au cours de chaque portion d'une période applicative courante à partir du nombre de dites instructions spécialisées chargées lors de portions correspondantes d'au moins une période applicative précédente. 3. Procédé selon l'une des revendications précédentes dans lequel ladite extension matérielle prédéfinie est celle adaptée pour permettre l'exécution des instructions spécialisées dont l'émulation présenterait le coût en qualité de service le plus élevé. 4. Procédé selon l'une des revendications précédentes dans laquelle le choix de gestion effectué lors de l'étape e) comprend la décision de poursuivre l'exécution de la tâche de calcul sur le même coeur ou sur un coeur différent de manière à minimiser la consommation énergétique du processeur tout en respectant une contrainte de qualité de service. 5. Procédé selon la revendication 4 dans lequel ladite étape e) comprend : el ) déterminer une marge de qualité de service sur une 20 période applicative précédente ; e2) distribuer cette marge entre les portions de la période courante ; et e3) pour chaque portion de la période courante, effectuer un dit choix de gestion permettant de diminuer la consommation énergétique 25 sous contrainte de respect de la marge de qualité de service distribuée audit portion, lorsque cela est possible. 6. Procédé selon la revendication 4 dans lequel : - lors de l'étape a), l'exécution de la tâche de calcul est 3 0 démarrée sur un coeur ne comprenant pas d'extensions matérielle ; - lors de ladite étape e), une décision de poursuive l'exécution de la tâche de calcul sur un autre processeur, comprenant au 3056786 33 moins une exécution matérielle, est prise lorsque cela est nécessaire pour assurer le respect d'une contrainte de qualité de service. 7. Procédé selon l'une des revendications précédentes dans 5 lequel ledit choix de gestion comprend également une décision de maintenir ou de changer un couple fréquence d'horloge - tension d'alimentation du coeur. 8. Procédé selon l'une des revendications précédentes dans 10 lequel les instructions spécialisées associées à chaque extension matérielle sont regroupées en un nombre prédéfini de familles, ce nombre étant supérieur à 1 pour au moins une dite extension matérielle et au moins une dite famille comprenant plusieurs instructions ; et dans lequel, lors de l'étape d), les instructions d'une même famille sont considérées comme une seule et 15 même instruction aux fins du calcul desdits coûts ou gains en qualité de service et en consommation énergétique. 9. Procédé selon la revendication 8 dans lequel le nombre de familles dans lequel les instructions spécialisées associées à chaque extension matérielle sont regroupées est choisi de manière à minimiser des erreurs affectant le calcul des coûts ou gains en qualité de service et en consommation énergétique effectué lors de l'étape d). 10. Procédé selon l'une des revendications 8 et 9 dans lequel 25 l'étape b) comprend le suivi : - du nombre d'instructions basiques; - du nombre d'instructions spécialisées associées à chaque extension matérielle que ledit coeur ne comprend pas ; - du nombre d'instructions spécialisées appartenant à 30 chaque famille d'instructions spécialisées associées à chaque extension matérielle que ledit coeur comprend ; et 3056786 34 - du nombre d'instructions basiques utilisées pour l'émulation des instructions spécialisées associées à chaque extension matérielle que ledit coeur ne comprend pas ; chargées par ledit coeur. 5 11. Procédé selon l'une des revendications précédentes comportant une étape préalable de chargement en mémoire d'un ensemble de paramètres de caractérisation représentatifs d'une distribution statistique des coûts d'émulation en temps et énergie des instructions spécialisées, dans 10 lequel l'étape d) est mise en oeuvre utilisant lesdits paramètres de caractérisation. 12. Procédé selon la revendication 11 comportant également une étape préalable d'étalonnage pour déterminer lesdits paramètres 15 d'étalonnage. 13. Produit programme d'ordinateur stocké sur un support (MM) non-volatil lisible par ordinateur comprenant des instructions exécutables par ordinateur pour la mise en oeuvre d'un procédé selon l'une 20 des revendications précédentes. 14. Processeur mufti-coeurs (PR) fonctionnellement asymétrique comprenant une pluralité de coeurs (PC1 - PC4) partageant des instructions dites basiques, au moins un dit coeur comprenant au moins une extension matérielle (HW1, HW2), ladite ou chaque extension matérielle étant adaptée pour permettre l'exécution d'instructions, dites spécialisées, différentes desdites instructions basiques, chaque instruction spécialisée étant ainsi associée à une dite extension matérielle, caractérisé en ce qu'il comprend également : - des circuits de filtrage, configurés pour trier les instructions basiques et les instructions spécialisées associées aux différentes 3056786 extensions matérielles, et pour attribuer chaque instruction spécialisée à une famille ; et - pour chaque coeur : - un compteur (Nb_basic) d'instructions basiques chargées 5 par le coeur ; - pour chaque extension matérielle non comprise par ledit coeur, un compteur (Nb(HW1), Nb(HW2)) d'instructions spécialisées associées à ladite extension matérielle chargées par le coeur, ainsi qu'un compteur du nombre d'instructions basiques utilisées pour l'émulation des 10 instructions spécialisées associées ; et - pour chaque extension matérielle comprise par ledit coeur, et pour chaque famille d'instructions spécialisées associées à ladite extension matérielle, un compteur (Nb(HW1,i), Nb(HW2,i)) d'instructions spécialisées associées à ladite extension matérielle et appartenant à ladite famille 15 chargées par le coeur. 15. Système informatique comprenant un processeur (PR) mufti-coeurs fonctionnellement asymétrique selon la revendication 14 et une mémoire non-volatile (MM) stockant des instructions exécutables par ledit 20 processeur pour la mise en oeuvre d'un procédé selon l'une des revendications 1 à 11.