FR2865290A1 - Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede - Google Patents
Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede Download PDFInfo
- Publication number
- FR2865290A1 FR2865290A1 FR0400527A FR0400527A FR2865290A1 FR 2865290 A1 FR2865290 A1 FR 2865290A1 FR 0400527 A FR0400527 A FR 0400527A FR 0400527 A FR0400527 A FR 0400527A FR 2865290 A1 FR2865290 A1 FR 2865290A1
- Authority
- FR
- France
- Prior art keywords
- elementary
- processor
- matrix
- data
- elementary processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- A—HUMAN NECESSITIES
- A62—LIFE-SAVING; FIRE-FIGHTING
- A62C—FIRE-FIGHTING
- A62C35/00—Permanently-installed equipment
- A62C35/58—Pipe-line systems
- A62C35/68—Details, e.g. of pipes or valve systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F16—ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
- F16K—VALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
- F16K15/00—Check valves
- F16K15/02—Check valves with guided rigid valve members
- F16K15/03—Check valves with guided rigid valve members with a hinged closure member or with a pivoted closure member
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F16—ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
- F16K—VALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
- F16K27/00—Construction of housing; Use of materials therefor
- F16K27/02—Construction of housing; Use of materials therefor of lift valves
- F16K27/0209—Check valves or pivoted valves
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F16—ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
- F16K—VALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
- F16K37/00—Special means in or on valves or other cut-off apparatus for indicating or recording operation thereof, or for enabling an alarm to be given
- F16K37/0025—Electrical or magnetic means
- F16K37/005—Electrical or magnetic means for measuring fluid parameters
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01H—ELECTRIC SWITCHES; RELAYS; SELECTORS; EMERGENCY PROTECTIVE DEVICES
- H01H35/00—Switches operated by change of a physical condition
- H01H35/24—Switches operated by change of fluid pressure, by fluid pressure waves, or by change of fluid flow
- H01H35/26—Details
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Mechanical Engineering (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Health & Medical Sciences (AREA)
- Public Health (AREA)
- Business, Economics & Management (AREA)
- Emergency Management (AREA)
- Multi Processors (AREA)
Abstract
L'invention concerne un procédé de gestion de données dans un processeur matriciel comprenant des processeurs élémentaires (302 (i,j)) formant une matrice (300) de n axes telle qu'un processeur élémentaire (302 (i,j)) est relié à un processeur élémentaire voisin (302 (i',j')) selon chacune des 2n directions (310, 312, 314, 316) de la matrice (300), et commandés au moyen de cycles d'instructions identiques déterminant le processeur élémentaire voisin (302 (i',j')) devant transmettre les données au processeur élémentaire (302 (i,j)) pour un cycle ultérieur. Selon le procédé, on associe à ce processeur élémentaire (302 (i,j)) des registres (X1, X2, Y1, Y2) de communications dédiés à l'échange de données selon chaque axe de la matrice (300) et on intègre dans les instructions une condition de localisation du processeur élémentaire (302 (i,j)) dans la matrice (300) pour déterminer le processeur élémentaire voisin (302 (i',j')) transmettant les données prises en compte à un cycle ultérieur.
Description
La présente invention se rapporte à un procédé de gestion de données dans
un processeur matriciel et à un processeur matriciel mettant en oeuvre ce procédé, notamment pour accélérer la transmission de données au sein de ce processeur matriciel.
II est connu d'augmenter la puissance de calcul des équipements électroniques en utilisant une pluralité de processeurs opérant en parallèle, c'est-à-dire simultanément, pour gérer des tâches de calculs complexes.
Ainsi, plusieurs processeurs d'un système électronique se répartissent une partie des opérations à effectuer par ce système pour améliorer le temps global d'opération du système, une telle répartition étant particulièrement importante pour les systèmes électroniques gérant en temps réel des flux importants de données comme, par exemple, des données multimédia (images, vidéo, etc).
Les processeurs matriciels sont des processeurs comprenant un ensemble de processeurs, appelés processeurs élémentaires ou PE, réalisant des opérations de traitement de données en parallèle. Ces processeurs élémentaires sont disposés physiquement sous forme de matrice qui peut avoir une dimension, par exemple sous la forme d'un alignement en ligne de processeurs élémentaires, ou deux dimensions, par exemple lorsque les processeurs élémentaires se présentent sous la forme d'une matrice rectangulaire dans laquelle les PE sont localisés de façon régulière.
Dans ce dernier cas, chaque processeur élémentaire peut envoyer et recevoir des données par cycle d'opération - un cycle étant déterminé par l'horloge qui cadence le système vis-à-vis d'un de ses processeurs élémentaires voisins selon quatre directions Nord, Sud, Est et Ouest détaillées ultérieurement, via un réseau de communication maillé reliant les processeurs élémentaires dans la matrice.
Par ailleurs, quand un processeur élémentaire est à un bord de la matrice selon une direction donnée, il est dit aussi voisin "par contournement' selon cette direction donnée au processeur élémentaire situé au bord de la matrice à l'opposé de cette direction, auquel il est donc connecté.
Il convient aussi de rappeler que chaque processeur élémentaire a une unité élémentaire de mémoire dans laquelle il enregistre les données en cours de traitement qui peuvent être ou non transmises à un processeur élémentaire voisin au prochain cycle.
Les processeurs matriciels contiennent aussi des moyens de contrôle chargés, entre autres, de: - gérer les instructions des programmes exécutés par le processeur matriciel, - transmettre des instructions aux processeurs élémentaires pour que les opérations correspondantes soient exécutées par ces processeurs élémentaires, - exécuter des instructions pour transférer des données à l'intérieur du processeur matriciel, par exemple entre les processeurs élémentaires.
Un cas particulier de processeur matriciel est un processeur matriciel du type SIMD (acronyme anglais pour 'Single Instruction Multiple Data' équivalent à 'Unique Instruction Plusieurs Données'), dans lequel tous les processeurs élémentaires réalisent la même fonction de traitement des données sur les données différentes qu'ils ont en mémoire.
En d'autres termes, il y a une homogénéité fonctionnelle des processeurs élémentaires qui ne se différencient que par leur place dans la matrice et les données enregistrées dans leur mémoire.
La figure 1 est un schéma illustrant quelques éléments d'un processeur matriciel 100 comme une matrice de processeurs élémentaires. Dans cet exemple, la matrice 103 est à deux dimensions 4*4 avec 16 processeurs élémentaires 104 (i,j)) tels que i et j soient compris entre 0 et 3.
Chaque processeur élémentaire PE est relié à des moyens de contrôle 102 par des liens 108 de communication, bien que par soucis de clarté, seul le lien entre le PE 104(0,0) et les moyens de contrôle 102 ait été représenté sur la figure 1. Ces moyens de contrôle exécutent, entre autres fonctions, un ou des programmes mémorisé(s) dans la mémoire de programmes 101.
La figure 2 représente schématiquement un exemple d'une matrice 200 de processeurs élémentaires 202(ij), i et j étant compris entre 0 et 3, de dimension 4*4 qui sont connectés entre eux par un réseau de communication maillé entre les différents processeurs élémentaires.
Chaque processeur élémentaire 202(i,j) a un registre 204(ij) interne de communication dans lequel sont enregistrées les données à transmettre par ce processeur à chaque cycle d'opérations.
Par ailleurs, ces processeurs élémentaires PE 202(i,j) sont reliés entre eux par des liens de communications 206 {(i,j)(n,m)}, i, j, n et m étant compris entre 0 et 3, d'un réseau maillé reliant le processeur élémentaire 202(ij) au processeur élémentaire 202(n,m) voisin physique ou par contournement tel que défini ci-dessus. Pour des raisons de clarté, seul est référencé dans la figure 2 le lien 206 {(0,0) (0,1)}.
Chaque processeur élémentaire est ainsi relié à 4 autres processeurs 35 élémentaires par le réseau de communication maillé dans les 4 directions possibles (Nord 210, Sud 212, Ouest 214 et Est 216). Par exemple, le processeur élémentaire 202(0,0) est relié au: - processeur élémentaire 202(1,0) selon la direction Sud 212, - processeur élémentaire 202 (0,1) selon la direction Est 216, - processeur élémentaire 204(0,3), voisin par contournement, selon la direction Ouest 214, - processeur élémentaire 204(3,0), voisin par contournement, selon la direction Nord 210.
Un tel processeur matriciel est spécialement adapté pour déplacer des données entre les processeurs élémentaires à chaque cycle d'horloge dans le cadre d'algorithmes qui imposent des mouvements de données uniformes, notamment pour les algorithmes de traitement d'images vidéo. De fait, il présente de nombreux avantages tels que: - Une simplicité dans la commande des transmissions de données dans la matrice (déplacement vers le Nord, Sud, Est ou Ouest) étant donné que, selon une même commande, l'ensemble des processeurs élémentaires transmettent les données selon une même direction, et - Des connections courtes entre les processeurs élémentaires, qui permettent de prédire par exemple les temps associés aux signaux électriques, ces 20 temps étant également courts par conséquent.
La présente invention résulte toutefois de la constatation qu'un processeur matriciel selon l'art antérieur présente des problèmes de gestion des communications entre les processeurs élémentaires.
Ainsi, il n'est pas possible aux moyens de contrôle de commander des déplacements non uniformes de données, c'est-à-dire distincts entre deux processeurs élémentaires, puisque les instructions doivent être uniformes vis-à-vis des mouvements de données pour tous les processeurs élémentaires.
Par ailleurs, de nombreux cycles peuvent être requis pour transmettre des données lorsque ces dernières sont requises ou transmises à partir des processeurs élémentaires situés aux bords de la matrice par "effet de bord", cet effet étant d'autant plus important que le nombre de processeurs élémentaires aux bords de la matrice est élevé par rapport au nombre total de processeurs élémentaires. Par exemple, l'effet de bord est plus important sur une matrice 4*4 que sur une matrice 128*128.
La présente invention vise à remédier à au moins un des problèmes 35 précédemment décrits. L'invention concerne un procédé de gestion de données dans un processeur matriciel comprenant des processeurs élémentaires, formant une matrice de n axes telle qu'un processeur élémentaire est relié à un processeur élémentaire voisin selon chacune des 2n directions de la matrice, et commandés au moyen de cycles d'instructions identiques déterminant le processeur élémentaire voisin devant transmettre les données au processeur élémentaire pour un cycle ultérieur, caractérisé en ce qu'on associe à ce processeur élémentaire des registres de communications dédiés à l'échange de données selon chaque axe de la matrice et en ce qu'on intègre dans l'instruction une condition de localisation du processeur élémentaire dans la matrice pour déterminer le processeur élémentaire voisin transmettant les données prises en compte à un cyde ultérieur.
Grâce à l'invention, on améliore considérablement le rendement d'exécution d'algorithmes par des processeurs matriciels du type SIMD, par exemple dans le cadre du traitement d'images vidéo. En effet, l'invention permet d'obtenir des exécutions différentes pour chaque processeur élémentaire en fonction de leur place dans la matrice à partir d'une même instruction de communication uniforme envoyée par les moyens de contrôle du processeur matriciel SIMD.
Ainsi, un procédé selon l'invention permet d'optimiser le transfert de données d'un premier processeur élémentaire vers un second processeur élémentaire via le parcours optimal dans le réseau interne du processeur matriciel, et notamment sans "effet de bords".
Dans une réalisation, on associe au processeur élémentaire une série de bits identifiant sa position dans la matrice de telle sorte que l'on détermine la localisation du processeur élémentaire en comparant cette série de bits avec une série de bits transmise dans les instructions.
Selon une réalisation, la série de bits identifiant la position d'un processeur élémentaire dans la matrice est une série de 2n bits indiquant pour chaque processeur élémentaire si ce processeur élémentaire est à un bord de la matrice.
Dans une réalisation, on utilise une matrice comprenant deux axes (n égal 2).
Selon une réalisation, on associe à chaque processeur élémentaire quatre éléments électriques dont la tension est fixée lors de la mise sous tension du processeur élémentaire et reste fixe tant que ce processeur élémentaire est maintenu sous tension, la tension de ces quatre éléments donnant la série de bits indiquant la position du processeur élémentaire dans la matrice.
Dans une réalisation, l'instruction émise par les moyens de commande comprend une première identité de processeur élémentaire dont les données doivent être copiées dans un registre de communications des processeurs élémentaires si la condition de localisation est validée, et une seconde identité de processeur élémentaire dont les données doivent être copiées si la condition de localisation n'est pas validée.
Selon une réalisation, les ensembles de registres sont indépendants.
Dans une réalisation, on associe à différents processeurs élémentaires au moins deux registres de communications selon un axe de la matrice de telle sorte que, selon cet axe, ces processeurs élémentaires sont reliés par au moins deux réseaux de communications de données.
Selon une réalisation, on associe à chaque processeur élémentaire comprenant au moins deux registres de communications un multiplexeur lié aux processeurs élémentaires voisins selon chacun des axes de communication de la matrice, ce multiplexeur comprenant des moyens pour sélectionner des données transmises par un de ces processeurs élémentaires voisins.
Dans une réalisation, chaque registre d'un processeur élémentaire peut copier les données suivantes à chaque cycle d'opération: - les données d'un registre interne de ce processeur élémentaire, - les données d'un registre de même axe d'un processeur élémentaire voisin, - les données d'un registre d'un autre axe d'un processeur élémentaire voisin, - les données contenues dans ce même registre avant le cycle.
Selon une réalisation, le processeur élémentaire étant situé à un bord de la matrice, un processeur voisin est situé à un autre bord de la matrice.
L'invention concerne aussi un processeur matriciel comprenant des processeurs élémentaires, formant une matrice de n axes telle qu'un processeur élémentaire est relié à un processeur élémentaire voisin selon chacune des 2n directions de la matrice, et commandés au moyen de cycles d'instructions identiques déterminant le processeur élémentaire voisin devant transmettre les données au processeur élémentaire pour un cycle ultérieur, ce processeur étant caractérisé en ce qu'il comprend des moyens pour associer à ce processeur élémentaire des registres de communications dédiés à l'échange de données selon chaque axe de la matrice et en ce qu'il comprend des moyens pour intégrer dans les instructions une condition de localisation du processeur élémentaire dans la matrice pour déterminer le processeur élémentaire voisin transmettant les données à un cycle ultérieur en fonction de cette localisation selon un procédé conforme à l'une des réalisations précédentes.
D'autres caractéristiques et avantages de l'invention apparaîtront avec la description effectuée ci-dessous à titre d'exemple non limitatif en se référant aux figures ci-jointes sur lesquelles: - La figure 1, déjà décrite, représente schématiquement un processeur matriciel selon l'art antérieur, - La figure 2, déjà décrite, représente schématiquement une matrice de processeurs élémentaires et son réseau maillé de transmission de données selon l'art antérieur, - La figure 3 représente schématiquement une matrice de processeurs élémentaires conforme à l'invention, et - La figure 4 est un schéma des moyens de communication d'un processeur élémentaire selon l'invention.
Dans la réalisation de l'invention décrite ci-dessous (Figure 3), chaque processeur élémentaire a un premier ensemble de registres X1 et X2 de communications permettant de communiquer selon les directions Ouest 314 et Est 316 ainsi qu'un second ensemble de registres de communications Y1 et Y2 pour communiquer selon la direction Nord 310 et Sud 312.
L'ensemble des registres de communication de chaque processeur élémentaire est donc composé de 4 registres X1, X2, Y1 et Y2. Le processeur matriciel dispose ainsi d'un double réseau de communication dans l'axe horizontal (Ouest 314/ Est 316) et dans l'axe vertical (Nord 310/ Sud 312).
Dans une variante de cette réalisation, chaque processeur élémentaire comprend 2*n registres de communication destinés à la communication selon les n axes de la matrice, n étant un entier positif.
Dans chaque ensemble des registres de communications d'un processeur élémentaire donné, le registre interne d'un processeur élémentaire peut prendre les données suivantes à chaque cycle d'horloge: - la donnée d'un second registre interne de ce processeur élémentaire, - la donnée d'un registre X1 ou X2 d'un processeur élémentaire voisin physiquement ou par contournement situé à l'Est 316, - la donnée d'un registre X1 ou X2 d'un processeur élémentaire voisin physiquement ou par contournement situé à l'Ouest 314, - la donnée d'un registre Y1 ou Y2 d'un processeur élémentaire voisin 35 physiquement ou par contournement situé au Nord 310, - la donnée d'un registre Y1 ou Y2 d'un processeur élémentaire voisin physiquement ou par contournement situé au Sud 312, - Pas de changement par rapport au contenu du registre avant le cycle d'horloge.
A chaque cycle d'horloge, les moyens de contrôle (non représentés} du processeur matriciel envoient une instruction de communication conditionnelle pour indiquer quelles données doivent être placées dans chaque registre de communication.
A cet effet, chaque instruction de communication envoyée par les moyens de contrôle a un premier champ "de condition", un second champ "première source" et un troisième champ "deuxième source" détaillés ci-dessous.
Le champ de condition est constitué de quatre bits, à savoir un bit pour le bord Nord, un bit pour le bord Sud, un bit pour le bord Est et un bit pour le bord Ouest.
La condition contenue dans le champ de condition est validée par un processeur élémentaire si ce processeur élémentaire est placé sur un des bords qui sont signalés par les bits activés de la condition. Si plus d'un bit de la condition est activé, une fonction 'OU' est réalisée entre les deux comparaisons avec la position du processeur élémentaire pour valider ou non la condition.
Si la condition présente dans le champ de condition est validée par un processeur élémentaire donné, alors le champ première source' identifie un second processeur élémentaire dont les données doivent être copiées dans le registre concerné du premier processeur élémentaire.
Si la condition présente dans le champ de condition n'est pas validée par un processeur élémentaire donné, alors le champ deuxième source' identifie la source qui doit être copiée dans le registre concerné du processeur élémentaire.
La figure 3 représente un schéma d'un exemple d'une matrice 300 de 16 processeurs élémentaires 302 (i,j), tels que i et j sont compris entre 0 et 3, conforme à l'invention.
Chaque processeur 302(i,j) a deux registres X1 et X2 pour les communications sur l'axe Ouest 314- Est 316 et deux registres Y1 et Y2 sur l'axe Nord 30 310-Sud 312.
En outre chaque registre peut importer ou exporter des données via le réseau maillé de communication représenté par les flèches 304 horizontales et les flèches 306 verticales. Chaque processeur élémentaire est ainsi en communication avec 4 processeurs élémentaires voisins (avec ou sans contournement) : 1 au Nord, 1 au Sud, 1 à l'Est et 1 à l'Ouest.
Par exemple, le processeur élémentaire 302(0,0) peut communiquer: - avec ses registres de communications X1 et X2 en lecture et écriture avec le processeur élémentaire 302(0,3) et le processeur élémentaire 302(0,1), avec ses registres de communications Y1 et Y2 en lecture et écriture avec le processeur élémentaire 302(3,0)- et le processeur élémentaire 302(1,0).
A chaque processeur élémentaire est associé un mot de 4 bits de localisation. Dans la figure 3, tous les mots de 4 bits associés à chaque processeur élémentaire sont indiqués (seul le mot 302(0,0)L est référencé par souci de clarté) de tel façon que: - le premier bit est égal à 1 si le processeur élémentaire donné est sur le bord Nord et 0 sinon, - le deuxième bit est égal à 1 si le processeur élémentaire donné est sur le bord Sud et 0 sinon, - le troisième bit est égal à 1 si le processeur élémentaire donné est sur le bord Est et 0 sinon, - le quatrième bit est égal à 1 si le processeur élémentaire donné est sur le bord Ouest et 0 sinon.
Cette association du mot de quatre bits à chaque processeur élémentaire peut se faire par quatre fils qui sont mis sous tension ou pas selon la localisation du processeur élémentaire à la mise sous tension du processeur matriciel SIMD, et dont la tension ne varie plus jusqu'à la mise hors tension du processeur matriciel SIMD.
- Les processeurs élémentaires remplissant la condition Nord 310, situés au bord de la matrice, sont les processeurs élémentaires 302(0,0), 302(0, 1), 302(0,2), 302(0,3), - Les processeurs élémentaires remplissant la condition Sud 312, situés au bord de la matrice, sont les processeurs élémentaires 302(3,0), 302(3, 1), 302(3,2), 302(3,3), - Les processeurs élémentaires remplissant la condition Est 316, situés au bord de la matrice, sont les processeurs élémentaires 302(0,3), 302(1, 3), 302(2,3), 30 302(3,3) et - Les processeurs élémentaires remplissant la condition Ouest 314, situés au bord de la matrice sont les processeurs élémentaires 302(0,0), 302(1,0) , 302(2,0), 302(3,0).
Les conditions peuvent être combinées avec la fonction logique OU'. Par 35 exemple, les processeurs élémentaires remplissant la condition Nord et Ouest (comprendre Nord ou Ouest) sont les processeurs élémentaires 302(0,0), 302(0,1), 302(0,2), 302(0,3), 302(1,0), 302(2,0), 302(3,0).
Sur la figure 4 est représenté un détail d'un des processeurs élémentaires 302(i,j) décrit à la figure 3, dont les modes de communications associés à ses registres X1, X2, Y1 et Y2 sont tels que chacun de ces registres peut prendre transmettre ou recevoir des données vis-à-vis de tout autre registre X1', X2', Y1' et Y2' d'un processeur élémentaire 302'(i,j) voisin.
Pour cela, en considérant par exemple le registre X1, ce dernier utilise un multiplexeur 400xi comprenant deux sous-registres X1 XCOM et X1 YCOM dans lesquels sont enregistrées les données éventuellement transmises par un processeur élémentaire 302'(i,j) voisin via, soit le réseau de communications des registres X1 ou X2, soit le réseau de communications des registres Y1 ou Y2.
Ainsi, le sous-registre X1 XCOM comprend des liaisons 402 propres aux données du réseau X1, Est (E) ou Ouest (W) et X2, Est (E) ou Ouest (W), de telle sorte qu'il peut mémoriser les données provenant de chacune de ces liaisons avec les processeurs élémentaires voisins.
De façon analogue, le sous-registre X1 YCOM comprend des liaisons 404 propres aux données du réseau Y1, Nord (N) ou Sud (S), et Y2, Nord (N) ou Sud (S), de telle sorte qu'il peut mémoriser les données provenant de chacune de ces liaisons avec les processeurs élémentaires voisins.
Finalement, un troisième sous-registre X1_SRC permet de garder en mémoire, pour utiliser dans un nouveau cycle, les données déjà comprises dans le registre X1 du processeur élémentaire 302(i,j) lui-même.
Ainsi, il apparaît que, en considérant la condition de localisation (représentée par X1_OP) transmise par les moyens de commande (non représentés) de la matrice, le multiplexeur 400xi peut prendre en compte des données provenant du réseau X1, X2, Y1, Y2 ou déjà comprises dans le processeur élémentaire par une simple sélection.
Par la suite, les données prises en compte dans le registre Xl pour le cycle de calculs sont transmises au réseau Xl par des moyens 406 associés à ce dernier.
A cet effet, il convient de noter que ces moyens 406 permettent la transmission des données dans les directions Est ou Ouest.
De façon analogue, le détail des moyens de communication associés au registre Y1 est représenté, ce dernier utilisant un multiplexeur 400yi comprenant deux sous-registres Y1 XCOM et Y1 YCOM dans lesquels sont enregistrées les données éventuellement transmises par un processeur élémentaire 302'(i,j) voisin via, soit le réseau de communications des registres X1 ou X2, soit le réseau de communications des registres Y1 ou Y2.
Le fonctionnement de ces sous-registres est analogues au fonctionnement des sous-registres précédemment décrits, le sous-registre Y1 XCOM comprenant des liaisons 402' propres aux données du réseau X1, Est (E) ou Ouest (W) et X2, Est (E) ou Ouest (W), et le sous-registre Y1 YCOM comprenant des liaisons 404' propres aux données du réseau Y1, Nord (N) ou Sud (S), et Y2, Nord (N) ou Sud (S), tandis qu'un troisième sous- registre Y1_SRC permet de garder en mémoire, pour utiliser dans un nouveau cycle, les données déjà comprises dans le registre Y1 du processeur élémentaire 302(i,j) lui-même.
Dès lors, en fonction de la condition de localisation (représentée par Y1_OP) transmise par les moyens de commande (non représentés) de la matrice, le multiplexeur 400yl peut prendre en compte des données provenant du réseau X1, X2, Y1, Y2 ou déjà comprises dans le processeur élémentaire par une simple sélection.
Par la suite, les données prises en compte dans le registre Y1 pour le cycle de calculs sont transmises au réseau XI par des moyens 406' associés à ce dernier, ces moyens 406' permettant la transmission des données dans les directions Nord et Sud.
Les registres X2 et Y2 comportent les mêmes moyens de communication à base de multiplexeurs que ceux qui viennent d'être décrits pour les registres X1 et Y1 mais ils ne sont pas représentés sur la figure 4 dans un souci de simplification.
Claims (12)
1. Procédé de gestion de données dans un processeur matriciel comprenant des processeurs élémentaires (302 (i,j), (302 (i',j')) formant une matrice (300) de n axes telle qu'un processeur élémentaire (302 (i,j)) est relié à un processeur élémentaire voisin (302 (i',j')) selon chacune des 2n directions (310, 312, 314, 316) de la matrice (300), et commandés au moyen de cycles d'instructions identiques déterminant le processeur élémentaire voisin (302 (i',j')) devant transmettre les données au processeur élémentaire (302 (i,j)) pour un cycle ultérieur, caractérisé en ce qu'on associe à ce processeur élémentaire (302 (ii)) des registres (X1, X2, Y1, Y2) de communications dédiés à l'échange de données selon chaque axe de la matrice (300) et en ce qu'on intègre dans les instructions une condition de localisation du processeur élémentaire (302 (i,j)) dans la matrice (300) pour déterminer le processeur élémentaire voisin (302 (i',j')) transmettant les données prises en compte à un cycle ultérieur.
2. Procédé selon la revendication 1 caractérisé en ce qu'on associe au processeur élémentaire (302 (i,j)) une série (302 (i,j)L) de bits identifiant sa position dans la matrice (300) de telle sorte que l'on détermine la localisation du processeur élémentaire (302 (i,j)) en comparant cette série (302 (i,j)L) de bits avec une série de bits transmise dans les instructions.
3. Procédé selon la revendication 2 caractérisé en ce que la série (302 (i,j)L) de bits identifiant la position d'un processeur élémentaire (302 (i,j)) dans la matrice (300) est une série de 2n bits indiquant pour chaque processeur élémentaire (302 (i,j)) si ce processeur élémentaire (302 (ii)) est à un bord de la matrice (300).
4. Procédé selon l'une des revendications 1, 2 ou 3 caractérisé en ce qu'on utilise une matrice comprenant deux axes (n égal 2) et quatre directions (310, 312, 314, 316).
5. Procédé selon l'une des revendications 1 à 4 caractérisé en ce qu'on associe à chaque processeur élémentaire (302 (i,j)) quatre éléments électriques dont la tension est fixée lors de la mise sous tension du processeur élémentaire (302 (i,j)) et reste fixe tant que ce processeur élémentaire (302 (i,j)) est maintenu sous tension, la tension de ces quatre éléments donnant la série (302 (i,j)L) de bits indiquant la position du processeur élémentaire (302 (i,j)) dans la matrice (300).
6. Procédé selon l'une des revendications précédentes caractérisé en ce que l'instruction émise par les moyens de commande comprend une première identité de processeur élémentaire dont les données doivent être copiées dans un registre de communications des processeurs élémentaires si la condition de localisation est validée, et une seconde identité de processeur élémentaire dont les données doivent être copiées si la condition de localisation n'est pas validée.
7. Procédé selon l'une des revendications précédentes caractérisé en 10 ce que les ensembles de registres (XI, X2, Y1, Y2) sont indépendants.
8. Procédé selon l'une des revendications précédentes caractérisé en ce qu'on associe à différents processeurs élémentaires (302 (i,j), (302 (i', j')) au moins deux registres ((X1, X2); (Y1, Y2)) de communications selon un axe de la matrice de telle sorte que, selon cet axe, ces processeurs élémentaires (302 (i,j), (302 (i',j')) sont reliés par au moins deux réseaux de communications de données.
9. Procédé selon la revendications 8 caractérisé en ce qu'on associe à chaque processeur élémentaire (302 (i,j)) comprenant au moins deux registres ((X1, X2); (Y1, Y2)) de communications un multiplexeur (400xi) lié aux processeurs élémentaires voisins (302 (i',j')) selon chacun des axes de communication de la matrice (300), ce multiplexeur (400xi) comprenant des moyens, tels que des sous-registres (Y1 SRC, Y1 XCOM, Y1 YCOM, X1 SRC, X1 XCOM, X1 YCOM), pour sélectionner des données transmises par un de ces processeurs élémentaires voisins (302 (i',j')).
10. Procédé selon l'une des revendications précédentes caractérisé en ce que chaque registre (X1, X2, Y1, Y2) d'un processeur élémentaire peut copier les données suivantes à chaque cycle d'opération: - les données d'un registre interne de ce processeur élémentaire, - les données d'un registre de même axe d'un processeur élémentaire voisin, - les données d'un registre d'un autre axe d'un processeur élémentaire voisin, - les données contenues dans ce même registre avant le cycle.
11. Procédé selon l'une des revendications précédentes caractérisé en ce que, le processeur élémentaire (302 (i,j)étant situé à un bord de la matrice, un processeur voisin (302 (i',j'))est situé à un autre bord de la matrice.
12. Processeur matriciel (300) comprenant des processeurs élémentaires (302 (i,j), (302 (i',j')), formant une matrice (300) de n axes telle qu'un processeur élémentaire (302 (i,j)) est relié à un processeur élémentaire voisin (302 (i',j')) selon chacune des 2n directions (310, 312, 314, 316) de la matrice (300), et commandés au moyen de cycles d'instructions identiques déterminant le processeur élémentaire voisin devant transmettre les données au processeur élémentaire (302 (i,j)) pour un cycle ultérieur, caractérisé en ce qu'il comprend des moyens pour associer à ce processeur élémentaire (302 (i,j)) des registres (X1, X2, Y1, Y2) de communications dédiés à l'échange de données selon chaque axe de la matrice (300) et en ce qu'il comprend des moyens pour intégrer dans l'instruction une condition de localisation du processeur élémentaire (302 (i,j)) dans la matrice (300) pour déterminer le processeur élémentaire voisin (302 (i',j')) transmettant les données à prendre en compte pour un cycle ultérieur.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0400527A FR2865290A1 (fr) | 2004-01-21 | 2004-01-21 | Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede |
EP05100231A EP1560111A1 (fr) | 2004-01-21 | 2005-01-17 | Procédé de gestion de données dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procédé |
CNA2005100045323A CN1645352A (zh) | 2004-01-21 | 2005-01-18 | 管理阵列处理器中的数据的方法及执行此方法的阵列处理器 |
MXPA05000753A MXPA05000753A (es) | 2004-01-21 | 2005-01-18 | Metodo para gestion de datos en un procesador de arreglo y procesador de arreglo que lleva a cabo este metodo. |
KR1020050005395A KR20050076701A (ko) | 2004-01-21 | 2005-01-20 | 어레이 프로세서에서의 데이터 관리 방법 및 이 방법을수행하기 위한 어레이 프로세서 |
JP2005014120A JP2005209207A (ja) | 2004-01-21 | 2005-01-21 | アレイプロセッサにおいてデータを管理するための方法、およびアレイプロセッサ |
US11/040,554 US20050160253A1 (en) | 2004-01-21 | 2005-01-21 | Method for managing data in an array processor and array processor carrying out this method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0400527A FR2865290A1 (fr) | 2004-01-21 | 2004-01-21 | Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2865290A1 true FR2865290A1 (fr) | 2005-07-22 |
Family
ID=34639783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0400527A Pending FR2865290A1 (fr) | 2004-01-21 | 2004-01-21 | Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede |
Country Status (7)
Country | Link |
---|---|
US (1) | US20050160253A1 (fr) |
EP (1) | EP1560111A1 (fr) |
JP (1) | JP2005209207A (fr) |
KR (1) | KR20050076701A (fr) |
CN (1) | CN1645352A (fr) |
FR (1) | FR2865290A1 (fr) |
MX (1) | MXPA05000753A (fr) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7814242B1 (en) | 2005-03-25 | 2010-10-12 | Tilera Corporation | Managing data flows in a parallel processing environment |
US7539845B1 (en) * | 2006-04-14 | 2009-05-26 | Tilera Corporation | Coupling integrated circuits in a parallel processing environment |
US7636835B1 (en) * | 2006-04-14 | 2009-12-22 | Tilera Corporation | Coupling data in a parallel processing environment |
US7774579B1 (en) | 2006-04-14 | 2010-08-10 | Tilera Corporation | Protection in a parallel processing environment using access information associated with each switch to prevent data from being forwarded outside a plurality of tiles |
US7577820B1 (en) * | 2006-04-14 | 2009-08-18 | Tilera Corporation | Managing data in a parallel processing environment |
EP1927949A1 (fr) * | 2006-12-01 | 2008-06-04 | Thomson Licensing | Réseau d'éléments de traitement avec registres locaux |
KR100895298B1 (ko) * | 2007-04-30 | 2009-05-07 | 한국전자통신연구원 | 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트 |
GB0900667D0 (en) * | 2009-01-16 | 2009-02-25 | Univ Reading The | Processors |
WO2012156995A2 (fr) * | 2011-05-13 | 2012-11-22 | Melange Systems (P) Limited | Architecture informatique de traitement d'instructions sans extraction (flip) pour des unités centrales (uc) |
JP5953876B2 (ja) * | 2012-03-29 | 2016-07-20 | 株式会社ソシオネクスト | リコンフィグ可能な集積回路装置 |
GB2569276B (en) * | 2017-10-20 | 2020-10-14 | Graphcore Ltd | Compiler method |
CN111866069B (zh) * | 2020-06-04 | 2024-07-26 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
CN119149485A (zh) * | 2024-11-13 | 2024-12-17 | 芯方舟(上海)集成电路有限公司 | 高度可编程处理器阵列网络 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4783738A (en) * | 1986-03-13 | 1988-11-08 | International Business Machines Corporation | Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element |
US6185667B1 (en) * | 1998-04-09 | 2001-02-06 | Teranex, Inc. | Input/output support for processing in a mesh connected computer |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3287901B2 (ja) * | 1993-03-12 | 2002-06-04 | シャープ株式会社 | データ駆動型情報処理システムにおける識別データ確認方法 |
JPH08185380A (ja) * | 1994-12-28 | 1996-07-16 | Hitachi Ltd | 並列計算機 |
US6067609A (en) * | 1998-04-09 | 2000-05-23 | Teranex, Inc. | Pattern generation and shift plane operations for a mesh connected computer |
US6212628B1 (en) * | 1998-04-09 | 2001-04-03 | Teranex, Inc. | Mesh connected computer |
-
2004
- 2004-01-21 FR FR0400527A patent/FR2865290A1/fr active Pending
-
2005
- 2005-01-17 EP EP05100231A patent/EP1560111A1/fr not_active Withdrawn
- 2005-01-18 CN CNA2005100045323A patent/CN1645352A/zh active Pending
- 2005-01-18 MX MXPA05000753A patent/MXPA05000753A/es active IP Right Grant
- 2005-01-20 KR KR1020050005395A patent/KR20050076701A/ko not_active Application Discontinuation
- 2005-01-21 JP JP2005014120A patent/JP2005209207A/ja active Pending
- 2005-01-21 US US11/040,554 patent/US20050160253A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4783738A (en) * | 1986-03-13 | 1988-11-08 | International Business Machines Corporation | Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element |
US6185667B1 (en) * | 1998-04-09 | 2001-02-06 | Teranex, Inc. | Input/output support for processing in a mesh connected computer |
Also Published As
Publication number | Publication date |
---|---|
MXPA05000753A (es) | 2005-08-29 |
JP2005209207A (ja) | 2005-08-04 |
CN1645352A (zh) | 2005-07-27 |
US20050160253A1 (en) | 2005-07-21 |
KR20050076701A (ko) | 2005-07-26 |
EP1560111A1 (fr) | 2005-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1116130B1 (fr) | Reseau de processeurs paralleles avec tolerance aux fautes de ces processeurs, et procede de reconfiguration applicable a un tel reseau | |
FR2865290A1 (fr) | Procede de gestion de donnees dans un processeur matriciel et processeur matriciel mettant en oeuvre ce procede | |
EP0434483B1 (fr) | Processeur à plusieurs unités de traitement microprogrammées | |
US12165042B2 (en) | Neural network hardware accelerator data parallelism | |
EP1116116B1 (fr) | Procede de reconfiguration applicable a un reseau d'elements fonctionnels identiques | |
EP0020202B1 (fr) | Système multiprocesseur de traitement de signal | |
EP3084588B1 (fr) | Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal. | |
FR2779843A1 (fr) | Composant memoire multiport serie et application a un ordinateur | |
FR2936626A1 (fr) | Dispositif de traitement en parallele d'un flux de donnees | |
EP1860571B1 (fr) | Contrôleur de DMA, système sur puce comprenant un tel contrôleur de DMA, procédé d'échange de données par l'intermédiaire d'un tel contrôleur de DMA | |
WO2020012104A1 (fr) | Circuit de génération de facteurs de rotation pour processeur ntt | |
EP4020475A1 (fr) | Module mémoire adapté à mettre en oeuvre des fonctions de calcul | |
EP3451179B1 (fr) | Contrôleur d'accès direct en mémoire, dispositif et procédé de réception, stockage et traitement de données correspondants | |
US12248868B2 (en) | Neural processing device and operation method of the neural processing device | |
EP2666092A1 (fr) | Systeme multi-coeurs et procede de coherence de donnees | |
EP2208143B1 (fr) | Structure et procede de sauvegarde et de restitution de donnees | |
FR2606186A1 (fr) | Processeur de calcul comportant une pluralite d'etages relies en serie, calculateur et procede de calcul mettant en oeuvre ledit procede | |
WO2006042736A1 (fr) | Systeme de processeur parallele reconfigurable, modulaire et hierarchique | |
EP0680015B1 (fr) | Dispositif d'alimentation en pixels d'une série d'opérateurs d'un circuit de compression d'images mobiles | |
US20230058749A1 (en) | Adaptive matrix multipliers | |
WO2022105616A1 (fr) | Balayages de système de fichiers parallèles avec de multiples files d'attente partagées | |
FR2919401A1 (fr) | Procede de test des chemins de donnees dans un circuit electronique | |
EP1493083B1 (fr) | Système reconfigurable de contrôle basé sur la mise en oeuvre matérielle de graphes de pétri | |
FR3082331A1 (fr) | Processeur mimd emule sur architecture simd | |
WO1993025976A1 (fr) | Processeur parallele pour traitement de multiples donnees par une serie d'instructions repetitives |