Brevet FR2623641A1 — publié le 19890526

Machine multiprocesseurs pour 1'exécution de traitements numériques parallèles La présente invention concerne une machine multiprocesseurs pour l'exécution de traitements numériques parallèles Elle s'applique notamment aux réalisations de récepteurs radioélectriques, de rsdlogonlométres, de radars ou de sonars et de façon générale à celles de tous dispositifs de traitement du signal, où l'exécution des traitements nécessite une grande puis sance de calcul avec un fort taux de parallélisme dans les algocrithmes. Dans les machines multiprocesseurs pour traitement du signal connues, les puissances de calcul mises en oeuvre dépendent des algorithmes, des types de traitements et du nombre de raies dans le spectre du signal traité. Ces puissances varient typiquement de une à quelques centaines de millions d'opérations par seconde. Selon les appllcatlons envisagées, le nombre de voles de réception ou le nombre de capteurs, utilisés pour la saisie des signaux, varient également entre quelques unités et quelques centaines d'unités, les bandes passantes étant plus ou moins étendues suivant les débits qui peuvent aller jusqu'à quelques dizaines de millions d'échantfflons par seconde. Dans beaucoup d'applications ces débits sont continus de sorte que les échantillons doivent être traités en temps réel au fur et à mesure de leur arrivée, pour ne pas perdre de l'lnforma- tion du fait des volumes mémoire disponibles Par ailleurs, certaines applications, comme celles relatives aux détections d'alarmes dans les goniomètres, imposent un temps de réponse faible entre l'instant où l'information rentre dans la machine et celui où les résultats sont disponibles. Dans ces appllcations, la majeure partie des traitement a un caractère répétitif c'est-à-dire que périodiquement les mêmes tâches sont à recommencer. Parmi ces traitements, certains ont des récurrences plus courtes que d'autres et d'autres présentent différentes symétries. Toutes ces caractéristiques conduisent les concepteurs de matériels à définir des architectures particulières plus ou moins bien adaptées à un tel ou tel type de traitement dont les structures générales sont connues sous les désignations MIMD, SIMD et MISD. L'architecture MIMD qui est l'abréviation anglo-saxonne de "Multiple Instruction Multiple Data" permet d'exécuter des instructions différentes sur des données différentes au cours d'un même cycle machine. Elle se compose de plusieurs processeurs possèdant chacun un séquenceur d'instructions. Chaque processeur est dédié à un type de traitement particulier et les traitements effectués sur l'ensemble des processeurs sont chaînés. L'avantage est qu'avec une telle architecture la majorité des problèmes rencontrès dans la technique du traitement du signal peuvent en principe être résolus. Cependant l'adaptation des processeurs aux débits variables des échantillons qu'ils doivent traiter ainsi que, la synchronisation des processeurs entre eux, conduisent à des dispositifs d'interfaces entre processeurs très compliqués à mettre en oeuvre.De plus, si pour une application déterminée, les fonctions à attribuer à chaque processeur sont relativement différentes, le concepteur peut être amené à utiliser des processeurs de types différents adaptés à chaque fonction particulière ce qui fait apparaître des disparités entre les éléments de la structure et complique encore sa réalisation. D'autre part, de sa nature même et du fait que les différents traitements sont chaînés, le temps de réponse global d'une telle structure apparaît souvent prohibitif et inadapté aux contraintes de traitement en temps réel des signaux. L'architecture SIMD qui est l'abréviation anglo-saxonne de "Single Instruction Multiple Data" et qui permet d'exécuter un programme unique en simultanéité sur chaque processeur sur des données propres à chacun d'eux; est beaucoup plus homogène et régulière mais elle suppose que les traitements soient eux mêmes homogènes et réguliers et présentent des symétries. Notamment les architectures SIMD ne peuvent traiter que des problèmes pouvant faire ltobJet de traitements exécutables en parallèle sur des bases vectorielles, c'est-à-dire où les échantillons du signal peuvent être organisés en vecteurs dont chaque composante peut subir le même traitement au même instant, grâce à la régularité matérielle de la structure et à la facilité de son séquencement. Egalement lorsqu'il existe des symétries dans certains traitements, symétries temporelles notamment, les structures SIMD peuvent également être utilisées pour des traitements exécutables également avec une structure MIMD, à condition d'utiliser des processeurs échangeant des données sur un bus en anneau comme cela est décrit par exemple dans la demande de brevet n0 83 15649 déposée au nom de la Demanderesse.Cette structure de couplage des processeurs est la plus simple et la plus répandue pour former des réseaux de processeurs unidimenslonnels. La nature des processeurs élémentaires utilisés est alors formée par des opérateurs logiques simples constitués le plus souvent par une unité arithmétique et logique et à un circuit multiplicateur accumulateur dont la taille est variable et dépend de la dynamique des données. Ce type d'opérateur classique en traitement du signal permet de mettre en oeuvre tous les traitements linéaires (filtrage, analyse spectrale). Mais dès qu'il faut mettre en oeuvre des traitements ou des fonctions non linéaires, le temps de calcul croît énormément.De telles fonctions peuvent cependant être obtenues par des calculs d'approximation, en utilisant par exemple un multiplieur accumulateur et des tables de coefficients. L'exécution de ces fonctions conduit toutefois à débit d'entrée donné, soit à accroître le nombre de processeurs élémentaires, soit essayer d'accélérer l'exécution desdites fonctions en adjoignant un coprocesseur spécialisé à chaque processeur élémentaire par exemple, mais cela devient rapidement très coûteux en matériel. Il est possible également d'envisager d'inscrire dans des tables lesdites fonctions au niveau de chaque processeur. Mais on se heurte alors à des problèmes d'adressage des mémoires de chaque processeur car les processeurs de signaux ont rarement une forte capacité d'adressage et d'autre part, les mémoires rapides utilisées sont assez onéreuses et consomment de l'énergie. Tout ceci limite la précision des calculs surtout si les fonctions sont à plusieurs variables.Dans certaines applications comme, par exemple, la radiogoniométrie, où des tables de tarage et de calcul sont utilisées, il n'est pas possible d'inscrire ces tables au niveau de chaque processeur, de même qu'il n'est pas possible de répartir une partie des tables sur chacun car ils doivent être indépendant les uns des autres quand aux traitements. Cependant si de telles fonctions peuvent être exécutées en début ou en fin de chaîne, il est toujours possible de créer un pré ou un postprocesseur pour traiter le problème au risque de retourner dans les problèmes de séquencement et d'interface des structures MIMD chaînées. Si par contre, même si tous les traitements peuvent être exécutés en parallèle, des fonctions particulières ou des fonctions de tabulation, à cause de leur coût de mise en oeuvre, doivent être utilisées plusieurs fois, alors la structure SIMD ne convient plus et les traitements ne deviennent exécutables que sur une structure MIMD, au prix d'un sacrifice sur le temps d'exécution des traitements. Dans l'architecture MISD qui est l'abréviation anglosaxonne de "Multiple Instruction Single Data" et dont on peut trouver par exemple une description dans l'article IEEE ASSP n05 oct. 86 ayant pour titre "A multiprocessor architecture for real time Computation of a class of DFT algorithmes", le flot de données subit des traitements différents dans des processeurs différents. Cette architecture convient plus particulièrement pour des classes très particulières de problèmes, comme celles relatives au problème du filtrage numérique du signal et elle ne convient généralement pas pour des applications plus générales de traitement du signal. Le but de l'invention est de pallier les inconvénients précités. A cet effet, l'invention a pour objet, une machine multiprocesseurs pour l'exécution de traitements numériques parallèles du type comprenant N processeurs de traitement du signal couplés d'une part par. des circuits d'interface à un bus en anneau commun à l'ensemble des processeurs et d'autre part, à des mémoires de données respectives caractérisée en ce qu'elle comprend au moins un coprocesseur inséré dans le bus en anneau entre deux circuits d'interface pour effectuer des traitements sur les données qui transitent sur l'anneau dans un même sens et retransmettre suivant ce même sens sur l'anneau les résultats des calculs effectués sur les données à destination des mémoires de chacun des N processeurs. D'autres caractéristiques et avantages de l'invention appa paîtront ci-après à l'aide de la description faite en regard des dessins annexés qui représentent: - la figure 1 une structure d'une machine SIMD selon l'invention avec bus en anneau incorporant des coprocesseurs - la figure 2A un exemple de connexion d'un ensemble de coprocesseurs à l'anneau de la machine et aux organes de séquencement - la figure 2B une structure d'un coprocesseur selon l'invention permettant d'effectuer des opérations programmables de tabulation - la figure 3A un exemple d'enchaînement de tâches pour une application incluant un coprocesseur selon l'invention; - la figure 3B une description des instructions élémentaires permettant la gestion d'un coprocesseur selon l'invention;; - la figure 4A un schéma synoptique d'un coprocesseur réalisant une fonction diadique - la figure 4B un schéma synoptique des modifications de la structure de l'anneau pour gérer facilement un coprocesseur dyadique La machine SIMD selon l'invention qui est représentée à la figure 1, comprend un ensemble de N processeurs élémentaires référencés de 1O à lN l couplés respectivement à un ensemble de mémoires de données référencées respectivement de 20 à 2N 1- Les mémoires 20 à 2N-1 de chaque processeur élémentaires là å 1N 11N-1 sont reliées respectivement à un anneau 3 structuré en bus de données, par l'intermédiaire d'un circuit d'interface mémoire, les circuits correspondants étant référencés de 40 à 4N-1 Chaque circuit d'interface mémoire 40 à 4N 1 crée un retard T d'une période de l'horloge de base de la machine, l'ensemble des éléments de la machine et donc le bus en anneau 3 étant synchronisés par cette horloge. Un coprocesseur 5 selon l'invention est inséré dans l'anneau 3. Il est alimenté en données et fournit ses résultats de calcul aux processeurs 1O à 1N 1 par l'anneau 3. Afin de ne pas détruire la symétrie de la machine le coprocesseur 5 est inséré au niveau du rebouclage de l'anneau 3. Egalement pour ne pas détruire le synchronisme de l'anneau 3, le coprocesseur 5 a un débit de sortie égal à son débit d'entrée et égal à celui de l'anneau 3 et synchrone avec celui-ci. Le coprocesseur 5-ne fait au plus qu'introduire un délai multiple entier de la période T soit p.T. Cependant, si la fonction exécutée par le coprocesseur 5 le permet, un délai plus court que le délai T peut être obtenu pour permettre un rebouclage du processeur 1N 1 vers le processeur 1O en un seul cycle.Suivant un mode particulier de réalisation de l'invention le coprocesseur 5 peut être structuré suivant une architecture "pipeline" à p niveaux. Lorsque plusieurs coprocesseurs 51 à 5k sont à introduire dans l'anneau avec chacun une fonction spécifique Fj(x) à accomplir ceux-ci peuvent être réunis en parallèle sur le rebouclage de l'anneau 3 de la façon représentée à la figure 2A. De façon générale l'insertiondu coprocesseur 5 dans l'anneau 3 polarise celui-ci, ctest-à-dire que les données sur l'anneau 3 ne peuvent circuler que dans un seul sens de rebouclage de la droite vers la gauche par exemple.Pour ne pas limiter les flots de données de la machine par lfadjonction d'un coprocesseur, des registres tampons 61 à 6k peuvent interdire l'accès à l'anneau 3 à chaque coprocesseur, et des registres tampons 7 et 8 permettent d'assurer la circulation des données dans les deux sens sur l'anneau 3 sans délai. La commande dtinsertion de chaque coprocesseur dans l'anneau 3 a lieu par l'exécution d'une micro-instruction de transfert CIIT de la machine synchrone de l'horloge de base H. Cette micro-instruction est exécutée de façon connue par le processeur pilote, non représenté, de la machine SIMD. Cette micro-instruction est appliquée à l'entrée d'un décodeur 9 qui la décode et la distribue à l'ensemble des k coprocesseurs 51 à 5k Le décodeur 9 génère les signaux de commande des registres tampons 61 à 6. d'une part, et des registres tampons 7 et 8, d'autre part. Ces commandes sont réalisées préférentiellement par un extension de la microinstruction transfert de base de la machine, indépendante des champs existant et réservée au coprocesseur ce qui permet au niveau du séquencement et des outils logiciels d'avoir avec les coprocesseurs 51 à 5k une compatibilité ascendante avec les machines SIMD de base. Le décodeur 9 permet également le décodage de champs spécifiques de la micro-instruction de transfert ,uIT permettant l'exécution des fonctions Fj (x) spécifiques, dédiées à chaque coprocesseur 51 à 5kv ces fonctions étant exécutées en parallèle par rebouclage en parallèle des coprocesseurs 51 à 5k sur l'anneau. Un exemple de réalisation d'un coprocesseur 5 plus particulièrement adaptée à l'exécution d'une fonction de tabulation paramétrable est montrée à la figure 2B. Le coprocesseur représenté comprend une mémoire 10 couplée d'une part, sur ses entrées de données à un registre de donnée Il et d'autre part, sur ses entrées d'adresse à un compteur d'adresse 12 au travers de registres tampon 13 et 14. Les entrées des registres de données et d'adresse11 sont reliées à la partie de l'anneau située à droite du coprocesseur et les sor ties de donnée de la mémoire 10 sont reliées à la partie de l'anneau située à gauche du coprocesseur. La mémoire 10 est préférentiellement une mémoire vive, ceci permet de changer son contenu selon les applications. En radiogonlométrie notamment elle permet l'exécution de nombreuses fonctions de tabulations. Le coprocesseur est comme les autres synchrone de l'horloge H de la machine SIMD. Il reçoit comme variable d'entrée celles provenant de la partie droite de l'anneau 3 et fournit les résultats sur sa partie gauche. La variable d'entrée est mémorisée dans le registre d'entrée 11 à chaque cycle T de l'horloge H. La mémoire 10 répond en moins d'un cycle de durée T. La sortie du registre 11 fournit par l'intermédiaire du registre tampon 14, du type à 3 états par l'exemple, les adresses des données contenues dans la mémoire 10. Les données de tabulation contenues dans la mémoire 10 sont appliquées sur la partie gauche de l'anneau 3. Ceci permet pour un anneau pouvant transporter simultanément n bits de réaliser une fonction tabulée à n bits d'une variable à n bits avec une capacité de mémoire de 2n mots de n bits. Cependant il est également possible de réaliser plusieurs fonctions avec le même coprocesseur de tabulation, soit pour des fonctions à dynamique plus faible, soit en utilisant des mémoires de plus grande capacité. Ceci peut être obtenu en utilisant dans les deux cas, une partie du champ adresse de la mémoire pour indiquer sous la forme d'un numéro la fonction choisie. Cela est obtenu par exemple, par l'intermédiaire d'une commande "mode" qui est appliquée sur le registre tampon 13.La commande "mode" est issue du décodage par le décodeur 9 sur la figure 2A d'un mot de l'extension de la micro-instruction de transfert Le décodage du mot d'extension de la micro-instruction de transfert CIIT donne naissance à trois signaux - un signal d'écriture/lecture de la mémoire de tabulation 10 - un signal de remise à zéro (RAZ) du compteur d'adresse 12 et un signal d'initialisation INIT du compteur d'adresse 12. Ces signaux servent à programmer par téléchargement la fonction de tabulation. Dans ce mode, le registre tampon 14 est inhibé et le registre tampon 13 est validé pour acheminer l'adresse contenue dans le compteur 12 vers le port d'adresse de la mémoire 10. Les données à écrire arrivent par l'anneau droit 3 via le registre 11. A chaque cycle de l'horloge H une nouvelle donnée est écrite. Le mot d'adresse contenu dans le compteur 12 est augmenté d'une unité à chaque top fourni par le signal d'horloge H. Pendant cette phase de programmation de la mémoire 10 le signal d'écriture de la mémoire 10 est activé à chaque cycle. Au départ de la phase de programmation, soit le signal RAZ est utilisé (pour commencer à écrire à l'adresse "0" puis remplir la mémoire), soit le signal "INIT" est utilisé pour permettre de précharger le compteur 12 à une certaine valeur, dans le cas par exemple, où une partie seulement de la mémoire (une seule fonction) est à programmer. L'adresse à précharger est véhiculée sur 18 partie droite de l'anneau 3. Cette programmation qui apparaît peu coûteuse en matériel, permet d'utiliser le coprocesseur 5 pour des applications très diverses et peut servir à mettre en oeuvre des recherches en tables adaptatives en fonction par exemple de résultats de calculs fournis par les processeurs élémentaires lo à 1N 1 , par exemple. Comme les coprocesseurs Si à 5k sont insérés dans l'anneau 3 leur commande est assurée par le séquencement des transferts sur cet anneau. Mais l'objectif est de faire en sorte que, malgré leur structure d'opérateur scalaire ils soient vus, d'un point de vue fonctionnel, comme des opérateurs vectoriels, c'est-à-dire comme si les fonctions qu'ils remplissent étaient directement disponibles au niveau de chaque processeur lo à 1N 1.Cependant comme les processeurs 10 à 1N 1 ne savent pas les gérer ils doivent être pris en compte par la gestion des transferts sur l'anneau 3. L'utilisation d'une fonction résidant sur un coprocesseur conduit dans ces conditions à la création d'une tâche de transfert sur l'anneau 3. Un exemple de gestion de ces transferts est montré à la figure 3A dans le cas d'un calcul de la fonction G obtenu à partir de deux fonctions F1(x) et F2(x) telle que G(x) = (F1oF2+F20Fl) (x) où x est un vecteur de composantes x01 xn 1- Dans l'hypothèse F1(x) est facilement réalisable par logiciel au moyen des processeurs 1O à 1N 1 et la fonction F2(x) qui demande trop de temps pour son exécution est réalisée par un coprocesseur 51. Dans cet exemple l'exécution de chacune des fonctions est exécutée deux fois. L'indépendance des transferts sur l'anneau 3 par rapport aux calculs effectués dans chaque processeur lo à 1N 1 est utilisée pour réaliser simultanément les fonctions F1(x) et F2(x).L'exécution de ces fonctions correspond à une tâche calcul pour la fonction F1(x) et une tâche transfert pour la fonction F2(x). Une fois ces calculs faits les processeurs 1O à - 1N 1 exécutent la dernière partie du traitement correspondant à l'addition des produits des fonctions Fi(x) F2(x) et F2(x) F1(x). La tâche de transfert permettant de réaliser la fonction F2 (x) est toujours du même type. Elle correspond aux opérations indiquées dans le tableau de la figure 3B. Pour un vecteur de taille N correspondant au nombre de processeurs lo à 1N-1~ et pour un coprocesseur ayant une structure "pipeline" à p niveaux demandant p cycles de durée T, la durée d'une tâche de transfert est alors égale à (N+p+2) cycles de durée T. Le tableau de la figure 3B décrit les micro-instructions transfert et leurs extensions pour réaliser la fonction F2(x). Le premier cycle de micro-instruction consiste à lire le vecteur F1(x) dans les mémoires 10 à l'adresse Ai et à effectuer sa mise sur l'anneau 3 avec en parallèle la sélection et l'appllca- tion éventuelle des paramètres nécessaires au traitement devant être exécuté par le coprocesseur Si. Pendant les n+p cycles suivants les informations sur l'anneau 3 sont avancées d'un pas à chaque cycle vers la droite de façon à faire passer séquentiellement le vecteur dans le coprocesseur sélectionné. Les p premiers cycles servent à amorcer le pipeline du coprocesseur et ne donnent pas de résultats. Au bout des n+p cycles de décalage on retrouve sur l'anneau F2(xi) là où on avait lu xi. Il n'y a plus qu'à écrire dans la mémoire 21 des processeurs, le vecteur résultat à une adresse A2 qui peut être différente de l'adresse A1. Ainsi pour les processeurs il suffit d'écrire les composantes du vecteur de départ x. dans leur mémoire pour retrouver les résultats F2(xi) en mémoire sans destructions des structures du vecteur x si on le désire. C'est comme si on avait un coprocesseur travaillant sur chaque mémoire 20 à 2N 1 des processeurs 10 à 1N 1. La structure toujours identique de cette tâche de gestion de coprocesseur permet la création d'outils logiciels qui permettent au programmeur de s'affranchir de cette gestion.Il suffit par exemple, de préciser que la fonction est réalisée par un coprocesseur et de préciser son numéro. Dans l'exemple qui précède le coprocesseur 51 travaille sur une seule variable c'est-à-dire qu'il réalise des fonctions monadiques qui ne représentent qu'une partie des fonctions généralement utiles dans la technique de traitement du signal. Or suivant cette technique, il est souvent nécessaire de travailler sur des nombres complexes donc sur des couples de données réelles, ou sur des fonctions à 2 variables, lesquelles ne peuvent être programmées sur les processeurs élémentaires choisis. Ce problème est résolu par l'invention des façons représentées aux figures 4A et 4B. Les schémas synoptiques des figures 4A et 4B décrivent un exemple de calcul de fonctions à 2 variables et des modifications mineures qui sont à apporter dans ce cas à l'interface mémoire-anneau 4i des processeurs. Naturellement cet exemple n'est pas limitatif et peut s'étendre à des fonctions à plus de 2 variables. Comme la structure de l'anneau 3 ne permet pas de véhiculer simultanément deux données celles-ci sont transmises séquentiellement au coprocesseur 5i sur deux entrées (Y puis X). La première donnée est retardée de la durée T d'un cycle d'horloge par un registre 15 synchronisé sur l'horloge de la machine.L'anneau 3 véhicule une donnée à chaque cycle et le coprocesseur 5 n'est alimenté en couple de variables que tous les deux cycles. Pour garder le synchronisme sur l'anneau 3 et le débit constant il faut dans ces conditions que le coprocesseur 5. ait un retard toujours multiple de T (même impair) mais si le résultat est un seul nombre il ne devra apparaître que tous les 2 cycles de durée T, ceci afin de garder un débit constant. Le coprocesseur 5. peut dans ces conditions se contenter d'un pipelire avec une durée de cycle 2T. La mise en oeuvre aisée des fonctions diadiques au niveau de chaque processeur lo 1N-p sans reconfiguration des flots de données est représentée à la figure 4B. Pour l'exécution d'une fonction monadique l'anneau 3 avec un registre tampon synchronisé par l'horloge H suffisent. Pour fournir sur l'anneau 3 et par conséquent au coprocesseur successivement les deux variables X et Y d'un même processeur li avant de lui fournir celles du processeur li 1 précédent, un registre 16 supplémentaire est introduit en série dans le cheminement gauche vers droite des données de l'anneau 3 et cela au niveau de chaque coprocesseur. Un registre tampon 17 commandé par l'information monodique-diadique (M/D) issue de l'extension de la microinstruction transfert CLIT permet d'inhiber la sortie droite de l'anneau 3 lorsque la lecture des deux variables. X et Y n'est pas finie (en diadique) ou bien d'inhiber le deuxième registre 17 en mode monodique. Un registre tampon 18 commandé aussi par cette information M/D permet de reconfigurer l'anneau dans un mode de transfert monadique bidirectionnel, le transfert sur l'anneau dans le mode diadique étant, lui, unidirectionnel. Une généralisation à plus de deux variables peut également être obtenue en remplaçant le registre 26 par une mémoire organisée en file d'attente de type FIFO qui est l'abréviation anglo-saxonne de "First IN First Out". La mise en oeuvre d'un coprocesseur diadique se fait en lisant successivement les deux variables X et Y puis en décalant les informations sur l'anneau de 2N+2p coups à droite (si 2p est le délai du coprocesseur) et enfin en écrivant en mémoire 2. du processeur li le résultat F(X, Y). Le calcul sur un vecteur de taille N demande dans ces conditions 2N+2p+3 cycles. Naturellement l'invention n'est pas limitée à l'exemple d'application qui vient d'être décrit et on comprendra que l'invention s'applique à tous les cas d'utilisation des machines SIMD exécutant des traitements en parallèle et où certaines fonctions particulières ne sont pas disponibles sur les processeurs ou bien sont trop coûteuses en temps de calcul ou en espace mémoire bien que n'étant pas souvent utilisées dans les traitements. Ce peut être le cas notamment lorsque le nombre de-pro- cesseurs est déjà important ou bien lorsque des contraintes de coût obligent à utiliser des processeurs très rudimentaires au niveau des opérateurs ou de leur capacité d'adressage. Dans certaines applications de tabulation la structure SIMD à coprocesseurs selon l'invention devrait normalement s'imposer notamment pour effectuer les tarages en radiogoniométrie VUHF ou pour effectuer dans ce même domaine des conversions rectangulaires polaires précises et rapides. REVENDICATIONS 1. Machine multiprocesseurs pour l'exécution de traitements numériques parallèles du type comprenant N processeurs (1o . . 1N 1) de traitement du signal couplés d'une part par des circuits d'interface (40 (4N-1)à 4N à un bus en anneau (3) com- mun à l'ensemble des processeurs (lo . 1N 1) et d'autre part, à des mémoires de données respectives (20 . 2N 1) caractérisée en ce qu'elle comprend au moins un coprocesseur (5) inséré dans le bus en anneau (3) entre deux circuits d'interface 4N 1) pour effectuer des traitements sur les données qui transitent sur l'anneau (3) dans un même sens et retransmettre suivant ce même sens sur l'anneau (3) les résultats des calculs effectués sur les données à destination des mémoires (20 2N 1) de chacun des N processeurs. 2. Machine selon la revendication 1 caractérisée en ce que les débits des données appliquées par l'anneau (3) à l'entrée du coprocesseur (5i) et les débits des données appliquées sur l'anneau (3) et sortant du coprocesseur (Si) sont les mêmes. 3. Machine selon la revendication 2 caractérisée en ce que le coprocesseur a une architecture à opérateurs série 5k) 5k) de type pipeline à p niveaux. 4. Machine selon l'une quelconque des revendications 1 à 3 caractérisée en ce qu'elle comprend k coprocesseurs en parallèle sur l'anneau (3) chacun étant dédié à l'exécution d'une fonction Fi(x) particulière. 5. Machine selon l'une quelconque des revendications 1 à 4 caractérisée en ce que chaque coprocesseur comprend une mémoire vive (10) couplée d'une part, à un registre de données (11) pour mémoriser les données reçues de l'anneau avant de les inscrire dans la mémoire vive (10), et d'autre part, à un registre d'adresse (12) pour l'adressage de ces mêmes données, ces données lues dans la mémoire (10) étant retransmises directement sur le bus en anneau (3). 6. Machine selon l'une quelconque des revendications 1 à 5 caractérisée en ce que le coprocesseur comprend des registres tampon (7, 8) pour autoriser le transfert des données sur l'anneau (3) dans les deux sens de parcours de l'anneau. 7. Machine selon l'une quelconque des revendications l à 6 caractérisée en ce que la mémoire (10) mémorise des tables de fonctions. 8. Machine selon la revendication 7 caractérisée en ce que les tables de fonction sont des tables de tarage de radiogoniométrie. 9. Machine selon l'une quelconque des revendications i å 8 caractérisée en ce que chaque circuit d'interface (4i) d'un processeur élémentaire (li) comprend un premier registre (15) et un deuxième registre (16) insérés en série sur l'anneau (3) pour permettre l'exécution de fonctions diatiques ou des calculs de fonctions sur des nombres complexes, le premier registre (15) étant couplé à la mémoire du processeur élémentaire (1i) pour permettre l'écriture et la lecture de données ou de résultats de calculs diatiques sur l'anneau (3) pendant la durée de deux cycles coprocesseur (5), l'écriture des données ou des résultats sur l'anneau (3) étant commandée par un registre tampon (17) couplé au deuxième registre (16), la lecture des données ou des résultats par le processeur (li) étant effectuée par l'intermédiaire du premier registre (5); la deuxième donnée du le deuxième résultat se trouvant dans le deuxième registre du cir cuit d'interface (4i 1) du processeur élémentaire (li 1) lorsque la première donnée ou le premier résultat est lu dans le premier registre du circuit d'interface (4i) du processeur élémentaire (i1).