FR 2865291 A1 20050722 FR 0400528 A 20040121 2865291 1 La présente invention se rapporte à un procédé de transfert de données dans un système multiprocesseur, à un système multiprocesseur et à un processeur mettant en oeuvre ce procédé, notamment pour le traitement de données multimédia. Un système multiprocesseur comprend une pluralité de processeurs et des moyens de transferts de données entre ces derniers. Selon un exemple connu de système multiprocesseur, un processeur 100, tel qu'illustré sur la figure 1 annexée, dénommé processeur délégant, exécute un programme en faisant appel à des fonctions exécutées par un second processeur 102 dénommé processeur délégué afin, par exemple, d'accélérer l'exécution de l'ensemble de ce programme. 1 o Dans un tel système multiprocesseur, chaque processeur comprend des registres internes nécessaires à l'exécution des instructions qui forment chaque fonction. Généralement, cet ensemble de registres comprend un compteur de programme ('Program counter' en anglais), un pointeur de pile ('Stack pointeur' en anglais), un registre d'état ('Status Register' en anglais) et des registres de travail pour traiter les données. Par ailleurs, le processeur 100 délégant met en oeuvre la procédure d'exécution de fonctions par le processeur 102 délégué en établissant une base 110 des données nécessaires à cette exécution, cette base 110 étant intermédiaire entre le processeur 100 délégant et le processeur 102 délégué auxquels elle est reliée par l'intermédiaire d'un bus 104 de communication. Selon d'autres variantes, le bus 104 est interne au processeur 100 délégant et/ou il relie une pluralité de processeurs délégant (non représentés) à la base 110 et au processeur délégué 102. Par ailleurs, la base 110 peut être formée à l'aide de différents composants électroniques, tels que: - une mémoire intermédiaire, partagée entre le processeur 100 délégant et le processeur délégué 102, du type mémoire statique à accès aléatoire ou SRAM (de l'anglais 'Static Random Access Memory'), un disque ou une mémoire Flash, - des dispositifs de communications de traitement par ordre d'arrivée, ou FIFO (de l'anglais 'First In First Out'), - d'autres moyens de communication tels que des dispositifs de communication en série. Le processeur délégué 102 accède par la suite à la base 110 de données pour y retirer, par exemple, une adresse ou un symbole qui est traité par un décodeur 106 interne de fonctions du processeur 102 délégué pour identifier une fonction à exécuter. Le décodeur 106 interne de fonctions peut identifier la fonction appelée dans une mémoire 2865291 2 108 externe contenant l'ensemble des fonctions que peut exécuter le processeur 102 délégué. Par la suite, le processeur 102 délégué consulte la base 110 pour obtenir les paramètres nécessaires à l'exécution de la fonction appelée, ces paramètres étant alors 5 mémorisés dans une mémoire 112 interne. Finalement, la fonction appelée peut ainsi s'exécuter dans cette mémoire 112 et fournir son résultat. Il apparaît qu'un système multiprocesseur selon l'art antérieur présente l'avantage d'utiliser des composants électroniques - processeurs, bus, base de données - 1 o standards, c'est-à-dire qui ne requièrent pas de modifications pour leur utilisation dans un système multiprocesseur. En d'autres termes, un système multiprocesseur permet de cumuler les capacités de traitement propres aux processeurs compris dans le système. Toutefois, la présente invention résulte de la constatation qu'un système multiprocesseur connu présente l'inconvénient de requérir un nombre important d'opération d'accès à des données. Par exemple, le transfert de données entre les processeurs délégant 100 et délégué 102 comprend notamment les étapes suivantes: - la transmission, par le processeur 100 délégant à la base 110, des paramètres nécessaires à l'exécution d'une fonction par le processeur 102 délégué, - la transmission, par le processeur 100 délégant à la base 110, d'une demande d'exécution d'une fonction par le processeur 102 délégué, - l'accès du processeur 102 délégué de la base 110 pour déterminer s'il y a une demande d'exécution de ses fonctions à mettre en oeuvre. Par la suite, si le processeur 102 délégué trouve dans la base 110 une telle demande d'exécution, par exemple sous la forme d'un symbole propre à cette fonction ou 2 5 d'une adresse d'une des fonctions enregistrées dans sa mémoire 108, il exécute cette fonction. A cet effet, au début de l'exécution de la fonction, le processeur 102 délégué doit à nouveau consulter la base 110 pour accéder aux paramètres transmis précédemment par le processeur 100 délégant. 3 o Cet inconvénient implique que les programmes d'exécution sont complexes et longs puisqu'ils intègrent un nombre important d'instructions d'accès (en écriture et en lecture) de données à transmettre entre les processeurs délégant 100 et délégué 102. Par exemple, le traitement de données multimédia (images, sons, vidéo) par des systèmes multiprocesseurs est une application nécessitant une grande rapidité d'exécution car elle est souvent réalisée en temps réel. 2865291 3 Dans ce cas, un processeur 100 délégant établit une base 110 de données contenant, entre autres, des adresses mémoires correspondant à des pixels à traiter et à des paramètres de traitement des valeurs associées aux pixels (par exemple luminosité et couleur) pour permettre l'exécution d'une fonction par le processeur 102 délégué. II apparaît alors que, pour une utilisation vidéo, on estime que 10% à 15% du délai d'exécution d'une fonction est requis pour la récupération de données, ce délai de récupération étant dénommé par la suite "temps non efficace" en ternie de calcul ou, en anglais 'Overhead'. La présente invention vise à remédier à au moins un des inconvénients 1 o précédemment mentionnés en réduisant le temps d'accès d'un processeur délégué aux données nécessaires à l'exécution d'une fonction commandée par un processeur délégant. C'est pourquoi, l'invention concerne un procédé de transfert de données d'un processeur délégant, requérant l'exécution de fonctions, vers un processeur délégué, exécutant ces fonctions à partir d'un identifiant de fonction et de paramètres d'exécution associés à cette fonction, cet identifiant et ces paramètres étant fournis par le processeur délégant, caractérisé en ce que le processeur délégant accède à une banque de registres internes du processeur délégué pour stocker les paramètres associés à une fonction à exécuter simultanément à l'exécution par le processeur délégué d'une autre fonction. Ainsi, grâce à l'invention, la vitesse d'exécution des programmes par un système multiprocesseur est accrue. En effet, quand le processeur délégué commence à exécuter une fonction demandée par le processeur délégant, le processeur délégué a un accès instantané aux paramètres associés à cette fonction qui sont déjà placés dans sa banque de registres interne. En d'autres termes, il n'y a plus 'd'overhead' associé à la lecture externe de paramètres dans l'exécution d'une fonction. Aussi, les fonctions et les programmes mettant en oeuvre un processeur délégant et un processeur délégué sont plus courts et rapides à établir par l'absence d'instructions relatives à la consultation de paramètres associés à une fonction exécutée par le processeur délégué. Dans une réalisation, le processeur délégant accède à des registres internes exclusivement alloués à ce processeur délégant pour le stockage de données. Selon une réalisation, un gestionnaire interne du processeur délégué commande l'allocation des registres, ou espace mémoire, de la banque de registres au processeur délégant. 2865291 4 Dans une réalisation, préalablement à l'allocation d'espace mémoire, le processeur délégant requiert au gestionnaire du processeur délégué une allocation d'espace mémoire pour stocker des paramètres nécessaires à l'exécution d'une fonction. Selon une réalisation, lorsque le gestionnaire alloue un espace mémoire au processeur délégant, ce gestionnaire transmet un identifiant d'espace mémoire alloué au processeur délégant puis ce dernier transfère les paramètres pour l'exécution d'une fonction dans l'espace mémoire alloué. Dans une réalisation, le processeur délégant transfère les données identifiant la fonction demandée dans des moyens intermédiaires entre le processeur 1 o délégué et le processeur délégant, tels qu'une mémoire vive FIFO. Selon une réalisation, la banque de registres internes du processeur délégué est une mémoire comprenant des sous-ensembles de registres ayant au moins une des caractéristiques suivantes: - chaque sous-ensemble de registres a ses propres ports d'écriture et de lecture, - chaque sous-ensemble de registres a le même nombre de registres et contient tous les registres nécessaires au fonctionnement du processeur délégué pour exécuter l'ensemble des fonctions que ce processeur délégué est apte à exécuter, - chaque sous-ensemble peut communiquer avec le processeur délégant ou le processeur délégué. Dans une réalisation, les paramètres sont stockés dans des registres comprenant des registres de travail nécessaires aux différents traitements des données exécutés par le processeur délégué ou le processeur délégant. L'invention concerne aussi un système multiprocesseur comportant au moins un processeur délégant, apte à requérir l'exécution de fonctions par un processeur délégué qui exécute ces fonctions à partir d'un identifiant de fonction et de paramètres d'exécution associés à cette fonction, cet identifiant et ces paramètres étant fournis par le processeur délégant, caractérisé en ce qu'il comprend des moyens pour que le processeur délégant accède à une banque de registres internes du processeur délégué afin de stocker, dans ces registres internes, des paramètres associés à une fonction à exécuter simultanément à l'exécution par le processeur délégué d'une autre fonction selon un procédé conforme à au moins une des réalisations précédentes. Dans une réalisation, le système multiprocesseur comprend une pluralité de microprocesseurs délégants en relation avec un même microprocesseur délégué. 2865291 5 L'invention conceme aussi un processeur délégué apte à exécuter des fonctions à partir d'un identifiant de fonction et de paramètres d'exécution, associés à cette fonction, cet identifiant et ces paramètres étant fournis par un processeur délégant, caractérisé en ce qu'il comprend des moyens pour que le processeur délégant accède à une banque de registres internes dudit processeur délégué pour stocker les paramètres associés à une fonction simultanément à son exécution d'une autre fonction selon un procédé conforme à l'une des réalisations précédentes. D'autres caractéristiques et avantages de l'invention apparaîtront avec la description effectuée ci-dessous, à titre illustratif et non limitatif, en référence aux figures ci- 1 o jointes sur lesquelles: - la figure 1, déjà décrite, représente schématiquement le transfert de données dans un système multiprocesseur selon l'art antérieur, - la figure 2 représente schématiquement le transfert de données dans un système multiprocesseur conforme à l'invention, et - la figure 3 représente une structure d'une banque de registre dans un processeur délégué conforme à l'invention. Dans la réalisation préférée de l'invention, un processeur délégué 202 (figure 2) comprend une banque 216 de registres internes qui est accessible aux instructions de ce processeur délégué 202 en écriture, par un port 220 d'écriture, et en lecture par un port 218 de lecture. Cette banque 216 de registres est aussi accessible à un processeur 200 délégant en écriture, par un port 212 d'écriture, et en lecture, par un port 214 grâce à : - un bus 204 de communication, qui peut être interne ou externe au processeur 200 délégant, et qui peut aussi relier d'autres processeurs (non représentés) - et une interface 210 interne au processeur 202 délégué qui reçoit et envoie des données par le bus 204. La banque 216 est gérée par un gestionnaire 222, interne au processeur 202 délégué. Ce gestionnaire 222 alloue des espaces mémoires clairement identifiés dans la banque 216 au processeur 202 délégué et au processeur 200 délégant pour que ces deux processeurs puissent travailler en parallèle dans la banque 216. Dans cette réalisation préférée, la banque 216 de registres comprend des espaces mémoires EMo 310 (figure 3), EM1 311, ...EMj 300, EM(j+1) 301, ... , EMi 302, EMn 304, chaque espace mémoire étant un ensemble de registres indépendants permettant au processeur délégué d'exécuter l'ensemble de ses fonctions sur chaque 3 5 espace mémoire. 2865291 6 Chaque espace mémoire comporte donc des registres de travail nécessaires aux différents traitements des données exécutés par le processeur 202 délégué ou le processeur 200 délégant. Par ailleurs, chaque espace mémoire possède ses propres ports en écriture et en lecture. Dans un exemple concret adapté aux vitesses de transfert et aux capacités actuelles des processeurs utilisés, notamment dans le domaine du traitement d'images, la banque 216 est constituée de 4 portions de 16 registres chacune, constituant ainsi 64 registres. Ainsi, le processeur délégué et le processeur délégant travaillent en 1 o permanence dans différents espaces mémoires grâce au gestionnaire 222 qui évite les conflits d'allocation en allouant les espaces mémoires dans un ordre de mémoire tampon en anneau (en anglais 'token ring'). Comme représenté sur le schéma de la figure 3, le processeur 202 délégué est en train d'exécuter une fonction au travers des ports 306 de lecture et écriture sur l'espace mémoire 300 EMj pendant que le processeur 200 délégant est en train d'écrire des paramètres nécessaires à l'exécution d'une autre fonction dans l'espace mémoire 302 EMi au travers des ports 308 de lecture et écriture. On constate alors un des avantages de l'invention, à savoir que le processeur 202 délégué a un accès direct aux paramètres nécessaires à l'exécution d'une fonction car ils ont été déjà stockés par le processeur 200 délégant dans sa banque 216 de registres. En d'autres termes, le processeur 202 délégué n'a pas besoin d'accéder à ces paramètres dans une base extérieure, ce qui réduit sensiblement les périodes de consultation de données. Une base 217 FIFO est utilisée par le processeur 200 délégant pour transmettre les données représentant la fonction à exécuter au processeur 202 délégué. De fait, le processeur 200 délégant et le processeur 202 délégué sont capables d'interpréter les données représentant la fonction à exécuter, par exemple au moyen d'une représentation symbolique de la fonction à exécuter ou d'une adresse explicite de la fonction dans une mémoire 208 externe au processeur 202 délégué. Dans ce cas, ces données sont décodées grâce à des moyens 206 de décodage du processeur 202 délégué. Ainsi, le processeur 202 délégué exécute une fonction lorsqu'il a la possibilité de prendre une nouvelle fonction en charge. Dans ce cas, le processeur 202 accède à la base 217 FIFO qui détermine la fonction à exécuter et parallèlement, change 2865291 7 l'allocation d'espace mémoire dans la banque 216 de registres pour que le nouvel espace mémoire alloué à cette fonction corresponde à un espace mémoire dans lequel les paramètres nécessaires à l'exécution de la nouvelle fonction ont été stockés. Dans cette réalisation préférée de l'invention, lorsque le processeur 200 délégant a besoin de l'exécution par le processeur 202 délégué d'une fonction, le procédé de transfert de données s'effectue en deux étapes, à savoir. (figure 2 et 3): - Selon une première étape, le processeur 200 délégant transmet les paramètres nécessaires à la réalisation de la fonction qu'il souhaite faire exécuter par le processeur 202 délégué et fait une demande d'exécution de cette fonction sans 1 o interrompre l'éventuelle activité de calcul du processeur 202 délégué. Pour cela, le processeur 200 délégant demande à l'interface 210 du processeur 202 délégué une allocation d'espace mémoire dans sa banque 216 de registres et attend la réponse par l'intermédiaire du bus 204 de données. L'interface 210 transmet un message 224 au gestionnaire 222 demandant l'allocation d'un espace mémoire dans la banque 216. Quand une telle allocation est possible, le gestionnaire transmet l'identifiant 226 de l'espace mémoire alloué au processeur 200 délégant, par exemple EMi 302. A l'aide de cet identifiant, le processeur 200 délégant écrit, par l'intermédiaire de l'interface 210 et des ports 212 / 214 écriture et lecture, dans son espace mémoire alloué EMi 302 les paramètres nécessaires à l'exécution de la fonction demandée. Puis le processeur 200 transmet à la base 217 FIFO des données représentant la fonction à exécuter, qui sont par exemple soit une représentation symbolique de la dite fonction soit une adresse de la mémoire 208 - Selon une seconde étape, lorsque le processeur 202 délégué est prêt à exécuter une nouvelle fonction demandée par le processeur 200 délégant, le processeur 202 délégué se positionne au début de la série d'instructions formant la fonction demandée par le processeur 200 délégant en utilisant les paramètres écrits dans l'espace mémoire alloué pour cette nouvelle fonction, à savoir EMi 302, de telle sorte que le processeur délégant peut directement commencer l'exécution de la fonction. II convient de signaler que, dans cette réalisation préférée de l'invention, l'allocation de l'espace mémoire réalisée par le gestionnaire 222 s'effectue de la façon suivante: Lors de la mise en service du processeur 202 délégué, aucun espace mémoire n'est alloué ni au processeur 200 délégant ni au processeur 202 délégué. 2865291 8 Lorsque le processeur 200 délégant demande une première allocation d'espace mémoire, le premier espace mémoire 310 EMO lui est alloué. Puis, lorsque ce processeur 200 délégant demande une nouvelle allocation d'espace mémoire après avoir eu alloué l'espace mémoire EMi 302, alors le gestionnaire lui alloue l'espace mémoire 303 {EM(i+1) modulo n}, n étant un nombre entier, sauf si ce nouvel espace mémoire {(EM(i+1) ou EMO} est déjà utilisé par le processeur 202 délégué. Dans ce dernier cas, le processeur 200 délégant attend jusqu'à ce que ce nouvel espace mémoire {EM(i+1) ou EMO si i=n+1} devienne libre. Cette invention est susceptible de nombreuses variantes. En particulier, 1 o dans une variante, plusieurs processeurs délégants accèdent, par exemple simultanément, aux registres internes du processeur 202. 9 REVENDICATIONS 1. Procédé de transfert de données d'un processeur délégant (200), requérant l'exécution de fonctions, vers un processeur délégué (202), exécutant ces fonctions à partir d'un identifiant de fonction et de paramètres d'exécution associés à cette fonction, cet identifiant et ces paramètres étant fournis par le processeur délégant (200), caractérisé en ce que le processeur délégant (200) accède à une banque (216) de registres internes (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302, . EMn 304) du processeur délégué (202) pour stocker dans ces registres (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) les paramètres associés à une fonction à exécuter simultanément à l'exécution par le processeur délégué d'une autre fonction...CLMF: 2. Procédé selon la revendication 1 caractérisé en ce que le processeur délégant (200) accède à des registres internes (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) exclusivement alloués à ce processeur délégant pour le stockage de données. 3. Procédé selon la revendication 1 ou 2 caractérisé en ce qu'un gestionnaire interne (222) du processeur délégué (202) commande l'allocation des registres (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) de la banque de registres au processeur délégant (200). 4. Procédé selon la revendication 3 caractérisé en ce que, préalablement à l'allocation d'espace mémoire, le processeur délégant (200) requiert au gestionnaire (222) du processeur délégué (202) une allocation d'espace mémoire (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) pour stocker des paramètres nécessaires à l'exécution d'une fonction. 5. Procédé selon la revendication 4 caractérisé en ce que, lorsque le gestionnaire (222) alloue un espace mémoire (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) au processeur délégant (200), ce gestionnaire (222) transmet un identifiant (226) d'espace mémoire alloué au processeur délégant (200) puis ce dernier transfère les paramètres pour l'exécution d'une fonction dans l'espace mémoire alloué. 6. Procédé selon l'une des revendications précédentes caractérisé en ce que le processeur délégant (200) transfère les données identifiant la fonction demandée dans des moyens (217) intermédiaires entre le processeur délégué (202) et le processeur délégant (200), tels qu'une mémoire vive FIFO. 7. Procédé selon l'une des revendications précédentes caractérisé en que la banque (216) de registres internes (EMo 310, EM1 311,...EMj 300, EM(j+ 1) 2865291 10 301,..., EMi 302,... EMn 304) du processeur délégué (202) est une mémoire comprenant des sous-ensembles de registres ayant au moins une des caractéristiques suivantes: - chaque sous-ensemble de registres a ses propres ports d'écriture et de lecture, - chaque sous-ensemble de registres a le même nombre de registres et contient tous les registres nécessaires au fonctionnement du processeur délégué pour exécuter l'ensemble des fonctions que ce processeur délégué est apte à exécuter, chaque sous-ensemble peut communiquer avec le processeur délégant ou le processeur délégué. 8. Procédé selon l'une des revendications précédentes caractérisé en ce que les paramètres sont stockés dans des registres (EMo 310, EM1 311,... EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) comprenant des registres de travail nécessaires aux différents traitements des données exécutés par le processeur délégué ou le processeur délégant. 9. Système multiprocesseur comportant au moins un processeur délégant (200), apte à requérir l'exécution de fonctions par un processeur délégué (202) qui exécute ces fonctions à partir d'un identifiant de fonction et de paramètres d'exécution associés à cette fonction, cet identifiant et ces paramètres étant fournis par le processeur délégant (200), caractérisé en ce qu'il comprend des moyens pour que le processeur délégant (200) accède à une banque (216) de registres internes (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304) du processeur délégué (202) afin de stocker, dans ces registres internes (EMo 310, EM1 311,...EMj 300, EM(j+1) 301,..., EMi 302,... EMn 304), des paramètres associés à une fonction à exécuter simultanément à l'exécution par le processeur délégué (202) d'une autre fonction selon un procédé conforme à au moins une des revendications précédentes. 10. Système multiprocesseur selon la revendication 9 caractérisé en ce qu'une pluralité de microprocesseurs délégants sont en relation avec un même microprocesseur délégué. 11. Processeur délégué (202) apte à exécuter des fonctions à partir d'un identifiant de fonction et de paramètres d'exécution, associés à cette fonction, cet identifiant et ces paramètres étant fournis par un processeur délégant (200), caractérisé en ce qu'il comprend des moyens pour que le processeur délégant (200) accède à une banque (216) des registres internes dudit processeur délégué pour stocker les paramètres associés à une fonction simultanément à l'exécution, par ledit processeur délégué, d'une autre fonction selon un procédé conforme à l'une des revendications 1 à 8.