Brevet FR2692056A1 — publié le 19931210

PROCEDE D'ACCES, ET RESEAU DE PERMUTATION POUR MEMOIRE A ACCES PARALLELES La présente invention concerne un procédé d'accès, et un réseau de permutation pour mémoire à accès parallèles. De tels réseaux, généralement nécessaires pour l'utilisation de toute mémoire physiquement segmentée, se retrouvent en particulier dans les ordinateurs à architecture parallèle. Un des problèmes rencontrés dans la réalisation et l'optimisation des ordinateurs est celui de la gestion de la mémoire, et en particulier de la définition des accès aux mémoires physiques. Dans le cas des ordinateurs de forte puissance, l'accès à la mémoire parallèle constituée d'une pluralité de bancs mémoires à accès entrelacés se pose avec une acuité toute particulière. En effet, il est alors nécessaire d'accéder simultanément aux différentes données stockées dans les différents bancs mémoires de la mémoire parallèle, en lecture ou en écriture. Ces différents accès engendrent des conflits lors des accès simultanés, qui peuvent considérablement ralentir le fonctionnement de l'ordinateur, et qui posent de nombreux problèmes de conception et de réalisation. Ce problème est particulièrement important dans le cas de données se présentant sous la forme de tableaux. Par exemple, se présentent naturellement sous forme de tableaux les données provenant de l'échantillonnage dans le temps d'un grand nombre de capteurs, ou encore les données représentatives des couleurs des pixels d'une image. Dans une telle situation, les données occupent les cases d'une matrice de dimensions variables. Une donnée est alors typiquement repérée par la valeur d'indices, et il y a autant de tels indices que de dimensions dans le tableau. Dans l'exemple donné cidessus d'une image, une donnée est repérée par deux indices. Une première partie du problème est la définition du rangement des données dans les bancs mémoire, et une deuxième partie du problème est l'accès aux données ainsi rangées ou stockées. Les procédés de rangement de tableaux de données dans une mémoire parallèle monodimensionnelle ont déjà fait l'objet de nombreuses recherches, qui ont conduit à proposer diverses solutions. Le plus souvent, on procède par implantation linéaire. Pour une mémoire constituée de bancs mémoires indicés par des entiers successifs, une implantation linéaire des données consiste à opérer de la façon suivante: pour une donnée d'un tableau, identifiée par la valeur des indices de tableau qui lui sont associés, la position dans la mémoire, autrement dit l'adresse du banc dans lequel elle doit être stockée, est une combinaison linéaire de la valeur des indices. On aura le plus souvent à accéder à des sous-ensembles particuliers des tableaux tels que lignes, colonnes et diagonales qui sont aussi appelés patrons linéaires. Dans une telle situation, le plus souvent, deux éléments successifs d'un patron linéaire du tableau de données ne sont pas stockés dans la mémoire dans des positions adjacentes, i.e. dans des bancs mémoires adjacents, mais sont au contraire séparés par un certain nombre de bancs. Si l'on appelle p le nombre de bancs mémoires qui séparent ainsi dans la mémoire parallèle deux éléments successifs du patron linéaire, on parle de vecteurs p-ordonnés. Cette notion découle des travaux de H.D. Shapiro, J. Lenfant et D.H. Lawrie, qui proposent des règles d'implantation linéaire pour stocker des données dans une mémoire parallèle. On pourra par exemple consulter l'article de H.D.Shapiro, "Theoretical limitations on the efficient use of parallel memories", IEEE Trans. on Computers, vol. 28, n"9, Dec 1979. La deuxième partie du problème est d'accéder aux données stockées dans la mémoire parallèle, d'une part en lecture dans la mémoire parallèle afin de réordonner les données lues pour qu'elles puissent être traitées, et d'autre part en écriture dans la mémoire parallèle, afin de ranger les données dans l'ordre imposé par l'implantation des patrons. Dans le cas d'une mémoire parallèle composée de bancs mémoires alignés suivant une seule dimension ou mémoire monodimensionnelle, une solution à ce problème a déjà été proposée. Ainsi, dans un article de R.C. Swanson, "Interconnections for parallel memories to unscramble p-ordered vectors", IEEE Trans.on Computers, vol.23, ne11, May 1974 est décrit un réseau d'interconnexion permettant le réordonnancement de vecteurs p-ordonnés stockés dans une mémoire monodimensionnelle, par un ou plusieurs passages dans le réseau d'interconnexion. Le problème de l'accès aux données stockées reste entier pour les mémoires disposées selon plusieurs dimensions suivant une topologie en grille, cubique ou hypercubique. On parlera respectivement de mémoires parallèles bidimensionnelles, tridimensionnelles ou multidimensionnelles. La présente invention permet de résoudre les problèmes posés jusqu'ici pour la gestion des mémoires et l'accès aux données stockées dans des mémoires parallèles multidimensionnelles. Elle permet le réordonnancement de vecteurs et de tableaux particulièrement longs, de façon simple et rapide, ce qui simplifie la gestion de la mémoire et optimise son utilisation, tout en améliorant de façon sensible les performances de l'ordinateur. Elle autorise un accès beaucoup plus rapide aux données que les systèmes de l'art antérieur. Elle est d'un emploi particulièrement avantageux dans le cadre d'architectures composées par juxtaposition de briques identiques ou processeurs élémentaires dans plusieurs dimensions. De ce fait, elle est tout à fait adaptée aux architectures parallèles. La présente invention est spécialement adaptée aux ordinateurs à architecture parallèle à mémoires communes, c 'est à dire où existe une pluralité de processeurs accédant à des objets, ici préférentiellement des vecteurs, rangés dans un tableau dans une même mémoire. L'utilisation du réseau de permutation selon l'invention dans un tel cas simplifie les algorithmes de routage des données lors de l'écriture ou de la lecture en mémoire, et permet de simplifier les compilateurs de langages orientés tableaux. La présente invention a pour objet un procédé d'accès à une mémoire parallèle d'une pluralité de bancs mémoires pour le stockage ou la lecture de données, dans lequel les données lues dans la mémoire sont réordonnancées pour un traitement ultérieur, ou dans lequel les données à stocker sont réordonnancées avant d'être stockées dans la mémoire, ledit procédé comprenant un nombre entier d'étapes qui consiste chacune: - à séparer les données en sous-ensembles comprenant cha cun autant de données, - à réordonnancer à l'intérieur de chacun de ces sous ensembles les données du sous-ensemble. Selon un mode de mise en oeuvre du procédé de la présente invention, les données sont indicées par des entiers, et à chaque étape: - chacun desdits sous-ensembles est constitué des données dont les indices sont égaux modulo n, et - le réordonnancement des données de chaque sous-ensemble laisse invariant la donnée du sous-ensemble dont l'in dice est un multiple de p, n et p étant des nombres entiers, dépendant de l'étape, premiers entre eux et dont le produit est égal au nom bre total de bancs mémoires. Selon un autre mode de mise en oeuvre du procédé de la présente invention, à une étape du procédé, le réordonnancement dans chaque sous-ensemble est un réordonnancement d'ordre entier ou d'écart entier, et l'ordre ou l'écart du réordonnancement est un générateur du groupe cyclique de cardinal égal au nombre de données de chaque sous-ensemble. Selon un autre mode encore de mise en oeuvre du procédé de la présente invention, l'entier n peut prendre deux valeurs a ou b. Selon encore un mode de mise en oeuvre du procédé de la présente invention, à chaque valeur de l'entier n, est associée une valeur unique de l'ordre du réordonnancement des sous-ensembles. L'invention concerne aussi un réseau de permutation pour la mise en oeuvre du procédé qui comprend une pluralité de familles de réseaux d'interconnexion, susceptibles d'effectuer chacun un réordonnancement des données, et des moyens de commande pour choisir parmi la pluralité desdites familles de réseaux d'interconnexion une ou plusieurs desdites familles, et pour commander la permutation des données par action successive de chacune desdites familles de réseaux d'interconnexion choisies. Selon un mode de réalisation de la présente invention, chacune desdites familles de réseaux d'interconnexion effectue simultanément sur les données le réordonnancement des données desdits sous-ensembles. Selon un autre mode de réalisation de la présente invention, chacune desdites familles de réseaux d'interconnexion est constituée de réseaux d'interconnexion bidirectionnels. Selon encore un mode de réalisation de la présente invention, le réseau de permutation comprend deux familles de réseaux d' interconnexion. Selon un autre mode encore de réalisation de la présente invention, le réseau de permutation comprend en outre un réseau de décalage des données, constitué d'un réseau cylindrique et d'un réseau vissé. Les caractéristiques et avantages de la présente invention ressortiront mieux de la description suivante, donnée à titre d'exemple et en référence aux figures annexées, ou: - la figure 1 montre un schéma de principe de la structure d'un ordinateur à architecture parallèle; - la figure 2 montre un schéma d'un réseau d'interconnexion de type connu; - la figure 3 montre un schéma de principe d'un réseau torique vissé permettant de gérer les décalages; - la figure 4 montre un schéma de principe d'une famille de réseaux correspondant à la première famille de sousensembles; - la figure 5 montre un schéma de principe d'une famille de réseaux correspondant à la deuxième famille de sousensembles. La figure 1 montre un schéma de principe de la structure d'un ordinateur à architecture parallèle. Un tel ordinateur, pour ce qui intéresse la compréhension de l'invention, est essentiellement composé de trois parties. Il comprend d'abord une unité centrale 1 constituée par un ensemble de processeurs indépendants. Il comprend ensuite une mémoire 2 constituée d'une pluralité de bancs constitués de mémoires vives (RAM); l'accès à ces différents bancs mémoires peut se faire simultanément et la mémoire 2 est généralement décrit sous le nom de mémoire parallèle. Entre les processeurs de l'unité centrale 1 et les différents bancs mémoires RAM de la mémoire 2 est disposé un réseau de permutation 3, par l'intermédiaire duquel les différents processeurs de l'unité centrale peuvent accéder aux différents bancs mémoires de la mémoire 2. L'unité centrale 1 peut vouloir accéder à la mémoire 2 en lecture, pour y lire des données stockées et effectuer sur ces données un traitement. Par ailleurs, l'unité centrale 1 peut vouloir accéder à la mémoire 2 en écriture, pour y stocker des données qui ont été traitées. Le réseau de permutation 3 peut avantageusement dans un ordinateur à architecture du type de celle représentée à la figure 1, être constitué par un réseau de permutation selon l'invention. La figure 2 montre un schéma d'un réseau d'interconnexion de type connu, et plus précisément un réseau d'interconnexion d'ordre 5, permettant le réordonnancement d'un vecteur 3-ordonné pour obtenir un vecteur 1-ordonné. Ce réseau d'écart 5 est représenté à titre d'exemple sur la figure 2 dans le cas simple où il agit sur un vecteur constitué de sept éléments. Les références numériques 10 à 16 repèrent sept cases symbolisant les entrées/sorties du réseau, et les flèches reliant les différentes cases représentent symboliquement la permutation effectuée par le réseau. Le fonctionnement du réseau sera mieux compris à l'aide d'un exemple pratique. On considère donc des données sous forme d'un vecteur à sept éléments: (O, 1, 2, 3, 4, 5, 6) Pour plus de simplicité, on a considéré comme données les sept premiers entiers. Une fois le vecteur 3-ordonné, les données ont été permutées et ont alors la position suivante: (0, 5, 3, 1, 6, 4, 2), autrement dit, deux données qui dans le vecteur 1-ordonné étaient placées côte à côte, c'est-àdire avaient comme indice des nombres entiers successifs, sont distants de 3 données dans le vecteur 3-ordonne. Si l'on présente maintenant le vecteur 3-ordonné en entrée du réseau d'interconnexion d'ordre 5 représenté schématiquement à la figure 2, les données 0, 5, 3, 1, 6, 4, 2 se trouvent dans les cases 10 à 16. Le réseau de la figure 2 agit sur les données de la façon symbolisée par les flèches, à savoir: la donnée O reste dans la case 10, la donnée 5 est envoyée de la case 11 à la case 15, la donnée 3 est envoyée de la case 12 à la case 13, la donnée 1 est envoyée de la case 13 à la case 11, la donnée 6 est envoyée de la case 14 à la case 16, la donnée 4 est envoyée de la case 15 à la case 14, la donnée 2 est envoyée de la case 16 à la case 12. Après action du réseau, on retrouve dans les cases 10 à 16 le vecteur 1-ordonné (O, 1, 2, 3, 4, 5, 6). La formulation mathématique d'un réseau de ce type, qui permet, pour un vecteur à N éléments, de passer du vecteur p-ordonné au vecteur 1-ordonné est la suivante: par le réseau d'ordre r, l'élément d'indice i est déplacé à la place d'indice r.i modulo N, c'est à dire qu'un vecteur p-ordonné est transformé en un vecteur (p.r)-ordonné. A titre d'exemple, dans le réseau de la figure 2, N vaut 7, le réseau est d'ordre 5 (r=5), et pour i=4, 5x4 modulo 7 vaut 6. Effectivement, la case d'indice 4 (case 14) est reliée à la case d'indice 6 (case 16). Une propriété des réseaux de ce type est que deux passages à travers un réseau d'ordre r équivalent à un passage dans un réseau d'ordre r . Plus généralement, k passages à travers le réseau sont équivalents à un passage dans un k réseau d'ordre r I1 apparaît bien qu'un tel réseau ne fournit pas une solution satisfaisante dès que le débit mémoire recherché, donc le nombre de banc mémoire, est important, car il ne permet pas d'effectuer rapidement un réordonnancement d'un ordre quelconque. En fait, il est nécessaire de passer un grand nombre de fois dans le réseau pour pouvoir réordonner certains vecteurs, ce qui présente un inconvénient majeur du point de vue du temps nécessaire pour les accès mémoire. Ainsi, dans le cas de N composantes, il peut être nécessaire de passer jusqu'à N-l fois dans le réseau pour réordonner certains vecteurs. On considère maintenant un réseau de permutation selon l'invention. Selon l'invention, on utilise une pluralité de famille de réseaux d'interconnexions qui permettent chacune un réordonnancement élémentaire orienté suivant une dimension propre. Les solutions technologiques mises en oeuvre pour un tel réseau varient considérablement selon le degré d'intégra- tion des composants que l'on désire utiliser, comme cela apparaît bien évidemment à l'homme de l'art. De préférence, on utilise selon l'invention des réseaux d'interconnexions permettant de passer d'un vecteur k-ordonné à un vecteur p.k-ordonné. On appelle ces réseaux dans la suite réseaux d'ordre p. Selon l'invention, le réseau de permutation comprend une pluralité de famille de tels réseaux d'interconnexions. On décrit ci-dessous un exemple de réseau de permutation selon l'invention, qui comprend deux familles de réseaux d'interconnexion, dans le cas simple d'un vecteur à 35 éléments. Les figures 4 et 5 montrent les schémas des deux familles de réseaux d'interconnexion dans ce cas. Chacun des éléments du vecteur est numéroté par un indice qui va de O à 34. Les deux réseaux d'interconnexion agissent sur le vecteur à 35 éléments de la façon suivante: La décomposition de 35 en produit de nombres premiers est donnée par 7 et 5. Les réseaux appartenant à la première famille (de même ordre) agissent sur les cinq sous-ensembles constitués par les éléments dont les indices appartiennent aux sous-ensembles suivants: Ao = CO, 5, 10, 15, 20, 25, 30) Al = {1, 6, 11, 16, 21, 26, 31) A2 = {2, 7, 12, 17, 22, 27, 32) A3 = {3, 8, 13, 18, 23, 28, 33) A4 = {4, 9, 14, 19, 24, 29, 34) Ces sous-ensembles comprennent chacun sept éléments, et sont constitués en prenant tous les indices égaux modulo 5. Dans chacun de ces sous-ensembles, chaque réseau d'interconnexion de la première famille agit comme le ferait un réseau d'ordre 3. Pour définir complètement un réseau d'ordre 3, il faut préciser quel est l'indice de l'élément invariant, c' est-à-dire qu'il faut choisir un élément qui ne bouge pas par passage à travers le réseau d'ordre 3 . Dans le premier sous-ensemble ( éléments à indices dans Ao), l'élément d'indice O reste invariant. Dans le deuxième sous-ensemble (éléments à indices dans Al ), l'élément d'indice 21 reste invariant . Dans les troisième ( A2 ), quatrième ( A3 ) et cinquième ( A4 ) sous-ensembles, les éléments d'indices respectifs -7, 28 et 14 restent invariants. Autrement dit, dans chaque sous-ensemble, l'unique élément invariant est l'élément d'indice multiple de sept. Si l'on considère que les données du vecteur sont les entiers de 100 à 134, indicés de O à 34, un premier passage dans ces réseaux permet d'obtenir le réordonnancement suivant du vecteur: 100 126 117 108 134 125 116 107 133 124 115 106 132 123 114 105 131 122 113 104 130 121 112 103 129 120 111 102 128 119 110 101 127 118 109 Dans la représentation ci-dessus du vecteur sous forme de tableau de cinq colonnes et sept lignes, il apparaît que les sous ensembles Ao à A4 sont constitués par les colonnes. Les réseaux appartenant à la deuxième famille agissent sur les sept sous-ensembles constitués par les éléments dont les indices appartiennent aux sous-ensembles suivants: Bo = CO, 7, 14, 21, 28) Bl = (1, 8, 15, 22, 29) B2 = {2, 9, 16, 23, 30) B3 = {3, 10, 17, 4, 31) B4 = {4, 11, 18,25, 32} B5 = {5, 12, 19, 26, 33) B6 = {6, 13, 20, 27, 34) Ces sous-ensembles comprennent chacun cinq éléments, et sont constitués en prenant tous les indices égaux modulo 7. Dans chacun de ces sous-ensembles, chaque réseau d'interconnexion de la deuxième famille agit comme le ferait un réseau d'ordre 2. Pour définir complètement un réseau d'ordre 2, il faut préciser quel est l'indice de l'élément invariant, c'est-à-dire qu'il faut choisir un élément qui ne bouge pas par passage à travers le réseau d'ordre 2. Dans le premier sous-ensemble (éléments à indices dans Bo), l'élément d'indice O reste invariant. Dans le deuxième sous-ensemble (éléments à indices dans Bol), l'élément d'indice 15 reste invariant. Dans les troisième (B2), quatrième (B3), cinquième (B4), sixième (B5) et septième (B6) sous-ensembles, les éléments d'indices respectifs 30, 10, 25, 5 et 20 restent invariants. Autrement dit, dans chaque sous-ensemble, l'unique élément invariant est l'élément d'indice multiple de cinq. Si l'on considère les données du vecteur telles que réordonnées par la première famille de réseaux d'interconnexion, la deuxième famille de réseaux agit sur les sousensembles qui comprennent les données suivantes: 100, 107, 114, 121 et 128 (indice dans Bo); 105, 112, 119, 126 et 133 (indice dans B1); 110, 117, 124, 131 et 103 (indice dans B2); 115, 122, 129, 101 et 108 (indice dans B3); 120, 127, 134, 106 et 113 (indice dans B4); 125, 132, 104, 111 et 118 (indice dans B5); 130, 102, 109, 116 et 123 (indice dans B6); Dans chacun de ces sous-ensembles, la donnée invariante par chaque réseau de la deuxième famille est la donnée d'indice multiple de cinq, à savoir 100 (indice 0), 105 (indice 05), 110 (indice 10), 115 (indice 15), 120 (indice 20), 105 (indice 5) et 130 (indice 30). La deuxième famille de réseaux d'ordre 2 dans ce cas, transforme finalement les sous-ensembles décrits ci-dessus pour obtenir le résultat suivant: 100, 121, 107, 128, 114 (indice dans Bo); 105, 126, 112, 133, 119 (indice dans B1); 110, 131, 117, 103, 124 (indice dans B2); 115, 101, 122, 108, 129 (indice dans B3); 120, 106, 127, 113, 134 (indice dans B4); 125, 111, 132, 118, 104 (indice dans B5); 130, 116, 102, 123, 109 (indice dans B6). Ce qui finalement conduit au vecteur suivant: 100 133 131 129 127 125 123 121 119 117 115 113 111 109 107 105 103 101- 134 132 130 128 126 124 122 120 118 116 114 112 110 108 106 104 102 Le résultat obtenu après action des deux familles de réseaux sur le vecteur à 35 éléments est le vecteur 17ordonné; le nombre 17 est en effet le seul nombre qui satisfasse les deux égalités: 17 = 3 mod(7) et 17 = 2 mod(5). Ainsi, par action de la première et de la deuxième famille sur le vecteur, on obtient le vecteur 17-ordonné. Bien entendu, il est aussi possible d'obtenir d'autres ordonnancements du vecteur grâce à l'invention, et ce en un nombre extrêmement réduit de passages dans le réseau de permutation selon l'invention. En effet, comme on l'a vu plus haut, k passages successifs dans un réseau d'ordre p sont équivalents à un réseau d'ordre p k Or la première famille de réseaux d'interconnexion de l'exemple décrit ci-dessus agit sur chacun des sous-ensembles comme un réseau d'ordre 3. Comme chacun des sous-ensembles est transformé en lui-même par les réseaux de la première famille, il est possible de faire plusieurs passages dans ces réseaux. Si l'on passe deux fois dans la première famille de réseaux, on obtient sur chacun des sousensembles à sept éléments un réseau d'ordre 32 mod(7) = 2 De même, trois passages dans les réseaux de la première 3 famille permettent d'obtenir un réseau d'ordre 3 mod(7) = 6, quatre passages des réseaux d'ordre 4, cinq passages des réseaux d'ordre 5. Six passages à travers les réseaux de la première famille laissent les sous-ensembles invariants. De la même façon, deux passages du vecteur dans les réseaux de la deuxième famille sont équivalents pour chacun des sous-ensembles à des réseaux d'ordre 2 mod(5)=4, et trois passages sont équivalents à des réseaux d'ordre 3, tandis que quatre passages laissent les sous-ensembles invariants (réseaux d'ordre 1). Si donc, par exemple, on désire effectuer un 23ordonnancement du vecteur à 35 éléments, il est nécessaire que les réseaux de la première famille agissent sur les premiers sous-ensembles comme un réseau d'ordre: 23 mod(7) = 2 et comme on l'a vu, ce résultat est atteint par passage deux fois dans la première famille. De même, il est nécessaire que les réseaux de la deuxième famille agissent sur les deuxièmes sous-ensembles comme des réseaux d'ordre: 23 mod(5) = 3 et comme on l'a vu, ce résultat est atteint par passage trois foisidans la deuxième famille. Ainsi, par passage deux fois dans la première famille, et trois fois dans la deuxième, on obtient un vecteur 23-ordonne. Le tableau ci-dessous donne l'ordre du réordonnancement obtenu, en fonction du nombre de passages dans la première famille (en ordonnée) et du nombre de passages dans la deuxième (en abscisse). ordre 1 ordre 2 ordre 3 ordre 4 1 (ordre 3) 17 24 3 31 2 (ordre 2) 2 7 23 16 3 (ordre 6) 27 34 13 6 4 (ordre 4) 32 4 18 11 5 (ordre 5) 12 19 33 26 6 (ordre 1) 22 29 8 1 Comme on le voit sur ce tableau, on peut obtenir toutes les valeurs de réordonnancement possibles du vecteur à trente cinq éléments, par passage dans les deux familles. On obtient toutes ces valeurs possibles au maximum en 8 passages dans les deux familles. Dans l'art antérieur, pour obtenir à l'aide d'un unique réseau d'interconnexion toutes les valeurs possibles de réordonnancement du vecteur à 35 éléments, il est nécessaire de passer jusqu'à 34 fois dans le réseau. I1 ressort aussi très clairement du tableau ci-dessus que l'invention permet en un temps très réduit, de réordonner un vecteur p-ordonné pour obtenir un vecteur 1-ordonné. Ainsi, si l'on considère un vecteur 19-ordonné, un passage dans la première famille de réseaux permet d'obtenir le vecteur 29-ordonné, et ensuite deux passages dans la deuxième famille de réseaux permettent d'obtenir le vecteur 8-ordonné, puis enfin le vecteur 1-ordonné. On a décrit ci-dessus un exemple de réalisation de l'invention, en référence à un vecteur à 35 éléments, et dans le cas où le réseau selon l'invention comprenait deux familles de réseaux d'interconnexions. Bien entendu, l'invention n'est pas limitée à cet exemple. On trouvera ci-dessous un exemple plus général, dans le cas d'un vecteur de N éléments, où N est un nombre entier, qui peut s'écrire sous la forme du produit de deux nombres entiers a et b premiers entre eux. Le cas où le réseau de permutation selon l'invention comprend deux familles de réseaux d'interconnexion est décrit ci-dessous en détail. Les éléments du vecteur à N éléments sont indicés par les entiers de O à N-l. La première famille de réseaux d'interconnexion agit sur les sous-ensembles constitués par les éléments du vecteur d'indice égaux modulo a. Il y a bien entendu a tels sous-ensembles, qui comprennent chacun b éléments. Comme a et b sont premiers entre eux, chacun de ces sous-ensembles contient un unique indice multiple de b et les sous-ensembles d'indices égaux modulo a peuvent s'écrire en commençant par ce multiple de b: Ao = CO, a, 2a, 3a, ..., (b-l)a}, Al = fb, b+a, b+2a, b+3a, ..., b+(b-l)a); Axa 1 = f(a-l)b, (a-l)b+a, (a-l)b+2a, (a-l)b+3a, r (a-l)b+(b-l)a. Tous les indices sont bien sûr écrits ci-dessus modulo N. La première famille de réseaux est définie de la façon suivante: elle est constituée d'une pluralité de réseaux qui agissent simultanément sur chacun des sous-ensembles, comme des réseaux d'ordre pub, dont l'élément invariant est le multiple de b. Le nombre p b est ici un générateur du groupe cyclique (1, 2, ..., b-l), ce qui assure que l'on obtient tous les réordonnancements possibles des sous-ensembles, en un nombre de passages dans la première famille de réseaux inférieur à b-l. De façon analogue, la deuxième famille de réseaux d'interconnexion agit sur les sous-ensembles constitués par les éléments des vecteurs d'indice égaux modulo b. Il y a bien entendu b tels sous-ensembles, qui comprennent chacun a éléments. Comme b et a sont premiers entre eux, chacun de ces sous-ensembles contient un unique indice multiple de a et les sous-ensembles d'indices égaux modulo b peuvent s'écrire en commençant par ce multiple de a: Bo = CO, b, 2b, 3b, ..., (a-l)b) B1 = fa, a+b, a+2b, a+3b, ..., a+(a-l)b) Bob 1 = f(b-l)a, (b-l)a+b, (b-l)a+2b, (b-l)a+3b, (b-l)a+(a-l)b. Tous les indices sont bien sûr écrits ci-dessus modulo N. La deuxième famille de réseaux est définie de la façon suivante: elle est constituée d'une pluralité de réseaux qui agissent simultanément sur chacun des sous-ensembles, comme des réseaux d'ordre Pa, , dont l'élément invariant est le multiple de a. Le nombre p a est ici un générateur du groupe cyclique (1, 2, ..., a-l), ce qui assure que l'on obtient tous les réordonnancements possibles des sous-ensembles, en un nombre de passages dans les réseaux inférieur à a-l. Si l'on passe dans la première famille de réseaux k fois, et dans la deuxième 1 fois, on a l'équivalent sur les premiers sous-ensembles d'une famille de réseaux d'ordre pbk, et sur les deuxièmes sous-ensembles d'une famille de réseaux d'ordre pal. On obtient en sortie du réseau de permutation un vecteur qui est p-ordonné, où p est l'unique entier inférieur à N aui vérifier Comme a et b sont premiers entre eux, il est bien clair que les familles de réseaux selon l'invention permettent d'obtenir tous les réordonnancements possibles du vecteur à N éléments, en un maximum de a+b-2 passages dans les première et deuxième famille de réseaux d'interconnexion. De façon analogue à ce qui a été décrit ci-dessus en référence à l'exemple numérique du vecteur à 35 éléments, il aurait été nécessaire, dans un réseau de l'art antérieur, d'effectuer jusqu'à N-l passages dans le réseau pour obtenir tous les réordonnancements possibles. Comme réseaux de permutation, pour diminuer encore le nombre de passages nécessaires. Dans l'exemple du vecteur à 35 éléments développé ci-dessus, on a considéré dans un premier temps les sous-ensembles constitués par les données d'indices dans Ao,...,A4, et on a utilisé sur chacun de ces sous-ensembles l'action d'un réseau d'ordre 3. Comme on l'a vu, les passages successifs dans la première famille permettaient d'obtenir successivement sur chacun des sous-ensembles des réordonnancements d'ordre 3, 2, 6, 4, 5 et 1. Il est bien entendu possible d'agir sur les mêmes sous-ensembles avec une autre famille de réseaux d'interconnexion, qui effectuerait sur chaque sous-ensemble un réordonnancement d'ordre 5. Par passages successifs dans cette autre famille de réseaux d'interconnexion, on obtiendrait des réordonnancements d'ordre 5, 4, 6, 2, 3, 1. Selon la présente variante de l'invention, on peut agir sur le premier sous-ensemble avec l'une ou l'autre de ces deux familles de réseaux d'interconnexion, ce qui permet de réduire encore le nombre de passages: ainsi, si l'on désire obtenir sur les premiers sous-ensembles un réordonnancement d'ordre 3 (respectivement 5), on choisira d'agir sur les sous-ensembles à l'aide de la famille de réseau d'interconnexion d'ordre 3 (respectivement 5). Si l'on désire obtenir sur les premiers sous-ensembles un réordonnancement d'ordre 2, c'est-à-dire d'ordre 32 mod(7), on passera deux fois dans la famille de réseaux d'interconnexion d'ordre 3. De même si l'on désire obtenir sur les premiers sous 2 ensembles un réordonnancement d'ordre 4 = 5 mod(7), on passera deux fois dans la famille de réseaux d'interconnexion d'ordre 5. Pour obtenir des réordonnancements d'ordre 6, on passera trois fois dans l'une ou dans l'autre des deux familles de réseaux d'interconnexion. De cette façon, on obtient tous les réordonnancements possibles des premiers sous-ensembles, par au plus trois passages dans l'une ou l'autre des deux familles de réseaux d'interconnexion qui agissent sur le premier groupe de sous-ensembles. Comme on l'aura remarqué dans l'exemple ci-dessus, les deux familles de réseaux d'ordre 3 et 5 sont équivalents à une seule famille de réseaux d'ordre 3 ou 5 qui comprendrait des liaisons bidirectionnelles. Le passage dans cette famille de réseaux, dans un sens, équivaut à des réseaux d'ordre 5, tandis que le passage dans cette famille de réseaux, dans l'autre sens, équivaut à des réseaux d'ordre 3. Ainsi, une seule famille de réseaux bidirectionnels permet des réordon -1 nancements d'ordre r et r Ceci n'empêche pas, bien sûr, de superposer des familles de réseaux d'ordre p et q, pour accélérer le réordonnancement. Si ces deux familles sont constituées de réseaux bidirectionnels, on aura au choix des réordonnancements d'ordre p, p-1, q ou q-1, pour passage une fois dans une direc- tion d'une des familles de réseaux. Grâce à cette première variante de l'invention, il est possible de réduire encore le nombre de passages nécessaires dans le réseau de permutation. Cette variante est évidemment susceptible d'être mise en oeuvre sur tous les groupes de sous-ensembles, selon les besoins. On peut ainsi envisager par exemple deux groupes de sous-ensembles, associés chacun à des réseaux d'interconnexion bidirectionnels. Pour un vecteur à N éléments, avec comme au dessus N = a.b, on obtiendrait tous les réordonnancements possibles par environ a+b/4 passages dans les réseaux d'interconnexion. Une autre variante de cette invention est de considérer deux familles de réseaux d'ordre pa et pb où pa et pb ne sont pas des générateurs des groupes cycliques de cardinal égal au nombre de données de chaque sous-ensemble afin de privilégier le réordonnancement de vecteurs d'ordre fixé. Par exemple, il peut être intéressant de réordonner des vecteurs 2-ordonnés en un minimum de passage dans les réseaux. I1 suffit de choisir p a et p b égaux à 2, mais on ne pourra pas obtenir tous les réordonnancements possibles. D'autre part, pour des raisons de clarté et de simplicité, on a décrit dans les exemples développés ci-dessus le cas où l'on considérait deux groupes de sous-ensembles. Il est bien évident que l'invention n'est pas limitée à simplement deux groupes, et qu'il est possible d'en prévoir une pluralité, autrement dit de prévoir une pluralité de familles de réseaux d'interconnexions agissant sur une pluralité de sous-ensembles. A titre d'exemple, on peut considérer le cas simple de trois familles de réseaux d'interconnexion, agissant sur un vecteur à 105 = 3x5x7 éléments. La première famille de réseaux d'interconnexion agit sur les sous-ensembles constitués par les éléments d'indices égaux modulo 15, et effectue sur chacun de ces 15 sous-ensembles à 7 éléments un réordonnancement dont l'élément invariant est le multiple de 7 contenu dans le sous-ensemble, et par exemple un réordonnancement d'ordre 3. La deuxième famille de réseaux d'interconnexion agit sur les sous-ensembles constitués par les éléments d'indices égaux modulo 21, et effectue sur chacun de ces 21 sous-ensembles à 5 éléments un réordonnancement dont l'élément invariant est le multiple de 5 contenu dans le sous-ensemble, et par exemple un réordonnancement d'ordre 2. Par action successive de chacune de ces deux familles de réseaux, on obtient sur le vecteur à 105 éléments un réordonnancement d'ordre: 52 = 3 mod(7) = 2 mod(5) La troisieme famille de réseaux d'interconnexion agit sur les sous-ensembles constitués par les éléments d'indices égaux modulo 35, et effectue sur chacun de ces 35 sousensembles à 3 éléments un réordonnancement dont l'élément invariant est le multiple de 3 contenu dans le sous-ensemble, et par exemple un réordonnancement d'ordre 2. Par action successive de chacune des trois familles de réseaux d'interconnexion, on obtient sur le vecteur à 105 éléments un réordonnancement d'ordre 17 = 3 mod(7) = 2 mod(5) = 2 mod(3) La description de cette variante de l'invention dans le cas général se déduit simplement de l'exemple, par analogie avec ce qui a été développé plus haut. Il apparaît bien de la sorte que l'on peut associer dans le réseau de permutation selon l'invention une pluralité de familles de réseaux d'interconnexions, qui agissent sur une pluralité de sousensembles. Ainsi, selon l'invention, on considère une pluralité de familles de réseaux d'interconnexion, qui agissent successivement, chacun effectuant simultanément sur des sous-ensembles des réordonnancements d'ordre donné. La présente invention permet aussi de résoudre un problème qui se pose lors des accès mémoire, à savoir le problème des décalages des vecteurs p-ordonnés dans la mémoire. En effet, dans les schémas d'implantation linéaire dans une mémoire r il peut arriver que les origines des vecteurs p-ordonnés ne soient pas stockées dans le même banc mémoire. Autrement dit, les vecteur p-ordonné se présenteront à l'en- trée du réseau de permutation avec un décalage entre leur origine. Pour traiter les données, il est nécessaire d'aligner les vecteur de façon à ramener leur origine dans le même banc mémoire. Cette gestion du décalage peut se faire avant ou après le réordonnancement du vecteur. Selon l'invention, elle est effectuée à l'aide d'un réseau torique vissé, qui agit sur le vecteur. Le réseau torique vissé selon l'invention comprend d'une part un réseau cylindrique et d'autre part un réseau présentant un pas de vis. La figure 3 représente un schéma de principe d'un tel réseau torique vissé, pour l'exemple développé ci-dessus d'un vecteur à 35 éléments. La figure 3 représente le réseau torique vissé, avec les conventions déjà utilisées à la figure 2. Les chiffres montrent les différents indices des éléments du vecteur. Le réseau torique vissé est constitué d'un premier réseau cylindrique, qui permet d'effectuer des décalages du vecteur avec un pas de sept. Dans ce réseau cylindrique, l'élément d'indice i est relié à l'élément d'indice i+7, modulo 35. Un passage dans le réseau cylindrique décale tous les éléments du vecteur de sept pas, deux passages de quatorze pas, trois passages de vingt et un pas et quatre passages de vingt-huit pas. Cinq passages dans le réseau cylindrique laissent le vecteur inchangé. Le réseau torique vissé de la figure 3 comprend aussi un deuxième réseau qui permet d'effectuer des décalages du vecteur avec un pas de un. Autrement dit, dans le deuxième réseau, chaque élément est relié à l'élément d'indice suivant, modulo 35. De ce fait, chaque passage dans le réseau permet de décaler tous les éléments du vecteur d'un pas. La combinaison de ces deux réseaux dans le réseau torique vissé selon l'invention permet de supprimer très rapidement tous les décalages du vecteur à 35 éléments, puisque tout décalage peut être résorbé, au maximum avec quatre passages dans le réseau cylindrique et six passages dans le réseau vissé. L'exemple de la figure 3 permet de bien comprendre le réseau selon l'invention. Dans le cas d'un vecteur à N éléments, le réseau torique vissé comprend un premier réseau cylindrique, dans lequel un élément d'indice i est relié à l'élément d'indice i+r, r étant un diviseur de N. Le réseau torique vissé comprend en outre un deuxième réseau dans lequel chaque élément est relié à l'élément d'indice suivant. De plus il est possible selon l'invention que les liaisons du réseau torique vissé soit bidirectionnelles ce qui permet de réduire encore le nombre de cycles nécessaires. Selon l'invention, tout décalage peut donc être absorbé en un maximum de (r-l)+(N/r)-1 cycles dans les réseaux qui composent le réseau torique vissé, c'est-à-dire au pire en (N/r)-l cycles dans le réseau cylindrique et r-l cycles dans le deuxième réseau. Bien entendu, les valeurs données ici sont susceptibles de varier, et on pourrait tout à fait prévoir une pluralité de réseaux cylindriques, avec des pas différents, parmi lesquels on choisirait le plus adapté pour résorber un decalage donne. Comme on l'a decrit plus, les réseaux peuvent avoir des liaisons bidirectionnelles, ce qui permet de résorber ces décalages de façon encore plus rapide. Grâce à la présente invention, on peut donc gérer de façon rapide et efficace les accès mémoire, en particulier dans un ordinateur à architecture parallèle, et réordonner en un nombre de passages très réduit des vecteurs de très longue taille. La présente invention est particulièrement adaptée aux ordinateurs présentant une mémoire multidimensionnelle, car elle est dans ce cas d'une réalisation particulièrement simple. En effet, du fait de la décomposition des données en sous-ensembles correspondant formellement à des colonnes de tableau, le câblage du réseau de permutation selon l'invention est simplifié lorsque les données proviennent de bancs mémoires rangées dans une mémoire multidimensionnelle. Les avantages de la présente invention ressortent pleinement de la description donnée ci-dessus. Elle permet par rapport à l'art antérieur, de réduire le nombre de passages dans les familles de réseaux de N à 2#N, dans le cas bidimen 3 sionnel, ou à 3. #N dans le cas tridimensionnel. On peut de plus mettre en place des barrières de mémorisation (pipeline) en alternant l'utilisation des différentes familles de réseaux. Cela permet de réduire le nombre de passages dans les réseaux de 2fN à fN dans le cas bidimensionnel et de 3. #N à #N dans le cas tridimensionnel. Bien entendu, la présente invention n'est pas limitée au modes de réalisation décrits et est susceptible de nombreuses variations accessibles à l'homme de l'art sans que l'on ne s'écarte de l'esprit des revendications. Dans toute la description qui précède, on a considéré les données à réordonner sous forme d'un vecteur indicé par des nombres entiers, pour la simplicité de l'explication. Il est bien évident pour l'homme du métier qu'il ne s'agit là que d'un formalisme, et que la réalisation du réseau de permutation selon l'invention est susceptible d'être décrite de bien d'autres façons, par exemple en considérant des colonnes de tableaux, dans lesquels les données seraient rangées. REVENDICATIONS 1.- Procédé d'accès à une mémoire parallèle d'une pluralité de bancs mémoires pour le stockage ou la lecture de données, dans lequel les données lues dans la mémoire sont réordonnancées pour un traitement ultérieur, ou dans lequel les données à stocker sont réordonnancées avant d'etre stockées dans la mémoire, ledit procédé comprenant un nombre entier d'étapes, et étant caractérisé en ce que chaque étape consiste: - à séparer les données en sous-ensembles comprenant cha cun autant de données, - à réordonnancer à l'intérieur de chacun de ces sous ensembles les données du sous-ensemble. 2.- Procédé selon la revendication 1, caractérisé en ce que les données sont indicées par des entiers, et en ce qu'à chaque étape: - chacun desdits sous-ensembles est constitué des données dont les indices sont égaux modulo n, et - le réordonnancement des données de chaque sous-ensemble laisse invariant la donnée du sous-ensemble dont 1 'in- dice est un multiple de p, n et p étant des nombres entiers, dependant de l'étape, premiers entre eux et dont le produit est égal au nom bre total de bancs mémoires. 3.- Procédé selon la revendication 2, caractérisé en ce que, à une étape du procédé, le réordonnancement dans chaque sous-ensemble est un réordonnancement d'ordre entier, et en ce que l'ordre du réordonnancement est un générateur du groupe cyclique de cardinal égal au nombre de donnees de chaque sous-ensemble. 4.- Procédé selon la revendications 2 ou 3, caractérisé en ce que l'entier n peut prendre deux valeurs a ou b. 5.- Procédé selon l'une quelconque des revendications 4 à 6, caractérisé en ce qu'à chaque valeur de l'entier n, est associee une valeur unique de l'ordre du réordonnancement des sous-ensembles. 6.- Réseau de permutation pour la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend une pluralité de familles de réseaux d'interconnexion, susceptibles d'effectuer chacun un réordonnancement des données, et des moyens de commande pour choisir parmi la pluralité desdites familles de réseaux d'interconnexion une ou plusieurs desdites familles, et pour commander la permutation des données par action successive de chacune desdites familles de réseaux d'interconnexion choisies. 7.- Réseau de permutation selon la revendication 6, caractérisé en ce que chacune desdites familles de réseaux d'interconnexion effectue simultanément sur les données le réordonnancement des données desdits sous-ensembles. 8.- Réseau de permutation selon l'une des revendications 6 ou 7, caractérisé en ce que chacune desdites familles de réseaux d'interconnexion est constituée de réseaux d'interconnexion bidirectionnels. 9.- Réseau de permutation selon l'une des revendications 6 à 8, caractérisé en ce qu'il comprend deux familles de réseaux d'interconnexion. 10.- Réseau de permutation selon l'une quelconque des revendications 6 à 9, caractérisé en ce qu'il comprend en outre un réseau de décalage des données, constitué d'un réseau cylindrique et d'un réseau vissé.