Brevet FR3051933A1 — publié le 20171201

Dispositif et procédé de traitement parallélisé de données La présente invention concerne un procédé de traitement parallélisé de données, un dispositif de traitement parallélisé de données, ainsi qu'un procédé pour réaliser un dispositif de traitement parallélisé de données. En microélectronique, le "parallélisme" ou "traitement parallélisé de données" ("parallelized data processing") est une technique consistant à utiliser des architectures de processeurs capables de traiter des données de manière simultanée, sous le contrôle de programmes spécifiquement prévus pour assurer un tel traitement. Cette technique a pour but de réaliser le plus grand nombre d'opérations en un temps le plus petit possible. Les circuits intégrés à réseau de portes programmables, ou FPGA ("Field Programmable Gate Array") sont particulièrement adaptés à la réalisation d'architectures de processeurs parallélisées. Un circuit FPGA vierge est transformé en un circuit intégré opérationnel par configuration du réseau de portes logiques qu'il comprend. Cette configuration est tout d'abord définie dans un langage descriptif matériel, dit HDL ("Hardware Description Language"), ou ses variantes (VHDL, Verilog...), permettant de décrire le comportement ainsi que l'architecture du circuit matériel. La description du circuit en langage descriptif matériel est ensuite compilée pour obtenir une configuration de circuit FPGA. Chaque fabricant de circuit FPGA propose à cet effet des outils dits de synthèse logique et de placement routage permettant, à partir du circuit HDL, d'obtenir une configuration de FPGA également appelée "bitstream", prête à être chargée dans la mémoire de configuration du FPGA pour obtenir un circuit intégré opérationnel. La description d'un circuit en langage descriptif matériel étant une opération complexe réservée aux spécialistes, il est connu de décrire la fonction de traitement exécutée par le circuit en utilisant un langage à haut niveau d'abstraction, par exemple le langage C ou C++, pour obtenir une description dite fonctionnelle. La description fonctionnelle est ensuite compilée pour obtenir le circuit HDL, soit l'expression de la fonction dans le langage descriptif matériel, qui est elle-même compilée pour obtenir une configuration de circuit FPGA. Ce procédé permet de mettre la filière des circuits FPGA à la portée de programmeurs n'ayant pas d'expérience dans l'utilisation des langages descriptifs matériels. 3051933 2 Le passage de la description fonctionnelle à la description matérielle fait intervenir un compilateur à synthèse de haut niveau FILS ("High Level Synthesis") qui effectue cette transformation à partir d'un modèle d'architecture matérielle, ou architecture cible, définissant les caractéristiques générales du circuit HDL. Ce modèle d'architecture présente 5 un certain nombre de caractéristiques ajustables, choisies au cours d'une étape de définition des contraintes matérielles intervenant avant la compilation FILS, telles que des vitesses d'horloge de bus, le nombre de bus de données agencés en parallèle et la taille de ces bus (nombre de bits qu'ils véhiculent). 10 L'architecture cible permettant de mettre en oeuvre le circuit HDL n'est généralement pas parfaitement adaptée aux besoins particuliers de la fonction à mettre en oeuvre, notamment en ce qui concerne le nombre de bus parallèles qu'elle comporte relativement au nombre de données que la fonction peut traiter simultanément. Ainsi, le nombre de bus parallèles est généralement un multiple de 2, même si la fonction mise en oeuvre ne traite pas 15 simultanément un nombre de données qui est un multiple de 2. Toutefois, l'architecture cible peut présenter un nombre de bus de données qui, à défaut d'être égal, est supérieur au nombre de données que la fonction peut traiter simultanément, afin d'exploiter au maximum son parallélisme. Lorsque plusieurs fonctions de traitement de données sont mises en oeuvre dans le même circuit, c'est la fonction capable de traiter simultanément le 20 plus grand nombre de données qui détermine généralement le degré de parallélisme retenu dans l'architecture cible. Ces caractéristiques structurelles de l'architecture cible doivent être prises en compte au stade de la description fonctionnelle du circuit, en utilisant des variables typées - c'est-à- 25 dire de taille déterminée -, telles que CHAR (1 octet), INT (4 octets avec un processeur 32 bits), et DOUBLE (8 octets) en C ou C++, qui sont adaptées au nombre de données parallélisées. Par exemple, si l'architecture cible présente 8 bus de données parallèles, la variable "DOUBLE" sera utilisée dans la description fonctionnelle du circuit. 30 Il s'ensuit une sorte de "contamination" de la description fonctionnelle par des contraintes matérielles, liée à une inadéquation de l'architecture cible relativement aux besoins réels de la fonction et à l'utilisation de variables typées. Cette "contamination" complexifie l'expression de la fonction dans le langage à haut niveau d'abstraction. Elle complexifie également le processus de réalisation et de mise au point d'un circuit FPGA. Un circuit 35 FPGA étant en effet reconfigurable à volonté, il est habituel de remanier l'architecture cible après une période d'évaluation du circuit, en revenant à l'étape de définition des contraintes 3051933 3 matérielles. La nouvelle définition des contraintes matérielles peut se traduire, notamment, par une augmentation du nombre de bus parallèles, afin de résoudre des cas de congestion de données identifiés au cours de la période d'évaluation. Dans ce cas, la description fonctionnelle du circuit doit être réécrite afin de prendre en compte les modifications 5 apportées à l'architecture matérielle qui la met en oeuvre. Il existe également des fonctions configurées pour traiter simultanément un nombre de données qui varie avec le temps. Cette variabilité peut dépendre d'une consigne externe ou d'un paramètre interne qui est fonction du résultat d'étapes de traitement précédentes 10 (fonctions auto-adaptatives dites "à comportement dépendant des données"). Dans ce cas, une modification de l'architecture cible entraîne un encore plus grand nombre de modifications dans l'expression de la fonction dans le langage à haut niveau d'abstraction. Il pourrait donc être souhaité de prévoir un procédé et un dispositif de traitement parallélisé 15 de données qui simplifie le processus de conception, de réalisation et d'optimisation d'un circuit FPGA. Il pourrait également être souhaité de prévoir un procédé et un dispositif de traitement parallélisé de données qui simplifie le traitement d'un nombre de données différent du 20 nombre de données véhiculées par un ensemble de bus parallèles. Des modes de réalisation de l'invention concernent un dispositif de traitement parallélisé de données, comprenant : une première unité comprenant des sorties parallèles pour fournir des mots binaires en parallèle, et une seconde unité comprenant des entrées parallèles pour 25 recevoir un ensemble de mots binaires en parallèle fournis par la première unité, dans lequel la seconde unité est configurée pour lire simultanément, au cours d'une même étape de lecture, tout ou partie des mots binaires de l'ensemble de mots binaires appliqué sur ses entrées parallèles, et renvoyer une instruction de purge de certains mots binaires de l'ensemble de mots binaires. Le dispositif comprend une unité de mise en correspondance 30 de données reliant les sorties parallèles de la première unité aux entrées parallèles de la seconde unité et configurée pour fournir à la seconde unité un premier ensemble de mots binaires fourni par la première unité, et, après lecture par la seconde unité d'une partie des mots binaires du premier ensemble de mots binaires, fournir à la seconde unité le ou les mots du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots 35 binaires d'un second ensemble de mots binaires fourni par la première unité. 3051933 4 Selon un mode de réalisation, l'unité de mise en correspondance de données est également configurée pour, lorsqu'une partie du second ensemble de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires d'un troisième ensemble de mots 5 binaires fourni par la première unité. Selon un mode de réalisation, la seconde unité est configurée pour, lors de la lecture d'une partie des mots binaires appliqués sur ses entrées parallèles, lire des mots binaires présents sur des entrées à plus haute priorité de lecture, et l'unité de mise en correspondance de 10 données est configurée pour, après purge par la seconde unité d'une partie de mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de la seconde unité des mots du premier ensemble de mots binaires précédemment appliqués sur des entrées parallèles et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires du second 15 ensemble de mots binaires. Selon un mode de réalisation, l'unité de mise en correspondance de données comprend au moins deux registres d'entrée agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité, un registre de sortie ayant des sorties reliées aux 20 entrées parallèles de la seconde unité, un circuit à réorganisation de données reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie, et un circuit de contrôle configuré pour : charger dans les registres d'entrée des ensembles de mots binaires fournis par la première unité, et charger dans le registre de sortie, par l'intermédiaire du circuit à réorganisation de données, des mots binaires présents dans les registres d'entrée, 25 commander le circuit à réorganisation de données en fonction du nombre de mots binaires ayant été purgés, de manière à charger dans des cellules à plus haute priorité de lecture du registre de sortie les mots binaires présents dans les registres d'entrée et n'ayant pas été purgés, et charger dans des cellules de plus faible priorité du registre de sortie des mots binaires présents dans les registres d'entrée et n'ayant pas encore été présentés à la seconde 30 unité. Selon un mode de réalisation, le circuit de contrôle est configuré pour charger dans l'un des registres d'entrée un nouvel ensemble de mots binaires fourni par la première unité au moins lorsque tous les mots binaires de l'ensemble de mots binaires présent dans le registre 35 d'entrée ont été purgés. 3051933 5 Selon un mode de réalisation, la seconde unité est configurée pour déterminer le nombre de mots binaires qu'elle lit au cours d'une même étape de lecture en fonction des mots binaires précédemment lus ou en fonction d'une consigne externe. 5 Selon un mode de réalisation, la première unité est un processeur, un circuit d'interface de communication série/parallèle, un circuit d'adaptation d'un nombre de bus agencés en parallèle, un circuit de modification de fréquence d'horloge, ou une combinaison de ces éléments. 10 Des modes de réalisation concernent également un circuit intégré à réseau de portes programmables, comprenant un dispositif tel que défini ci-dessus. Des modes de réalisation concernant également un procédé de traitement de données au moyen d'un dispositif de traitement parallélisé de données comprenant une première unité 15 comprenant des sorties parallèles pour fournir des mots binaires en parallèle, et une seconde unité comprenant des entrées parallèles pour recevoir un ensemble de mots binaires en parallèle fournis par la première unité, le procédé comprenant les étapes consistant à : au moyen de la seconde unité, lire simultanément, au cours d'une étape de lecture, tout ou partie des mots binaires de l'ensemble de mots binaires appliqué sur ses 20 entrées parallèles, et renvoyer, après une étape de lecture, une instruction de purge de certains mots binaires de l'ensemble de mots binaires, et après lecture par la seconde unité de tout ou partie des mots binaires du premier ensemble de mots binaires, fournir à la seconde unité le ou les mots du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires d'un second ensemble de mots binaires fourni par la 25 première unité. Selon un mode de réalisation, le procédé comprend l'étape consistant à, lorsqu'une partie du second ensemble de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs 30 mots binaires d'un troisième ensemble de mots binaires fourni par la première unité. Selon un mode de réalisation, le procédé comprend les étapes consistant à : lors de la lecture de tout ou partie des mots binaires appliqués sur les entrées parallèles de la seconde unité, lire des mots binaires présents sur des entrées à plus haute priorité de lecture, et 35 après purge d'une partie des mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de lecture de la seconde unité des mots du premier 3051933 6 ensemble de mots binaires précédemment appliqués sur des entrées de plus faible priorité de lecture et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires du second ensemble de mot binaire. 5 Selon un mode de réalisation, le procédé comprend l'étape consistant à prévoir, entre la première et la seconde unité, une unité de mise en correspondance de données reliant les sorties parallèles de la première unité aux entrées parallèles de la seconde unité et comprenant au moins deux registres d'entrée agencés en parallèle et ayant chacun des 10 entrées parallèles reliées aux sorties de la première unité, un registre de sortie ayant des sorties reliées aux entrées parallèles de la seconde unité, et un circuit à réorganisation de données reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie. 15 Selon un mode de réalisation, le procédé comprend une étape consistant à charger dans l'un des registres d'entrée un nouvel ensemble de mots binaires fourni par la première unité, au moins lorsque tous les mots binaires de l'ensemble de mots binaires présent dans le registre d'entrée ont été purgés. 20 Des modes de réalisation concernent également un procédé pour réaliser, dans un circuit intégré à réseau de portes programmables, un dispositif exécutant une fonction de traitement parallélisé de données nécessitant des étapes de lecture simultanée de mots binaires dans un ensemble de mots binaires véhiculés par des bus de données parallèles, le procédé comprenant : une étape de description fonctionnelle de la fonction de traitement en 25 utilisant un langage à haut niveau d'abstraction et en utilisant une variable non typée de taille non spécifiée pour désigner les mots binaires devant être lus simultanément, une étape de définition de contraintes matérielles à prendre en compte dans la réalisation du dispositif et incluant un choix d'un degré de parallélisme du dispositif, à partir de la définition fonctionnelle et des contraintes matérielles, une étape de description matérielle 30 du dispositif présentant le degré de parallélisme choisi, en utilisant comme architecture cible un dispositif tel que décrit ci-dessus, dans lequel la seconde unité exécute la fonction de traitement des données, et à partir de la description matérielle du dispositif, une étape de configuration du circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme choisi. 35 3051933 7 Selon un mode de réalisation, le procédé comprend les étapes consistant à : tester le dispositif, remanier la définition des contraintes matérielles du dispositif de manière à modifier son degré de parallélisme, sans modifier la description fonctionnelle de la fonction de traitement, remanier la description matérielle du dispositif à partir de la 5 définition remaniée des contraintes matérielles, et à partir de la description matérielle remaniée du dispositif, reconfigurer le circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme modifié. Des modes de réalisation de l'invention seront décrits dans ce qui suit, à titre non limitatif, 10 en relation avec les dessins annexés parmi lesquels : - la figure 1 représente un exemple de dispositif classique de traitement parallélisé de données, - la figure 2 représente un mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention, 15 - la figure 3 montre un mode de réalisation d'une unité de mise en correspondance représentée sous forme de bloc sur la figure 2, - la figure 4 est un organigramme illustrant le fonctionnement de l'unité de mise en correspondance, - la figure 5 montre une séquence de mise en correspondance de données, exécutée par 20 l'unité de mise en correspondance, - la figure 6 montre des étapes d'un procédé de réalisation d'un circuit intégré FPGA selon l'invention, - les figures 7A, 7B, 7C illustrent le procédé de la figure 6 et montrent divers modes de réalisation d'un dispositif de traitement parallélisé de données selon l'invention présentant 25 des degrés de parallélisme différents, - la figure 8 montre un autre mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention, et - la figure 9 représente un autre mode de réalisation d'un dispositif de traitement parallélisé de données selon l'invention. 30 Un exemple de dispositif classique de traitement parallélisé de données DV1 est représenté sur la figure 1. Le dispositif comprend une unité Ua assurant la fourniture de données parallèles, une unité Ub assurant le traitement parallélisé des données fournies par l'unité Ua, et des bus de données Bo à Bm reliant les deux unités. L'unité Ua comprend des sorties 35 So à Sm fournissant chacune un mot binaire wo à wm d'un ensemble de mots binaires W et l'unité Ub comprend des entrées Eo à Em recevant chacun un mot binaire wo à wm de 3051933 8 l'ensemble de mots binaires, chaque sortie Si de rang i de l'unité Ua étant reliée à une entrée Ei de rang correspondant de l'unité Ub par un bus de données Bi. L'unité Ua envoie à l'unité Ub un signal RDY ("Ready") lorsque l'ensemble W de mots binaires w, est disponible sur ses sorties Si, et l'unité Ub renvoie un signal d'accusé de réception ACK 5 ("Acknowledge") lorsque ces mots binaires ont été lus via ses entrées Ei. Sur réception du signal ACK, l'unité Ua fournit un nouvel ensemble W' de mots binaires (wo à wm) et émet de nouveau le signal RDY. Si la fonction exécutée par l'unité Ub traite simultanément, à chaque étape de traitement, 10 un nombre de mots binaires inférieur au nombre I de mots binaires w, véhiculés par les bus de données B' l'unité Ub doit néanmoins lire tous les mots binaires et mettre en mémoire ceux devant être traités au cours d'une étape de traitement suivante, afin que l'unité Ua puisse présenter sur ses sorties le nouvel ensemble de mots binaires W' avant l'étape de traitement suivante. Cette étape de traitement peut en effet nécessiter des mots binaires du 15 nouvel ensemble de mots binaires W' en sus des mots binaires précédemment mémorisés. Cet écart entre le nombre de données traitées et le nombre de données fournies doit être pris en compte dans l'écriture de la fonction dans un langage à haut niveau d'abstraction, en faisant appel à des artifices de programmation tels que l'utilisation de variables de type 20 tableau (par exemple en langage C la variable "TABLEAU[i][j]" pour un tableau de i*j variables) qui se traduisent, après réalisation du circuit opérationnel, par la réservation de zones mémoire dédiées à ces variables et l'exécution de cycles d'accès en lecture et écriture de ces zones mémoire. 25 Comme indiqué plus haut, un remaniement de l'architecture du dispositif DV1, après une période d'évaluation, et notamment une augmentation du nombre I de bus parallèles, implique un remaniement de la description fonctionnelle du dispositif dans un langage à haut niveau d'abstraction et complexifie le procédé de réalisation et de mise au point de ce dispositif. 30 Un mode de réalisation d'un dispositif de traitement parallélisé de données DV2 selon l'invention est représenté sur la figure 2. Le dispositif comprend une unité UO assurant la fourniture de données parallèles, une unité Ul assurant le traitement parallélisé de données, un ensemble de bus de données parallèles B, (Bo à B1_1) reliant les unités UO et Ul, et une 35 unité de mise en correspondance BDG agencée entre les unités UO et Ul sur les bus de données Bi. 3051933 9 Il sera noté que, dans la présente description, le terme "mot binaire" désigne une unité de donnée pouvant être traitée par l'unité Ul et dont la taille est de plusieurs bits, par exemple 8, 16, 32, 64 bits, ou tout autre format. Ainsi, le terme "bus" désigne un groupe de 5 plusieurs pistes conductrices en parallèle permettant de véhiculer un mot. Chaque bus de données B, comprend une première section Sa reliant l'unité UO à l'unité BDG et une seconde section Sb reliant l'unité BDG à l'unité Ul. L'unité UO comprend des sorties Si (So à Sm) reliées à des entrées Ei (Eo à Em) de l'unité BDG par la première 10 section Sa de l'ensemble de bus B' et l'unité BDG comprend des sorties Si (So à Sm) reliées à des entrées Ei (Eo à Em) de l'unité Ul par la seconde section B de l'ensemble de bus Bi. L'unité UO envoie à l'unité BDG un signal RDY1 lorsqu'un ensemble W de mots binaires 15 wo à wm est disponible sur ses sorties Si, et l'unité BDG renvoie un signal d'accusé de réception ACK1 lorsque l'ensemble de mots binaires a été lu. Sur réception du signal ACK1, l'unité UO fournit un nouvel ensemble W' de mots binaires wO' à wm', et ainsi de suite. De même, l'unité BDG envoie à l'unité Ul un signal RDY2 lorsque des mots binaires wi sont disponibles sur ses sorties Si, et l'unité Ul renvoie un signal d'accusé de réception 20 ACK2 lorsque ces mots binaires ont été lus. Sur réception du signal ACK2, l'unité BDG fournit un nouvel ensemble de mots binaires, et ainsi de suite. Selon l'invention, l'unité Ul est configurée pour ne lire, parmi un ensemble de mots binaires fourni par l'unité BDG, que les mots binaires dont elle a immédiatement besoin, 25 par exemple pour exécuter une étape de traitement parallélisé de données. L'unité Ul fournit alors à l'unité BDG une information sur les mots binaires ayant été lus. Cette information est fournie avec le signal ACK2, ou forme le signal ACK2. Sur réception de cette information, l'unité BDG présente de nouveau à l'unité Ul les mots binaires n'ayant pas été lus au cours de l'étape de lecture précédente, ainsi que des mots binaires du nouvel 30 ensemble de mots binaires fourni par l'unité U0. L'unité BDG fournit ainsi à l'unité Ul des ensembles de mots binaires "hybrides" comprenant des mots binaires wi, w,' provenant d'ensembles de mots binaires différents fournis par l'unité U0. Dans un mode de réalisation, l'unité Ul est configurée pour lire les mots binaires w, fournis 35 par l'unité BDG selon une hiérarchie de lecture de ses entrées, par exemple en conférant à sa première entrée E0 la plus haute priorité de lecture et à sa dernière entrée Em la plus 3051933 10 faible priorité de lecture. Ainsi, lors d'une lecture partielle des mots binaires qui lui sont présentés par l'unité BDG, l'unité Ul lit prioritairement les mots binaires présents sur des entrées Ei à plus haute priorité de lecture, soit ici à commencer par l'entrée E0, et renvoie à l'unité BDG l'information sur les mots binaires ayant été lus sous la forme d'un nombre 5 "Nj" indiquant le nombre de données lues sur ses entrée, "j" étant un indice représentant le rang de l'étape de lecture venant d'être exécutée. Le nombre Nj est inclus dans le signal ACK2(Nj), ou forme le signal ACK2(Nj). Dans ce cas, l'unité BDG est configurée pour, après avoir reçu le nombre Nj, fournir à 10 l'unité Ul les I-Nj mots binaires wi n'ayant pas été lus par l'unité Ul, ainsi que Nj mots binaires w,' d'un ensemble de mots suivant W' fourni par l'unité U0. A cet effet, l'unité BDG décale la position des I-Nj mots binaires wi sur ses sorties de manière que ceux-ci soient présentés sur ses sorties à plus haute priorité de lecture, et présente les Nj mots binaires wi' de l'ensemble de mots binaires suivant sur ses sorties à plus faible priorité. 15 Pour fixer les idées, un exemple de séquence de mise en correspondance de mots binaires sera maintenant décrit. On suppose ici que I est égal à 8 et que l'unité UO fournit successivement à l'unité BDG les ensembles de mots binaires Wl, W2, W3, W4, W5 suivants : 20 W1 = a0 al a2 a3 a4 a5 a6 a7 W2 = b0 bl b2 b3 b4 b5 b6 b7 W3 = c0 cl c2 c3 c4 c5 c6 c7 W4 = dO dl d2 d3 d4 d5 d6 d7 25 W5 = e0 el e2 e3 e4 e5 e6 e7 Ces ensembles de mots binaires sont lus séquentiellement par l'unité BDG et sont considérés par celle-ci comme formant une chaîne de mots binaires ininterrompue, soit : 30 a0 al a2 a3 a4 a5 a6 a7 b0 bl b2 b3 b4 b5 b6 b7 c0 cl c2 c3 c4 c5 c6 c7 dO dl d2 d3 d4 d5 d6 d7 e0 el e2 e3 e4 e5 e6 e7 dans laquelle l'unité BDG peut former des ensembles de mots binaires différents des ensembles de mots binaires initiaux qui constituent la chaîne de mots. 35 3051933 11 Au commencement d'un cycle de lecture de données par l'unité Ul, l'unité BDG fourni tout d'abord à l'unité Ul l'ensemble de mots binaires W1 : a0 al a2 a3 a4 a5 a6 a7 5 On suppose ici qu'au cours d'une première étape de lecture, l'unité Ul lit les mots binaires a0 à a4 et renvoie l'information N1=5 à l'unité BDG. Celle-ci fournit alors l'ensemble de mots binaires suivant, qui se retrouve sur les entrées E0 à Em de l'unité Ul : 10 a5 a6 a7 b0 bl b2 b3 b4 On suppose également qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires a5, a6, a7, b0 et renvoie l'information N2=4 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : 15 bl b2 b3 b4 b5 b6 b7 c0 On suppose ensuite qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires bl à b7 et c0 et renvoie l'information N3=8 à l'unité BDG. Celle-ci fournit alors à 20 l'unité Ul l'ensemble de mots binaires suivant : cl c2 c3 c4 c5 c6 c7 dO On suppose ensuite qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots 25 binaires cl à c7 et renvoie l'information N4=7 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : dO dl d2 d3 d4 d5 d6 d7 30 On suppose enfin qu'au cours d'une étape de lecture suivante, l'unité Ul lit les mots binaires dO à d5, et renvoie l'information N5=6 à l'unité BDG. Celle-ci fournit alors à l'unité Ul l'ensemble de mots binaires suivant : d6 d7 e0 el e2 e3 e4 e5 35 3051933 12 La figure 3 représente un mode de réalisation de l'unité BDG mettant en oeuvre le procédé de mise en correspondance qui vient d'être décrit, avec hiérarchisation des entrées et utilisation du nombre Nj pour indiquer le nombre d'entrées à plus haute priorité lues au cours d'une étape de lecture de rang "j". L'unité BDG comprend deux registres d'entrée R1, 5 R2, un circuit à réorganisation de données BS, ici un circuit à décalage circulaire, un registre de sortie R3 et un circuit de contrôle CCT1. Chaque registre comprend I cellules de registre pouvant chacun recevoir un mot binaire wi. Des entrées E0 à Em du registre R1, correspondant chacune à une entrée d'une cellule du registre, sont reliées aux sorties So à Sm de l'unité U0. De façon similaire, des entrées E0' à Em' du registre R2 sont reliées aux 10 sorties So à Sm de l'unité U0. Des sorties So à Sm du registre R1, correspondant chacune à une sortie d'une cellule du registre, sont reliées à des entrées E0 à Em du circuit à décalage circulaire BS. De façon similaire des sorties SO' à Sm' du registre R2 sont reliées à des entrées E0' à Em' du circuit à décalage circulaire B S. Le circuit BS comprend des sorties So à Sm reliées à des entrées E0 à Em du registre R3, qui comprend des sorties So à Sm reliées 15 aux entrées Eo à Em de l'unité Ul. Le circuit CCT1 gère les échanges de données avec l'unité UO et l'unité Ul. Il reçoit le signal RDY1 et renvoie le signal ACK1 après avoir chargé dans l'un des registres R1, R2 un ensemble de mots binaires fourni par l'unité U0. Il reçoit également le signal ACK2(Nj) 20 de l'unité Ul et lui envoie le signal RDY2 lorsqu'un nouvel ensemble de mots binaires a été chargé dans le registre R3. A cet effet, le circuit CCT1 applique un signal de chargement de données LD1 au registre R1 ou un signal de chargement de données LD2 au registre R2, et charge en alternance, dans chaque registre, les ensembles de mots binaires reçus de l'unité U0. Le circuit CCT1 s'assure que ces registres ne comprennent pas de 25 données obsolètes ayant été lues par l'unité Ul en exécutant un procédé de mise à jour de ces registres dont un exemple sera décrit plus loin. Le circuit CCT1 applique également un signal de décalage SHIFT au circuit BS, avec comme valeur de ce signal la dernière valeur Nj reçue de l'unité Ul, indiquant le nombre 30 de mots binaires lus par celle-ci. Après avoir appliqué le signal SHIFT au circuit BS, le circuit CCT1 charge les mots binaires fournis par les sorties So à Sm du circuit BS dans le registre de sortie R3, en appliquant à celui-ci un signal LD3, et envoie le signal RDY2 à l'unité Ul. 35 La figure 4 est un organigramme décrivant un exemple de configuration du circuit CCT1, celui-ci étant par exemple réalisé sous forme d'automate fini ou "FSM" ("Finite State 3051933 13 Machine"). On distingue des étapes B00 à B08 et des étapes C00 à C04. Les étapes B00 à B08 se rapportent à la gestion des échanges de données avec les unités U0, Ul et au contrôle des décalages exécutés au moyen du circuit BS. Les étapes C00 à C04 forment une boucle de mise à jour des registres R1, R2. 5 Les étapes B00 à B05 visent à initialiser l'unité BDG au commencement d'un cycle de transfert de données entre les unités UO et Ul. A l'étape BOO, le circuit CCT1 attend que le signal RDY1 soit reçu de l'unité BO, puis charge le registre R1 et renvoie le signal ACK1 à l'étape B01. A l'étape B02, le circuit CCT1 attend que le signal RDY1 soit reçu de l'unité 10 BO, puis charge le registre R2 et envoie le signal ACK1 à l'étape B03. A l'étape B04, le circuit CCT1 applique le signal SHIFT=0 au circuit à décalage circulaire BS. A l'étape B05, le circuit CCT1 charge le registre R3 et envoie le signal RDY2 à l'unité Ul. A l'étape B06, le circuit CCT1 attend de recevoir l'accusé de réception de lecture ACK2 de 15 l'unité Ul, incluant (ou formé par) le nombre Nj de mots binaires lus par l'unité Ul. Lorsque cette information est reçue, le circuit CCT1 va à l'étape C01 pour exécuter la boucle de mise à jour des registres R1, R2, avant d'aller à l'étape B07 au cours de laquelle il applique le signal SHIFT=Nj au circuit à décalage circulaire BS. A l'étape B08, le circuit CCT1 charge le registre R3 avec les données fournies par le circuit BS et envoie le signal 20 RDY2 à l'unité Ul, puis retourne à l'étape B06 pour attendre un nouvel accusé de réception de lecture de la part de l'unité Ul et le nombre Nj correspondant. La boucle de mise à jour des registres comprend une étape d'initialisation C00 pouvant être exécutée lors de l'initialisation de l'unité BDG (étapes B00 à B05), au cours de laquelle le 25 circuit CCT1 met à zéro une variable "r" ainsi qu'une variable "/Nj" égale à la somme des nombres Nj reçus de l'unité Ul depuis la dernière remise à zéro de cette variable. A l'étape C01, le circuit CCT1 mémorise la dernière valeur Nj reçue à l'étape B06 et rafraîchit la variable /Nj en ajoutant à sa valeur précédente la nouvelle valeur Nj reçue. A 30 l'étape CO2, le circuit CCT1 détermine si "r+/Nj" est supérieur ou égal à I, I étant le nombre de mots binaires circulant en parallèle sur les bus Bi ou encore le nombre de bus Bi. Si la réponse est positive, le circuit CCT1 va à l'étape CO3, sinon sort de la boucle et va à l'étape B07. A l'étape CO3, le circuit CCT1 vérifie que le signal RDY1 a été émis par l'unité UO, sinon attend que ce signal soit reçu. Lorsque le signal RDY1 est reçu, le circuit 35 CCT1 va à l'étape C04 où il exécute les opérations suivantes : 3051933 14 - le circuit CCT1 charge dans le registre R1 ou dans le registre R2 le nouvel ensemble de mots binaires fourni par l'unité U0. Le premier registre mis à jour au cours de l'étape C04 après les étapes d'initialisation B01 et B03 est le registre Rl. Ensuite, lors d'une nouvelle exécution de l'étape C04, le circuit CCT1 charge le registre R2, et ainsi de suite de manière 5 que les registres R1, R2 soient mis à jour en alternance, - le circuit CCT1 envoie le signal ACK1 à l'unité UO, - le circuit CCT1 met à jour la variable r au moyen de la relation "r = (r + /Np mod I". 10 Ainsi, la nouvelle valeur de r est égale au reste de la division modulaire de la somme de sa valeur précédente et de la variable /Nj. Après cette mise à jour, la variable r représente le nombre de décalages au-delà de I ou d'un multiple de I ayant été appliqués aux données figurant dans les registres R1, R2, 15 - le circuit CCT1 met à zéro la variable /Nj. Les décalages successifs modulo I depuis la dernière remise à zéro de cette variable sont en effet désormais inclus dans la nouvelle valeur de r. La figure 4 montre également des étapes P00 à P02 conduites par l'unité Ul. Au cours 20 d'une étape P00, l'unité Ul attend de recevoir le signal RDY2. Lorsque ce signal est reçu, l'unité Ul exécute une étape P01 où elle lit Nj mots binaires wi parmi l'ensemble de mots binaires fourni par le registre R3 de l'unité BDG, et envoie le signal ACK2(Nj) au circuit CCT1. Au cours d'une étape P02, l'unité Ul traite les données lues, puis retourne à l'étape P00 pour vérifier que le signal RDY2 a été réémis par le circuit CCT1 ou attendre que ce 25 signal soit réémis avant de réitérer l'étape P01. Dans un mode de réalisation, le nombre de mots binaires nécessaire à l'exécution de l'étape de traitement P02 peut être supérieur à I. Dans ce cas, l'unité Ul lit plusieurs fois ses entrées E0 à Em avant de traiter les données lues. Par exemple, l'unité Ul lit 30 successivement plusieurs ensembles de I données en renvoyant après chaque lecture la valeur Nj=I, puis, lors d'une dernière étape de lecture, lit Nj mots binaires avec Nj 8. 20 Comme la variable r+/Nj est supérieure ou égale à 8 : i) le circuit CCT1 charge le nouvel ensemble de mots binaires W3 dans le registre R1. Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : 25 RlfiR2 = c0 cl c2 c3 c4 c5 c6 c7 b0 bl b2 b3 b4 b5 b6 b7 ii) le circuit CCT1 met à jour la variable r : r = (r + /Np mod 8 = 9 mod 8 = 1, iii) le circuit CCT1 met la variable /Nj à O. 30 Le circuit CCT1 sort ensuite de la boucle de mise à jour des registres R1, R2 et applique la commande SHIFT = 4 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres R1, R2 par le circuit BS (étape B08), soit : 5 10 35 R3 = bl, b2, b3, b4, b5, b6, b7, c0 3051933 25 Il sera noté que le circuit BS exécute la commande SHIFT de manière à ce que le contenu des deux registres soit considéré comme une chaîne de bits ininterrompue qui serait stockée dans une suite ininterrompue de registres concaténés R1//R2//R3//R4//R5... dans laquelle R3 est le registre R1 ayant reçu un premier nouvel ensemble de mots binaires, le 5 registre R4 est le registre R2 ayant reçu un nouvel ensemble de mots binaires, le registre R5 est le registre R1 ayant reçu un second nouvel ensemble de mots binaires, etc. Ainsi, lorsque le cumul des valeurs des signaux SHIFT appliqués au circuit BS dépasse la taille des deux registres, le décalage est exécuté en considérant que le premier bit du registre R1, ici le bit cO, suit le dernier bit du registre R2. 10 Troisième étape de lecture : - l'unité Ul lit les mots binaires bl à b7 et cO, et renvoie la valeur N3=8 au circuit CCT1 au moyen du signal d'accusé de réception ACK2(8), 15 - le circuit CCT1 met à jour la variable /Nj : /Nj = /Nj + Nj = 0 + 8 = 8, - le circuit CCT1 exécute le test sur la variable r+/Nj : r+/Nj = 1 + 8 = 9 > 8, Comme la variable r+/Nj est supérieure ou égale à 8 : 20 i) le circuit CCT1 charge le nouvel ensemble de mots binaires W4 dans le registre R2. Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : RI//R2 = c0 cl c2 c3 c4 c5 c6 c7 dO dl d2 d3 d4 d5 d6 d7 25 ii) le circuit CCT1 met à jour la variable r : r = (r + /Np mod 8 = 9 mod 8 = 1, iii) le circuit CCT1 met la variable /Nj à 0. Le circuit CCT1 sort ensuite de la boucle de mise à jour des registres R1, R2 et applique la commande SHIFT = 8 au circuit BS (étape B07), puis charge le registre R3 avec les mots 30 binaires sélectionnés dans les registres R1, R2 par le circuit BS (étape B08), soit : R3 = cl, c2, c3, c4, c5, c6, c7, dO Quatrième étape de lecture : 35 3051933 26 - l'unité Ul lit les mots binaires cl à c7, et renvoie la valeur N4=7 au circuit CCT1 au moyen du signal d'accusé de réception ACK2(7), - le circuit CCT1 met à jour la variable /Nj : /Nj = /Nj + Nj = 0 + 7 = 7, - le circuit CCT1 exécute le test sur la variable r+/Nj : r+/Nj = 1 + 7 = 8 > 8, Comme la variable r+/Nj est supérieure ou égale à 8 : i) le circuit CCT1 charge le nouvel ensemble de mots binaires W5 dans le registre R1. Le circuit à décalage circulaire BS reçoit les contenus concaténés des deux registres : R1fiR2 = e0 el e2 e3 e4 e5 e6 e7 dO dl d2 d3 d4 d5 d6 d7 ii) le circuit CCT1 met à jour la variable r : r = (r + /Np mod 8 = 8 mod 8 = 0, iii) le circuit met variable /Nj à 0. Le circuit CCT1 sort ensuite de la boucle de mise à jour des registres R1, R2 et applique la commande SHIFT = 7 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres R1, R2 par le circuit BS (étape B08), soit : 20 R3= dO, dl, d2, d3, d4, d5, d6, d7 Cinquième étape de lecture : - l'unité Ul lit les mots binaires dO à d5 et renvoie la valeur N5=6 au circuit CCT1 au 25 moyen du signal d'accusé de réception ACK2(6), - le circuit CCT1 met à jour la variable /Nj : /Nj = /Nj + Nj = 0 + 6 = 6, - le circuit CCT1 exécute le test sur la variable r+/Nj : r+/Nj = 0 + 6 = 6 8, Comme la variable r+/Nj n'est pas supérieure ou égale à 8, le circuit CCT1 sort de la 30 boucle de mise à jour des registres R1, R2 et applique la commande SHIFT = 6 au circuit BS (étape B07), puis charge le registre R3 avec les mots binaires sélectionnés dans les registres R1, R2 par le circuit BS (étape B08), soit : R3 = d6, d7, e0, el, e2, e3, e4, e5 5 10 15 35 REVENDICATIONS1. Dispositif (DV2) de traitement parallélisé de données, comprenant : - une première unité (U0) comprenant des sorties parallèles (Si) pour fournir des mots binaires (wi) en parallèle, et - une seconde unité (U1) comprenant des entrées parallèles (Ei) pour recevoir un ensemble (W) de mots binaires (wi) en parallèle fournis par la première unité (U0), caractérisé en ce que la seconde unité (U1) est configurée pour lire simultanément, au cours d'une même étape de lecture, tout ou partie des mots binaires de l'ensemble (W) de mots binaires (wi) appliqué sur ses entrées parallèles, et renvoyer une instruction (Nj) de purge de certains mots binaires de l'ensemble de mots binaires, et en ce qu'il comprend une unité de mise en correspondance de données (BDG) reliant les sorties parallèles de la première unité (U0) aux entrées parallèles de la seconde unité (U1) et configurée pour : - fournir à la seconde unité (U1) un premier ensemble de mots binaires (W, W1) fourni par la première unité (U0), - après lecture par la seconde unité (U1) d'une partie (a0-a4) des mots binaires du premier ensemble (W, W1) de mots binaires, fournir à la seconde unité (U1) le ou les mots (a5-a7) du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires (b0-b4) d'un second ensemble de mots binaires (W', W2) fourni par la première unité. 2. Dispositif selon la revendication 1, dans lequel l'unité de mise en correspondance de données (BDG) est également configurée pour, lorsqu'une partie du second ensemble (W2) de mots binaires a été purgée, fournir à la seconde unité (U1) le ou les mots binaires (bl-b7) du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires (c0) d'un troisième ensemble (W3) de mots binaires fourni par la première unité. 3. Dispositif selon l'une des revendications 1 et 2, dans lequel : - la seconde unité (U1) est configurée pour, lors de la lecture d'une partie des mots binaires appliqués sur ses entrées parallèles, lire des mots binaires (a0-a4) présents sur des entrées à plus haute priorité de lecture, et - l'unité de mise en correspondance de données (BDG) est configurée pour, après purge par la seconde unité d'une partie (a0-a4) de mots binaires du premier ensemble de mots binaires, appliquer sur les entrées à plus haute priorité de la seconde unité des mots (a5-a7) 3051933 28 du premier ensemble (W1) de mots binaires précédemment appliqués sur des entrées parallèles et n'ayant pas été purgés, et appliquer sur des entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires (b0-b4) du second ensemble (W2) de mots binaires. 5 4. Dispositif selon la revendication 3, dans lequel l'unité de mise en correspondance de données comprend : - au moins deux registres d'entrée (R1, R2) agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité (U0), 10 - un registre de sortie (R3) ayant des sorties reliées aux entrées parallèles de la seconde unité (U1), - un circuit à réorganisation de données (BS) reliant des sorties des registres d'entrée à des entrées parallèles du registre de sortie, et - un circuit de contrôle (CCT1) configuré pour : 15 - charger dans les registres d'entrée des ensembles (W1, W2, W3, W4, W5) de mots binaires (a0-a7, b0-b7, c0-c7, dO-d7, e0-e7) fournis par la première unité, et charger dans le registre de sortie, par l'intermédiaire du circuit à réorganisation de données, des mots binaires présents dans les registres d'entrée, - commander le circuit à réorganisation de données en fonction du nombre de mots 20 binaires (Nj) ayant été purgés, de manière à charger dans des cellules à plus haute priorité de lecture du registre de sortie les mots binaires (a5-a7) présents dans les registres d'entrée et n'ayant pas été purgés, et charger dans des cellules de plus faible priorité du registre de sortie des mots binaires (b0-b4) présents dans les registres d'entrée et n'ayant pas encore été présentés à la seconde unité. 25 5. Dispositif selon la revendication 4, dans lequel le circuit de contrôle (CCT1) est configuré pour charger dans l'un des registres d'entrée (R1, R2) un nouvel ensemble (W3) de mots binaires fourni par la première unité (U0) au moins lorsque tous les mots binaires de l'ensemble (W2) de mots binaires présent dans le registre d'entrée ont été purgés. 30 6. Dispositif selon l'une des revendications 1 à 5, dans lequel la seconde unité est configurée pour déterminer le nombre de mots binaires qu'elle lit au cours d'une même étape de lecture en fonction des mots binaires précédemment lus ou en fonction d'une consigne externe. 35 3051933 29 7. Dispositif selon l'une des revendications 1 à 6, dans lequel la première unité est un processeur, un circuit d'interface de communication série/parallèle, un circuit d'adaptation d'un nombre de bus agencés en parallèle, un circuit de modification de fréquence d'horloge, ou une combinaison de ces éléments. 5 8. Circuit intégré à réseau de portes programmables, comprenant un dispositif selon l'une des revendications 1 à 7. 9. Procédé de traitement de données au moyen d'un dispositif de traitement 10 parallélisé de données (DV2) comprenant une première unité (U0) comprenant des sorties parallèles (Si) pour fournir des mots binaires (wi) en parallèle, et une seconde unité (U1) comprenant des entrées parallèles (Ei) pour recevoir un ensemble (W) de mots binaires (wi) en parallèle fournis par la première unité (U0), procédé caractérisé en ce qu'il comprend les étapes consistant à : 15 - au moyen de la seconde unité (U1), lire simultanément, au cours d'une étape de lecture, tout ou partie des mots binaires de l'ensemble (W) de mots binaires (wi) appliqué sur ses entrées parallèles, et renvoyer, après une étape de lecture, une instruction (Nj) de purge de certains mots binaires de l'ensemble de mots binaires, et - après lecture par la seconde unité (U1) de tout ou partie (a0-a4) des mots binaires du 20 premier ensemble (W, W1) de mots binaires, fournir à la seconde unité (U1) le ou les mots (a5-a7) du premier ensemble de mots binaires n'ayant pas été purgés, et un ou plusieurs mots binaires (b0-b4) d'un second ensemble de mots binaires (W', W2) fourni par la première unité. 25 10. Procédé selon la revendication 9, comprenant l'étape consistant à, lorsqu'une partie du second ensemble (W2) de mots binaires a été purgée, fournir à la seconde unité le ou les mots binaires (bl-b7) du second ensemble de mots binaires n'ayant pas été purgés et un ou plusieurs mots binaires (c0) d'un troisième ensemble (W3) de mots binaires fourni par la première unité. 30 11. Procédé selon l'une des revendications 9 et 10, comprenant les étapes consistant à: - lors de la lecture de tout ou partie (a0-a4) des mots binaires appliqués sur les entrées parallèles de la seconde unité, lire des mots binaires (a0-a4) présents sur des entrées à plus 35 haute priorité de lecture, et 3051933 30 - après purge d'une partie (a0-a4) des mots binaires du premier ensemble (W1) de mots binaires, appliquer sur les entrées à plus haute priorité de lecture de la seconde unité des mots (a5-a7) du premier ensemble de mots binaires précédemment appliqués sur des entrées de plus faible priorité de lecture et n'ayant pas été purgés, et appliquer sur des 5 entrées parallèles à plus faible priorité de lecture de la seconde unité un ou plusieurs mots binaires (b0-b4) du second ensemble (W2) de mot binaire. 12. Procédé selon l'une des revendications 9 à 11, comprenant l'étape consistant à prévoir, entre la première et la seconde unité, une unité de mise en correspondance de 10 données (BDG) reliant les sorties parallèles de la première unité (U0) aux entrées parallèles de la seconde unité (U1) et comprenant au moins deux registres d'entrée (R1, R2) agencés en parallèle et ayant chacun des entrées parallèles reliées aux sorties de la première unité (U0), un registre de sortie (R3) ayant des sorties reliées aux entrées parallèles de la seconde unité (U1), et un circuit à réorganisation de données (BS) reliant 15 des sorties des registres d'entrée à des entrées parallèles du registre de sortie. 13. Procédé selon la revendication 12, comprenant une étape consistant à charger dans l'un des registres d'entrée (R1 R2) un nouvel ensemble de mots binaires fourni par la première unité, au moins lorsque tous les mots binaires de l'ensemble de mots binaires 20 présent dans le registre d'entrée ont été purgés. 14. Procédé pour réaliser, dans un circuit intégré à réseau de portes programmables (FPGA), un dispositif (DV2) exécutant une fonction de traitement parallélisé de données nécessitant des étapes de lecture simultanée de mots binaires (wi) dans un ensemble (W) de 25 mots binaires véhiculés par des bus de données parallèles, procédé comprenant : - une étape (F01) de description fonctionnelle de la fonction de traitement en utilisant un langage à haut niveau d'abstraction et en utilisant une variable non typée de taille non spécifiée (F01) pour désigner les mots binaires (wi) devant être lus simultanément, - une étape (F02) de définition de contraintes matérielles à prendre en compte dans la 30 réalisation du dispositif et incluant un choix d'un degré de parallélisme du dispositif, - à partir de la définition fonctionnelle et des contraintes matérielles, une étape (F03) de description matérielle du dispositif présentant le degré de parallélisme choisi, en utilisant comme architecture cible un dispositif conforme à l'une des revendications 1 à 7 dans lequel la seconde unité (U1) exécute la fonction de traitement des données, et 3051933 31 - à partir de la description matérielle du dispositif, une étape (F04) de configuration du circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme choisi. 5 15. Procédé selon la revendication 14, comprenant les étapes consistant à : - tester le dispositif (F05), - remanier (F02) la définition des contraintes matérielles du dispositif de manière à modifier son degré de parallélisme, sans modifier la description fonctionnelle (F01) de la fonction de traitement, 10 - remanier (F03) la description matérielle du dispositif à partir de la définition remaniée des contraintes matérielles, et - à partir de la description matérielle remaniée du dispositif, reconfigurer (F04) le circuit intégré à réseau de portes programmables, pour obtenir le dispositif présentant le degré de parallélisme modifié. 15