FR 2241109 A1 19750314 FR 7426329 A 19740725 L'invention concerne un procédé pour l'exécution d'opérations en parallèle dans un système de traitement --de données comportant un certain nombre d'unités fonctionnelles permettant le traitement des données avec chevauchement dans le temps conformément à- une séquence d'instructions prédéterminées. L'invention concerne également un système de traitement de données pour la mise en oeuvre e ce procedé. Les programmes utilises dans certains systèmes de traitement connus prévoient la division d'un travail de traitement en une sequence d'opérations individuelles. Ces opérations individuelles qui fréquemment sont en très grand nombre, sont exécutées les unes après les autres, éventuellement avec chevauchement dans le temps avec d'autres programmes (multiprogrammation) ou en parallèie avec la séquence d'opérations d'un autre programme Emultitrai- ment), dans la mesure où le système de traitement de données utilisé comprend plusieurs processeurs qui peuvent être adressés en parallèle. Malgré sa structure séquentielle, chaque programme est tel- qu'au moins un certain nombre des opérations individuelles qu'il comporte peuvent être exécutées en parallèle. On connait déjà des systèmes de traitement de données qui tirent avantage de ce fait. Un système de traitement de données connu de ce type est constitué de plusieurs unités de traitement indépendantes et de plusieurs unités de mémoire indépendantes qui sont construites sous forme de mémoires associatives (brevet franpais:NO 90 76833. Avec ce système de traitement de données, les mots d'instructions du programme sont entrés dans les unités de mémoire suivant un ordre quelconque.Chaque mot d'instruction et de données comporte une zone de référence ou "étiquette" qui peut être accédée par un appel associatif et dont le code définit la position du mot d'instruction ou de données correspondant dans l'arbre de programme binaire, Dans la phase de chargement qui précède l'exécution du programme, les mots de données à traiter sont chargées avec les zones des instructions commandant leur traitement. Les mots de données ainsi préparés sont munis d'étiquettes de référence indiquant que les mots de données en cause sont prêts à être traités. Au cours du traitement, les unités de mémoire sont continuellement explorées pour déterminer les mots de données qui sont prêts à être traités.Si de-tels mots sont trouvés, ils sont transmis à l'unité de traitement correspondante qui comprend un circuit d'analyse qui analyse la zone étiquette d'arbre du programme du mot de données correspondant. A partir de cette zone étiquette, la zone étiquette d'arbre du programme du mot d'instruction correspondant qui commande le traitement du mot de données correspondant ainsi que la zone étiquette d'un autre mot de données qui est traité conjointement avec le premier mot de données sont dérivées. L'accès à la mémoire associative pour l'extraction du mot d'instruction et du second mot de données est effectué au moyen des zones étiquettes ainsi obtenues, après quoi l'étape de traitement est exécutée. Dans le système de traitement de données décrit ci-dessus, les instructions de programme individuelles sont exécutées de façon asynchrone et en s'écartant d'une séquence de programme donnée. Etant donné qu'il y a plusieurs unités de traitement pour recevoir et exécuter les instructions de programme qui sont prêtes à être traitées, le programme est exécuté en partie en parallèle de telle sorte que les instructions de programme susceptibles d'être exécutées en parallèle sont déterminées automatiquement et traitées. Le système de traitement de données connu présente l'inconvénient de nécessiter l'utilisation de mémoires associatives onéreuses. En dehors de cela la détection des opérations qui peuvent être exécutées en parallèle est limitée au nombre d'instructions contenues dans le programme. Pour les boucles d'itération qui se présentent à l'intérieur d'une séquence d'opérations donnée et qui doivent être passées en machine de façon répétée au cours d'un travail de traitement, le parallélisme ne peut être établi qu'à l'intérieur d'une passe de la boucle. Un autre système de traitement de données connu comporte une commande de séquence d'opérations qui sert à établir et à commander le parallélisme au cours d'une phase de traduction avant que le programme soit effectivement exécuté demande de brevet allemand publiée -NO 2.004.886 ] . A partir des séquences d'instructions à traduire, il est établi une matrice de disponibilité dont les lignes sont associées aux sorties d'instructions et les colonnes aux instructions individuelles de la séquence. D'une manière similaire, une matrice de demandes d'entrée, semblable à la matrice de disponibilité, est formée pour les instructions d'entrée. A partir des instructions de branchement, des séquences d'instructions principales sont sélectées qui servent de base au cycle de programme.Les entrées dans les deux matrices mentionnées ci-dessus sont combinées et le résultat est associé aux entrées des branchements principaux pour former une matrice de séquence qui détermine celles des opérations qui peuvent être exécutées simultanément. Pour former, mettre en mémoire et traiter les matrices, des dispositifs de matrices sont utilisés qui sont connectés à des registres vecteurs de colonnes et de lignes. Le nombre des colonnes et lignes des dispositifs de matrices et le nombre de positions des registres vecteurs doivent correspondre au nombre d'instructions comprises dans la partie de programme à traiter. Dans ce système, la séquence d'opérations est commandée en fonction de matrices qui sont prévues en plus des instructions de programme et servent à déterminer si la séquence d'opérations pueut être exécutée et à préparer et à commander l'exécution. Un matériel important est nécessaire pour créer, mettre en mémoire et traiter ces matrices et les unités de commande séquentielle qui sont dirigées par elles. En ce qui concerne la détermination du parallèlisme, ce système présente également l'inconvénient d'être limité à la structure de programme respective et en conséquence au nombre d'instructions qu'elle contient. Elle présente l'inconvénient supplémentaire que le parallélisme ne peut être pré-établi, non plus pour plusieurs boucles d'itération. L'invention a pour but de réaliser un système de traitement de données qui permet à des opérations de traitement, appartenant à une structure de programme séquentielle, d'être exécutées en parallèle et qui nécessite un matériel moins important et détermine et prépare plus efficacement celles des opérations qui peuvent être exécutées en parallèle. L'invention et d'autres caractéristiques avantageuses qu'elfe présente ressortiront de la description d'un mode de réalisation de l'invention qui sera décrit ci-après à l'aide des dessins dans lesquels: la figure 1 est un schéma bloc d'un système de traitement de données selon l'invention. les figures 2 et 3 sont des organigrammes d'un exemple d'application du procédé de l'invention et du système de traitement de données de la figure 1; les figures 4 et 5 sont des exemples du contenu des emplacements de mémoire du système de traitement de la figure 1 au cours de l'exécution de l'exemple selon la figure 3; la figure 6 est un schéma bloc du distributeur d'instructions du système de traitement de données de la figure I la figure 7 est un schéma bloc d'une unité fonctionnelle qui peut être utilisée dans le système de traitement de données de la figure I la figure 8 est un schéma d'un mode de réalisation de l'unité de remslacement du système de la figure 1; ; la figure 9 est un schéma bloc-d'une partie des circuits de commande de la mémoire d'instructions du système de traitement de données de la figure su I la figure 10 est un exemple du contenu de la mémoire de développement du système de la figure I la figure Il est un schéma bloc d'un mode de réalisation d'une unité de transfert qui est susceptible d'être utilisée dans le système de la figure 1; et les figures 12A et 128 sont des graphiques expliquant les étapes d'opérations effectuées dans le système de la figure 1 au cours de l'exécution du travail de traitement de données de la figure 3;; Le système de traitement des données représenté sur la figure 1 comprend un certain nombre d'unités fonctionnelles 11 à 13 qui peuvent fonctionner indépendamment les unes des autres et en parallèle.Ces unités fonctionnelles sont appropriées pour exécuter des opérations commandées par les instructions du programme à traiter. Les unités fonctionnelles Il à 13 peuvent être identiques les unes aux autres et être utilisées pour l'exécution d'opérations arithmétiques telles que des additions, soustractions, multiplications et divisions ainsi que pour des opérations logiques telles que des opérations de comparaison, ou des opérations ET, OU, OU exclusif, etc... Les unités 11 fonctionnelles/à 13 peuvent également différer les unes des autres.C'està-dire que chacune d'entre elles peut être utilisée pour une opération spécifique ou une catégorie définie d'opérations. Chaque unité fonctionnelle peut également être subdivisée en sections qui fonctionnent indépendamment les unes des autres pour l'exécution en parallèle d'opérations arithmétiques ou logiques différentes. Ainsi, par exemple, une unité fonctionnelle peut comporter une section pour l'exécution des additions, et une autre section pour l'exécution des multiplications qui fonctionnent indépendamment l'une de l'autre avec cependant un chevauchement dans le temps. Les unités fonctionnelles 11 à 13 reçoivent les instructions avec les facteurs à traiter d'un distributeur d'instructions 15 par l'intermédiaire d'ensembles de registres d'entrée 16 à 18. Les résultats engendrés dans les unités fonctionnelles sont transmis à des ensembles de registres de sortie 21 à 23. Pour plus de simplicité, on a représenté dans le cas du mode de réalisation décrit seulement trois unités fonctionnelles, chacun comportant un ensemble de registres d'entrée, tel que l'ensemble de registres 16 à 18 et un ensemble de registres de sortie, tel que l'ensemble de registres 21 à 23. En pratique, le nombre des unités fonctionnelles avec leurs ensembles de registres d'entrée et de sortie qui sont connectées au distributeur 15, peut être de beaucoup supérieur, si cela apparait désirable compte tenu de la quantité de données à traiter. Le distributeur d'instructions reçoit les instructions et les facteurs qui sont prêts à être traités d'une mémoire d'instructions 25 connectée à une mémoire de programme 27 par l'intermédiaire d'une unité de chargement 26. Cette mémoire 27 contient tous les programmes et sous-programmes nécessaires pour l'exécution d'un travail de traitement spécifique. Les données à traiter sont fournies par une mémoire d'entrée des données 28 et les données de résultat obtenues au cours de l'exécution sont transmises à une mémoire de sortie de données 32.Les deux mémoires 28 et 32 sont couplées par des unités qui seront décrites ci-après respectivement au distributeur d'instructions 15 et à la mémoire d'instructions 25 où les données à traiter sont associées aux instructions commandant le traitement et d'où les données de résultat sont transmises à la mémoire de sortie des données 32 par l'intermédiaire d'une unité de sortie 30 précédée d'un ensemble de registres de sortie- 31. Les programmes et sous-programmes mis en mémoire dans la mémoire 27 sont constitués par des séquences d'instructions comme on le décrira ci-après au moyen d'un exemple de traitement. Supposons que l'équation y.e # @x doive être colculée done lequelle N peut être un nombre entier positif x-1 quelconque et dans laquelle la racine carrée de x doit être déterminée avec un degré de précision de f. Ce problème peut être résolu d'une manière connue en utilisant l'algorithme représenté sur la figure 2 dans lequel F est une variable auxiliaire et n une valeur pour compter les passes d'itération qui doit être mise à 1 au début du traitement. Pour être utilisé dans le système de traitement représenté, cet algorithme est converti, de la même manière représentée sur la figure 3, par l'introduction de variables auxiliaires supplémentaires v, w p, q. La représentation conformément à la figure 3 peut être exprimée par le programme ci-après (la conversion correspondante du programme ne fait pas partie de la présente invention). V:: = {lire f de[R1]; lire N Ede R2 n: = 1; Yo : = O; tU13 S[n,f,yO,N:y], écrire y[dans W1]} S[n,f,yn,N; y]::={x8=n;R[XO, n,f;x,], (U2) y1: # y*+x1: g:n=N; Q(q) [n,f,y1,N;y]} R[xO,n,f: xl:: ={vO=mx2/0: v1:-v0-n, w=2x0, F:=v1/Wa x1:=x0-f; v:=F1 P:=vsf, P(p)[x1,n.fix]} (U3) P[p] [x0,n,f:x]:: = P=1 # {x:=x0} p=2 # {R[x0, n,f:x]} (U4) Q[q] [n0.f.y0,N: y] ::= q=1 # {y:=y0} (U5) q=2 # {n:=n0+1; S [n,f, Y0, N; yl} Dans le programme V désigne le programme principal (procédure principale) et S, R, P et Q sont les sous-programmes tsous-routinest. Chaque ordre (instruction) est délimité d'une manière connue par un point virgule. Le format des instructions d'entrée de données est "lire fE de R1] " Ceci signifie que la valeur d'approximation f doit être lue à l'adresse R1 de la mémoire d'entrée 28 et doit être rendue disponible pour le traitement. D'une manière correspondante, l'instruction "écrire y [ dans W13" est une instruction de Sortie indiquant que la valeur y du résultat doit être transférée à l'adresse définie symboliquement Wl dans la mémoire de sortie 32 Les instructions du format n: = 1 sont des instructions d'attribution de valeur qui provoquent le transfert de la valeur a la droite de ":=" ou le résultat de l'expression qui y est définie à une adresse de mémoire désignée par le symbole à la gauche de ":=". Les instructions du type S [n,f,y0,N=y] désignent des procédures [ sous-programmes) qui doivent être traitées à l'intérieur de la procédure, comme dans le cas de S, ou à l'intérieur d'une autre procédure subordonnée (figure 3).Les lettres entra crochets désignent les variables à traiter à l'intérieur de la procédure principale ou de la procédure subordonnée respective. Les variables avant les deux points dans les expressions entre crochets sont appelées les variables d'entrée, c'est-à-dire les variables qui servent de valeurs d'entrée pour un travail de calcul à effectuer tandis que les variables après les deux points sont les variables de sortie c'est-à-dire les variables représentant- les résultats calculés. Les procédures P et Q comportent chacune deux alternatives dont la sélection dépend des variables d'entrée indiquées entre parenthèses après le nom de la procédure. Dans le cas de la procédure Q, la variable en cause est désignée q; dans le, cas de la procédure P, la variable est désignée p. Les alternatives sont designées 1 et 2, la valeur 1 correspondant à une décision positive (oui) et la valeur 2 à une décision négative (non). Dans le programme donné oi-dessus, chaque variable n'est définie qu'une seule fois. Le nombre d'opérations de- lecture d'une seule et même variable est cependant illimité. L'indication "lire une variable" indique que la valeur de la variable en cause est transférée à un emplacement de mémoire où elle est requise au cours du traitement, De tels transferts qui, en plus d'une étape de lecture, comprennent une étape d'écriture, peuvent être exprimés dans le programme au moyen d'instructions de transfert. Aux fins de tels transferts, les emplacements d'une seule et même variable V sont distingués les une des autres en les renomment v1, ...., V@ En conséquence, une instruction de distribution V1, ....... Vn:=v est ajoutés au programmc. Cette instruction indique que la valeur de v doit être transférée aux emplacaments de mémoire v1, ...., Vn. L'instruction de distribution assure qu'une relation olaire est établie entre la définition d'une variable à l'intérieur du programme et la place de son utilisation au cours de l'exécution du programme. Dans le cas où les instructions d'un programme sont exécutées concurremment, il peut arriver qu'une variable soit simultanément requise par deux instructions Entre l'instruction a:=f[b] et la procédure E [a:o] , le cas peut se produire que a soit simultanément requis pour l'attribution de valeur et pour l'exécution de la procédure E. L'utilisation d'instructions tampon permet que de telles instructions soient exécutées indépendamment l'une de l'autre. Ces instructions tampon peuvent avoir par exemple le format ci-après: a:- f(b): a':=E [a' :cl] Ceci assure que les instructions à mettre en mémoire tampon sont totalement indépendantes l'une de l'autre ce qui, comme on le décrira ci-après, est important pour l'exécution des instructions individuelles. Si l'instruction définissant une variable d'entrée est une simple instruction de transfert du type a:-b aucune instruction tampon n'est nécessaire. Au moyen d'instructions de distribution et d'instructions tampon, le programme U1-U5 tel que défini ci-dessus peut être également écrit sous la forme ci-après: V :: = {lire f Ede Ri 3 ; lire N Ede R27 ; n:=1; y0:=0, (U6) S[n,f,y0, N:y]; écrite y [dans W1]} s[n,f,y0,N: y] :: + {Xo, n1, n2, n3 :+n; f1,f2:f; (U7) N1,N2:=N; x01: x01; n11 : =n1;f11:=f1; R x01,R11,f11:x1 ; y1:=yD+x1; q:=n2=N1, N31:n3;f22:=f2;y11:=y1:N21:=n2; Q(q) [n31,f21,y11,N21:y]} R Ex0,n,f: x]:: = [x1,x2,x9:=X0;n1,n2:=n;f1,f2:=f; (U8) v0:=x2/1, V1 :=V0-p1;w:=Zx2;F:=V1/W; F1,F2:=F; x1:=x3-F1, v:=F2, p;=V#f1; x11:=X1; n21:-n2; f21:"f2; P(p) [X11 D21,f21;X ] } P(p) [X0,n,f; x] ::= (U9) p=1 # {x:=x0} p=2 # {R[x0, n,f,:x]} Q(q) n0,f,y0, N: y :: = (U10) q=1 # {y:=y)} q=2 # {n:=n0+1; n1:xn, S [n1,f,y0,N: y]} Le programme ainsi obtenu permet de remplacer les variables par des emplacements de mémoire. A cette fin, chaque variable, lorsqu'elle se présente, est associée à une adresse de mémoire définie. Cette adresse est relative par rapport au début de la procédure ou de la procédure alternative correspondante. En outre, chaque procédure alternative est précédée par un vecteur d'adresse formel.Pour les paramètres externes individuels (variables à l'intérieur d'un sous-programme, ou d'une procedure alternative auquel ou à laquelle les variables sont attribuées à partir de la procédure principale correspondante ou d'une procédure subordonnée à l'intérieur de laquelle le sous-programme ou la procédure alternative doit être exécutée), ce vecteur d'adresses indique soit l'adresse de l'emplacement de mémoire où se trouve le paramètre dans le texte du programme soit, au moyen d'une adresse nulle, que le paramètre correspondant n'existe pas dans la procédure alternative. Toutes les diverses variables autres que les paramètres externes existent par paires dans une procédure alternative, les deux cas ci-après devant être distingués: La variable (par exemple a) se trouve- une fois du côté gauche (par exemple a: = f(b), ou lire a [ de R ] et une fois du coté droit (par exemple c:"g (a) ou écrire a [ dans W ] d'une instruction de base (attribution, instruction de lecture ou d'écriture). Dans ce cas, la variable qui se trouve à l'emplacement de la définition dans le programme est remplacée par l'adresse relative de l'emplacement où la variable se trouve =du côté droit" au cours du programme.Ceci est indiqué par exemple par @ a:= f(b) et e:= g (a) où a + est une adresse et a indiqué l'espace réservé correspondant à cette adresse. Dans le second cas, la variable peut être d'une part un paramètre interne et d'autre part être soit la partie droite soit la partie gauche d'une instruction de base. Dans ce cas, le paramètre interne est remplacé par l'adresse de l'emplacement auquel le paramètre se trouve dans l'instruction de base. A l'origine, ce dernier emplacement est un espace réservé. Le programme décrit est représenté ci-après, les adresses de mémoire étant marquées par une flèche dirigée vers la partie droite au-dessus du symbole de variable correspondant et les adresses nulles étant représentées par un espace vide surmonté d'une flèche (dans le vecteur d'adresses, les variables d'entrée qui se retrouvent en tant que paramètre dans le texte du programme ont été soulignées. Ces variables sont des variables d'entrée directes à l'opposé des variables mn-soulignées qui sont directes). V::= {lire f [ de RI ] ; lire N E de R2 ] ; n: = 1 tU11) Yo:=Oi E S n, f. @0, t: t ; écrire Y dans W1 ] ; } S::=[n, f, V0, N: Y] {x0, n1, n2, n3: n, f1, f2 : =f, (U12) N1, N2;= N: x01:=x0; n11:=1:f11:=f1, R[ xn@ n11 f11:x@] ; Y4: = Y@ + x,; q;=n@=N.; n31:"n3; f21:=f2; Y11:=Y1; N21:=N2; Q [q] [n31, f21, Y11, N21:Y]} R::+ [x0, n, f: x] {x1, x2, x3:=x0; n1, n2: =n;f1, f2:=f, & 8) v0:=x2/1, v1:=v-=n1,w;=2x2; F:=v1/ws F1, F2:=F;x10:=x3=F1;v:=F2 ; p:@VSf1; x11=x10; n21;#n2; f21:=fs; p[p] [x11, n21, f21:x]} P[p] :: = [U14] p=1 # [x0, , :x] {x:=X0} p=2 # [x0, n, f: x] {R [x0,n,f: x]} (U15) q=1 # {n0, f, y0, n: Y] [n:=hn0#1; n1:@n; S[n1,f. YO'N: Y ] } Dans le programme ci-dessus, une instruction de base est exécutable lorsque les positions de l'instruction auxquelles des valeurs ont été attribuées sont représentées par des adresses et lorsque les positions d'une telle instruction qui provoquent l'entrée de valeurs sont représentées par des valeurs.Des instructions qui provoquent le développement de l'instruction en cours par une procédure alternative sont exécutables lorsqu'une valeur a été attribuée aux variables d'entrée de l'instruction correspondante et que des adresses ont été attribuées aux divers paramètres de l'instruction. De telles instructions sont appelées ci-après instructions de développement étant donné qu'elles provoquent le développement d'une procédure par l'une des procédures alternatives. Une instruction de base est exécutée du fait que l'expression de droite de l'instruction est analysée (calculée) et que la valeur résultante est transmise à l'adresse de mémoire située à la gauche de l'instruction. Une instruction de développement est exécutée comme suit: Au moyen de la valeur de la variable d'entrée, la procédure alternative est sélectée et un emplacement de mémoire défini lui est attribué. En même temps, les adresses relatives qui se trouvent -dans le texte du programme sont remplacées par les adresses absolues qui résultent du fait que les variables d'entrée sont effectivement enregistrées dans la mémoire d'instructions 25. Le vecteur d'adresses formel correspondant est également chargé d'adresses absolues qui sont obtenues par l'enregistrement des instructions dans la mémoire d'instructions 25. Les adresses absolues des variables d'entrée directes, telles que données par le vecteur d'adresses normal, sont appliquées aux adresses correspondant aux paramètres spécifiés par l'instruction de développement appelante. En d'autres termes, si l'instruction de développement est E et que le vecteur 4'adresses formel comportant les adresses absolues est représenté par [ c:d ] , l'adresse c est alors transférée à l'emplacement de mémoire ayant l'adresse a.Dans le cas des variables d'entrée indirectes et des variables de sortie, le transfert est effectué en sens inverse. En conséquence, l'adresse b dans l'exemple ci-dessus est transférée à l'emplacement de mémoire d'adresse d. En réécrivant le programme conformément à l'exemple expliqué ci-dessus, il est possible comme ceci est le cas du système de traitement de données de la figure 1, de déterminer entièrement localement, sans référence à des valeurs stockées en un autre emplacement, si des instructions sont exécutables. Les conversions de programme décrites peuvent être effectuées au moyen d'un programme de traduction approprié (compilateur) qui ne fait pas partie de la présente invention. La fonction des unités de mémoire et des autres unités du système de traitement de données représenté sur la figure 1 sera décrite en détail ci aaprès au moyen du programme exemple. La mémoire de programme 27 contient le programme désigné U11 à U15 ci-dessus. Pour chaque procédure ou procédure alternative, cette mémoire contient une entrée constituée par un nom de procédure, par exemple P, un numéro désignant la procédure alternative, un vecteur d'adresses et le texte du programme. La figure 4 représente un exemple d'une entrée de la mémoire 27 qui correspond à la procédure alternative P2 de l'exemple de programme décrit ci-dessus. Les adresses dans la zone du vecteur d'adresses sont spécifiées relativement au texte de programme respectif qui, dans chaque cas, part de l'adresse 0.La mémoire 27 peut êtte une mémoire associative connue qui permet que son contenu soit adressé au moyen de la colonne de la zone de mémoire qui contient le nom de la procédure. Si la mémoire 27 est réalisée sous forme d'une mémoire à accès sélectif, elle peut être combinée avec la mémoire d'entrée 28 pour former une mémoire commune dans laquelle une partie est réservée au stockage du programme et une autre à l'entrée des données. Les instructions du programme sont transférées de la mémoire du programme 27 à la mémoire d'instructions 25 par l'intermédiaire de l'unité de chargement 26 d'une manière qui sera décrite ultérieuremgnt. Ces instructions sont soit des instructions d'attribution (par exemple: F:v1/W) soit des instructions d'entrée/sottie (par exemple lire f Ede R17 ) soit des instructions de développement 11 (b) Ex11, n21, f21 = ] ). Les adresses indiquées sont les adresses absolues de la mémoire d'instructions 25. Ces adresses sont formées au cours du transfert dès instructions à la mémoire 25 et sont enregistrées aux emplacements précédemment indiqués par les adresses symboliques. L'emplacement de mémoire désigné par une telle adresse est intialement vide et n'est rempli que lorsqu'une valeur lui est attribuée. Les entrées qui doivent être enregistrées dans la mémoire 25 sont divisées en instructions exécutables et instructions non exécutables. A cette fin chaque instruction est précédée d'une zone de commande comportant une étiquette de référence indiquant si elle est ou non exécutable. Dans le mode de réalisation décrit l'étiquette ci-après est utilisée: ID > = exécutable = non exécutable La zone de commande sert à extraire les entrées de la mémoire 25. Lorsque les entrées de la mémoire 25 sont accédées au moyen de l'argument de recherche ID, toutes les instructions prêtes à être traitées sont extraites de la mémoire et transmise au distributeur d'instructions 15. Le distributeur d'instructions 15 interprète les instructions reçues les distribuant selon leur type aux unités connectées. Les cas ci-après peuvent se produire: a3 Une instruction de développement est transmise à une mémoire de développement 34 sous forme d'une entrée constituée par le nom de programme, le numéro de l'alternative, le vecteur d'adresses effectif et une zone qui à l'origine ne contient que des positions vides pour recevoir le vecteur d'adresses formel. La commande est alors transférée à l'unité de chargement 26 qui, selon l'entrée de la mémoire 34, provoque l'appel d'une autre procédure de la mémoire de programme 27 et son transfert à la mémoire d'instructions 25, b) Si l'instruction transmise au distributeur d'instructions est une instruction de distribution du format a1 a :=v cette instruction n est transmise à une unité de remplacement.38 par l'intermédiaire d'un registre d'entrée 37 et la commande est transférée à cette unité. c) Si l'instruction est une instruction de lecture, le distributeur d'instructions 15 forme une paire d'adresses ayant le format E b ] ~dans laquelle b est une adresse de la mémoire d'entrée des données 28 et a une adresse de la mémoire d'instructions 25 à laquelle la valeur à extraite de la mémoire d'entrée des données 28 doit être transférée. Les deux adresses sont obtenues de l'instruction de lecture respective. Dans l'exemple de contenu de la mémoire 25 représenté sur la figure 5, ceci serait l'adresse i1 pour a et l'adresse R1 pour t dans le cas dtune instructlon de lecture pour la entrée. Cette paire d'adresses est transférée par une ligne 41 à un registre de lecture 42.Ensuite, la commande est transférée à une unité d'entrée 44 qui provoque l'extraction des données de la mémoire 28. dl Si l'instruction appliquée au distributeur d'instructions est une instruction d'écriture comme celle représentée sur la ligne 6 de l'exemple de contenu de mémoire de la figure 5, le distributeur d'instructiont 15 forme à partir de l'instruction une paire de valeurs correspondantes Ev, a ] . Dans cette paire de valeurs, v est une valeur de résultat qui est transférée à la mémoire 32 et a est une adresse dans cette dernière mémoire. Par une ligne 49, la paire de valeurs est transmise au registre d'écriture 31, a commande étant ensuite transférée à l'unité de sortie 30 qui provoque l'entrée de la valeur dans la mémoire de sortie des données 32. e) Si l'instruction appliquée au distributeur d'instruction 15 est une instruction d'attribution et non une instruction de distribution, le distributeur 15 sélecte l'une des lignes 46 à 48 pour choisir l'une des unités fonctionnelles 11 à 13 en fonction du type de l'instruction traitée. L'unité fonctionnelle en cause doit être prête à recevoir les informations et être capable d'exécuter l'instruction. Sur la ligne sélectée 46, 46 ou 48, une entrée constituée par une adresse destinataire, le code opération et les facteurs à traiter est transmise au registre d'entrée correspondant 16. 17 ou 18. La figùre 7 représente un exemple d'une telle entrée sous forme d'un exemple de contenu du registre d'entrée 16. Ensuite, la commande est transmise à l'unité fonctionnelle sélectée pour l'exécution de l'instruction. Dans tous les cas a3 à e) ci-dessus décrits, l'instruction de l'unité correspondante est effacée dans la mémoire d'instructions 25 à la suite de l'opération du distributeur d'instructions 15. Au moyen d'une logique de décodage à laquelle le format d'instruction à interpréter est appliqué, le distributeur d'instructions 15 détermine le type d'instruction respectif. La figure 6 représente, à titre d'exemple, un mode de réalisation de la structure du distributeur d'instructions 15. Le distributeur d'instructions comprend un registre d'instructions 120 ou un ensemble de tels registres. Par une ligne 123, la sortie du registre 120 est connectée à un groupe de circuits de portes 121 et à un décodeur de format d'instruction 122 qui analyse le format de l'instruction transférée de la mémoire d'instructions 25 au registre 120 et engendre des signaux correspondants sur ses lignes de sortie 134. La ligne de sortie respective 134, qui porte un signal, ouvre l'une des portes 121 qui est réalisée sous forme d'un circuit à portes multiples de sorte que l'instruction contenue dans le registre 120 est transférée aux registres ou mémoires 34, 37, 42 ou 31 par l'un des bus 35, 36, 41 ou 49. Selon le format de l'instruction contenue dans le registre 120, le décodeur 122 détermine celui des bus qui doit être sélecté. Si l'instruction est une instruction d'attribution, le décodeur 122 émet alors un signal pour ouvrir le circuit à portes multiples 124. Un groupe de circuits de portes 125 est connecté à la sortie du circuit 124, les sorties de ces circuits 125 étant respectivement connectées aux bus 46. 47 et 48. Ces derniers bus constituent les entrées des registres 16. 17 et 18 de la figure 1. Les circuits de porte 125 sont commandés par un compteur de balayage 127 et un registre d'occupation (libre/ occupé) 128. Le registre 128 reçoit des signaux d'occupation des unités fonction nelles 11, 12 et 13, si les unités en cause sont occupées à exécuter un travail de traitement.Chaque position binaire du registre 128 est associée à l'une des unités fonctionnelles 11 à 13, L'unité fonctionnelle Il, par exemple, est connectée par une ligne libre/occupé 56 (figure 6 ] à la position binaire d'extrême droite du registre libre/occupé 128. Chacune des positions binaires du registre 128 est munie d'une ligne de sortie qui porte un signal lorsqu'aucun signal d'occupation n'a été enregistré par l'unité fonctionnelle associée dans la position binaire correspondante.Ces signaux de sortie, en combinaison avec les signaux de commande de balayage du compteur de balayage 127, constituent les signaux d'entrée de circuits ET 125. Le compteur de balayage -127 est un compteur cyclique auquel des impulsions d'horloge T15 sont appliquées. A cette fin, un circuit OU 131 connecté aux circuits ET 126, un circuit inverseur 132 et un circuit de porte 133 sont utilisés, lorsqu'aucun des circuits ET 126 ne produit de signal de sortie. Si par exemple, la position binaire d'extrême droite du registre d'occupation 128 est à l'état libre et que le compteur de balayage 127 est dans sa position de balayage d'extrême droite, le circuit ET 130 est ouvert appliquant un signal de commande au circuit de porte 129.Ceci a pour effet que l'instruction stockée dans le registre d'entrée d'instruction 120 est transférée au registre 15 de l'unité fonctionelle Il par le bus 123, les circuits à portes multiples 124 et 129 et le bus 46. La partie inférieure du circuit de la figure 6 sert ainsi à explorer continuellement les unités fonctionnelles 11 à 13 et à transférer les instructions contenues dans le registre 120 à une unité fonctionnelle libre. Après qu'une unité fonctionnelle a achevé une opération, elle engendre un signal de restau ration sur la ligne libre/ocoupé. Ce signal met la position binaire correspondante du registre 128 à l'état libre dans lequel un signal de sortie est appliqué au circuit ET correspondant 128. La figure 7 représente un exemple de la structure des unités fonctionnelles Il à 13 qui sont utilisées sous la commande du distributeur d'instructions 15 dans le cas el décrit ci-dessus. L'unité fonctionnelle 11 comporte un décodeur d'opérations 51 raccordé à la zone de code opération du registre d'entrée 16. L'un des quatre circuits d'opérations 52 à 55 est choisi en fonction des signaux de sortie du décodeur 51. Chacun de ces circuits est conçu pour exécuter une opération arithmétique particulière ou des opérations logiques. Le circuit 52 est constitué par un additionneur/soustracteur qui, en combinaison avec le signal de sélection du décodeur d'opérations 51, reçoit également un signal de commande d'addition/soustraction. Le circuit 53 est un multiplicateur et le circuit 54 effectue les divisions.Le circuit 55 est un circuit logique qui exécute par exemple les opérations de comparaison. ET, OU ou OU exclusif en fonction de signaux de commande d'opération additionnellement fournis par le décodeur d'opération 51. La construction des circuits 52 à 55 est connue en soi de sorte qu'il n'est pas nécessaire de les décrire davantage. Les entrées des facteurs des circuits 52 à 55 sont connectées à la zone des facteurs du registre d'entrée 16. Les sorties de résultat des circuits 52 à 55 sont connectées à la zone de résultat du registre de sortie 21 qui reçoit également l'adresse destinataire du registre 16. Lorsqu'il opère sur des facteurs, chacun des circuits 52 à 55 émet un signal d'occupation qui est appliqué au distributeur d'instructions par la ligne 56. Les unités fonctionnelles 12 et 13 de la figure 1 sont construites de la même manière que l'unité fonctionnelle 11 de la figure 6 bien qu'il ne soit pas nécessaire que chacune de ces unités fonctionnelles soit capable d'exécuter toutes les opérations mentionnées dans la description de l'unité fonctionnelle 11. Les unités fonctionnelles 11 à 13 peuvent fonctionner en parallèle, exécutant des instructions qui leur sont appliquées à partir de la mémoire d'instructions 25 par l'intermédiaire du distributeur 45 et des registres d'entrée 16 à 18. Les unités fonctionnelles Il à 13 fonctionnent indépendamment des autres unités du système de traitement des données de la figure 1. Les- signaux de résultat fournis par les unités fonctionnelles aux registres de sortie 21 à 23 consistent dans chaque cas d'une paire de valeurs E a. v ] dans laquelle a est l'adresse destinataire de l'instruction transférée de la mémoire d'instructions 25 au distributeur d'instructions 15 et au registre d'entrée respectif 16, 17 ou 18 dans laquelle v est la valeur effective du résultat. La paire de valeurs est enregistrée dans le registre de sortie respectif 21 à 23. L'achèvement d'une opération dans les unités fonctionnelles il à 13 est notifiée à l'unité de remplacement 38. L'unité de remplacement 38 traite des zones de format [a1, ... a.n, v] dans lesquelles les différentes valeurs a sont des adresses de la mémoire d'instructions 25 et v est la valeur à traiter. L'unité de remplacement 38sert à transférer la valeur v aux adresses de mémoire indiquées a1, ....., an, le nombre d'adresses a pouvant être compris entre 1 et n, cette derniere vaieur étant limitée par le nombre des positions dans les registres d'entrée 21, 22, 23, 37, 45 et 58 de l'unité de remplacement Sa. La figure 8 est un schéma bloc simplifié de l'unité de remplacement. L'unité de remplacement comprend un registre pointeur 61 qui est réalisé sous forme dfun compteur binaire servant à adresser les diverses positions d'adresse dans la partie d'adresse du registre 62.L'unité de remplacement comprend également des circuits de porte 63 et 64 et une unité de commande des cycles de mémoire 65. Par un circuit de sélection approprié, un registre d'entrée chargée 21, 22, 23, 37, 45 ou 58 est connecté aux registres 62 et 68. Les sorties de ces registres sont connectées aux circuits de portes 63 et 64 qui, à leur tour, sont connectés par un bus 59 à un registre d'adresse 66 et à un registre d'entrée de mémoire 87 qui font tous deux partie de la mémoire d'instructions 25.La mémoire 25 est adressée au moyen du contenu du registre 68 pour écrire la valeur enregistrée dans lè registre d'entrée de la mémoire 67 en un empplacement correspondant à l'adresse respective a contenue dans le registre 66. L'adresse en cause peut être par exemple, l'adresse i3 ligne 5 de l'exemple du contenu de la mémoire 25 représentéesur la figure~5. Les impulsions d'horloge T1, T2, T3 qui se produisent cycliquement l'une après l'autre sont fournies par la commande des cycles de mémoire 65.Les impulsions T1 servent à incrémenter d'une unité le contenu du registre pointeur 61 de sorte que adresse a suivante du registre 62 paeut être adressée. Lesimpulsions d'horloge T2 sont utilisées pour transmettre l'adresse adressée du registre 82 au registre d'adresse 66. Avant le commencement des cycles d'horloge T1, T2, le circuit de porte 64 est ouvert par une impulsion d'horloge de départ Tn pour transférer la valeur contenue dans le registre 68 au registre d'entrée de la mémoire 67.Les impulsions d'horloge T3 servent à déclencher un cycle d'écriture dans la mémoire 25 au cours duquel le contenu du registre d'entrée 67 de la mémoire. c'est-à-dire la valeur v est entré dans l'emplacement de mémoire désigné par le contenu du registre d'adresse 66. Après que la dernière adresse a a ainsi été utilisée pour adresser la mémoire 25, le contenu des registres 62 et 88 est effacé. Les valeurs d'entrée de ces registres sont obtenues, selon le cas, des registres 37, 45 ou 58. L'unité de remplacement 38 reçoit également des signaux d'entrée des registres de sortie 21, 22 et 23 des unités fonctionnelles 11, 12 et 13. Ces signaux d'entrée sont traités d'une manière similaire à celle décrite ci-dessus. Après que l'un des registres 21 à 23, 37, 45 ou 58 a été chargé -de signaux à traiter par l'unité de remplacement 38. cette information est notifiée à l'unité de remplacement par l'unité responsable du chargement de registre en cause. A cet effet, les unités 11, 12 et 13 sont utilisées pour les registres 21, 22 et 23, le distributeur d'instructions 15 pour le registre 37, l'unité d'entrée 44 pour le registre 45 et une unité de transfert 70, non encore décrite, pour le registre 58.Le contenu des registres 21 à 23, 37, 45 et 58 est transféré aux registres 62 et 68 par un bus 69, schématiquement représentée sur la figure 8. Des moyens déjà connus servent à assurer que, dans le cas où plusieurs registres sont simultanément occupés, le transfert est effectué séquentiellement à un rythme déterminé par la vitesse de traitement de l'unité de remplacement 38. Si une instruction devient exécutable à la suite de remplacements exécutés par l'unité de remplacement 38, la commande est transférée au distributeur d'instructions 15. Ceci est le cas si, à la suite de tels remplacements, il n'y a pas de position d'instruction vide restant dans l'instruction en cause. Un tel état est déterminé au moyen du circuit représenté sur la figure 9. Le circuit de la figure 9 fait partie de la mémoire d'instructions 25. Cette mémoire comporte un registre de sortie de la mémoire 71 dans lequel les mots d'instruction extraits de la mémoire sont stockés temporairement. La mémoire est lue mot par mot, chaque mot représentant un élément, par exemple une variable ou une adresse, d'une instruction mise en mémoire dans la mémoire 25. Des circuits indicateurs 73, 74J 75 sont connectés à la sortie du registre 71. Le circuit indicateur 73 fournit un signal de sortie lorsque le registre de données contient une marque de fin d'instruction qui, dans l'exemple de contenu de la mémoire de la figure 5, est représentée par un point virgule. Le circuit indicateur 74 sert à indiquer une position vide, c'est-à-dire un emplacement de mémoire qui n'est pas encore occupé par une valeur. Le circuit indicateur 75 est utilisé pour indiquer l'emplacement de mémoire de l'étiquette exécutable" ou "non exécutable" qui, dans chaque cas, est le premier emplacement de mémoire d'une instruction. Les circuits indicateurs 73 à 75 sont réalisés de telle sorte que l'état respectif indiqué est conservé jusqu'à ce que l'instruction en cause ait été analysée. La mémoire 25 est adressée par le registre d'adresse 66 décrit ci-dessus. Le registre d'adresse 66 coopère avec un circuit d'incrémentation d'adresse 78 et un circuit de décrémentation d'adresse 79.Les deux circuits provoquent l'incrémentation ou la décrémentation d'une adresse d'une constante d'adresse L correspondant à la longueur de mot d'un élément des instructions mis en mémoire dans la mémoire 25. La constante L peut avoir la valeur 1, par exemple, si les adresses sont stockées octet par octet. Après une opération de remplacement, le registre 66 contient l'adresse de l'emplacement de mémoire i dans lequel la valeur de remplacement a été enregistrée. Un signal de commande appliqué sur la ligne 80 provoque alors l'activation du circuit de décrémentation 79 qui décrémente par cycles successifs le contenu du registre d'adresse 66.Chaque décrémentation est suivie d'un cycle de lecture en mémoire et la valeur extraite de la mémoire est entrée dans le registre 71 et contrlée par le circuit indicateur 75 pour déterminer la présence d'une étiquette d'aptitude au traitement de l'instruction. Le début de l'instruction ayant ainsi été atteint, et l'étiquette d'aptitude au traitement se trouvant dans le premier octet du registre 71 $ le circuit indicateur 75 fournIt-u signal de sortie qui ouvre un circuit de porte 81 et transfère au registre d'adresse de début 82 l'adresse contenue à ce moment dans le registre 66. Le signal de commande qui ouvre la porte 81 sert simultanément à remettre à zéro les circuits indicateurs 73 et 74.Ensuite, un signal de commande appliqué sur la ligne 83 active le circuit d'incrémentation 78 pour exécuter des cycles d'incrémentation d'adresse. Chaque incrémentation d'adresse est suivie par un cycle de lecture en mémoire et la valeur transférée au registre 71 est contrôlée par les circuits indicateurs 73 et 74 pour détecter respectivement la présence d'une position vide et la présence d'un indicateur de fin d'instruction. Si la présence de ce dernier dans le premier octet du registre 71 est déterminée, le circuit 73- engendre un signal de fin de balayage empêchant la poursuite- de l'incrémentation de l'adresse contenue dans le registre 66.Si, à ce moment, le circuit OU exclusif 76 engendre un signal de sortie, ceci indique- que de nouveaux remplacements doivent être exécutés et que- l'instruction en cause n'est pas encore susceptible d'être traitée. Dans ce cas, l'étiquette RU (non exécutable) reste inchangée. Si, cependant, au moment du signal de Fin de balayage, aucun signal n'est applique sur la sortie du circuit OU Exclusif 76 le circuit inverseur 85 fournit un signal de sortie indiquant au distributeur d'instructions 15 qu'une instruction exécutable est présente.Simultanément, le signal de sortie du circuit inverseur 85 ouvre le circuit de porte 84 qui provoque le transfert de l'adresse de début d'instruction contenue dans le registre 82 au registre d'adresse 66. Ceci est suivi d'un cycle de lecture en mémoire au moyen duquel l'étiquette d'aptitude au traitement est transférée au premier octet du registre 71. Par l'intermédiaire du circuit à retard 88, le signal de sortie du circuit inverseur 85 est également appliqué à un circuit de porte 87 qui est. en consséquence, ouvert pour transférer l'étiquette "exécutable " "ID" fournie par un générateur d'étiquette 88 au premier octet du registre 71.L'étiquette "non exécutable" "RU" antérieurement valide de l'instruction correspondante est ainsi remplacée par l'étiquette exécutable "ID" et l'instruction est référencée comme étant susceptible d'être traitée. L'adresse de début d'instruction contenue dans le registre d'adresse 82 peut être utilisée pour avoir accès à l'instruction exécutable pour transférer cette étiquette ID au distributeur d'instruction 15 où l'instruction est traitée comme précédemment décrit. La fonction de la mémoire de développement 34 et de l'unité de transfert 70 sera décrite ci-après. La mémoire de développement 34 sert à recevoir une instruction de développement à la fois, qui lui est transmise par le distributeur d'instruction 15. La mémoire 34 est ainsi une mémoire tampon pour une instruction de développement tandis que la procédure désignée par cette instruction est transférée, au moyen de l'unité de chargement 26, de la mémoire de programme 27 à la mémoire d'instructions 25 et qu'à la suite de cette procédure les adresses du vecteur d'adresses effectif et du vecteur d'adresses formel se trouvent organisées par paire par l'-unité de -transfert 70. La figure 10 représente un exemple de contenu de la mémoire de développement 34, tel qu'il se présente, d'une manière- qui sera expliquée ultérieurement, lors du traitement de l'exemple d'application de la figure 3. La mémoire 34 comporte cinq zones 91 à 95. La zone 91 sert à recevoir une étiquette de traitement indiquant si l'entrée de la mémoire 34 est utilisée par l'unité de chargement 26 pour appeler une procédure de la mémoire 27 ou par l'unité de transfert 70 pour la formation de paires d'adresses. La zone 92 reçoit le nom de l'instruction qui est identique au nom d'une procédure correspondante contenue dans la mémoire 27.Dans le cas de l'exemple de contenu de la figure 10. l'instruction en cause est l'instruction S de la procédure U11 qui est indentique à la procédure U12 Icf ci-dessus) exécutée simultanément. La zone 93 reçoit la procédure alternative respective dont la signification a été décrite en détail ci-dessus. La zone 94 sert à recevoir le vecteur d'adresses effectif qui est constitué par les adresses des variables de lecture (avant les deux points) et des variables d'écriture (après les deux points). Les adresses de la zone 94 sont symboliquement désignées ik pour montrer qu'elles sont des adresses de la mémoire d'instructions 25 qui ont été attribuées aux variables dans l'instruction S (cf expression U111 lors du chargement de cette instruction dans la mémoire 25. La zone 95 est constituée par des emplacements de mémoire dont le nombre correspondant au nombre des emplacements de mémoire de la zone 94. Comme on le décrira ci-après, les emplacements de mémoire de la zone 95 servent à recevoir le vecteur d'adresses formel constitué par de nouvelles adresses de la mémoire d'instructions 25 qui sont attribuées lorsque la procédure correspondant à l'instruction contenue dans la mémoire 34 est transférée de la mémoire 27 à la mémoire 25. Parmi les zones 91 à 95, seules les zones 92, 93 et 94 sont occupées par les signaux fournis par le distributeur d'instructions 15 par l'intermédiaire du bus 35. La zone 91 est initialement chargée de l'étiquette LU tandis que la zone 95 comporte initialement des positions vides. La dimension des zones de mémoire individuelles correspond au nombre maximal de positions de l'instruction. Par l'intermédiaire de la zone de commande 91, l'unité de chargement 26 est informée qu'une procédure doit être extraite de la mémoire de programme 27. Dans l'exemple représenté, la procédure en cause est la procédure S1. La procédure est extraite de la manière décrite ci-dessus et un accès associatif est obtenu à la procédure SI, au moyen du contenu des zones 92 dans la mémoire 27. cette procédure étant ensuite transférée à la mémoire 25. A cet effet, l'unité de chargement 26 est utilisée comme unité de commande pour réaliser l'accès associatif et pour exécuter l'étape de lecture consécutive. Une unité de chargement fonctionnant de cette manière est connue en soi de sorte qu'une description détaillée n'a pas été donnée. Lors du chargement de la procédure extraite de la mémoire de programme 27 dans la mémoire d'instructions 25, toutes les adresses relatives qui se trouvent dans la procédure sont remplacées par des adresses absolues de la mémoire d'instructions 25. Ceci est effectué en attribuant des adresses dans la mémoire 25 aux adresses relatives des variables dans la procédure à charger. Les instructions de la procédure à charger sont transférées position par position à des emplacements de mémoire consécutifs libres de la mémoire d'instructions 25. En même temps, les valeurs d'adresses relatives contenues dans la procédure sont remplacées par des valeurs d'adresses réelles de la mémoire 25. Ceci est effectué, d'une manière en- soi connue, en mettant en mémoire tampon, dans un registre, non représenté, l'adressée de la mémoire d'instructions à laquelle commence l'opération de chargement (dernière adresse coupée dans la mémoire d'instructions 25 avant que la nouvelle procédure soit chargée). Ensuite, la valeur d'adresse mise en mémoire tampon est ajoutée à chaque adresse relative rencontrée dans la procédure avant que cette adresse soit décrite dans l'emplacement prévu pour la recevoir dans la mémoire d'instructions 25.Le même processus est utilisé pour les adresses relatives des variables qui, dans les instructions de la procédure, comme, par exemple, les variables n, f, etc.. dans 1 a procédure S tsf. U12 ci-dessus) sont initialement représentées par des emplacements vides. Dans lessous-programmes respectifs, ces variables sont représentées, comme décrit ci-dessus, par des emplacements vides -réservés -qui sont désignés par une adresse relative. Une autre opération de l'unité de chargement 26 consiste à remplir le vecteur d'adresses formel de la zone 95 de la mémoire de développement 34 avec les valeurs d'adresses réelles de la mémoire d'instructions 25. Les adresses en cause sont les adresses relatives des emplacements vides à l'intérieur de la procédure qui sont prévus pour recevoir les variables d'entrée et de sortie (variables de lecture et d'écriture) de cette procédure. Comme expliqué ci-dessus, ces adresses sous forme d'un vecteur d'adresses précèdent la procédure qui doit être chargée. Comme décrit ci-dessus, les adresses relatives en cause sont n, f, yg, N, y Comme décrit ci-dessus, les adresses relatives des emplacements vides de ces variables sont converties en adresses réelles de la mémoire d'instructions 25 en y ajoutant l'adresse de début de procédure.Ensuite, l'adresse réelle est transférée à l'emplacement associé à la variable dans la zone 95 de la mémoire de développement 34. L'unité de chargement 26 comporte également un circuit pour déterminer si l'instruction à charger est ou non exécutable. Il est déterminé, en particulier, si les instructions de développement qui se trouvent dans la procédure à charger comportent une valeur à l'emplacement des variables de lecture et des adresses aux emplacements des paramètres. A cette fin, un circuit similaire à celui représenté sur la figure 9 est utilisé. Au moyen de circuits indicateurs appropriés, les emplacements vides, la fin d'instruction et l'emplacement de l'étiquette d'aptitude au traitement sont déterminés. Dans le cas d'une instruction exécutable, l'étiquette est mise à la valeur ID; dans le cas d'une instruction non exécutable, l'étiquette est mise à la valeur RU. L'étiquette d'aptitude au traitement. avec l'instruction à charger, est transmise à la mémoire d'instructions 25. A la suite de l'opération de l'unité -de chargement 26, une recherche des instructions exécutables est effectuée dans la mémoire d'instructions 25, les diverses instructions contenues dans la mémoire 25 étant lues successivement et leur étiquette d'aptitude au traitement étant vérifiée en vue de déterminer si elles comportent la valeur ID. Les instructions exécutables sont transférées au distributeur d'instructions 15. Indépendamment de ces opérations, l'entrée de la mémoire de développement 34 est l'objet d'un traitement supplémentaire par l'unité de transfert 70. L'unité 70 forme des paires d'adresses à partir du vecteur d'adresses effectif et du vecteur d'adresses formel de l'entrée de la mémoire 34. Le vecteur d'adresses effectif se trouve dans la zone 94 de cette mémoire et peut avoir, par exemple le format [ a1..., a :b ... b ] . Le vecteur d'adresses formel ni n qui a été chargé avec les adresses réelles de la mémoire 25, comme décrit ci-dessus, se trouve dans la zone 95 et peut avoir le format [ C1, .., c d1, .., d ] dans lequel les entrées d'adresses après les deux I n n points sont les adresses de variables de sortie. Les entrées d'adresses sont assorties deux à deux en extrayant de façon continue une entrée de chacune des zones 94 et 95-et en associant entre elles les deux entrées.Ceci est effectué, en se référant aux exemples précités pour le vecteur d'adresses effectif et le vecteur d'adresses formel, de la manière suivante: i pour les variables d'entrée directes, [ c., a. ] pour les variables d'entrée indirectes, et Cdk, bk ] pour les variables de sortie. On peut constater que l'ordre des valeurs dans les paires est inversé lorsqu'il s'agit des variables d'entrée indirectes ou des variables de sortie. Les variables d'entrée directes sont celles qui sont utilisées directement dans une procédure alternative en ce sens-qu'elles se trouvent du côté droit d'une instruction d'attribution Cinstruction de base). Les variables d'entrée indirectes par contre ont la forme de variables d'entrée dans une instruction de développement. Dans les expressions Uîî à U15 ci-dessus représentées ces variables d'entrée indirectes sont soulignées -et ne se trouvent que dans les procédures P et O. L'appariemment deux à deux des adresses n'est effectué que lorsque les positions des zones 94 et 95 respectivement correspondantes sont effectivement occupées. Si l'une de ces positions n'est pas occupée Cce qui est exprimé par une adresse vide), aucune paire n'est formée pour cette position et le traitement se poursuit à la position suivante. Les paires d'adresses formées sont appliquées comme entrées au registre 58 qui est conçu pour recevoir une pluralité de telles paires d'adresses. Le contenu du registre 58 est traité de la manière décrite au moyen de l'unité de remplacement 38, par le transfert de la valeur d'adresse contenue dans la partie droite de la paire d'adresses à l'adresse contenue dans la partie gauche.Pour les vecteurs d'adresse de l'exemple, l'adresse c c1, par-exemple, est enregistrée à l'adresse de mémoire -1 s1, l'adresse 61 à l'adresse d1 et l'adresse án à l'adresse én. La figure 11 représente un oircuit qui peut être utilisé comme unité de transfert dans le système de la figure 1. Le circuit-comporte deux registres d'adresses 101 et 102 qui servent à adresser la mémoire de développement 34. Le registre 101 est utilisé pour adresser les entrées d'adresse dans la zone 94. Ce registre est connecté à une unité d'incrémentation d'adresse 103 qui, après chaque lecture d'une entrée d'adresse dans la zone 94 et- en réponse à un signal d'horloge T, incrémente le contenu du registre 101 en préparation de la lecture de l'entrée de droite suivante. D'une manière similaire, le registre 102 sert à adresser la zone d'adresses 95 avec l'aide de l'unité d'incrémentation 104. Au moyen des registres 101 et 102. des cycles de lecture sont effectués deux à deux dans la mémoire 34. Les entrées d'adresses extraites sont vérifiées pour détecter la présence de positions vides au moyen d'un indicateur de positions vides 105 construit sous la forme d'un décodeur. Si une position vide est trouvée, les circuits de porte 107, 108 sont bloqués par l'intermédiaire d'un circuit inverseur 109 empêchant que les valeurs extraites ou lues dans la mémoire 34 soient transmises. Si l'indicateur de position vide 105 ne répond pas, les valeurs d'adresses extraites sont transférées à un ensemble de registres de sortie 112 de l'unité de transfert 70 par les portes 110 et 111 qui sont ouvertes à ce moment. Les valeurs extraites de la mémoire de développement sont enregistrées par paires dans le registre 112. les entrées de la zone 94 apparaissant à gauche et les entrées de la zone 95 à droite. Si un signal de sortie est émis par un circuit indicateur 113 répondant à l'apparition d'une marque deux points ou d'un symbole "souligné", marquant une variable d'entrée indirecte à l'intérieur de la séquence d'adresses des zones 94 et 95. les circuits de porte 110 et 111 sont bloqués par un circuit inverseur 114 et les circuits de portes additionnels 115 et 116 sont ouverts. Au moyen de ces derniers circuits, l'ordre des positions des paires d'adresses à enregistrer dans le registre de sortie 112 est inversé. Ainsi, par exemple, les entrées de la zone 95 sont appliquées, par l'intermédiaire du circuit de porte 116, à la partie gauche de l'ensemble de registres de sortie 112 tandis que les entrées de la zone 94 sont transférées à la partie droite dudit ensemble de registres de sortie, par l'intermédiaire du circuit de porte 115. L'ensemble de registres de sortie 112, qui est adressé par des moyens non représentés pour recevoir les paires d'adresses successives, est connecté au registre d'entrée 58, provoquant le transfert des paires d'adresses stockées au registre 58, lorsque ce dernier indique qu'il est libre. La description des diverses parties du système de la figure 1 sera complétée ci-après par une description de l'unité d'entrée 44, du registre de lecture 42, de l'unité de sortie 30 et du registre d'écriture 31. Le registre de lecture 42 reçoit du distributeur d'instructions 15 sur un bus 41 une paire d'adresses du format [ a, t ] à la suite d'une instruction de lecture, qui doit être analysée dans le distributeur d'instructions 15; a est une adresse de la mémoire d'instructions 25 et t est une adresse de la mémoire d'entrée des données 28. Cette paire d'adresses est alors transférée à l'unité d'entrée 44 qui, à la suite de ce transfert. lit une valeur v à l'adresse b et remplace cette adresse dans la paire de valeurs [ a, b ] par cette valeur de sorte que la paire de valeurs a alors la forme Ca, v ] . Cette paure de valeurs est appliquée au registre d'entrée 45 de l'unité de remplacement 38, où elle est traitée comme décrit ci-dessus. Après avoir été extraite de la mémoire 28, l'entrée est effacée du registre de lecture 42. Par un bus 49, les paires de valeurs ayant le format [ v, a ] dans lequel v est une valeur de résultat et a une adresse de la mémoire de sortie des données 32, sont transférées du distributeur d'instructions 15 au registre d'écriture 31. Ces paires de valeurs sont utilisées par l'unité de sortie 30 pour transférer la valeur v à l'adresse spécifiée de la mémoire 32. Ensuite, l'entrée est effacée dans le registre 31. Le système de traitement des données décrit ci-dessus et représenté sur la figure 1 met en application le concept ci-après: les instructions chargées à partir de la mémoire de programme 27 dans la mémoire d'instructions 25 sont contrôlées pour déterminer si elles sont exécutables. Les instructions exécutables sont transmises au distributeur-d'instructions 15. d'où elles sont réparties entre des unités 11 à 13. 26, 34, 38, 44 où leur traitement est poursuivi. Les instructions relatives à des sous-programmes (instructions d'appel de sous-programmes ou instructions de développement) sont transmises par le distributeur d'instructions 15 à la mémoire de développement 34 qui fournit les signaux d'adressage à l'unité de chargement 26 pour transférer les instructions du sous-programme à appeler, de la mémoire de programme 27 à la mémoire d'instructions 25. Ces instructions sont également contrôlées pour déterminer si elles sont exécutables. La mémoire d'instructions 25, le distributeur d'instructions IS, la mémoire de développement 34 et l'unité de chargement 26 forment ainsi une boucle de chargement d'instructions pour développer et remplir le contenu de la mémoire d'instructions 25. L'unité de transfert 70 e.t-i-'unité de remplacement 38 sont également utilisées pour ces opérations de développement. Sous la commande de ces unités, les adresses contenues dans les instructions mises en mémoire dans la mémoire 25 sont remplacées de façon à rendre ces instructions exécutables. L'unité de remplacement 38 sert également à remplacer les positions vides dans les instructions contenues dans la mémoire 25 par les valeurs calculées en tant que valeurs de résultat par les unités fonctionnelles 11 à 13 ou fournies en tant que valeurs d'entrée de données par l'unité d'entrée 44.La mémoire d'instructions 25, le distributeur d'instructions 15, une unité fonctionnelle r 12 ou 13 et 11 unité de remplacement 38 forment ainsi une boucle d'exécution pour chaque unité fonctionnelle, pour les instructions d-'attribution. De la meme manière, la mémoire d'instructions 25, le distributeur d'instructions 15, l'unité d'entrée 44 et l'unité de remplacement 38 forment une boucle d'exé- cution pour les instructions d'entrée. D'une manière correspondante, les ins tructions de développement sont traitées dans la boucle d'exécution constituée par la mémoire d'instructions 25, le distributeur d'instructions 15, la mémoire de dévebppement 34, l'unité de transfert 70 et l'unité de remplacement 38. Les différents types d'instructions sont aiguillés sur une boucle d'exécution respective au moyen d'un distributeur d'instructions 15. Le cycle décrit ci-dessus se poursuit jusqu'à ce que toutes les les instructions du programme aient été exécutées et que les valeurs de résultat obtenues aient été mises en mémoire dans la mémoire de sortie 32. Les unités décrites ci-dessus du système de la figure 1 fonctionnent de façon essentiellement autonome et indépendammment les unes des autres. Au moyen du signal de disponibilité, chacune des mémoires et unités représentées notifie à unité à laquelle elles est connectée dans le sens de la flèche qu'elle comporte une entrée prête à être traitée. L'unité connectée extrait-la valeur en cause et la traite conformément à sa fonction. En ce sens, les différentes unités et mémoires de système de la figure 1 fonctionnent dans une grande mesure de façon asynchrone, en fonction de la quantité des données susceptibles d'être traitées. Les types de programmes utilisés tsf. expression Uli - U15) assurent un degré élevé d'indépendance au cours de l'exécution des travaux de traitement. Le fonctionnement du système de la figure I sera décrit ci-après à l'aide de l'exemple d'application de la figure 3 et des expressions ci-dessus mentionnées Uli à Uf5. Le contenu des mémoires à l'état intial du système est le suivant: la mémoire d'entrée des données contient la valeur 0,1 pour f à l'adresse RI et la valeur 2 pour N à l'adresse R2. La seule entrée contenue dans la mémoire de développement 34 est zc LU > V. La mémoire de programme 27 contient toutes les procédures et procédures alternatives du format décrit ci-dessus, comprenant le nom de la procédure, le numéro de l'alternative, le vecteur d'adresses et le texte du programme. Toutes les autres mémoires sont initialement vides. L'opération commence par le chargement de la procédure V de la mémoire de développement 34 dans le registre d'instructions 25, de sorte que la mémoire 25 est occupée comme suit: Dans l'expression ci-dessus, les adresses relatives qui se trouvent dans le texte du programme sont désignées par les adresses symboliques is ceci est également le cas des adresses relatives des positions vides pour les variables qui sont désignées par 11 adresse symbolique ik disposée au-dessus de la position respective.Les étiquettes d'aptitude au traitement des instructions chargées indiquent que seule l'instruction de développement S est exécutable et cette instruction, sous l'action du distributeur d'instructions 15, provoque l'enregistrement de l'entrée suivante dans la mémoire de développement 34 lle contenu initial de la mémoire 34 a été effacé avant l'extraction de la proc cedure V de la mémoire 27). S i [io, ia, ir, i@:ic.] E.@@ Sous la commande de la mémoire. de développement, 34 l'unité de chargement 26 charge la procédure S de la mémoire de programme 27 dans la mémoire d'instructions 25. Ainsi, le contenu de la mémoire d'instructions; comme indiqué ci-dessus, est développé par les instructions ci-après: A la suite de l'opération de chargement, l'entrée contenue dans la mémoire de développement 34 est modifiée par l'unité de chargement 26 de la manière décrite ci-dessus, le vecteur d'adresses formel étant rempli des adresses de mémoire réelles. Il s' ensuit que la mémoire 34 est occupée comme suit: KRUs Si Ei3,i1 ,i4,i2 i53 li6, iy, i15, i8:i28] et l'unité de transfert 70 commence à fonctionner.Comme décrit ci-dessus cette unité engendre les entrées ci-après dans sa mémoire de sortie 112. [i3,i6], [i1,i7], [i4,i15] ; [i2,i8]; Ei28,i5 ] L'entrée contenue dans la mémoire de développement 34 est ensuite effacée. Au moyen des paires de valeurs mises à la disposition de l'unité de remplacement 38 par l'unité de transfert 70, par l'intermédiaire du registre d'entrée 38, les remplacements ci-après sont effectués dans la mémoire d'instructions 25. cID > lire i7Ede lire i a Ede R27 ; i6.=1; Dans cet exemple également, toutes les instructions qui portent l'étiquette sont exécutables. Le traitement, par exemple, de l'instruction lire i8 Ede R2 ] , outre qu'il provoque l'effacement de l'instruction de la mémoire d'instruction 25 a pour effet d'enregistrer [i8,R2] dans le registre de lecture 42. Cette entrée a pour effet de provoquer la lecture par l'unité d'entrée 44 d'une valeur de la mémoire 28 et de transférer comme résultat la paire de valeurs [ i 2 ] au registre d'entrée 45 de unité de remp: a remplacement 38. Au cours-d'autres étapes, i10, il2 17 1=1; i 18 :=2 sont obtenues comme entrées dans la mémoire d'instructions 25 et au cours d'autres étapes, i27 :l=2 est entrée. Cette dernière instruction est reconnue par le distributeur d'instructions comme étant une opération de comparaison logique et est entrée sous le format i27 i27.=, [ 1,2 ] dans l'un des registres d'entrée 16 à 18 dont l'unité fonctionnelle Il, 12 ou 13 a transmis un signal de disponibilité au distributeur d'instructions 15, indiquant que l'unité fonctionnelle connectée est capable d'exécuter des opérations de comparaison.Comme résultat de l'opération de comparaison, la paire de valeurs [ I27, 2 ] est enregistrée par l'unité fonctionnelle respective Il, OU ou 13 dans son registre de sortie 21, 22 ou 23, dans laquelle par convention, la valeur 2 représente la valeur de vérité "faux" (Non). Les autres opérations se poursuivent de la même manière jusqu'à ce que finalement la mémoire d'instructions 25 contient l'instruction écrire 2,417 [ dans Wl ] qui est détectée comme étant une instruction d'écriture, par le distributeur d'instructions 15 et transférée au registre d'écriture 31 sur la ligne 45. L'unité de sortie 30 provoque l'inscription de la valeur 2,417 à l'adresse W1 de la mémoire de sortie des données 32, terminant ainsi le traitement du travail conformément à la figure 3. A ce moment, l'état du système de la figure 1 est le suivant: le contenu de la mémoire de programme 27 est inchangé; il en est de même du contenu de la mémoire d'entrée des données 28. La valeur 2,417 est mise en mémoire dans la mémoire de sortie des données 32 à l'adresse W1 tandis que toutes les autres mémoires sont vides. Ainsi, un nouveau cycle de traitement peut commencer dès qu'une nouvelle entrée a été effectuée dans la mémoire de développement 34 d'une manière non représentée. La figure 12 est un graphique qui montre, dans le cas de l'exemple d'application de la figure 3 et des expressions Ull-U15 ci-dessus mentionnées, qu'elles sont les opérations qui peuvent être exécutées en parallèle. Le tableau ci-après, qui concerne une partie des opérations (phase initiale et phase finale) représentées sur la figure 12, montre la relation entre les symboles du graphique et les opérations des expressions U11 à U15. TABLEAU 1 Résultat Opérations Résultat xo - Xo - - Ag O lire Of Ede R1] lire NEO de R2]1 On:=1; O O s S z O -+ O OYoB O SCO"Of,aYOON; 0v] écrire 0V Sedans Wl] x9 YQ A0 SO lire fEde R1], lire ONCde R27; :=1; O 'O 15n ,n Sf O O 0v0:=n U +~ + + + + f Of Ifl,,F,:'gf; 2 - 3 0 Co - Ro Ro Sg O o o 1N1,1N2:=0N 1X01 1XE 1n11 :=1n1: 1f11 1 1; -R0 K R[1X01'1n11'1t11 1X13; 1Y1 - oYo- 1X1 1 2- 3 Lg O0 Qo2 40 1q..=1-n2=1N-1 1n31 := 1n3-: 1f 12 1v11:=1v1, 4 1DI21:=1N2: O(1q) [1-n31'1t21'1t11'1 Z1 J ZO 1 31'1 21 O Sf) O O Yo- 'AO.BO'RO 1"1"i"1"2"1"3:=1 1 1 2'0,1; 1t1'1tt =2; + Co 5 R3 O O 1X01 1XOi 1n11 1 1; 1 11 1 1; x n 1"1 R0 R0 n x .= x J n , n := n - = f J 2X1'2xz'2x3 =tX01; 2n1'2n2 =tn11; 2t1^2 2 t 11 D - E0 - Go u v = x J v := v - n - w:=2x- 2t 2v1/2 -- 2 f) 2-I :=ZV2"1C 222' 2 2 1 2 W" W := F: x ." x - F -+ 2t 2Z= F; x 10 2 3 2 1' 2 3 2F2I 3 J0 JO. p20 O O -0 x n - 2X11:iX10' 2n21:=2"2' 2fZ:2f2 2P ~2V- 2 1: 2X11 -2x1o; 2 21 2n2; 2 21 2 2; - p0 K0 2P E2x11,2n21,2f21: 1x1] ; - tY1= *1; L0: I 2- 3 4 QO; QO; QO; QO; QO; ZO TABLEAU 1 (suite) Opérations Résultat x , . ., f s0s0SO 1Xol 1n11 1; 1811 =01; =0,li I: R01 Roi Ro; Ro; D0: E0 Fg; I RF J0 P 2 P2 P3 P0J Kg; H0: lo: Di O i 0 2 4 3 1q 91=2; 1n31:=Y: 1f21?=%.Ii Ooi 1N2i Q0; Z0 RX R n O O O 2 3 "I: 2n1,2n "I: 21 '2 =0,1: C0,R0 > R0,L0 2X1 ' 2X2' 2x3 =1; 2 2 ; Eo; Fo; Go; H,; Ho; JO; F10: Pgi 0; 0 R0: 0 DO Dgi Eg' F; G,; 1 - -I -J f- I F I -1J5-0.083; 6v:=10,089l; J2i P2i P2i P2i 8 10 - 6 2 2 2 3 P2; K1; i OO' Zo P1 J2 2 2 3 : P K H2.I2 sp:0,083r0,1; 6X11 t1J417; Pz; P2 2 ; 1 41; oi Zo P2 1 2 3 J P2 P2 P2: P (1) [ > , , 2 8 Il 8 21 8 21 4 I J2 P2S P2; Pz; P E 6R11wEn21'6t21'4X1 K Q3 O 0O; ZO P2 P3 N 2 2 2 P2 x =1,417 :=2, :=0,1; x :=6x11 K1 Oî' O: Z0 PiS, 3 3 22 P2. P2 4X1:=1.417i K1; Q1i- O; Z 4Y1K::î+î,417 Q1; O; ZO K1 4tells =2,417, IJO; Z0 Q1 ou:=2,417; ZO Zo écrire 2,417 dans W1 Z,O O Le graphique de la figure 12 et le tableau 1 sont basés sur les valeurs d'entrée f=0,1 et N=2. Les opérations identiques dans l'organisme de la figure 3 et le graphique de la figure 12 sont désignés par un symbole inscrit au-dessus des instructions respectives. Les instructions qui ne subissent aucun changement sont représentées seulement symboliquement dans le tableau. Le parallélisme au cours de l'exécution des diverses opérations est montré par les différentes branches du graphique de la figure 12. La séquence de programme représentée sur cette-figure est obtenue lorsque toutes les instructions nécessitent approximativement le même temps d'exécution. En ce qui concerne les symboles utilisés sur la figure 12, on notera que les indices suivant les majuscules utilisées pour désigner les différentes étapes d'opération indiquent combien de fois la même opération est répétée. Par exemple, S1 est le second appel de la procédure S qui est appelée pour la première fois à SO. Les désignations symboliques similaires sont utilisées pour les symboles des variables dans la partie droite du tableau 1, dans laquelle en plus des indices disposés à droite, des indices disposés à gauche sont utilisés. Bien que l'on ait décrit dans ce qui précède et représenté sur les dessins, les caractéristiques essentielles de l'invention appliquées à un mode de réalisation préféré de celle-ci, il est évident que l'homme de l'art peut y apporter toutes modifications de forme ou de détail qu'il juge utiles sans pour autant sortir du cadre de ladite invention REVENDICATIONS 1.- Procédé pour l'exécution en parallèle d'opérations dans un système de traitement de données comportant un nombre d'unités fonctionnelles permettant le traitement des données avec chevauchement dans le temps conformément à une séquence d'instructions prédéterminée, caractérisé en ce que, pour convertir la séquence d'instructions en opérations individuelles exécutables en parallèle, il est attribué à chaque variable de données, lors du transfert d'une mémoire de séquences d'instructions à une mémoire d'instructions, autant d'adresses dans la mémoire d'instructions qu'il a de places d'utilisation de la variable à l'intérieur de la séquence d'instructions exécutable, en ce que, pour les instructions qui appellent des séquences d'instructions partielles à exécuter alternativement au cours de la séquence d'instructions, des adresses relatives, associées aux paramètres de la séquence d'instructions et indiquant la place où ils apparaissent à l'intérieur de la séquence d'instruc tions . sont converties en adresses de la mémoire d'instructions auxquelles, après extraction de la séquence d'instructions partielle correspondante de la mémoire de séquence d'instructions, les adresses des paramètres de cette séquence partielle sont extraites et en ce que celles des instructions contenues dans la mémoire d'instructions dont les positions sont toutes remplies de valeurs ou de valeurs d'adresses sont transmises, par l'intermédiaire d'un distributeur, aux unités fonctionnelles pour exécution, sans tenir compte de la séquence déterminée à l'origine. 2.- Procédé selon la revendication 1 caractérisé en ce que chaque sous-programme contenu dans la mémoire de programme est précédé d'un vecteur d'adresses qui, pour les paramètres du sous-programme, contient les adresses relatives de leur place d'apparition à l'intérieur du sous-programme, en ce que, lorsque le sous-programme est charge dans la mémoire d'instructions, ledit vecteur d'adresses est converti en adresses réelles de la mémoire d'instructions et en ce qu'à partir des entrées du vecteur d'adresses et des adresses des variables dans l'instruction d'appel du sous-programme, des paires d'adresses sont formées, une adresse désignant l'emplacement de mémoire auquel l'autre adresse est chargée. 3.- Procédé selon l'une quelconque des revendications 1 ou 2 caractérisé en ce que les entrées de données et les sorties de données sont précédées par la formation de paires valeur/adresse dans lesquelles la valeur indique le mot de données à entrer ou à extraire tandis que l'adresse indique l'emplace- ment de ce mot dans une mémoire externe- d'entrée ou de sortie. 4.- Système de traitement des données pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 3 caractérisé en ce qu'il est prévu une mémoire de développement qui contient l'adresse de la mémoire de programme nécessaire pour l'extraction d'une séquence d'instructions et qui commande une unité de chargement qui transfère une séquence d'instructions adressée dans la mémoire d'instructions, en ce que la mémoire de développement contient une entrée pour chaque séquence d'instructions partielle (sous- séquence, sous-programme) qui est appelée, qui, étant ssociée aux adresses de la mémoire d'instructions auxquelles les variables de la séquence principale à traiter par la séquence partielle sont mises en mémoire, reçoit ces adresses de la mémoire d'instructions auxquelles les paramètres (variables dans la séquence partielle) ont été mis en mémoire lors du chargement de la séquence partielle dans la mémoire d'instructions, en ce qu'une unité de transfert est prévue qui forme des paires d'adresses à partir des adresses des variables et des adresses des paramètres correspondants, lesdites paires d'adresses étant transmises à une unité de remplacement qui transfère l'adresse de paramètre respective à l'emplacement de mémoire de l'adresse de variable dans la mémoire d'instructions de telle sorte que les instructions qui deviennent, de ce fait. susceptibles d'être traitées sont munies d'une étiquette et en ce qu'un distributeur d'instructions sert à transférer les instructions prêtes à être traitées de la mémoire d'instructions à une unité fonctionnelle le code opération respectif étant utilisé pour adresser une unité fonctionnelle qui est prête à exécuter un traitement. 5.- Système de traitement des données selon la revendication 4 caractérisé en ce qu'il est prévu une unité de transfert qui forme, à partir d'un premier vecteur d'adresses associé à une instruction d'appel de sous-programme et d'un second vecteur d'adresses associé au sous- programme à transférer de la mémoire de programme à la mémoire d'instructions, des paires d'adresses de mémoire d'instructions dans lesquelles, sous la commande d'une unité de remplacement est chargée, à chaque fois, une adresse du deuxième vecteur d'adresses à une adresse correspondante du premier vecteur d'adresses. pour les variables d'entrée à traiter directement, une adresse du premier vecteur d'adresses à une adresse correspondante du second vecteur d'adresses, pour les variables de sortie et une adresse du premier vecteur d'adresses à une adresse correspondante du second vecteur d'adresses, pour les variables d'entrées dont le traitement nécessite l'appel d'un autre sous-programme. 6.- Système de traitement des données selon l'une quelconque des revendications 4 ou 5 caractérisé en ce que la mémoire d'instruction comporte un circuit de balayage qui détermine, lors du chargement des instructions à partir de la mémoire de programme et après chaque opération de remplacement de l'unité de remplacement, si toutes les positions d'adresses ou de valeurs sont occupées dans l'instruction respective et en ce qu'il est prévu un générateur d'étiquette qui ajoute à l'instruction contenue dans la mémoire d'instructions une étiquette "exécutable" lorsque cette condition est remplie. 7.- Système de traitement des données selon l'une quelconque dès revendications 4 à 6 caractérisé en ce que la mémoire d'instructions est connectée à un distributeur d'instructions pour réaliser le transfert des instructions munies de l'étiquette "exécutable" et en ce que le distributeur d'instructions comporte un circuit d'interprétation dont les signaux de sortie transfèrent les instructions avec les facteurs qui leur sont associés aux unités de traitement et aux unités fonctionnelles libres. 8.- Système de traitement des données selon l'une quelconque des revendications 4 à 7 caractérisé en ce que les unités de traitement et les unités fonctionnelles comprennent chacune un ensemble de registres d'entrée pour conserver en mémoire intermédiaire les instructions exécutables. 9.- Système de traitement des données selon l'une quelconque des revendications 4 à 8 caractérisé en ce que l'unité de remplacement sert à commander aussi bien le remplacement d'une adresse par une autre que le remplacement d'une adresse par une valeur ou vice-versa dans la mémoire d'instructions et est connectée aux sorties de l'unité de transfert, aux unités fonctionnelles et à une unité d'entrée connectée à la mémoire d'entrée des données. 10.- Système de traitement des données selon la revendication 9 caractérisé en ce que l'unité de remplacement est connectée au distributeur d'instructions et reçoit de ce dernier des instructions d'insertion de variables (instructions de distribution) pour le traitement. Il.- Système de traitement des données selon l'une quelconque des revendications 4 à la caractérisé en ce que les unités de commande, les unités fonctionnelles et d'autres unités de traitement sont interconnectées par l'intermédiaire de registres tampon d'une manière telle que ces unités fonctionnent, avec chevauchement dans le temps, d'une façon en très grande partie indépendante et asynchrone pour exécuter un ou plusieurs travaux de traitement. 12.- Système de traitement des données selon l'une quelconque des revendications 4 à 11 caractérisé en ce que les unités comprennent des lignes indicatrices d'occupation qui indiquent à l'unité respective connectée que l'unité correspondante est libre nu occupée, de sorte que l'unité émettrice de l'indication peut être prise en considération ou court-circuitée lorsque de nouveaux travaux se présentent dans l'unité connectée. 13.- Système de traitement de données selon l'une quelconque des revendications 4 à 12 caractérisé en ce qu'il est prévu une boucle de chargement d'instructions constituée par la mémoire d'instructions, le distributeur d'instructions, la mémoire de développement et l'unité de chargement dans laquelle la mémoire de développement reçoit les instructions d'appel de sous-programme par l'intermédiaire du distributeur d'instructions et dérive de ces instructions les adresses du sous-programme pour la mémoire du programme et transmet ces adresses à l'unité de chargement pour charger les instructions dans la mémoire d'instructions. 14.- Système de traitement de données selon l'une quelconque des revendications 4 à 13 caractérisé en ce qu'il est prévu plusieurs boucles d'exécution constituées chacune par la mémoire d'instruction,le distributeur d'instructions, l'une des unités fonctionnelles ou de commande et l'unité de remplacement et en ce que, selon le type d'instruction à traiter, l'une des boucles d'exécution est branchée pour effectuer le traitement, au moyen du distributeur d'instructions. 15.- Système de traitement des données selon la revendication 14 caractérisé en ce que l'une des boucles d'exécution comporte la mémoire de développement et l'unité de transfert servant à effectuer les remplacements d'adresses par d'autres.