Brevet FR2799558A1 — publié le 20010413

PROCEDE DE PLACEMENT AUTOMATIQUE DES TACHES D'UNE APPLICATION DANS UNE MACHINE DE TRAITEMENT DE SIGNAL. La présente invention se rapporte aux procédés de placement automatique des tâches d'une application dans une machine de traitement de signal, plus particulièrement dans une machine fonctionnant à partir d'un procédé de saisie graphique connu sous le nom de "ARRAY-OL" . Ce procédé est plus particulièrement décrit dans les deux demandes de brevet suivantes, déposées au nom de la demanderesse. Dans la première de ces demandes de brevet, déposée le 7 avril 995 sous le n 95 04 175 et délivrée le 6 avril 1997 sous le n 732 787, la demanderesse a décrit et revendiqué un procédé de saisie graphique en deux dimensions destiné à être utilisé pour saisir des données numériques structurées en tableau. Dans la deuxième de ces demandes de brevet, déposée le 26 avril 1996 sous le n 96 05325 et délivrée le 14 avril 1998 sous le n 2 748 la demanderesse a décrit et revendiqué un procédé de codage complétant le procédé précèdent et basé sur une structure tableaux en grains de calculs ", pour aboutir à une forme littérale dite "Q/D". Par ailleurs, dans une demande de brevet n 99 02 déposée 9 mars 1999, la demanderesse a décrit et revendiqué une variante du premier de ces deux brevets, enrichi par un système de hiérarchie permettant de décomposer en niveaux successifs les détails d'une application. La figure 1 représente le procédé de placement selon l'art antérieur permettant de passer de la spécification utilisateur au code exécutable par la machine cible appelé "code cible". Dans ce procédé, l'utilisateur met tout d'abord en oeuvre le procédé dit "ARRAY-OL graphique", a la première étape 101 correspondant à l'invention décrite et revendiquée dans le brevet 95 04175 cité ci-dessus. II met ensuite en couvre le procédé dit "ARRAY-OL hiérarchique", à la deuxième étape 102 correspondant à la demande de brevet 99 02906 citée ci-dessus. Puis les informations fournies par 102 sont traduites de manière automatique par le procédé dit "ARRAY- OL littéral" ou "Q/D" à la troisième étape 103 correspondant au brevet 96 05325 cité ci-dessus. II passe ensuite à la dernière étape 104 consistant à convertir les informations fournies par 103 dans le code cible. L'inconvénient du procédé réside dans le fait que l'etape 102 nécessite une intervention humaine. Le procédé selon l'invention permet d'éviter cette intervention et donc d'automatiser le procédé dès la sortie de 101. Pour obtenir cette automatisation, l'invention propose procédé de placement automatique des tâches d'une application dans une machine de traitement de signal comprenant une première étape mettant ceuvre le procédé connu dit "ARRAY-OL graphique" suivie d'une deuxième étape mettant en ceuvre le procédé connu dit "ARRAY-OL Q!D", principalement caractérisé en ce qu'il est suivi d'une troisième étape mettant oeuvre un procédé utilisant des Opérateurs de Distribution de Tableau, dit ODT, formé d'une chaîne d'Opérateurs Elémentaires, dits OE, séparés par des espaces de liaison, pour décrire les connexions entre les éléments d'un espace Emetteur Ne, et les éléments d'un espace Récepteur N`. Selon une autre caractéristique, il utilise 8 Opérateurs Elémentaires dont 4 sont directs et 4 sont les miroirs des directs et qui correspondent actions suivantes - un Opérateur Elémentaire "Gabarit" qui sert à définir les tailles de tableaux et dont les actions sont "Coupe" et "Prolonge"; - Opérateur Elémentaire "Modulo", qui permet de ramener les accès à l'intérieur des tableaux et dont l'action est "Fait converger". - Opérateur Elémentaire "Shift", qui-permet de rendre compte des "pavages" ne partant pas sur l'origine du tableau et dont l'action est "Prolonge"; - un Opérateur Elémentaire "Projection", qui permet d'établir des connexions entre un espace d'entrée Nf et un espace de sortie Nt et dont les actions sont "Prolonge" et "Fait converger"; - Opérateur Elémentaire miroir "Gabarit-"' qui permet de prolonger ou de couper à paramétrage identique les mêmes connexions que l'Opérateur Elémentaire "Gabarit"; - Opérateur Elémentaire "Eclatement", correspondant à l'opérateur miroir "Modulo"'", qui fonctionne à l'inverse de l'OE "Modulo" et dont les actions sont "Coupe" et "Multiplie"; - un Opérateur Elémentaire "Shift-'", est le miroir d'un Shift direct avec des paramètres de signe opposé; et - un Opérateur Elémentaire "Segmentation", qui est le miroir de l'opérateur Projection et qui permet tronçonner un ensemble d'éléments successifs sur une même dimension, et dont les actions sont "Multiplie" et "Coupe". D'autres particularités et avantages l'invention apparaîtront clairement dans la description suivante, présentée à titre d'exemple non limitatif en regard des figures annexées qui représentent - la figure 1, un organigramme de la chaîne du procédé selon l'art antérieur; - la figure 2, un organigramme de la chaîne du procédé selon l'invention; - la figure 3, une illustration de la définition des opérateurs de distribution de tableau, dits ODT; - la figure 4, une illustration graphique de l'utilisation de ces ODT; - la figure 5, un exemple d'écriture ODT des connexions entre un espace résultat et un espace QID complet; - la figure 6, un exemple de représentation de tâches successives sous la forme d'une "macro-tâche"; - la figure 7, un exemple d'écriture en ODT d'une tâche ARRAY- OL. La figure 2 représente la suite des étapes du procédé selon l'invention. L'utilisateur met en oeuvre le procédé "101" comme précédemment. Puis, sans passer par l'étape 102, les informations sont traduites directement par le procédé "103". Selon l'invention, les informations sont ensuite traitées par le procédé dit "ODT" en 110, ODT étant l'abréviation de Opérateurs de Distribution de Tableau. Puis les informations obtenues sont, comme auparavant, converties dans 104. On comprendra donc que les "ODT" constituent un outil permettant, lorsqu'ils sont utilisés dans le cadre du procédé général "ARRAY-OL", de hiérarchiser de manière automatique comme cela était mis en ceuvre "manuellement" dans l'art antérieur en 102. Avec les "ODT", on décrit sous une forme mathématique très raccourcie les relations, ou connexions, entre les éléments d'un espace émetteur Ne et les éléments d'un espace récepteur Nr. Pour une tâche donnée, le tableau contenant les éléments opérandes est un sous-ensemble Ne, de même que le tableau contenant les éléments résultats est un sous- ensemble de Nr. La forme mathématique met en oeuvre les fonctions classiques d'une algèbre linéaire multidimensionnelle en nombres entiers, ainsi que des fonctions nouvelles représentant le "miroir" d'opérations classiques et qui sont particulièrement originales dans l'invention. On obtient ainsi des expressions mathématiquement manipulables rendent compte hiérarchisations, des volumes de calcul et des volumes de données stockées ou échangées entraînés par ces hiérarchisations. Ainsi avec l'invention les critères permettant guider la qualité placement sur une machine d'une application de traitement de signal, dite application de TS, deviennent calculables. Les "Opérateurs de Distribution de Tableau", ou , sont formés d'Opérateurs Elémentaires" ou OE. Les ODT vont être décrits à partir des définitions représentées sur figures 3 et 4. Ils permettent de décrire des connexions entre éléments de tableaux et plus précisément entre les éléments d'un espace Emetteur Ne et un espace Récepteur N'203 de dimension r. En particulier, un ODT 201 décrit quels sont les éléments de Ne connectés à des éléments de Nr et dans ce cas lesquels. Un ODT est constitué d'une chaîne d'Opérateurs Elémentaires OE tels que 301 séparés implicitement par des espaces Nd tels que 302. Par convention, dans les expressions, ou les dessins, l'espace Emetteur Ne est à droite, les connexions se propagent de droite à gauche, et l'espace Récepteur N` est à gauche. Les dimensions des deux espaces vus par un OE, c'est à dire Nf en entrée ("From") et Nt en sortie ("T0") , font partie de son paramétrage. Deux OE consécutifs doivent avoir des dimensions d'espaces ("To" pour l'un, "From" pour le suivant) identiques. Un OE accomplit une seule action sur un lien entre éléments. Un OE peut soit couper, selon le symbole 204, soit prolonger, selon le symbole 205, soit multiplier, selon le symbole 206 soit encore faire converger, selon le symbole 207, les connexions reçues l'espace à sa droite, mais uniquement ceux des éléments déjà atteints par une ou plusieurs connexions émises par 1'0E le précédant. Les éléments de l'espace Emetteur (Ne - Nf 1'0E le plus à droite) sont au départ tous pourvus d'une connexion. Pour pouvoir dire non seulement à quels éléments de Nf est connecté un élément de Nf, mais aussi à quels éléments de Nf est connecté un élément de Nf, à chaque OE est associé un OE "miroir" altérant les connexions de la même façon que 1'0E direct mais en permutant entrées et sorties. Pour décrire dépendances, distribution ou placement, 8 OE, soit 4 OE directs et 4 OE miroirs, s'avèrent suffisants. Entre direct et miroir, on choisit de considérer comme direct 1'0E réalisant l'opération la plus familière, qui conduit au tableau suivant DIRECT MIROIR Gabarit Gabarit -' Modulo Modulo -' ou Eclatement Shift Shift-' Projection Segmentation L'OE Gabarit sert essentiellement à définir des tailles de tableau. 0E a un Nf et un Nf de mêmes dimensions. Le Gabarit est représenté par un vecteur de doublets d'entiers (l,u); il est identifié par le symbole G. On a: l; >_0,u; >I;. Souvent les l; sont nuls peuvent alors ne pas figurer. Une connexion est établie entre un élément f et un élément t, tous deux de mêmes indices, si pour tout i : l; Les actions de 1'0E Gabarit sont "Coupe" (symbole 204), "Prolonge" (symbole 205). A titre d'exemple, pour une dimension f= t= 3 on a L'OE Modulo sert essentiellement à toujours ramener, pour les mettre à la taille", les accès à l'intérieur des tableaux. Cet OE a un et un Nt de mêmes dimensions. Le Modulo est représenté par un vecteur d'entiers il est identifie par le symbole M. On a : mi >_ 1. Une connexion est établie entre un élément f et un élément t avec pour tout i : ti = (fi) mod.m;. L'action de 1'0E Modulo est "Fait converger" (symbole 207). A titre d'exemple, pour une dimension pour f = t = 3 on a L'OE Shift sert essentiellement à rendre compte des "pavages", tels définis dans le brevet 95 04175 cité plus haut, ne partant pas sur l'origine du tableau. Cet OE a un Nt et un Nt de mêmes dimensions. Le Shift est représenté par 'un vecteur d'entiers (s), il est identifié par symbole S. Les s; peuvent être négatifs. Une connexion est établie entre un élément f et un élément t avec pour tout i : ti = f; + si L'action de 1'0E Shift est "Prolonge" (symbole 205); A titre d'exemple, pour f = t = 3 on a: L'OE Projection correspond à la forme la plus simple de distribution d'un espace Nf vers un espace Nt, comme par exemple la distribution de sur le tableau résultat, comme défini dans brevet 96 05 325 cité plus haut. Cet est défini par une matrice de coefficients , usuellement entiers. La projection établit des connexions entre un espace Nf dont la dimension est nombre de colonnes et un espace Nt dont la dimension est le nombre de lignes. Un élément f est connecté à un élément t tel que t = I W;, I. f Les actions de 1'0E Projection sont "Prolonge", "Fait converger". A titre d'exemple, pour f = 4 et t= 3 on a Pour 1'0E miroir Gabarit-', à paramétrage identique, Gabarit et Gabarit-' prolongent ou coupent les mêmes connexions A titre d'exemple, on a L'OE miroir Modulo-', ou Eclatement, est, comme le Modulo, représenté par un vecteur d'entiers (m) identifié par un M"'. Une connexion est maintenue entre un élément f et un élément t si pour tout i : f; _ m;. Les actions de l'OIE Modulo -' sont "Coupe ", "Multiplie" (symbole 206). A titre d'exemple, pour une dimension f = t = 3 on a L'OE miroir Shift-' est équivalent à un Shift direct avec des paramètres de signe opposé, titre d'exemple, pour f = t = 3 on a : _ miroir Segmentation a été nommé ainsi car cet permet de tronçonner un ensemble d'éléments successifs sur une même dimension en "segments". Une Segmentation est caractérisée par un tableau contenant les mêmes entiers W;,, suivant la même disposition en lignes et colonnes que matrice Projection dont cet OE est le miroir. La représentation utilisée est suivante Nf (resp.Nt) a une dimension égale au nombre lignes (resp. au nombre de colonnes) de ce tableau 2D. Un élément f est connecté à un élément t si: f = W;, . t Les actions de 1'0E Segmentation sont "Multiplie", "Coupe". On remarquera qu'une colonne de 0 équivaut a la création d'une dimension . A titre d'exemple, pour f = 3 et t = 5 on a On rappellera ici que la forme littérale QID est décrite dans le brevet 96 05325 cité plus haut, où l'on remarque que Q et D représentent des dimensions. Une dimension Q a pour taille une dimension du tableau résultat (S'il a en plusieurs, on privilègie le "Maître") divisée par la taille de la dimension du motif ajustée parallèlement à la dimension du Maître. Elle represente un quotient, avec la restriction que si Q=1 dimension est annulée. Une dimension D est une dimension du motif resultat appliqué au "Maître"; elle représente un diviseur et est étendue au motif opérande. Un tableau Q/D rassemble les dimensions Q et dimensions D des motifs résultats et des motifs opérandes. Un point ce tableau est repéré par un vecteur d'indices q,d. Lorsqu'il est multiplié des matrices, le vecteur, q,d permet de trouver les éléments lus ou écrits dans les tableaux considérés par la tâche en cours. Ces matrices contiennent les coefficients correspondant aux pas d'ajustage (a) et de pavage (p) tels définis dans le brevet 96 05325. Elles contiennent des colonnes de "0" permettant d'ignorer les indices correspondant aux motifs placés sur d'autres tableaux. Ainsi, dans le modèle Q/D, la spécification d'une tâche se résume aux paramètres donnant les dimensions et les tailles du tableau Q.D, le contenu des matrices, les dimensions et les tailles des tableaux opérandes, le vecteur d'offset qui est ajouté au vecteur obtenu après multiplication de q,d par la matrice de projection opérande. Dans ces conditions, on a représenté sur la figure l'écriture en des connexions entre l'espace résultat et l'espace Q/D complet (c'est à dire portant sur les tableaux résultats et opérandes). Un OE "Gabarit" 130 définit un tableau résultats qui appliqué à un "Segmentation " 131 pour lequel les entiers W;,r sont répartis en 2 sous-matrices. Une première sous-matrice comprend a rés. qui représente les valeurs des pas d'ajustage sur le tableau résultat et p rés. qui représente valeurs des pas de pavage. Ces valeurs vérifient des relations respectivement avec d rés. et q. Après 1'0E "Gabarit" (132), on obtient un tableau limité au motif resultat. Ce tableau est appliqué à un deuxième OE "Segmentation" (133) où colonnes de "0" permettent de créer les dimensions d opérandes dont les tailles sont définies dans le gabarit à gauche. Après VOIE "Gabarit" 134, on obtient un tableau complet. Les tirets séparent les OE désignent une concaténation. Le gabarit intermédiaire peut être supprimé et on peut remplacer les 2 segmentations consécutives par leur produit en se ramenant ainsi à un seul OE "Segmentation" comme représenté dans l'exemple de la figure 6 en 200. Sur cette figure, on a egalement représenté les connexions entre l'espace Q/D complet et l'espace opérande. Les OE successifs sont : "Projection" 210, où la colonne "0" permet "d'éliminer" les dimensions des motifs résultats, "Shift" 211 qui permet de tenir compte de l'offset, c'est à dire du fait que les motifs opérandes à la première itération ont une origine qui n'est pas placée sur celle du tableau, et enfin "Modulo" 212 pour tenir compte du rebouclage des dimensions introduit par ARRAY-OL. Ceci correspond par exemple aux données provenant des signaux des capteurs d'une antenne cylindrique. Une application, en particulier de Traitement de signal, est formée tâches consécutives qui sont composables en une seule "macro-tâche", comme représenté sur l'exemple de composition de tâches de la figure 6. Les tâches successives FFT 601, CONV (convolution) 602 et IFFT (FFT inverse) 603 sont rassemblées en une macro-tâche CI ("Compression d'impulsion") 610. Sur cette figure, on reprend les mêmes conventions que dans la demande de brevet 99 02906, les carrés A1,.., A4 représentant des tableaux de données et les cercles représentant des tâches. La figure 7 correspond à un exemple qui définit les connexions relatives une tâche ARRAY-OL "t" par exemple IFFT, expression sous forme est donnée par (R,)= {I MI .I SI .I PROI. GI . SEG . I GI }t Les connexions liant les résultats de cette tâche t aux opérandes de la tache précédente t-1, par exemple CONV, s'expriment par (R2)= {I MI .I SI .I PROI . GI . SEG . I GI }t-t(R1) En mettant (R2) sous la forme d'une expression même type que (R1), définit les motifs, ajustages et pavages de la macro-tâche résultant de la composition des tâches t et t-1. Pour cela, les OE de (R2) sont modifiés en respectant une règle qui veut que l'on ne peut pas couper de connexion définie par (R2), mais que l'on peut en rajouter si besoin est . Les connexions liant les résultats de la nouvelle tâche obtenue t-1, t aux opérandes de la tâche précédente t-2, par exemple FFT, s'expriment par: (R3) _ IM . SLIPROLIGLSEG. GI._2 IMLISI. PROI. GI. SEG.I G -1,t En mettant (R3) sous la forme d'une expression de même type que (R1), on obtient l'expression ODT de la macro-tâche, par exemple CI. REVENDICATIONS 1 - Procédé de placement automatique des tâches d'une application dans une machine de traitement de signal comprenant une première étape (101) mettant en couvre le procédé connu dit "ARRAY-OL graphique", suivie d'une deuxième étape (103) mettant en couvre le procédé connu dit "ARRAY-OL O/D", caractérisé en ce qu'il est suivi d'une troisième étape (110) mettant en couvre un procédé utilisant des Opérateurs de Distribution de Tableau (201), dit ODT, formé d'une chaîne d'Opérateurs Elémentaires (301), dits OE, séparés par des espaces de liaison (302), pour décrire les connexions entre les éléments d'un espace Emetteur (202) Ne , et les éléments d'un espace Récepteur (203) N'. - Procédé selon la revendication 1, caractérisé en ce qu'il utilise 8 Opérateurs Elémentaires OE dont 4 sont directs et 4 sont les miroirs des directs et qui correspondent aux actions suivantes - un Opérateur Elémentaire "Gabarit" qui sert à définir les tailles de tableaux et dont les actions sont "Coupe" (204) et "Prolonge" (205); - un Opérateur Elémentaire "Modulo", qui permet de ramener les accès à l'intérieur des tableaux et dont l'action est "Fait converger" (207). un Opérateur Elémentaire "Shift", qui-permet de rendre compte des "pavages" ne partant pas sur l'origine du tableau et dont l'action est "Prolonge" (205); - un Opérateur Elémentaire "Projection", qui permet d'etablir des connexions entre un espace d'entrée Nf et un espace de sortie Nt et dont les actions sont "Prolonge" et "Fait converger"; - un Opérateur Elémentaire miroir "Gabarit-"' qui permet de prolonger ou de couper à paramétrage identique mêmes connexions que l'Opérateur Elémentaire "Gabarit"; - un Opérateur Elémentaire "Eclatement", correspondant à l'opérateur miroir "Modulo-'", qui fonctionne à l'inverse de 1'0E "Modulo" et dont les actions sont "Coupe" et "Multiplie" (206); - un Opérateur Elémentaire "Shift-'", est le miroir d'un Shift direct avec des paramètres de signe opposé; - un Opérateur Elémentaire "Segmentation", qui est le miroir de l'opérateur Projection et qui permet tronçonner un ensemble d'éléments successifs sur une même dimension, et dont les actions sont "Multiplie" et "Coupe".