Brevet FR2850768A1 — publié le 20040806

Dispositif électronique configurable à granularité mixte L'invention concerne les dispositifs électroniques configurables, en particulier ceux à granularité mixte dédiés à des 5 calculs arithmétiques faisant intervenir des mots de longueurs hétérogènes. Actuellement, les circuits configurables sont définis comme étant formés d'une cellule élémentaire dupliquée un certain nombre de fois, et dont les entrées/sorties sont interconnectées par un réseau de 10 commutateurs programmables. On peut à cet égard citer les circuits prédiffusés programmables, connus par l'homme du métier sous la dénomination FPGA (Field-Programmable Gate Array). Dans ces circuits FPGA, les cellules élémentaires sont des mémoires programmables ou tables de 15 correspondance (look up tables) réalisant des opérations logiques au niveau "bit", c'est-à-dire sur un nombre limité de bits, par exemple 2 à 4 bits, et fournissant un résultat également sur quelques bits, par exemple sur 1 ou 2 bits. La famille de produits Virtex commercialisés par la société Xilinx propose de tels circuits FPGA comportant en 20 outre quelques fonctions arithmétiques dédiées, ainsi que des éléments de mémoire. En utilisant une méthode de synthèse classique, associée à des algorithmes de placement et de routage (mapping and routing), n'importe quelle fonction décrite dans un langage RTL peut être mise 25 en oeuvre sur un tel circuit FPGA, pour autant qu'il existe dans le circuit un nombre suffisant de ressources (tant au niveau fonctionnel qu'au niveau des interconnexions) de façon à pouvoir mettre en oeuvre toutes les opérations et toutes les variables décrites dans la description d'origine en langage RTL. Dans de tels circuits configurables, la quantité de ressources destinées à fonctionner au niveau "bit" est largement plus importante que la quantité de ressources arithmétiques. En outre, on ne peut pas vraiment parler de ressources réellement arithmétiques, puisque les opérateurs arithmétiques partagent les mêmes ressources de routage que celles dédiées au niveau "bit". En conséquence, l'utilisation de tels circuits FPGA pour la réalisation de fonctions essentiellement 5 arithmétiques, n'est pas vraiment efficace ni sur le plan de l'encombrement surfacique, ni sur le plan de la consommation d'énergie. D'autres types de circuits configurables existent, comportant des cellules élémentaires de types différents, par exemple un élément 10 de mémoire, une unité arithmétique et logique, ou éventuellement un microcontrôleur. De tels exemples de circuits configurables sont par exemple décrits dans l'article de Hui Zhang et autres intitulé "A 1-V Heterogeneous Reconfigurable DSP IC for Wireless Baseband Digital Signal Processing", Journal of Solid-State Circuits, vol. 35, n0 11, 15 November 2000. Cependant, dans ces circuits reconfigurables, la communication entre les différents éléments s'effectue de façon asynchrone par transfert de paquets de données. En conséquence, il n'est pas possible d'utiliser la même méthodologie de placement que celle utilisée dans un circuit prédiffusé programmable composé de 20 cellules homogènes. Et, l'absence d'outil et de méthodologie rend l'utilisation de tels circuits reconfigurables particulièrement délicate et inefficace. L'invention propose un dispositif électronique configurable à granularité de programmation mixte, dans lequel on peut utiliser une 25 méthodologie de placement analogue aux méthodologies utilisées dans les circuits prédiffusés programmables tels quel les circuits FPGA, mais tout en offrant une meilleure efficacité en terme de surface et de consommation d'énergie pour la mise en oeuvre de fonctions à dominante arithmétique. Tel que revendiqué, le dispositif électronique configurable selon l'invention comprend au moins un ensemble de base configurable comportant: - un circuit programmable possédant des éléments programmables, mutuellement connectés par un premier réseau d'interconnexion configurable, ce circuit programmable ayant une granularité de programmation de quelques bits, par exemple inférieure ou égale à 4 bits, - plusieurs cellules arithmétiques configurables mutuellement connectées par un deuxième réseau spécifique d'interconnexion configurable, chaque cellule arithmétique incluant au moins une unité arithmétique et logique, un générateur d'adresses et une mémoire, - un troisième réseau spécifique d'interconnexion configurable reliant le circuit programmable et les cellules arithmétiques, et, - un bus de contrôle s'étendant entre le circuit programmable et les cellules arithmétiques ainsi qu'à l'intérieur de celles-ci. Par ailleurs, le circuit programmable est apte à générer des 15 signaux d'horloge et de contrôle pour les cellules arithmétiques. En d'autres termes, le dispositif électronique configurable selon l'invention comporte - une partie dédiée aux calculs arithmétiques, en l'espèce les cellules arithmétiques configurables, possédant son propre 20 réseau d'interconnexion configurable, et, - un circuit programmable au niveau "bit", connecté à la partie dédiée aux calculs arithmétiques, par un autre réseau d'interconnexion programmable (configurable). La granularité de programmation du dispositif selon l'invention 25 est donc bien hétérogène ou mixte en ce sens qu'elle est fine au niveau du circuit programmable, alors qu'elle est plus grossière au niveau des cellules arithmétiques configurables qui sont destinées à mettre en oeuvre des opérations arithmétiques sur des mots de plusieurs bits, par exemple des mots de 8, 16, 32 bits voire plus. Par ailleurs, le fait de prévoir des réseaux d'interconnexion séparés augmente la flexibilité de l'ensemble, et permet d'utiliser les ressources plus efficacement. En outre, selon l'invention, toute la partie "contrôle" est mise en oeuvre (ou placée) sur le circuit programmable à granularité de programmation fine, tandis que toute la partie "données multibits" est placée sur la partie de ressources arithmétiques (unité arithmétique et 5 logique, éventuellement multiplieur... ). Bien entendu, dans certaines applications dans lesquelles du traitement de données est décrit au niveau "bit", il est alors naturel d'implémenter ces fonctions dans le circuit programmable à granularité de programmation fine. Et, le fait que le microséquencement des opérations soit 10 effectué par le circuit programmable à granularité de programmation fine, en combinaison avec le bus de contrôle qui va véhiculer les signaux de contrôle nécessaires au séquencement des cellules arithmétiques, rend le contrôle du séquencement beaucoup plus flexible, indépendant des données, et permet également de s'affranchir 15 de transferts asynchrones de paquets ou de flux de données. Selon un mode de réalisation de l'invention, l'ensemble de base peut comporter plusieurs cellules arithmétiques mutuellement connectées de façon à former au moins une rangée horizontale de cellules. De même, il est possible que l'ensemble de base comporte plusieurs cellules arithmétiques mutuellement connectées de façon à former au moins une colonne de cellules. Selon un mode de réalisation de l'invention, chaque cellule arithmétique comporte un premier bus de données, dit "bus 25 horizontal", sur lequel sont connectées la mémoire et la ou les unités arithmétiques et logiques, ce bus étant destiné à être connecté au troisième réseau spécifique d'interconnexion (disposé entre les cellules arithmétiques et le circuit à granularité de programmation fine), ou bien au bus horizontal d'une autre cellule arithmétique d'une même 30 rangée horizontale. Par ailleurs, chaque cellule arithmétique comporte un deuxième bus de données, dit 'bus vertical", sur lequel sont connectées la mémoire et la ou les unités arithmétiques et logiques, ce bus étant destiné à être connecté au bus vertical d'une autre cellule arithmétique d'une même colonne. Le dispositif selon l'invention peut également comporter plusieurs ensembles de bases mutuellement connectés. Le circuit programmable à granularité de programmation fine peut être un circuit prédiffusé programmable, par exemple du type FPGA. Le dispositif de l'invention est avantageusement réalisé sous 10 forme d'un circuit intégré. D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de réalisation, nullement limitatifs, et des dessins annexés sur lesquels: - la figure 1 illustre schématiquement un premier mode de 15 réalisation d'un circuit configurable selon l'invention, - la figure 2 illustre plus en détail, mais toujours schématiquement, un mode de réalisation d'une cellule arithmétique configurable selon l'invention, - la figure 3 illustre schématiquement un exemple de mise en 20 oeuvre d'un circuit reconfigurable selon l'invention, et, - la figure 4 illustre schématiquement un autre mode de réalisation d'un circuit configurable selon l'invention. Sur la figure 1, la référence CRF désigne un circuit configurable selon l'invention. Celui-ci comporte essentiellement dans 25 ce mode de réalisation un ensemble de base ENSB comportant - un circuit programmable à granularité de programmation fine, référencé FPGA, - plusieurs groupes de cellules arithmétiques FCLO-FCLn, et - un réseau d'interconnexion programmable ou configurable 30 RIT3 interconnectant les groupes de cellules avec le circuit FPGA. Puisque le circuit programmable FPGA peut être par exemple un circuit prédiffusé programmable (circuit FPGA Field Programmable Gate Array) la référence FPGA a été affectée à ce circuit pour des raisons de simplification. Le circuit FPGA peut être par exemple l'un de ceux commercialisés par la société Xilinx. Bien que la structure et le fonctionnement d'un tel circuit programmable FPGA soient bien connus de l'homme du métier, on en rappelle ici brièvement quelques éléments essentiels. Ce circuit est 10 formé de plusieurs mémoires programmables LUT (look up tables). Les mémoires LUT sont par exemple des mémoires de 2' mots de m bits avec n et m de l'ordre de quelques unités, par exemple 2 ou 3. Par ailleurs, ces mémoires sont interconnectées par un premier réseau d'interconnexion RIT1, par exemple du type de celui connu par 15 l'homme du métier sous la dénomination anglo-saxonne de "crossbar". Avant de poursuivre la description de la figure 1, on se réfère plus particulièrement à la figure 2 pour décrire l'architecture interne d'une cellule arithmétique CA selon l'invention. Une cellule CA comporte des ressources de calcul connectées à 20 des ressources de routage qui autorisent le transfert de données entre différentes cellules arithmétiques et entre différentes ressources à l'intérieur d'une cellule arithmétique. A titre d'exemple, la cellule CA comporte au moins une unité arithmétique et logique ALU, de structure classique et connue en soi, 25 comportant par exemple un multiplieur et un additionneur/soustracteur, cette uinté ALU étant connectée à des moyens de mémoire MM. Par ailleurs, la cellule CA peut comporter des ressources plus particulièrement dédiées, comme par exemple un générateur d'adresses 30 GAD, de façon à augmenter la fonctionnalité de la cellule arithmétique CA. Ces ressources de calcul peuvent être connectées sur des ressources de routage horizontales et verticales, qui peuvent être en l'espèce des bus de données horizontaux BDT, et des bus verticaux BSV. Ces bus peuvent être globaux ou segmentés. Par ailleurs, un moyen d'interconnexion CSB, par exemple également du type "crossbar", peut être disposé à l'intersection de ces deux bus de façon à pouvoir configurer l'aiguillage éventuel des données dans l'une quelconque des directions. Outre ces deux bus, la cellule CA comporte ici un bus 10 d'adresses BAD sur lequel sont connectés le générateur d'adresses, la mémoire et la ou les unités arithmétiques et logiques. Enfin, un bus de contrôle BSC véhicule les différents signaux de contrôle utilisés pour le séquencement des opérations à l'intérieur de la cellule CA (signaux d'horloge, signaux de sélection, signaux 15 d'écriture/lecture, signaux de remise à zéro...). La cellule CA comporte également une entrée de configuration ECF destinée à recevoir un mot de configuration qui va permettre de définir pour les différents éléments de la cellule, les opérations spécifiques à réaliser (instructions spécifiques dans l'unité 20 arithmétique et logique, séquences d'adresses à générer, ... ), ainsi que les connexions à réaliser. Cette configuration est ici quasi statique en ce sens que, contrairement aux processeurs classiques, la configuration n'est pas modifiée à chaque cycle d'horloge, mais à une fréquence beaucoup 25 plus faible. Cette configuration est stockée par exemple dans quelques cellules de mémoire statique. Par ailleurs, la cellule arithmétique CA peut réaliser des opérations arithmétiques élémentaires de la forme par exemple A.B+C, o A, B et C sont des signaux venant par exemple d'autres cellules 30 arithmétiques à travers les bus globaux ou segmentés. Si l'on revient maintenant sur la figure 1, on voit que chaque groupe de cellules FCLi comporte plusieurs cellules arithmétiques CA qui forment une rangée horizontale. Les bus BDT, BSV et BAD de chaque cellule CA sont reliés aux bus homologues des cellules adjacentes. Par ailleurs, le bus BDT de la cellule CA située à l'extrémité 5 droite du groupe FCLi sur la figure 1, est reliée au circuit FPGA par l'intermédiaire du réseau spécifique d'interconnexion configurable RIT3. Les cellules CA de différents groupes de cellules peuvent être également reliées pour former des colonnes, par l'intermédiaire des bus 10 verticaux BSV. Enfin, toutes les entrées de configuration ECF des cellules CA situées à l'extrémité gauche des groupes sur la figure 1, sont reliées à une mémoire de configuration MMC destinée à stocker tous les mots de configuration des cellules. Le circuit FPGA a, dans l'exemple décrit N broches d'entrée et N broches de sortie. Ces broches sont connectées aux bus BDT des cellules CA ainsi qu'aux bus de contrôle BSC, à travers le réseau d'interconnexion RIT3. Ce réseau d'interconnexion peut être de n'importe quel type, 20 par exemple du type "crossbar" complet (full crossbar) ou bien du type "treillis hiérarchique". Le réseau d'interconnexion RIT3 est programmable par un contrôleur de configuration RIT3C de façon à réaliser l'interconnexion désirée pour une application donnée. Les entrées/sorties E/S du circuit configurable CRF sont également connectées au réseau d'interconnexion RIT3. De même, un contrôleur BLC permet d'obtenir la programmation des mémoires LUT ainsi que la configuration désirée pour le réseau d'interconnexion RIT1 du circuit FPGA. Le circuit selon l'invention peut également comporter un dispositif de contrôle de haut niveau, par exemple un microcontrôleur, MP qui va réaliser l'interaction entre les données et les configurations. En d'autres termes, ce microcontrôleur MP va par exemple délivrer un nouveau signal de chargement de configuration CFS en réponse à des modifications dites de statut calculées par des bits prédéterminés de statut BST dont la valeur est calculée par le circuit FPGA. La structure du circuit configurable selon l'invention permet d'augmenter la capacité de calcul au niveau "bit", tout en permettant la mise en òuvre d'algorithmes de calcul arithmétique intensif. Par ailleurs, outre le fait que le circuit programmable puisse être utilisé dans certaines applications pour effectuer des calculs au 10 niveau "bit", il est dans tous les cas, également utilisé pour mettre en oeuvre toute la partie contrôle, et générer ainsi les signaux de contrôle nécessaires au séquencement des opérations effectuées non seulement sur les éléments LUT du circuit FPGA, mais aussi sur les cellules arithmétiques CA. Et, ces signaux de contrôle sont véhiculés via le réseau d'interconnexion RIT3 sur le ou les bus de contrôle BSC. En pratique, la mise en oeuvre du séquencement des signaux, qui est défini en fonction de l'application par l'utilisateur, comporte pour la partie arithmétique, la définition d'une machine d'état qui va 20 décrire le séquencement de chaque ressource à l'intérieur de chaque cellule arithmétique. Par ailleurs, en ce qui concerne le circuit programmable, après avoir défini l'application en langage RTL par exemple, on utilise un logiciel de placement et de routage (mapping and routing), par 25 exemple le logiciel de placement et de routage Xilinx si le circuit FPGA est un FPGA Xilinx. Ceci permet alors d'assigner chaque signal de contrôle à une broche du circuit FPGA. Enfin, on procède à la configuration du réseau d'interconnexion RIT3. On se réfère maintenant plus particulièrement à la figure 3 pour décrire un exemple de mise en oeuvre sur un circuit CRF selon l'invention, d'une transmission sur un grand nombre de porteuses "orthogonales" (modulation OFDM: "Orthogonal Frequency Division Multiplexing") avec un entrelacement au niveau "bit", un codage convolutif avec élimination de certains bits, et une assignation des bits à une porteuse selon une modulation d'amplitude en quadrature 5 (modulation QAM), et un étalement sur les porteuses finales complexes. Une machine d'état MCHST est déterminée comme indiqué ciavant, de façon à définir le microséquencement 38 des opérations effectuées au niveau "bit" sur le FPGA, ainsi que le 10 microséquencement 39 des opérations qui seront effectuées au niveau des groupes de cellules arithmétiques FCLj. Dans l'exemple évoqué ici, les données d'entrée DIN qui sont par exemple des mots de 32 bits constituant les bits à émettre, subissent un brouillage 30 (scrambling) suivi d'un codage convolutif 15 avec élimination de certains bits (puncturing). Puis, on procède dans le FPGA à un entrelacement de bits. Le résultat de cet entrelacement correspond après assignation (mapping) à 64 porteuses modulées selon une modulation QAM. On procède ensuite à un tronçonnage (slicing). Le reste des opérations, est effectué dans les groupes de cellules arithmétiques FCLj. IL s'agit notamment d'une assignation 34 de chaque bit à une porteuse selon une modulation prédéterminée de façon à obtenir lesdites porteuses qui forment des nombres complexes. On procède ensuite à un étalement 35 en utilisant une matrice d'étalement, ce qui permet d'obtenir des vecteurs de nombres complexes. Ces vecteurs seront ensuite formatés (étape 36) puis délivrés (étape 37) en sortie (données DOUT). IL est également possible, comme illustré sur la figure 4, que le circuit CRF selon l'invention comprenne plusieurs ensembles de bases (ici, seulement 3 sont représentés) ENSB1-ENSB3. Dans ce cas, il les circuits FPGA de deux ensembles de base adjacents sont connectés, de même que les cellules de deux rangées adjacentes FCL, par l'intermédiaire des bus verticaux BSV. REVENDICATIONS 1. Dispositif électronique configurable, caractérisé par le fait qu'il comprend au moins un ensemble de base configurable (ENSB) 5 comportant un circuit programmable (FPGA) possédant des éléments programmables (LUT), mutuellement connectés par un premier réseau d'interconnexion configurable (RITI), et ayant une granularité de programmation de quelques bits, plusieurs cellules arithmétiques configurables (CA) mutuellement connectées par un deuxième réseau 10 spécifique d'interconnexion configurable (BDT, CSB, BSV) et incluant chacune au moins une unité arithmétique et logique (ALU), un générateur d'adresses (GAD) et une mémoire (MM), un troisième réseau spécifique d'interconnexion configurable (RIT3) reliant le circuit programmable et les cellules arithmétiques, et un bus de contrôle (BSC) 15 s'étendant entre le circuit programmable et les cellules arithmétiques ainsi qu'à l'intérieur de celles-ci, et par le fait que le circuit programmable (FPGA) est apte à générer des signaux d'horloge et de contrôle pour les cellules arithmétiques. 2. Dispositif selon la revendication 1, caractérisé par le fait que 20 la granularité de programmation du circuit programmable (FPGA) est inférieure ou égale à 4 bits. 3. Dispositif selon la revendication 1 ou 2, caractérisé par le fait que l'ensemble de base (ENSB) comporte plusieurs cellules arithmétiques mutuellement connectées de façon à former au moins une 25 rangée horizontale de cellules. 4. Dispositif selon la revendication 1, 2 ou 3, caractérisé par le fait que l'ensemble de base (ENSB) comporte plusieurs cellules arithmétiques mutuellement connectées de façon à former au moins une colonne de cellules. 5. Dispositif selon l'une des revendications précédentes, caractérisé par le fait que chaque cellule arithmétique (CA) comporte un premier bus de données (BDT), dit bus horizontal, sur lequel sont connectées la mémoire et la ou les unités arithmétiques et logiques, ce bus étant destiné à être connecté au troisième réseau spécifique d'interconnexion (RIT3), ou bien au bus horizontal (BDT) d'une autre 5 cellule arithmétique d'une même rangée horizontale, et par le fait que chaque cellule arithmétique comporte un deuxième bus de donnée (BSV), dit bus vertical, sur lequel sont connectées la mémoire et la ou les unités arithmétiques et logiques, ce bus étant destiné à être connecté au bus vertical d'une autre cellule arithmétique d'une même colonne. 6. Dispositif selon l'une des revendications précédentes, caractérisé par le fait qu'il comprend plusieurs ensembles de base mutuellement connectés (ENSB1-ENSB3). 7. Dispositif selon l'une des revendications précédentes, caractérisé par le fait que le circuit programmable est un circuit 15 prédiffusé programmable (FPGA). 8. Dispositif selon l'une des revendications précédentes, caractérisé par le fait qu'il est réalisé sous forme d'un circuit intégré.