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
1995 sous le n° 95 04 175 et délivrée le 6 avril 1997 sous le n° 2 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 138, 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 de tableaux en "grains de calculs ", pour aboutir à une forme littérale dite "Q/D". Par ailleurs, dans une demande de brevet n° 99 02 906 déposée le 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 œuvre le procédé dit "ARRAY-OL graphique", à la première étape 101 correspondant à l'invention décrite et revendiquée dans le brevet 95 04175 cité ci-dessus. Il met ensuite en œuvre 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. Il 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'étape 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 un procédé de placement automatique des tâches d'une application dans une machine de traitement de signal comprenant une première étape mettant en œuvre le procédé connu dit "ARRAY-OL graphique" suivie d'une deuxième étape mettant en œuvre le procédé connu dit "ARRAY-OL Q/D", principalement caractérisé en ce qu'il est suivi d'une troisième étape mettant en œuvre 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 Nr.
Selon une autre caractéristique, 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" et "Prolonge";
- 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".
- 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";
- 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"; - un Opérateur Elémentaire miroir "Gabarit-1" qui permet de prolonger ou de couper à paramétrage identique les mêmes connexions que l'Opérateur Elémentaire "Gabarit";
- un Opérateur Elémentaire "Eclatement", correspondant à l'opérateur miroir "Modulo"1", qui fonctionne à l'inverse de l'OE "Modulo" et dont les actions sont "Coupe" et "Multiplie";
- un Opérateur Elémentaire "Shift'1", qui 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 de 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 de 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 en ODT des connexions entre un espace résultat et un espace Q/D 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 œuvre 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 œuvre "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 NT. Pour une tâche donnée, le tableau contenant les éléments opérandes est un sous-ensemble de 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 œuvre 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 qui rendent compte des 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 de guider la qualité d'un 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 ODT, sont formés d'Opérateurs Elémentaires" ou OE.
Les ODT vont être décrits à partir des définitions représentées sur les 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 202 et un espace Récepteur Nr 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 Nr est à gauche. Les dimensions des deux espaces vus par un OE, c'est à dire Nf en entrée ("From") et N1 en sortie ("TO") , 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 de l'espace à sa droite, mais uniquement ceux des éléments déjà atteints par une ou plusieurs connexions émises par l'OE le précédant.
Les éléments de l'espace Emetteur (Ne ≡ Nf de l'OE le plus à droite) sont au départ tous pourvus d'une connexion.
Pour pouvoir dire non seulement à quels éléments de N( est connecté un élément de Nf, mais aussi à quels éléments de Nf est connecté un élément de N\ à chaque OE est associé un OE "miroir" altérant les connexions de la même façon que l'OE 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 l'OE réalisant l'opération la plus familière, ce qui conduit au tableau suivant :
L'OE Gabarit sert essentiellement à définir des tailles de tableau. Cet OE a un Nf et un N* 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: lj >0,Uj >l|. Souvent les lj sont nuls et 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 : lj ≤fj <Uj.
Les actions de l'OE Gabarit sont "Coupe" (symbole 204), "Prolonge" (symbole 205).
A titre d'exemple, pour une dimension f= t= 3 on a :
0 implicite→
3 doublets 0 implicite→
Symbole de l' ODT
L'OE Modulo sert essentiellement à toujours ramener, pour les mettre " à la taille", les accès à l'intérieur des tableaux. Cet OE a un Nf et un N1 de mêmes dimensions. Le Modulo est représenté par un vecteur d'entiers (m); il est identifié par le symbole M. On a : nrij > 1.
Une connexion est établie entre un élément f et un élément t avec pour tout i : t, = (fi ) mod.rïij.
L'action de l'OE 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 que définis dans le brevet 95 04175 cité plus haut, ne partant pas sur l'origine du tableau. Cet OE a un Nf et un N1 de mêmes dimensions.
Le Shift est représenté par un vecteur d'entiers (s), il est identifié par le symbole S. Les Sj peuvent être négatifs.
Une connexion est établie entre un élément f et un élément t avec
L'action de l'OE Shift est "Prolonge" (symbole 205); A titre d'exemple, pour f = t = 3 on a:
0
16
0
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 Q/D sur le tableau résultat, comme défini dans le brevet 96 05 325 cité plus haut.
Cet OE est défini par une matrice de coefficients Wj,c usuellement entiers. La projection établit des connexions entre un espace Nf dont la dimension est le 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 = w, ι,c f
Les actions de l'OE Projection sont "Prolonge", "Fait converger".
A titre d'exemple, pour f = 4 et t= 3 on a
96 32 0 0 0 0 4 0 0 0 0 1
Pour l'OE miroir Gabarit"1, à paramétrage identique, Gabarit et Gabarit _1 prolongent ou coupent les mêmes connexions :
l,u
»-1 G
A titre d'exemple, on a :
32,64 32,64 128 128
,-1
L'OE miroir Modulo" , ou Eclatement, est, comme le Modulo, représenté par un vecteur d'entiers (m) identifié par un M"1.
Une connexion est maintenue entre un élément f et un élément t si pour tout i : fi < m-, avec fi = (tj) mod. m,, ou coupée si fi > nrij.
Les actions de l'OE Modulo ~1 sont "Coupe ", "Multiplie" (symbole 206).
A titre d'exemple, pour une dimension f = t = 3 on a :
L'OE miroir Shift"1 est équivalent à un Shift direct avec des paramètres de signe opposé. A titre d'exemple, pour f = t = 3 on a :
L'OE miroir Segmentation a été nommé ainsi car cet OE 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 2D contenant les mêmes entiers WiιC suivant la même disposition en lignes et colonnes
que la matrice Projection dont cet OE est le miroir. La représentation utilisée
est la suivante : t = W: 1,L _
Nf (resp.N1) a une dimension égale au nombre de lignes (resp. au nombre de colonnes) de ce tableau 2D. Un élément f est connecté à un élément t si: f = l wlιC l . t
Les actions de l'OE Segmentation sont "Multiplie", "Coupe". On remarquera qu'une colonne de 0 équivaut à la création d'une dimension .
A titre d'exemple, pour f = 3 et t = 5 on a :
96 32 0 0 0
0 0 4 0 0
0 0 0 1 0
On rappellera ici que la forme littérale Q/D 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 y 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 représente un quotient, avec la restriction que si Q=1 la dimension est annulée. Une dimension D est une dimension du motif résultat 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 les dimensions D des motifs résultats et des motifs opérandes. Un point de ce tableau est repéré par un vecteur d'indices q,d. Lorsqu'il est multiplié par 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 que 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, et 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 5 l'écriture en ODT 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 est appliqué à un OE "Segmentation " 131 pour lequel les entiers Wi,c 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 les valeurs des pas de pavage. Ces valeurs vérifient des relations respectivement avec d rés. et q. Après l'OE "Gabarit" (132), on obtient un tableau limité au motif résultat. Ce tableau est appliqué à un deuxième OE "Segmentation" (133) où les colonnes de "0" permettent de créer les dimensions d opérandes dont les tailles sont définies dans le gabarit à gauche.
Après l'OE "Gabarit" 134, on obtient un tableau complet. Les tirets qui 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 également 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 de 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 Cl ("Compression d'impulsion") 610. Sur cette figure, on reprend les mêmes conventions que dans la demande de brevet 99 02906, les carrés Ai,.., 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. Son expression sous forme ODT est donnée par :
(Rι)= {I Ml J Si .I PROl .I G| . SEG . | G| }t
Les connexions liant les résultats de cette tâche t aux opérandes de la tâche précédente t-1 , par exemple CONV, s'expriment par :
(R2)= {I Ml J Si J PROl J Gl . SEG . | G| } (Rι) En mettant (R2) sous la forme d'une expression de même type que
(Ri), on définit les motifs, ajustages et pavages de la macro-tâche résultant de la composition des tâches t et M . Pour cela, les OE de (R
2) sont modifiés en respectant une règle qui veut que l'on ne peut pas couper de connexion définie par (R
2), mais que l'on peut en rajouter si besoin est . Les connexions liant les résultats de la nouvelle tâche obtenue M , t aux opérandes de la tâche précédente t-2, par exemple FFT, s'expriment par :
f
En mettant (R3) sous la forme d'une expression de même type que (Ri), on obtient l'expression ODT de la macro-tâche, par exemple Cl.