EP1668530A2 - Composant a architecture reconfigurable dynamiquement - Google Patents

Composant a architecture reconfigurable dynamiquement

Info

Publication number
EP1668530A2
EP1668530A2 EP04816238A EP04816238A EP1668530A2 EP 1668530 A2 EP1668530 A2 EP 1668530A2 EP 04816238 A EP04816238 A EP 04816238A EP 04816238 A EP04816238 A EP 04816238A EP 1668530 A2 EP1668530 A2 EP 1668530A2
Authority
EP
European Patent Office
Prior art keywords
block
data
controller
cell
bcom
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.)
Withdrawn
Application number
EP04816238A
Other languages
German (de)
English (en)
Inventor
Mickael Guibert
Fabien Clermidy
Thierry Collette
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Commissariat a lEnergie Atomique CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of EP1668530A2 publication Critical patent/EP1668530A2/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Definitions

  • the inter-line register component is particularly advantageous in that it provides an additional processing mode compared to the prior art: the line mode dependent (or, equivalently, to dependent BE blocks). This further increases the processing possibilities and makes it possible to improve the rate of use of the resources of the component as well as the data throughput. For example, if there are two lines capable of processing each 256 bits of data, switching to dependent mode between these lines makes it possible to process 512 bits of data.
  • a component with input-output management comprising: - an input management block GE able to receive data from the outside and temporarily store this received data, to format stored data according to the initialization mode or the normal mode indicated by the CG controller via its own control bus, to transmit formatted data at the input El of the blocks BE of the block TD via the common input data bus; an output management block GS, connected to the controller CG by its own control bus for the command to receive processed data, connected to the output data bus of each of the blocks BE of the block TD to receive processed data, and capable at reformat of received processed data, to store in reformatted data buffer in a memory, to receive a transmission request from the outside, to transmit outside the data stored in the buffer memory on request received from the outside.
  • the invention relates to a final embodiment of the component, dependent on the coarse-grained, so-called coarse-grained embodiment, for processing a set of applications comprising at least one application, in which each CB base of the TD block configured to carry out a processing is capable of carrying out the operations necessary for the complete processing of at least one application of the set, each application of the assembly being able to be produced completely by at least one basic cell CB.
  • This autonomous large-grain component is the optimal version of the dynamically reconfigurable architecture component according to the invention. It is capable of processing a set of applications (which can be reduced to a single application) thanks to basic cells which are autonomous as regards the processing of these applications.
  • This autonomy of the CB cells makes it possible to optimally benefit from the very flexible possibilities of reconfiguring the component and of using the various processing modes in pipeline, in parallel, mixed or in dependent lines or of their various combinations.
  • Step 1 is illustrated, for filling line 0 (with reference to FIG. 7), in FIG. 8: in 8a the operations executed by the units are indicated by opl, op2 etc ..; in 8b is represented a chronogram corresponding to the operations carried out on line 0, the clock pulses are represented at the top of the chronogram (Clock).
  • the manager GE recovers blocks of data, for example of 64 bits, and reconstitutes the word of p bits which will be sent on the first unit UT of the line UT (0,1) of the first cell CB (0,1).
  • Step 2 is illustrated, for the looping of line 0, in FIG. 9: in 9a the operations carried out by the units of the line are indicated; in 9b is shown a timing diagram of this looping step; the notation 'data 4/3' indicating an exchange of the processed data 4 and 3 between the units UT (0,1) and UT (0, 2).

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

L'invention concerne un composant à architecture à gros grain, reconfigurable dynamiquement, pour le traitement de données par des unités de traitement disposées en lignes et interconnectées de façon à permettre un traitement en mode pipeline ou parallèle ou à lignes dépendantes. Tous les types de données peuvent être traitées et le composant peut traiter plusieurs applications simultanément. Le choix du grain, le contrôle à plusieurs niveaux avec ressources d'interconnexion de contrôle limitées et le circuit de distribution de données autorisent la reconfiguration locale ou d'ensemble du composant en un cycle d'horloge.

Description

COMPOSANT A ARCHITECTURE RECONFIGURABLE DYNAMIQUEMENT
DESCRIPTION
DOMAINE TECHNIQUE L'invention relève du domaine des composants reconfigurables dynamiques dédiés au traitements de données, notamment pour l'exécution des instructions correspondant aux diverses tâches d'une application.
ETAT DE LA TECHNIQUE ANTERIEURE
Les composants reconfigurables de manière dynamique ont classiquement pour finalité une utilisation optimisée de leurs ressources matérielles lors de traitements de données effectués pour réaliser une application. Le plus souvent il s'agit de reconfiguration visant à obtenir un taux d'utilisation d'un composant le plus élevé possible. D'autres fois il s'agit d'utiliser la reconfiguration pour viser la robustesse d'un composant (c'est-à-dire de permettre au composant de fonctionner même en cas de défaillance d'une partie de ses ressources matérielles), ou bien il s'agit de viser un très haut débit de données traitées par le composant ou bien encore une consommation d'énergie réduite lors de l'utilisation du composant. La reconfiguration peut aussi être utilisée pour optimiser le traitement de données en parallèle sur des processeurs élémentaires du composant. Il existe différentes manières de réaliser une application : avec un circuit intégré à application spécifique (un ASIC, 'Application Spécifie Integrated Circuit') dédié, avec un processeur ou avec un réseau prédiffusé programmable par l'utilisateur (un FPGA, ' Field Programmable Gâte Array' ) . L'ASIC dédié offre une réalisation spatiale optimum puisque les opérateurs sont directement câblés sur le silicium ; cependant ce type de composant étant dédié à une application donnée, il ne permet pas de passer (ou alors de façon très dégradée) à un autre type d'application. L'utilisation d'un processeur permet une implémentation temporelle d'une application : celle-ci est traduite en séquences d' instructions réalisables par le processeur, avec réutilisation de son unité de traitement à chaque cycle. Suivant le jeu d'instructions du processeur, cette technique offre une grande souplesse au niveau des applications qui peuvent être traitées et de plus l'architecture est très compacte. L'inconvénient principal du processeur concerne la performance qui est très loin de celle des ASICs dédiés. Les composants programmables (on dit aussi reconfigurables) que sont les FPGA présentent une alternative entre le processeur et l'ASIC : une application est implantée sur une matrice de cellules de traitement pré-caractérisées (grains fins du composant) avec de nombreuses interconnexions. Cependant, l'utilisation actuelle des FPGA est limitée le plus souvent à une seule configuration implantée alors qu'il est souhaitable d'effectuer des reconfigurations en cours d'exécution. On a donc une répartition spatiale de l'application à réaliser et non temporelle : la capacité du FPGA à se reconfigurer pour réaliser une autre application n'est pas exploitée. Deux raisons principales expliquent cette absence de reconfiguration dynamique : tout d'abord, la majorité des FPGA n'autorise qu'une reconfiguration totale du composant, ce qui entraîne un coût très lourd en terme de temps (typiquement quelques millisecondes à quelques centaines de millisecondes) car il faut re-router l'application pour câbler les opérateurs de façon optimum ; ensuite, du fait que le grain des FPGA est très fin pour pouvoir s'adapter à un grand nombre d'applications, le câblage des opérations a l'inconvénient d'être complexe et de nécessiter une capacité de transmission importante pour un grand nombre de bits (au niveau des bus de contrôle) . Le brevet US6,150,839 divulgue un nouveau type de FPGA qui possède deux niveaux de cache pour pouvoir se reconfigurer partiellement. L'architecture de ce FPGA se présente sous la forme de deux ensembles de cellules qui sont associées respectivement à deux mémoires cache, chacune de ces mémoires pouvant contenir un ou plusieurs contextes pour l'ensemble des cellules. Ce type de FPGA présente plusieurs inconvénients : la reconfiguration des cellules se fait par paquets de cellules et le chargement d'une nouvelle configuration nécessite plusieurs cycles d'horloge ; de plus, la structure de communication inter-cellules est complexe et fait intervenir des bus globaux, les possibilités très étendues d'interconnexion qui en résultent font que les ressources d' interconnexion prédominent sur celles de traitemen . L'architecture dite DPGA [1,2] (pour 'Dynamically Programmable Gâte Array' ) , développée au MIT dès 1994, a pour grain fin une cellule assez simple comportant une LUT ('Look-Up Table' ou table de conversion) à quatre entrées et une bascule programmable. Ces cellules sont regroupées par blocs de 16 au sein d'une matrice 4x4. La mise en tableau de ces éléments constitue le DPGA. Deux réseaux d'interconnexions cohabitent dans cette architecture. Le premier réseau est local au bloc de cellules : chaque cellule peut utiliser en entrée les sorties des cellules appartenant à la même ligne ou à la même colonne (soit 6 bits) , il est aussi possible que la cellule utilise sa propre sortie comme entrée. Le second réseau permet de fournir à chaque bloc des signaux globaux. En effet, les blocs communiquent entre eux en utilisant des 'crossbar' (réseau d'interconnexion) qui autorisent chaque cellule à recevoir deux signaux globaux par matrice voisine (soit 8 bits, car chaque matrice contient 16 cellules et peut donc fournir 16 bits à ses voisins) . Pour les entrées de la LUT de chaque cellule, il y a donc le choix parmi 15 bits : sa sortie, les 6 bits des cellules voisines, les 8 bits des matrices voisines. Le DPGA est capable de mémoriser quatre contextes (ou configurations) , ce qui autorise le passage rapide de l'un à l'autre. Ce composant présente toutefois certains inconvénients : - la structure d'interconnexion est trop complexe pour supporter des applications de type flot de données (par exemple des applications multimédia, interactives ou de cryptographie) ; - la simplicité de commande des contextes (deux fils pour le composant) limite les possibilités de réalisation du composant au niveau de la reconfiguration ;
- le maintien des résultats de traitement a lieu à la sortie de la cellule, ce qui oblige à maintenir toutes les entrées, du producteur jusqu'au consommateur final ;
- un seul numéro de configuration est distribué pour tout le composant . L'architecture PipeRench [3,4] a été développée pour utiliser la reconfiguration en mode pipeline afin de réaliser des applications de type flot de données. C'est une architecture à gros grain, elle est basée sur des cellules relativement complexes (grain fin) PE (pour 'Processing Elément') organisées en 'stripes' ou étages de cellules (gros grain). Ces stripes physiques (câblés sur silicium) sont organisés en lignes et sont reliés entre eux par des interconnexions qui permettent la réalisation d'un anneau ; c'est cet anneau physique qui permet le pipeline. PipeRench découpe une application à réaliser en un certain nombre d'opérations élémentaires qui sont ensuite réparties dans des stripes virtuels (étages virtuels décrits en mémoire) . Du fait de la taille importante des cellules PE, il n'est en général pas possible d'avoir autant de stripes physiques que nécessaire sur le composant : PipeRench virtualise donc les ressources matérielles nécessaires en reconfigurant les stripes physiques de manière à ce qu'ils réalisent successivement toutes les opérations de l'application. Chacune des étapes de l'application correspond à une configuration particulière d'un étage physique de l'architecture. Les données se déplacent d'étage en étage en réalisant les différentes étapes du traitement, ce qui rend difficile la réalisation de traitements non déterministes pour lesquels l'application est dépendante des données. De plus, tout les étages de traitement n'étant pas forcément présents dans l'architecture physique, chaque étage ne doit dépendre que des données de l'étage précédent. Une structure particulière de registre permet cependant de faire transiter des données vers un étage inférieur en appliquant le même pipeline que pour les données classiques ; ceci impose toutefois que des bouclages ne peuvent intervenir qu'au sein d'un même étage (les bouclages entre étages sont prohibés) , des registres permettant de réaliser des rétroactions au sein d'un étage. Lorsqu'un étage est déchargé de l'architecture, sa configuration doit être sauvée de façon à maintenir, pour sa réutilisation, l'état de ses variables internes. Le passage des données entre les stripes se fait de manière unidirectionnnelle, c'est pourquoi les configurations sont stockées dans une mémoire unique et sont transférées au coup par coup aux stripes devant être reconfigurés. PipeRench présente encore d'autres inconvénients : - les stripes sont complexes car ils utilisent des interconnexions locales entre les cellules PE ; le nombre très important de bits qu'il faut transmettre pour la remise à jour de la configuration des stripes ;
- les application traitées doivent être du type flot de données et n'avoir que des boucles internes courtes (sur un seul stripe) ;
- les cellules PE (plus élaborées que celles des FPGA) correspondent à un grain encore trop fin pour pouvoir effectuer des traitements complexes ; si une application traitée est trop longue par rapport au nombre de stripes , le temps de latence pour un traitement complet peut devenir très important ; - enfin la consommation du composant est plus élevée d'environ 30% par rapport à celle d'un processeur classique . Les composants reconfigurables de l'art antérieur présentent donc certains inconvénients ou limitations : les ressources d'interconnexion prédominent sur celles de traitement, leur grain est trop fin, les ressources de routage nécessaires pour le contrôle du composant sont trop importantes, ils ne sont pas adaptables à toutes les applications d'un domaine donné (par exemple : tous les algorithmes symétriques en cryptographie) et ils ne peuvent pas traiter des applications différentes en même temps, ils ne sont pas adaptés pour le traitement de plusieurs types (flot de données ou données dépendantes) , leur taux d'utilisation n'est pas élevé notamment lorsque l'on fait des traitements multimodes (pipeline ou parallèle ou mixte) , ils ne sont pas modulables en terme de consommation d' énergie (basse consommation ou haut débit) .
EXPOSÉ DE L'INVENTION L'invention vise donc à palier aux inconvénients pré-cités mais aussi à assurer la sûreté structurelle et la robustesse (reconfiguration en cas de dysfonctionnement d'une partie du composant) du composant reconfigurable dynamique. Afin de pouvoir équilibrer les ressources d'interconnexion et de traitement dans le composant, les opérateurs complexes (au niveau du choix du grain) sont favorisés et les ressources d'interconnexion sont limitées. Les échanges liés au contrôle sont limités en instaurant un nombre de bits de contrôle réduit tout en autorisant des échanges de données à traiter larges. Les ressources de routage global ont été supprimées et ne sont conservées que des ressources locales ou pseudo-locales utiles aux transfert de données. Ce choix est lié à celui du grain de base de l'architecture du composant selon l'invention. Dans son mode de réalisation de base, le composant à architecture reconfigurable dynamiquement, pour le traitement de données, selon l'invention, est un composant comportant un bloc de traitement de données TD et un contrôleur général CG apte à contrôler le bloc TD caractérisé en ce que : le bloc TD comprend une pluralité de blocs élémentaires de traitement de données BE reconfigurables ; chaque bloc élémentaire BE comprenant deux entrées, El et E2 , pour la réception de données à traiter, et une sortie S pour la transmission de données traitées ; un bus de données d' entrée commun étant apte à transmettre des données à traiter à l'entrée El de chacun des blocs BE ainsi qu'au contrôleur CG ; pour chaque bloc BE, un bus de données de sortie, connecté à sa sortie S, étant apte à transmettre des données traitées vers l'extérieur du composant et, par un bus de données dérivé, à l'entrée E2 d'un seul autre bloc BE ; le contrôleur CG est apte à initialiser les configurations des blocs BE et commander leur reconfiguration dynamique, à contrôler les flux de données en sortie de chaque bloc BE de façon à transmettre des données soit vers l'extérieur soit vers l'entrée E2 d'un autre bloc BE, à contrôler les flux de données en entrée de chaque bloc BE. Ce mode de réalisation de base permet de palier à certains des inconvénients de l'art antérieur, notamment en ce qui concerne la complexité des interconnexions qui est ici fortement réduite. Le grain de la version de base du composant est le bloc élémentaire de traitement BE, il peut être capable de traiter des opérations complexes, et les interconnexions permettent la transmission série ou parallèle, ou la sortie vers l'extérieur, entre chaque paire de blocs BE consécutifs. Le contrôleur CG est bien sûr apte à gérer les problèmes de saturation de chaque bloc BE et il est aussi, classiquement, apte à émettre des requêtes vers l'extérieur pour faire recevoir des données à traiter par le bloc TD (le bloc TD étant apte à recevoir des données de l'extérieur du composant), à recevoir de l'extérieur des instructions pour le traitement de données par le bloc TD, et les mémoriser et à échanger des signaux de contrôle avec l'extérieur. Le mode de réalisation de base du composant selon l'invention est illustré, sur un exemple particulier, sur la figure 1 : le composant comporte un bloc de traitement de données TD (1) et un contrôleur général CG (2) , le bloc TD peut recevoir des données de l'extérieur (3) et comprend trois blocs élémentaires de traitement de données BE (4,5,6) ; sur le bloc (4) sont indiquées les entrées El et E2 ainsi que la sortie S, l'entrée El de chaque bloc BE est reliée au bus de données d'entrée commun (7), la sortie S de chaque bloc BE est connectée à un bus de sortie (8,9,10) vers l'extérieur et à l'entrée Ξ2 d'un seul autre bloc par un bus de données dérivé (11,12,13). Les bus de contrôle reliant le contrôleur CG (2) aux blocs BE ou à l'extérieur ne sont pas représentés. Dans un mode de réalisation à utilisation maximale de bloc, dépendant du mode de base, le contrôleur CG du composant selon l'invention est apte à commander la transmission des données reçues de l'extérieur sur le bus de données d'entrée commun, au fur et à mesure de leur arrivée, successivement à chacun des blocs BE, les données étant transmises à un bloc BE suivant lorsque la capacité maximale de traitement du bloc BE précédent est atteinte. Ce mode de réalisation permet à la fois de gérer la saturation des blocs et d'assurer que chaque bloc utilisé l'est au maximum de ses capacités de traitement. La capacité maximale de chaque bloc, par exemple, peut être prédéfinie (et donnée au contrôleur CG) ou bien un bloc peut indiquer au contrôleur CG qu'il est saturé en cours de traitement. Dans un autre mode de réalisation, dit à modes de traitement multiples, du composant selon l'invention, dépendant de l'un ou l'autre des deux modes de réalisation précédents, le contrôleur CG est apte à initialiser les configurations des blocs BE, bloc par bloc, et commander la reconfiguration dynamique des blocs, bloc par bloc, de façon à rendre le bloc TD apte à traiter des données en mode pipeline ou en mode parallèle ou en mode mixte. Avec cette version du composant il est possible d'effectuer un traitement en mode pipeline, c'est-à-dire en faisant circuler les données de la sortie S d'un bloc à l'entrée E2 du bloc auquel il est connecté par un bus dérivé, ou bien en mode parallèle, c'est-à-dire en utilisant les blocs de manière indépendante (le bloc traite les données transmises par le bus de données d'entrée commun et transmet le résultat en sortie, le bus dérivé n'est alors pas utilisé), ou bien en mode mixte, c'est-à-dire que certains blocs travaillent en parallèle et d'autres en pipeline. Cette version du composant est particulièrement avantageuse pour sa souplesse d'adaptation et aussi parce qu'elle permet de traiter des application différentes, en même temps, sur des blocs BE fonctionnant en mode indépendant, à la différence de l'art antérieur, grâce à la reconfiguration bloc par bloc. Un autre mode de réalisation, selon l'invention, d'un composant à architecture reconfigurable dynamiquement, dit à lignes d'unités de traitement, est un composant conforme à l'un quelconque des modes de réalisation précédents et dans lequel :
- chaque bloc BE du bloc TD comprend une pluralité d'unités de traitement de données UT configurables, et correspond à une ligne d'un réseau matriciel d'unités UT dans le bloc TD ; les unités UT de chaque paire d'unités successives dans chaque bloc BE étant aptes à échanger des données via un bloc de communication bidirectionnelle configurable associé BCOM dédié à ces deux unités ;
- l'unité UT d'entrée de chaque bloc BE, qui correspond à la première unité UT sur la ligne correspondant au bloc, est apte à recevoir en entrée des données reçues sur les entrées El ou E2 du bloc, et l'unité UT de sortie du bloc, qui correspond à la dernière unité UT sur la ligne correspondant au bloc, est apte à transmettre en sortie des données traitées à la sortie S du bloc ;
- le contrôleur CG est apte, pour chaque bloc BE, à recevoir de l'extérieur des instructions pour le traitement de données par chacune des unités UT du bloc et à les mémoriser, à initialiser les configurations de chaque unité UT et de chaque bloc BCOM du bloc BE et à commander leur reconfiguration dynamique. Ce mode de réalisation utilise des blocs de communication BCOM, permettant des communications bidirectionnelles entre unités UT de traitement adjacentes d'un même bloc BE : cette organisation d'un bloc BE autorise une grande souplesse de configuration du bloc {car chaque UT est reconfigurable) , notamment pour les traitements multimodes. De plus, il est possible d'utiliser une interconnexion simple, pour les bus de contrôle, entre les unités UT, le blocs BCOM et le contrôleur CG : par exemple, chaque unité UT de chaque bloc BE peut être connectée au contrôleur CG par un bus de contrôle commun pour le bloc BE ; de même, chaque bloc BCOM de chaque bloc BE peut être connecté au contrôleur CG par un bus de contrôle commun pour le bloc BE. L'homme du métier notera que, lors d'un fonctionnement en parallèle, la structure avec un nombre pair d'unités UT sur une ligne est plus efficace : en effet, après le remplissage d'un bloc BE avec des données (du début vers la fin du bloc) et quand le bloc BE est saturé de données, si le nombre d'unités UT est pair et du fait du caractère bidirectionnel des blocs BCOM, les unités peuvent travailler par paires alors que si le nombre d'unités est impair il restera une unité inutilisée. La structure du bloc TD est équivalente à un réseau matriciel : les blocs BE, et leurs unités UT, en forment les lignes ; d'une ligne à l'autre, les unités UT (de rang correspondant sur les lignes) en forment les colonnes. La figure 2 illustre un exemple de structure d'un bloc BE du composant à lignes d'unités de traitement : le bloc BE (14) comprend 4 unités de traitement UT (15) alternant avec des blocs de communication BCOM (16) ; l'unité UT d'entrée (15) du bloc est apte à recevoir des données en entrée via un bus de données (18) et l'unité UT de sortie (17) du bloc est connectée en sortie (19) à la sortie S du bloc. Les unités UT sont connectées par un bus de contrôle commun (20) au contrôleur CG (non représenté) , et les blocs de communication BCOM sont connectés par un bus de contrôle commun (21) au contrôleur CG. Un autre mode de réalisation du composant selon l'invention, dépendant du mode de réalisation à lignes d'unités de traitement, est un composant, dit à registres inter-lignes, dans lequel :
- les blocs BCOM de chaque paire de blocs BCOM, dont les unités UT associées sont, selon le réseau matriciel d'unités du bloc TD, sur des colonnes adjacentes et sur des lignes adjacentes, sont aptes à échanger des données par un registre inter-lignes associé REG, de façon à permettre l'échange de données entre unités UT d'une ligne à l'autre; - le contrôleur CG est apte à commander la reconfiguration dynamique des unités UT et des blocs BCOM du bloc TD pour rendre le bloc TD apte à traiter des données en mode à lignes dépendantes, pour au moins deux lignes adjacentes du réseau matriciel, en commandant la bifurcation des données entre deux blocs BE correspondant aux deux lignes adjacentes, via un registre inter-lignes REG entre ces deux lignes. Le composant à registres inter-lignes est particulièrement avantageux en ce qu'il permet de disposer d'un mode de traitement supplémentaire par rapport à l'art antérieur : le mode à lignes dépendantes (ou, de manière équivalente, à blocs BE dépendants) . Ceci accroît encore les possibilités de traitement et permet d'améliorer le taux d'utilisation des ressources du composant ainsi que le débit de données. Par exemple si l'on dispose de deux lignes capables de traiter chacune 256 bits de données, le passage en mode dépendant entre ces lignes permet de traiter 512 bits de données. L'homme du métier notera qu'avec une architecture PipeRench, à chaque coup d'horloge, on peut au mieux avec deux stripes réaliser une reconfiguration d'un stripe et une exécution sur l'autre ; ceci implique qu'une seule donnée peut être traitée à la fois, alors qu'avec l'architecture selon l'invention on peut traiter deux données avec deux unités adjacentes car durant les transferts d'unité à unité, les unités sont reconfigurées. L'invention concerne aussi un composant avec contrôle de registre, qui est un mode de réalisation dépendant du mode précédent à registres interlignes, dans lequel le contrôleur CG est apte à transmettre, via un bus de contrôle, des signaux de type RESET ou ENABLE ou d'horloge à chaque registre REG du bloc TD, et dans lequel chaque registre inter-lignes REG entre deux blocs BCOM est apte à : - stocker des données reçues d'un bloc BCOM dans une mémoire et les rendre disponibles pour l'autre bloc BCOM ; recevoir des signaux de type RESET ou ENABLE ou d'horloge émis par le contrôleur CG et exécuter les commandes correspondantes à ces signaux. Ce contrôle de registre inter-lignes, pour le stockage en vue de la transmission de données entre deux blocs de communication, activé par la commande ENABLE, ou pour la remise à zéro de la mémoire de stockage, activée par la commande RESET, permet de faciliter la gestion des transferts par le contrôleur CG. Un autre mode de réalisation de l'invention, dépendant de l'un quelconque des modes précédents, concerne un composant avec multiplexage dans lequel : les entrées El et E2 d'un bloc BE sont celles d'un multiplexeur associé au bloc, la sortie du multiplexeur étant connectée à l'entrée de l'unité UT d'entrée du bloc BE pour la transmission de données à cette unité. Cette version du composant permet donc de simplifier les connexions en n'ayant qu'une seule entrée pour l'unité UT d'entrée de bloc BE, pour recevoir des données des entrées El ou E2 du bloc . Le mode de réalisation de l'invention, dépendant de l'un quelconque des modes de réalisation du composant à lignes d'unités de traitement ou à registres inter-lignes ou avec contrôle de registre ou avec multiplexage, concerne un composant avec banc de cellules dans lequel : les unités de traitement de données UT du bloc TD sont des bancs de cellules élémentaires synchrones de traitement de données CE configurables, chaque banc comportant au moins une cellule élémentaire CE ; les cellules CE de toute unité UT d'un bloc BE quelconque sont connectées à un bus de contrôle commun qui les relie au contrôleur CG, le contrôleur CG étant apte à contrôler les cellules CE et à commander leur reconfiguration; pour chaque paire d'unités UT adjacentes dans un bloc BE, les cellules élémentaires d'une unité UT sont aptes à échanger des données avec les cellules élémentaires de l'autre unité UT via le bloc BCOM associé à ces unités, le bloc BCOM étant apte à réaliser ces échanges de données ; chaque cellule CE de l'unité UT d'entrée de chaque bloc BE, qui correspond à la première unité UT sur la ligne correspondant au bloc, est apte à recevoir en entrée des données reçues en entrée de l'unité UT par un bus de données commun à toute cellule CE de l'unité UT; chaque cellule CE de l'unité UT de sortie de chaque bloc BE, qui correspond à la dernière unité UT sur la ligne correspondant au bloc, est apte à transmettre en sortie des données à la sortie S du bloc par un bus de données commun à toute cellule CE de l'unité UT. Cette version du composant, dans laquelle la cellule synchrone configurable CE est le grain fin de l'architecture (bien qu'il s'agisse d'un gros grain par rapport aux architectures de l'art antérieur), permet de paralléliser localement le travail des cellules élémentaires CE d'une unité UT, tout en ayant des interconnexions réduites puisque les cellules CE d'une même unité de traitement n'échangent pas de données entre elles. Une unité UT (ou banc) comporte en général n cellules CE et, si k désigne la taille des opérandes manipulés par les cellules élémentaires, l'unité UT est apte à traiter des blocs de p bits, avec p = n * k. La figure 3 illustre un banc UT de cellules CE (22) , comportant ici 8 cellules, et les connexions de chacune de ces cellules avec un bus de données d'entrée (23) pour la transmission de données à traiter, et avec un bus de données de sortie (24) pour la transmission de données traitées ; les cellules CE sont connectées au contrôleur CG (non représenté) par un bus de contrôle commun (25) . La figure 4 illustre, pour un bloc BE, un exemple de connexions entre deux bancs de cellules CE adjacents au sein du bloc via un bloc BCOM : le bloc BCOM (26) permet la transmission de données entre une cellule CE (28) d'une première unité UT et les cellules (29) , (30) et (31) d'une deuxième unité UT selon des signaux de commande reçus du contrôleur CG par ces cellules, via le bus de contrôle des cellules (32) , et par le bloc BCOM, via le bus de contrôle (33) ; la cellule (35) recevant des données de la cellule (34) . Ceci illustre les transferts bidirectionnels (27) permis par le bloc BCOM entre cellules de bancs (ou unités) différents, alors que dans une même unité UT les cellules CE ne communiquent pas (par exemple les cellules (28) et (35) ) . L'invention concerne aussi un mode de réalisation du composant, dit avec contrôle local de communication, dépendant du mode précédent avec banc de cellules, dans lequel chaque bloc BCOM, associé à des unités UT, comporte : un bloc de transmission BT apte à réaliser des échanges de données entre les cellules élémentaires CE d'une unité UT et les cellules CE de l'autre unité UT auxquelles BCOM est associé ; le bloc BT étant apte à être configuré par un contrôleur local de bloc CLB; - un contrôleur local de bloc CLB apte à recevoir et interprêter des signaux de contrôle provenant du contrôleur CG et à configurer le bloc BT, selon des données de configurations reçues et stockées dans une mémoire de configuration locale MB, pour la transmission de données ; le contrôleur CLB étant apte à gérer le chargement de la mémoire MB en fonction de signaux de contrôle reçus du contrôleur CG ; un contrôleur général CG apte à contrôler les contrôleurs locaux CLB du bloc TD. Ce composant avec contrôle local de communication présente de nouveaux avantages : les blocs de communication BCOM sont en effet reconfigurables et il est possible de choisir les cellules élémentaires CE à interconnecter (entre unités UT adjacentes d'un bloc BE) , ce degré de liberté supplémentaire permettant encore plus de souplesse de traitement et d'efficacité d'utilisation des cellules (notamment pour le mappage des opérateurs élémentaires dans les cellules). Les communications entre bancs, via les blocs BCOM, sont bidirectionnelles, ce qui est un avantage sur les composants de type PipeRench où le passage des données entre stripes est unidirectionnel. A titre d'exemple, le contrôleur CLB comprendra typiquement, outre la mémoire vive MB (ou 'RAM'), une machine à états finis (ou FSM, 'Finite State Machine') de contrôle. Dans un autre mode de réalisation du composant selon l'invention, avec contrôle local de cellule, dépendant du mode de réalisation avec banc de cellules ou du mode avec contrôleur local de communication, chaque cellule élémentaire synchrone CE d'un banc comporte :
- un bloc opérateur BO apte à recevoir des données en entrée par un bus de données d'entrée, à les stocker et à effectuer un traitement sur ces données selon des signaux de configuration provenant d'un contrôleur local de cellule CLC ; à transmettre le résultat du traitement en sortie par un bus de données de sortie;
- un contrôleur local de cellule CLC apte à : - recevoir des données par le bus de données d'entrée ; - gérer les différents modes de fonctionnement de la cellule CE, c'est-à-dire un mode d'initialisation, pour le chargement des mots de configuration de la cellule dans une mémoire de configuration locale MC, un mode de test, pour effectuer des tests structurels de la cellule, et un mode normal pour l'exécution des opération de traitement de données, en fonction de signaux de configuration émis par le contrôleur CG et reçus par le contrôleur local via le bus de contrôle commun ; - gérer le chargement de la mémoire MC en fonction d'un mode de fonctionnement de la cellule indiqué par le contrôleur CG ; - interpréter des signaux de configuration reçus du contrôleur CG pour soit charger un mot de configuration correspondant dans un registre de configuration local RCL pour le maintenir pendant le cycle de traitement de données par la cellule, soit configurer le bloc BO en fonction d'un mot de configuration figurant dans le registre RCL ; - effectuer des tests structurels de la cellule CE sur réception d'un signal de mode test émis par le contrôleur CG ; - un contrôleur général CG apte à contrôler les contrôleurs locaux CLC du bloc TD. Dans ce composant avec contrôle local de cellule, les cellules CE d'un banc sont reconfigurables. L'efficacité de traitement est donc accrue et notamment il est possible de traiter plusieurs applications. Le bloc TD est alors apte à traiter ces applications différentes, y compris de manière simultanée. De plus, il est possible d'effectuer des tests sur les cellules et ainsi détecter des défaillances. L'homme du métier notera que la stratégie de fonctionnement du composant diffère de celle de l'art antérieur dans lequel les 'cellules' voisines peuvent communiquer entre elles, ici on profite d'une reconfiguration de cellules pour réaliser des échanges de données entre les cellules (de bancs différents) . La stratégie de contrôle, quant à elle, repose sur un contrôle à deux niveaux : celui du contrôleur général CG au niveau haut de l'architecture et celui du contrôle local tant au niveau du grain fin (contrôleurs CLC des cellules CE) qu'au niveau des blocs de communication (contrôleurs CLB) . Par rapport au FPGA du brevet US6,150,839, dans lequel la reconfiguration se fait par blocs de cellules, il est ici possible de reconfigurer cellule par cellule ; de plus l'architecture selon l'invention peut se reconfigurer en un cycle d'horloge au lieu plusieurs cycles nécessaires (du fait du temps nécessaire au chargement de la nouvelle configuration dans un bloc) pour ce FPGA. A titre d'exemple de réalisation, le bloc BO comprendra typiquement une LUT, une mémoire vive et une unité arithmétique logique ( ou ALU, 'Arithmetic Logic Unit' ) . Dans un autre mode de réalisation d'un composant selon l'invention, ou composant à configuration par numéro, qui dépend du mode de réalisation précédent avec contrôle local de cellule, le contrôleur local de cellule CLC est apte à interpréter des signaux de configuration reçus du contrôleur CG pour d'abord lire un numéro de configuration de cellule sur le bus de contrôle commun puis charger un mot de configuration correspondant localement à ce numéro, selon une table de correspondance locale, dans le registre RCL ; les numéros de configuration de cellule étant stockés dans une mémoire du contrôleur CG et le contrôleur CLC étant apte à mémoriser la table de correspondance locale. Ce mode de réalisation a l'avantage de requérir beaucoup moins de ressources de transmission, et donc de simplifier la connectique du composant. En effet, la transmission d'un simple numéro de configuration nécessite un bus de contrôle beaucoup moins large que celui nécessaire pour la transmission d'un mot de configuration ; ceci étant possible grâce à la table de correspondance locale. De plus, la correspondance locale entre un numéro et un mot de configuration introduit un degré de liberté intéressant : un même numéro peut en effet correspondre à des mots de configuration différents dans des cellules différentes, puisque les tables de correspondance sont locales . L'invention concerne aussi un mode de réalisation du composant, dit avec BYPASS, dépendant du mode de réalisation précédent à configuration par numéro ou du mode avec contrôle local de cellule, dans lequel le contrôleur CG est apte à recevoir d'une cellule CE une indication de dysfonctionnement résultant d'un test structurel mis en œuvre sur cette cellule, et à commander au contrôleur local CLC de la cellule CE de configurer la cellule en mode BYPASS. Ce mode de réalisation avec BYPASS (ou dérivation) permet d'obtenir un composant robuste au niveau des cellules CE. De même, il est possible d'obtenir la robustesse au niveau des blocs BCOM grâce à un mode de réalisation d'un composant selon l'invention, dit avec BYPASS de communication, qui dépend du mode de réalisation précédent avec BYPASS et du mode avec contrôle local de communication, dans lequel le contrôleur local de bloc CLB d'un bloc de communication BCOM, connecté à une unité UT, est apte à configurer le bloc BCOM en mode BYPASS lorsque le contrôleur CG, ayant reçu d'une ou plusieurs cellules CE de l'unité UT une indication de dysfonctionnement, transmet au contrôleur CLB un signal de passage en mode BYPASS ; le contrôleur CG étant apte à commander le passage en mode BYPASS d'un bloc BCOM d'une unité UT lorsqu'une commande de configuration en mode BYPASS d'une cellule CE de l'unité UT a été transmise au contrôleur local CLC de la cellule CE. Avec le mode de réalisation avec by-pass de communication, un fonctionnement dégradé du composant (c'est-à-dire avec perte d'unités UT ou de blocs BCOM) est donc permis. L'homme du métier notera que la possibilité de commander des cellules ou des blocs BCOM en mode BYPASS offre notamment celle de disposer, dans un bloc BE, d'unités UT ou de blocs BCOM 'supplémentaires' qui ne sont pas utilisés en l'absence de dysfonctionnement mais qui peuvent être activés (via le contrôleur CG) en cas de dysfonctionnement dans le bloc ; ceci permettant de renforcer encore la robustesse du composant. Un mode de réalisation d'un composant selon l'invention, dit avec registre local, permet d'augmenter la capacité de traitement du composant. Dans ce mode de réalisation, dépendant de l'un quelconque des modes avec banc de cellules ou à contrôle local de communication ou à contrôle local de cellule ou à configuration par numéro ou avec by-pass ou avec by-pass de communication, le résultat du traitement de données effectué par une cellule CE est apte à être stocké dans un registre local ; un résultat stocké dans ce registre local étant maintenu lors d'une reconfiguration de la cellule. Le composant avec registre local permet donc de sauvegarder les données calculées pendant une reconfiguration et un autre avantage lié à cette sauvegarde, et cela même si le bloc BE du composant est
'minimal' c'est-à-dire réduit à deux unités UT et un bloc BCOM, est que grâce au bloc BCOM à communication bidirectionnelle, il est possible de traiter deux données en même temps au niveau du bloc BE et transmettre les résultats, alors que dans une architecture PipeRench on ne peut traiter qu'une donnée avec deux stripes (pendant qu'un stripe effectue le traitement, l'autre se reconfigure), et ceci suppose bien sûr que les données soient sauvegardées pendant la reconfiguration. Un autre avantage important dû à ce registre local est de permettre l'échange de données stockées entre deux unités UT pendant la phase de reconfiguration, ce qui contribue à masquer le cycle de reconfiguration . Un autre mode de réalisation d'un composant selon l'invention, dépendant de l'un quelconque des modes de réalisation précédents de l'invention, concerne un composant avec gestion d'entrée-sortie comportant : - un bloc de gestion d'entrée GE apte à recevoir des données de l'extérieur et à stocker temporairement ces données reçues, à formater des données stockées selon le mode d'initialisation ou le mode normal indiqué par le contrôleur CG via un bus de contrôle propre, à transmettre des données formatées à l'entrée El des blocs BE du bloc TD via le bus de données d'entrée commun ; un bloc de gestion de sortie GS, connecté au contrôleur CG par un bus de contrôle propre pour la commande de réception de données traitées, connecté au bus de données de sortie de chacun des blocs BE du bloc TD pour recevoir des données traitées, et apte à reformater des données traitées reçues, à stoker dans une mémoire tampon des données reformatées, à recevoir une requête de transmission depuis l'extérieur, à transmettre à l'extérieur des données stockées dans la mémoire tampon sur requête reçue de l'extérieur. Cette version du composant, avec gestion d'entrée-sortie, facilite les échanges des données avec l'extérieur (en particulier avec le stockage temporaire de données) et donc l'utilisation du composant par divers dispositifs. L'homme du métier peut remarquer que le gestionnaire d'entrée GE permet une simplification de l'implantation d'une application à traiter (ou mappage de l'application) sur le composant. La figure 5 illustre un exemple d'un composant avec gestion d'entrée-sortie : un gestionnaire d'entrée GE (36) qui reçoit des données de l'extérieur par un bus de données (43) et transmet des données formatées à trois blocs BE (40,41,42) par un bus de données commun (44) ; les bus de données de sortie des blocs BE (45,46,47) sont connectés au gestionnaire de sortie GS (37) qui transmet à l'extérieur des données reformatées' par un bus de données (48) ; le contrôleur général CG est connecté à GE par un bus de contrôle (38) , à GS par un bus de contrôle (39), aux blocs BEI, BE2 et BE3, respectivement, par les bus de contrôle (49,50,51). L'homme du métier sait qu'un composant reconfigurable doit pouvoir être testé régulièrement. Une méthode bien connue pour cela est la méthode JTAG [5] , normalisée par IEEE, qui est aussi utilisée pour le chargement (ou le rechargement) de mots de configuration grâce à la possibilité offerte par la norme IEEE de disposer d'instructions spécifiques à un utilisateur; le composant doit alors intégrer un contrôleur TAP et des bus de contrôle spécifiques. C'est pourquoi un autre mode de réalisation d'un composant selon l'invention, dépendant de l'un quelconque des modes de réalisation du composant avec contrôle local de cellule ou à configuration par numéro ou avec BYPASS ou avec BYPASS de communication ou avec registre local ou avec gestion d'entrée-sortie, est un composant avec JTAG dans lequel le contrôleur local CLC de cellule CE, le contrôleur local CLB de bloc BCOM et le contrôleur général CG sont aptes à mettre en œuvre une méthode JTAG pour le chargement des configurations en phase de reconfiguration dynamique du composant, et pour la réalisation de tests ; le contrôleur CG comprenant un contrôleur TAP connecté par des bus série JTAG, bloc BE par bloc BE, aux cellules CE et aux blocs BCOM du bloc TD. Le choix du protocole JTAG, appliqué au niveau local, est tout à fait compatible avec le choix du contrôle à deux niveaux déjà évoqué. Ce dernier s'explique par le fait que l'on veut pouvoir reconfigurer les cellules en un temps très court (une période d'horloge au maximum) : une reconfiguration au plus proche de l'opérateur de base est le plus efficace car on minimise l'échange d'information et donc son interprétation. Un des avantages de ce choix étant qu'il permet de réduire de façon considérable les ressources de routage pour le contrôle (un bus pour quelques bits de contrôle au lieu d'un bus de contrôle de la largeur d'un mot de configuration), et cette économie importante permet de diminuer la contrainte pour les bus de données . La figure 6 est une illustration d'un exemple d'insertion d'une chaîne JTAG dans un ensemble, au sein d'un bloc BE, comprenant deux bancs de cellules CE et le bloc BCOM de communication associé : la chaîne JTAG (52) est connectée successivement aux cellules CE du premier banc (53) , au bloc BCOM (54) et aux cellules CE du deuxième banc (55) ; cette connexion de contrôle vient en plus des bus de contrôle (sans JTAG) des cellules (56) et du bus de contrôle du bloc BCOM (57) qui sont connectés au contrôleur CG (non représenté) . Un autre composant selon l'invention, est un composant à gros grain, conforme à l'un quelconque des modes de réalisation de l'invention à lignes d'unités de traitement ou à registres inter-lignes ou avec contrôle de registre ou avec multiplexage ou avec banc de cellules ou avec contrôle local de communication ou avec contrôle local de cellule ou à configuration par numéro ou avec BYPASS ou avec BYPASS de communication ou avec registre local ou avec gestion d'entrée-sortie ou avec JTAG, dans lequel, sur les lignes du réseau, les unités UT sont en nombre pair N et les blocs BCOM sont répartis dans N/2 cellules de base CB, chaque cellule CB comportant deux unités UT adjacentes et le bloc BCOM associé à ces unités ; le contrôleur CG étant apte à commander la reconfiguration dynamique des cellules CB du réseau et des blocs BCOM de communication entre cellules CB, ligne par ligne, pour rendre le bloc TD apte à traiter des données au moyen des cellules CB. Cette version du composant selon l'invention fait apparaître un organe très important en matière de traitement de données qui est la cellule de base CB . Ainsi on dispose d'une architecture reconfigurable à trois niveaux hiérarchiques : celui de la cellule élémentaire CE (grain fin) pour l'exécution synchrone d'opérations élémentaires, celui de la cellule de base (gros grain) permettant de réaliser des traitements complexes, et enfin celui du composant lui- même. Le nombre plus ou moins grand de cellules de base configurées pour exécuter un traitement de données détermine alors le caractère, respectivement, à haut débit de données ou à basse consommation d'énergie du composant. Ce caractère, adaptable suivant des signaux de commande (au niveau du contrôleur CG) , combiné aux grandes possibilités de configuration (ou de reconfiguration) de chaque cellule CB (via celles des cellules CE et du bloc BCOM) permet d'atteindre les buts visés par l'invention. Enfin, l'invention concerne un dernier mode de réalisation du composant, dépendant du mode de réalisation à gros grain, dit à gros grain autonome, pour le traitement d'un ensemble d'applications comportant au moins une application, dans lequel chaque cellule de base CB du bloc TD configurée pour effectuer un traitement est apte à réaliser les opérations nécessaires au traitement complet d'au moins une application de l'ensemble, chaque application de l'ensemble étant apte à être réalisée complètement par au moins une cellule de base CB. Ce composant à gros grain autonome est la version optimale du composant à architecture reconfigurable de manière dynamique selon l'invention. Il est capable de traiter un ensemble d'applications (qui peut se réduire à une seule application) grâce à des cellules de base autonomes quant au traitement de ces applications. Cette autonomie des cellules CB permet de bénéficier de manière optimale des possibilités très souples de reconfiguration du composant et d'utilisation des divers modes de traitement en pipeline, en parallèle, mixte ou en lignes dépendantes ou de leurs diverses combinaisons.
BRÈVE DESCRIPTION DES DESSINS Les caractéristiques et avantages de l'invention exposée plus haut, ainsi que d'autres qui ressortiront de la description suivante de modes particuliers de réalisation, donnés à titre d'exemples, apparaîtront davantage en se référant aux dessins annexés, sur lesquels : - la figure 1, décrite plus haut, illustre le mode de réalisation de base du composant selon l'invention, dans un cas particulier avec trois blocs élémentaires BE ; - la figure 2, décrite plus haut, illustre un exemple de structure d'un bloc BE du composant à lignes d'unités de traitement ; - la figure 3, décrite plus haut, illustre une unité de traitement UT avec cellules CE du composant avec banc de cellules ; - la figure 4, décrite plus haut, illustre, pour un bloc BE, un exemple de connexions entre deux bancs de cellules CE adjacents au sein du bloc BE via un bloc BCOM d'un composant avec banc de cellules ; - la figure 5, décrite plus haut, illustre un exemple d'un composant avec gestion d'entrée- sortie ; - la figure 6, décrite plus haut, est une illustration d'un exemple d'insertion d'une chaîne JTAG dans une partie d'un composant avec JTAG ; - la figure 7 est un schéma d'une vue générale d'un composant à gros grain autonome ; - la figure 8 est un schéma illustrant la phase de remplissage d'une ligne de cellules de base en mode parallèle ; - la figure 9 est un schéma illustrant la phase de bouclage d'une ligne de cellules de base en mode parallèle ; - la figure 10 est un schéma illustrant la phase de vidage d'une ligne de cellules de base en mode parallèle ; - la figure 11 est un schéma résumant les étapes de fonctionnement en mode parallèle d'un composant à gros grain autonome .
EXPOSÉ DÉTAILLÉ D'UN MODE DE RÉALISATION PARTICULIER Le fonctionnement d'un exemple de réalisation d'un composant à gros grain autonome selon l'invention comporte plusieurs phases qui peuvent correspondre à des stratégies d'utilisation différentes. Parmi toutes ces phases, la mise en œuvre des phases suivantes (à titre d'exemple) sera détaillée : celles d'initialisation, de fonctionnement normal d'un fonctionnement en parallèle. La figure 7 illustre l'exemple de composant retenu : un composant à deux lignes (ou deux blocs BE) , la ligne d'indice 0 et la ligne d'indice 1, avec sur chaque ligne deux cellules de base CB et leurs unités de traitement UT indicées par un couple (i,j) ou i est l'indice de ligne et j celui de colonne. Ainsi, sur la ligne 0, la cellule CB(0,1) (60) comprend les unité UT (0,1) et UT (0,2) et leur bloc de communication associé BCOM (0,1) (63) pour lequel les indices sont, par convention, ceux de l'unité UT précédant le bloc sur la ligne ; la seconde cellule CB(0,2) (62) sur la ligne communique avec la première via le bloc BCOM (0,2)
(64) et comprend les unités UT (0,3) et UT (0,4) et le bloc BCOM(0,3) (65). De même, la seconde ligne comprend les cellules de base CB(1,1) (66) et CB(1,2) (67), respectivement formées de UT(1,1), BCOM(l,l) (68), UT(1,3) et UT(1,3), BCOM(l,3) (69), UT(1,4), qui communiquent via le bloc BCOM(l,2) (70) . Des registres interlignes (71,72,73) font respectivement communiquer les blocs BCOM(0,1) (63) et BCOM(l,l) (68), BCOM(0,2) (64) et BCOM (1,2) (70), BCOM (0,3) (65) et BCOM (1,3) (67) . Le composant comporte un bus de données d'entrée du bloc TD (74), un gestionnaire d'entrées GE (75) connecté au bus de données d'entrée commun (76), un bus de données de sortie du bloc TD (77) connecté au gestionnaire de sortie GS (78) qui reçoit les bus de données de sortie respectivement des lignes 0 (79) et 1 (80) . Le contrôleur général CG (81) relié : au bus de contrôle commun des unités UT de la ligne 0 (82) et au bus de contrôle commun des blocs BCOM de la ligne 0 (83), au bus de contrôle commun des unités UT de la ligne 1 (84) et au bus de contrôle commun des blocs BCOM de la ligne 1 (85) ; le contrôleur CG étant apte à échanger des signaux de contrôle avec l'extérieur (86) ou avec un registre à décalage périphérique (87) ('Boundary Scan') pour le contrôle JTAG.
a) la phase d'initialisation Lors de cette phase, on charge les différentes données de configuration utiles dans les différentes mémoires. Cette phase existe après un reset de mise sous tension ou après un reset logiciel provoqué. Le chargement se fait par le bus de données
(76) (chargement en parallèle) . On charge en premier lieu les configurations des cellules ligne par ligne successivement, puis on procède de même pour les blocs de communication. Ensuite des tests sont effectués sur le composant pour vérifier la bonne configuration initiale ainsi que la sûreté structurelle (par exemple avec un test BIST) : à l'issu de cette étape le contrôleur CG signale à l'extérieur que le composant est prêt à recevoir des données.
b) phase de fonctionnement en parallèle Dans cet exemple, les lignes fonctionnent de façon autonome l'une par rapport à l'autre, et toutes les étapes décrites ci-après sont synchronisées à l'horloge (indiquée par Clock sur les dessins) . Au niveau de chaque ligne, il y a trois étapes de fonctionnement : - une étape 1 de chargement de ligne, par exemple la ligne 0, la ligne étant considérée comme un pipeline que 1 ' on remplit .
L'étape 1 est illustrée, pour le remplissage de la ligne 0 (en référence à la figure 7) , sur la figure 8 : en 8a les opérations exécutées par les unités sont indiquées par opl, op2 etc.. ; en 8b est représenté un chronogramme correspondant aux opérations effectuées sur la ligne 0, les impulsions de l'horloge sont représentées en haut du chronogramme (Clock) . Le gestionnaire GE récupère des blocs de données, par exemple de 64 bits, et reconstitue le mot de p bits qui sera envoyé sur la première unité UT de la ligne UT(0,1) de la première cellule CB(0,1). On charge U (0,1) avec la première donnée 1 qui exécute l'opération 1, puis on transfère le résultat vers UT(0,2) ; ensuite UT(0,1) exécute l'opération 1 sur un bloc de données 2 tandis que UT (0,2) exécute l'opération 2 sur le bloc de données 1. On réalise de nouveau le transfert jusqu'à atteindre le bout de la ligne (toutes les unités de traitement sont occupées par une donnée) .
- une étape 2 de bouclage (exemple de la ligne 0) : pour réaliser le reste du traitement à effectuer (de l'application) en n'employant que les ressources de la ligne. On travaille alors par cellules de base (autonomes) pour réaliser le traitement en parallèle. L'étape 2 est illustrée, pour le bouclage de la ligne 0, sur la figure 9 : en 9a les opérations effectuées par les unités de la ligne sont indiquées ; en 9b est représenté un chronogramme de cette étape de bouclage ; la notation 'donnée 4/3' indiquant un échange des données traitées 4 et 3 entre les unités UT (0,1) et UT ( 0 , 2 ) .
- une étape 3 de vidage de ligne, qui est illustrée, pour le vidage de la ligne 0, sur la figure 10 : en 10a les opérations effectuées par les unités de la ligne sont indiquées ; en 10b est représenté un chronogramme de cette étape de vidage : lorsqu'on arrive à la fin de l'algorithme, la cellule de base connectée au bus de sortie CB(0,2) va pouvoir décharger les données traitées, on passe à la phase de vidage du pipeline. En effet, l'unité UT (0,4) de la deuxième cellule décharge le bloc de données 1 qui vient d'être traité dans le gestionnaire GS . Cependant, le bloc de données 2, dans UT (0,3), n'a pas encore subi la dernière opération. Il passe donc dans UT(0,4) pour subir cette opération, l'unité UT (0,2) transférant son bloc de données 3 à UT(0,3) etc., jusqu'au vidage complet de la ligne 0. Dès que le gestionnaire de sortie a une nouvelle donnée traitée, il le signale à l'extérieur pour sa récupération. Ce schéma se répète, en parallèle, pour la ligne 1. La figure 11 résume les étapes précédentes et indique les traitements effectués en parallèle sur les lignes 0 et 1 du composant représenté en lia. Les étapes effectués sur chacune de ces lignes, au cours du temps, sont représentées sur un chronogramme en 11b.
REFERENCES
[1] : E.Tau, I.Eslick, D.Chen, J.Brown, A.DeHon : 'A First Génération DPGA Implementation' , in Proceedings of the Third Canadian orkshop on Field-Programmable Devices, pages 138-143, May 1995.
[2] : André DeHon : 'Reconfigurable Architectures for General-Purpose Computing', Ph.D. Thesis, MIT, August 1996.
[3] : S.Copen Goldstein, H.Schmit, M.Budiu, S.Cadambi, M.Moe and R.Taylor : 'PipeRench : A Reconfigurable Architecture and Compiler' , in IEEE Computer, vol.33, N°4, April 2000.
[4] : Benjamin A.Levine and Herman H.Schmit : 'PipeRench : Power and Performance Evaluation of a Programmable Pipelined Datapath' , Hot Chips 14, Palo Alto, CA, August 2002.
[5] : JTAG; Test Technology Standards Committee "IEEE Std. 1149.1 Standard Test Access Port and Boundary-Scan Architechture" , Institute of Electrical and Electronics Engineers, October 21, 1993.

Claims

REVENDICATIONS
1. Composant à architecture reconfigurable dynamiquement pour le traitement de données comportant un bloc de traitement de données TD et un contrôleur général CG apte à contrôler le bloc TD caractérisé en ce que : le bloc TD comprend une pluralité de blocs élémentaires de traitement de données BE reconfigurables ; chaque bloc élémentaire BE comprenant deux entrées, El et E2, pour la réception de données à traiter, et une sortie S pour la transmission de données traitées ; un bus de données d'entrée commun étant apte à transmettre des données à traiter à l'entrée El de chacun des blocs BE ainsi qu'au contrôleur CG ; pour chaque bloc BE, un bus de données de sortie, connecté à sa sortie S, étant apte à transmettre des données traitées vers l'extérieur du composant et, par un bus de données dérivé, à l'entrée E2 d'un seul autre bloc BE ; le contrôleur CG est apte à initialiser les configurations des blocs BE et commander leur reconfiguration dynamique, à contrôler les flux de données en sortie de chaque bloc BE de façon à transmettre des données soit vers l'extérieur soit vers l'entrée E2 d'un autre bloc BE, à contrôler les flux de données en entrée de chaque bloc BE .
2. Composant selon la revendication 1 dans lequel le contrôleur CG est apte à commander la transmission des données reçues de l'extérieur sur le bus de données d'entrée commun, au fur et à mesure de leur arrivée, successivement à chacun des blocs BE, les données étant transmises à un bloc BE suivant lorsque la capacité maximale de traitement du bloc BE précédent est atteinte.
3. Composant selon la revendication 1 ou 2 dans lequel le contrôleur CG est apte à initialiser les configurations des blocs BE, bloc par bloc, et commander la reconfiguration dynamique des blocs, bloc par bloc, de façon à rendre le bloc TD apte à traiter des données en mode pipeline ou en mode parallèle ou en mode mixte.
4. Composant selon l'une quelconque des revendications 1 à 3 dans lequel :
- chaque bloc BE du bloc TD comprend une pluralité d'unités de traitement de données UT configurables, et correspond à une ligne d'un réseau matriciel d'unités UT dans le bloc TD ; les unités UT de chaque paire d'unités successives dans chaque bloc BE étant aptes à échanger des données via un bloc de communication bidirectionnelle configurable associé BCOM dédié à ces deux unités ; - l'unité UT d'entrée de chaque bloc BE, qui correspond à la première unité UT sur la ligne correspondant au bloc, est apte à recevoir en entrée des données reçues sur les entrées El ou E2 du bloc, et l'unité UT de sortie du bloc, qui correspond à la dernière unité UT sur la ligne correspondant au bloc, est apte à transmettre en sortie des données traitées à la sortie S du bloc ;
- le contrôleur CG est apte, pour chaque bloc BE, à recevoir de l'extérieur des instructions pour le traitement de données par chacune des unités UT du bloc et à les mémoriser, à initialiser les configurations de chaque unité UT et de chaque bloc BCOM du bloc BE et- à commander leur reconfiguration dynamique.
5. Composant selon la revendication 4 dans lequel :
- les blocs BCOM de chaque paire de blocs BCOM, dont les unités UT associées sont, selon le réseau matriciel d'unités du bloc TD, sur des colonnes adjacentes et sur des lignes adjacentes, sont aptes à échanger des données par un registre inter-lignes associé REG, de façon à permettre l'échange de données entre unités UT d'une ligne à l'autre; le contrôleur CG est apte à commander la reconfiguration dynamique des unités UT et des blocs BCOM du bloc TD pour rendre le bloc TD apte à traiter des données en mode à lignes dépendantes, pour au moins deux lignes adjacentes du réseau matriciel, en commandant la bifurcation des données entre deux blocs BE correspondant aux deux lignes adjacentes, via un registre inter-lignes REG entre ces deux lignes.
6. Composant selon la revendication 5 dans lequel le contrôleur CG est apte à transmettre, via un bus de contrôle, des signaux de type RESET ou ENABLE ou d'horloge à chaque registre REG du bloc TD, et dans lequel chaque registre inter-lignes REG entre deux blocs BCOM est apte à :
- stocker des données reçues d'un bloc BCOM dans une mémoire et les rendre disponibles pour l'autre bloc BCOM ; recevoir des signaux de type RESET ou ENABLE ou d'horloge émis par le contrôleur CG et exécuter les commandes correspondantes à ces signaux.
7. Composant selon l'une quelconque des revendications 4 à 6 dans lequel : les entrées El et E2 d'un bloc BE sont celles d'un multiplexeur associé au bloc, la sortie du multiplexeur étant connectée à l'entrée de l'unité UT d'entrée du bloc BE pour la transmission de données à cette unité.
8. Composant selon l'une quelconque des revendications 4 à 7 dans lequel : les unités de traitement de données UT du bloc TD sont des bancs de cellules élémentaires synchrones de traitement de données CE configurables, chaque banc comportant au moins une cellule élémentaire CE ; les cellules CE de toute unité UT d'un bloc BE quelconque sont connectées à un bus de contrôle commun qui les relie au contrôleur CG, le contrôleur CG étant apte à contrôler les cellules CE et à commander leur reconfiguration; pour chaque paire d'unités UT adjacentes dans un bloc BE, les cellules élémentaires d'une unité UT sont aptes à échanger des données avec les cellules élémentaires de l'autre unité UT via le bloc BCOM associé à ces unités, le bloc BCOM étant apte à réaliser ces échanges de données ; chaque cellule CE de l'unité UT d'entrée de chaque bloc BE, qui correspond à la première unité UT sur la ligne correspondant au bloc, est apte à recevoir en entrée des données reçues en entrée de l'unité UT par un bus de données commun à toute cellule CE de l'unité UT; chaque cellule CE de l'unité UT de sortie de chaque bloc BE, qui correspond à la dernière unité UT sur la ligne correspondant au bloc, est apte à transmettre en sortie des données à la sortie S du bloc par un bus de données commun à toute cellule CE de l'unité UT.
9. Composant selon la revendication 8 dans lequel chaque bloc BCOM, associé à des unités UT, comporte : un bloc de transmission BT apte à réaliser des échanges de données entre les cellules élémentaires CE d'une unité UT et les cellules CE de l'autre unité UT auxquelles BCOM est associé ; le bloc BT étant apte à être configuré par un contrôleur local de bloc CLB;
- un contrôleur local de bloc CLB apte à recevoir et interpréter des signaux de contrôle provenant du contrôleur CG et à configurer le bloc BT, selon des données de configurations reçues et stockées dans une mémoire de configuration locale MB, pour la transmission de données ; le contrôleur CLB étant apte à gérer le chargement de la mémoire MB en fonction de signaux de contrôle reçus du contrôleur CG ; un contrôleur général CG apte à contrôler les contrôleurs locaux CLB du bloc TD.
10. Composant selon l'une quelconque des revendications 8 ou 9 dans lequel chaque cellule élémentaire synchrone CE d'un banc comporte : - un bloc opérateur BO apte à recevoir des données en entrée par un bus de données d'entrée, à les stocker et à effectuer un traitement sur ces données selon des signaux de configuration provenant d'un contrôleur local de cellule CLC ; à transmettre le résultat du traitement en sortie par un bus de données de sortie; - un contrôleur local de cellule CLC apte à : recevoir des données par le bus de données d'entrée ; - gérer les différents modes de fonctionnement de la cellule CE, c'est-à-dire un mode d'initialisation, pour le chargement des mots de configuration de la cellule dans une mémoire de configuration locale MC, un mode de test, pour effectuer des tests structurels de la cellule, et un mode normal pour l'exécution des opération de traitement de données, en fonction de signaux de configuration émis par le contrôleur CG et reçus par le contrôleur local via le bus de contrôle commun ; - gérer le chargement de la mémoire MC en fonction d'un mode de fonctionnement de la cellule indiqué par le contrôleur CG ; - interpréter des signaux de configuration reçus du contrôleur CG pour soit charger un mot de configuration correspondant dans un registre de configuration local RCL pour le maintenir pendant le cycle de traitement de données par la cellule, soit configurer le bloc BO en fonction d'un mot de configuration figurant dans le registre RCL ; - effectuer des tests structurels de la cellule CE sur réception d'un signal de mode test émis par le contrôleur CG ; un contrôleur général CG apte à contrôler les contrôleurs locaux CLC du bloc TD.
11. Composant selon la revendication 10 dans lequel le contrôleur local de cellule CLC est apte à interpréter des signaux de configuration reçus du contrôleur CG pour d'abord lire un numéro de configuration de cellule sur le bus de contrôle commun puis charger un mot de configuration correspondant localement à ce numéro, selon une table de correspondance locale, dans le registre RCL ; les numéros de configuration de cellule étant stockés dans une mémoire du contrôleur CG et le contrôleur CLC étant apte à mémoriser la table de correspondance locale.
12. Composant selon l'une quelconque des revendications 10 ou 11 dans lequel le contrôleur CG est apte à recevoir d'une cellule CE une indication de dysfonctionnement résultant d'un test structurel mis en œuvre sur cette cellule, et à commander au contrôleur local CLC de la cellule CE de configurer la cellule en mode BYPASS .
13. Composant selon les revendications 9 et 12 dans lequel le contrôleur local de bloc CLB d'un bloc de communication BCOM, connecté à une unité UT, est apte à configurer le bloc BCOM en mode BYPASS lorsque le contrôleur CG, ayant reçu d'une ou plusieurs cellules CE de l'unité UT une indication de dysfonctionnement, transmet au contrôleur CLB un signal de passage en mode BYPASS ; le contrôleur CG étant apte à commander le passage en mode BYPASS d'un bloc BCOM d'une unité UT lorsqu'une commande de configuration en mode BYPASS d'une cellule CE de l'unité UT a été transmise au contrôleur local CLC de la cellule CE.
14. Composant selon l'une quelconque des revendications 8 à 13 dans lequel le résultat du traitement de données effectué par une cellule CE est apte à être stocké dans un registre local ; un résultat stocké dans ce registre local étant maintenu lors d'une reconfiguration de la cellule.
15. Composant selon l'une quelconque des revendications 1 à 14 comportant : - un bloc de gestion d'entrée GE apte à recevoir des données de l'extérieur et à stocker temporairement ces données reçues, à formater des données stockées selon le mode d'initialisation ou le mode normal indiqué par le contrôleur CG via un bus de contrôle propre, à transmettre des données formatées à l'entrée El des blocs BE du bloc TD via le bus de données d'entrée commun ; un bloc de gestion de sortie GS, connecté au contrôleur CG par un bus de contrôle propre pour la commande de réception de données traitées, connecté au bus de données de sortie de chacun des blocs BE du bloc TD pour recevoir des données traitées, et apte à reformater des données traitées reçues, à stoker dans une mémoire tampon des données reformatées, à recevoir une requête de transmission depuis l'extérieur, à transmettre à l'extérieur des données stockées dans la mémoire tampon sur requête reçue de l'extérieur.
16. Composant selon l'une quelconque des revendications 10 à 15 dans lequel le contrôleur local CLC de cellule CE, le contrôleur local CLB de bloc BCOM et le contrôleur général CG sont aptes à mettre en œuvre une méthode JTAG pour le chargement des configurations en phase de reconfiguration dynamique du composant, et pour la réalisation de tests ; le contrôleur CG comprenant un contrôleur TAP connecté par des bus série JTAG, bloc BE par bloc BE, aux cellules CE et aux blocs BCOM du bloc TD.
17. Composant selon l'une quelconque des revendications 4 à 16 dans lequel, sur les lignes du réseau, les unités UT sont en nombre pair N et les blocs BCOM sont répartis dans N/2 cellules de base CB, chaque cellule CB comportant deux unités UT adjacentes et le bloc BCOM associé à ces unités ; le contrôleur CG étant apte à commander la reconfiguration dynamique des cellules CB du réseau et des blocs BCOM de communication entre cellules CB, ligne par ligne, pour rendre le bloc TD apte à traiter des données au moyen des cellules CB.
18. Composant selon la revendication 17, pour le traitement d'un ensemble d'applications comportant au moins une application, dans lequel chaque cellule de base CB du bloc TD configurée pour effectuer un traitement est apte à réaliser les opérations nécessaires au traitement complet d'au moins une application de l'ensemble, chaque application de l'ensemble étant apte à être réalisée complètement par au moins une cellule de base CB.
EP04816238A 2003-09-30 2004-09-30 Composant a architecture reconfigurable dynamiquement Withdrawn EP1668530A2 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0350622A FR2860313B1 (fr) 2003-09-30 2003-09-30 Composant a architecture reconfigurable dynamiquement
PCT/FR2004/050473 WO2005031493A2 (fr) 2003-09-30 2004-09-30 Composant a architecture reconfigurable dynamiquement

Publications (1)

Publication Number Publication Date
EP1668530A2 true EP1668530A2 (fr) 2006-06-14

Family

ID=34307544

Family Applications (1)

Application Number Title Priority Date Filing Date
EP04816238A Withdrawn EP1668530A2 (fr) 2003-09-30 2004-09-30 Composant a architecture reconfigurable dynamiquement

Country Status (5)

Country Link
US (1) US7418579B2 (fr)
EP (1) EP1668530A2 (fr)
CN (1) CN100416544C (fr)
FR (1) FR2860313B1 (fr)
WO (1) WO2005031493A2 (fr)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US7533249B2 (en) * 2006-10-24 2009-05-12 Panasonic Corporation Reconfigurable integrated circuit, circuit reconfiguration method and circuit reconfiguration apparatus
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
EP2175374A1 (fr) * 2008-10-08 2010-04-14 Panasonic Corporation Procédé et appareil pour la configuration d'un réseau extensible
JP5504985B2 (ja) * 2010-03-11 2014-05-28 富士ゼロックス株式会社 データ処理装置
EP3156896B1 (fr) 2010-09-17 2020-04-08 Soft Machines, Inc. Prédiction multibranchement d'un seul cycle comprenant une mémoire fantôme pour la prédiction de branchement lointain précoce
EP2689327B1 (fr) 2011-03-25 2021-07-28 Intel Corporation Exécution de blocs de code de séquences d'instruction par l'utilisation de coeurs virtuels instanciés par des machines partitionnables
WO2012135041A2 (fr) 2011-03-25 2012-10-04 Soft Machines, Inc. Segments de fichiers de registre pour prise en charge de l'exécution de blocs de code à l'aide de coeurs virtuels instanciés par des machines partitionnables
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US9673824B2 (en) 2012-10-26 2017-06-06 Altera Corporation Techniques and circuitry for configuring and calibrating an integrated circuit
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150991A1 (fr) 2013-03-15 2014-09-25 Soft Machines, Inc. Procédé de mise en œuvre de structure de données de vue de registre à taille réduite dans un microprocesseur
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150806A1 (fr) 2013-03-15 2014-09-25 Soft Machines, Inc. Procédé d'alimentation de structure de donnees de vues de registre au moyen d'instantanés de modèle de registre
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150971A1 (fr) 2013-03-15 2014-09-25 Soft Machines, Inc. Procédé de diffusion de dépendances via une structure de données de vue de sources organisée par blocs
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9286181B2 (en) 2013-07-31 2016-03-15 Globalfoundries Inc. Apparatus for capturing results of memory testing
DE102014208771A1 (de) * 2014-05-09 2015-11-12 Mobotix Ag Dynamisch konfigurierte Videokamera
US9130559B1 (en) * 2014-09-24 2015-09-08 Xilinx, Inc. Programmable IC with safety sub-system
CN105302525B (zh) * 2015-10-16 2018-01-05 上海交通大学 用于多层次异构结构的可重构处理器的并行处理方法
US10833843B1 (en) * 2015-12-03 2020-11-10 United Services Automobile Association (USAA0 Managing blockchain access
CN107506329B (zh) * 2017-08-18 2018-06-19 浙江大学 一种自动支持循环迭代流水线的粗粒度可重构阵列及其配置方法
WO2020183396A1 (fr) * 2019-03-11 2020-09-17 Untether Ai Corporation Mémoire de calcul
US20220171829A1 (en) 2019-03-11 2022-06-02 Untether Ai Corporation Computational memory
US11342944B2 (en) 2019-09-23 2022-05-24 Untether Ai Corporation Computational memory with zero disable and error detection
US11468002B2 (en) 2020-02-28 2022-10-11 Untether Ai Corporation Computational memory with cooperation among rows of processing elements and memory thereof
CN113064852B (zh) * 2021-03-24 2022-06-10 珠海一微半导体股份有限公司 一种可重构处理器及配置方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493239A (en) * 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
US5640106A (en) * 1995-05-26 1997-06-17 Xilinx, Inc. Method and structure for loading data into several IC devices
WO1997003444A1 (fr) * 1995-07-10 1997-01-30 Xilinx, Inc. Systeme comprenant un reseau de portes programmable par l'utilisateur et une memoire intelligente
US5778439A (en) * 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5892962A (en) * 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US6157210A (en) * 1997-10-16 2000-12-05 Altera Corporation Programmable logic device with circuitry for observing programmable logic circuit signals and for preloading programmable logic circuits
US6091263A (en) 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
US6127843A (en) * 1997-12-22 2000-10-03 Vantis Corporation Dual port SRAM memory for run time use in FPGA integrated circuits

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2005031493A2 *

Also Published As

Publication number Publication date
US20070113054A1 (en) 2007-05-17
FR2860313B1 (fr) 2005-11-04
WO2005031493A2 (fr) 2005-04-07
CN1860468A (zh) 2006-11-08
CN100416544C (zh) 2008-09-03
FR2860313A1 (fr) 2005-04-01
WO2005031493A3 (fr) 2005-08-04
US7418579B2 (en) 2008-08-26

Similar Documents

Publication Publication Date Title
WO2005031493A2 (fr) Composant a architecture reconfigurable dynamiquement
US7518396B1 (en) Apparatus and method for reconfiguring a programmable logic device
US20210273641A1 (en) Multiplier-Accumulator Circuitry, and Processing Pipeline including Same
US7266672B2 (en) Method and apparatus for retiming in a network of multiple context processing elements
US5915123A (en) Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6108760A (en) Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
EP0558125B1 (fr) Processeur neuronal à cellules synaptiques reparties
FR2472784A1 (fr) Matrice de traitement de donnees en parallele, notamment pour l'analyse d'images prises par un satellite
US8949576B2 (en) Arithmetic node including general digital signal processing functions for an adaptive computing machine
US6067615A (en) Reconfigurable processor for executing successive function sequences in a processor operation
WO2010037570A1 (fr) Dispositif de traitement en parallele d'un flux de donnees
FR2779843A1 (fr) Composant memoire multiport serie et application a un ordinateur
US20220214888A1 (en) IC including Logic Tile, having Reconfigurable MAC Pipeline, and Reconfigurable Memory
EP1803061B1 (fr) Systeme de processeur parallele reconfigurable, modulaire et hierarchique
FR3045893A1 (fr) Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision.
Özkan et al. Hardware design and analysis of efficient loop coarsening and border handling for image processing
EP0733975B1 (fr) Interface de sortie de données binaires
FR3113332A1 (fr) Module mémoire reconfigurable adapté à mettre en oeuvre des opérations de calcul
US11768790B2 (en) MAC processing pipelines, circuitry to control and configure same, and methods of operating same
US20220057994A1 (en) Configurable MAC Pipelines for Finite-Impulse-Response Filtering, and Methods of Operating Same
EP4361888A1 (fr) Circuit intégré configuré pour executer un reseau de neurones artificiels
FR3115134A1 (fr) Procede de configuration d’un circuit logique programmable, circuit logique programmable et dispositif pour implementer le procede.
EP2186093B1 (fr) Mémoire partagée
FR2754924A1 (fr) Circuit de memoire tampon d'entree/sortie capable de minimiser le transfert de donnees requis dans les operations de tamponnage d'entree et de sortie
EP4226256A1 (fr) Procédé, et dispositif, de traitement, de données à fournir en entrée d'un premier registre à décalage d'un circuit électronique neuronal systolique

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20060403

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PL PT RO SE SI SK TR

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: COMMISSARIAT A L'ENERGIE ATOMIQUE

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20070601

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX ENERGIES

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20110401