Article de reference

Informatique reconfigurable

L'informatique reconfigurable est une architecture informatique qui combine une partie de la flexibilité du logiciel avec les hautes performances du matériel en utilisant des pl...

L'informatique reconfigurable est une architecture informatique qui combine une partie de la flexibilité du logiciel avec les hautes performances du matériel en utilisant des plates-formes matérielles flexibles comme les réseaux de portes programmables (FPGA). La principale différence par rapport à l'utilisation de microprocesseurs ordinaires est la possibilité d'ajouter des blocs de calcul personnalisés à l'aide de FPGA. D'autre part, la principale différence par rapport au matériel personnalisé, c'est-à-dire les circuits intégrés spécifiques à l'application (ASIC), est la possibilité d'adapter le matériel pendant l'exécution en « chargeant » un nouveau circuit sur la structure reconfigurable, fournissant ainsi de nouveaux blocs de calcul sans avoir à fabriquer et ajouter de nouvelles puces au système existant.

Histoire

Le concept de calcul reconfigurable existe depuis les années 1960, lorsque Gerald Estrin a proposé dans son article le concept d'un ordinateur composé d'un processeur standard et d'un ensemble de matériel « reconfigurable ». Le processeur principal contrôlerait le comportement du matériel reconfigurable. Ce dernier serait alors adapté pour effectuer une tâche spécifique, comme le traitement d'images ou la recherche de motifs , aussi rapidement qu'un matériel dédié. Une fois la tâche accomplie, le matériel pourrait être ajusté pour effectuer une autre tâche. Cela a donné naissance à une structure informatique hybride combinant la flexibilité du logiciel avec la vitesse du matériel.

Dans les années 1980 et 1990, ce domaine de recherche a connu une renaissance avec de nombreuses architectures reconfigurables proposées et développées dans l'industrie et le milieu universitaire, telles que : Copacobana, Matrix, GARP, Elixent, NGEN, Polyp, MereGen, PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys et PiCoGA. De telles conceptions étaient réalisables grâce aux progrès constants de la technologie du silicium qui permettaient de mettre en œuvre des conceptions complexes sur une seule puce. Certains de ces ordinateurs reconfigurables massivement parallèles ont été construits principalement pour des sous-domaines spéciaux tels que l'évolution moléculaire, le traitement neuronal ou d'images. Le premier ordinateur reconfigurable commercial au monde, l'Algotronix CHS2X4, a été achevé en 1991. Ce n'était pas un succès commercial, mais il était suffisamment prometteur pour que Xilinx (l'inventeur du Field-Programmable Gate Array , FPGA) achète la technologie et embauche le personnel d'Algotronix. Des machines ultérieures ont permis les premières démonstrations de principes scientifiques, tels que l'auto-organisation spatiale spontanée du codage génétique avec MereGen.

Théories

Classification de Tredennick

Le modèle fondamental du paradigme de la machine informatique reconfigurable, l' anti-machine basée sur le flux de données, est bien illustré par les différences avec d'autres paradigmes de machines qui ont été introduits plus tôt, comme le montre le schéma de classification des paradigmes informatiques suivant de Nick Tredennick (voir « Tableau 1 : Schéma de classification des paradigmes de Nick Tredennick »).

L'Xputer de Hartenstein

L'informaticien Reiner Hartenstein décrit l'informatique reconfigurable en termes d' anti-machine qui, selon lui, représente un changement de paradigme fondamental par rapport à la machine de von Neumann plus conventionnelle . Hartenstein appelle cela le paradoxe de l'informatique reconfigurable, selon lequel la migration du logiciel vers le configware (du logiciel vers le FPGA ) entraîne des facteurs d'accélération signalés allant jusqu'à plus de quatre ordres de grandeur, ainsi qu'une réduction de la consommation d'électricité jusqu'à près de quatre ordres de grandeur - bien que les paramètres technologiques des FPGA soient en retard d'environ quatre ordres de grandeur sur la courbe de Gordon Moore , et que la fréquence d'horloge soit sensiblement inférieure à celle des microprocesseurs. Ce paradoxe s'explique en partie par le syndrome de von Neumann .

Calcul haute performance

Le calcul reconfigurable haute performance (HPRC) est une architecture informatique combinant des accélérateurs basés sur le calcul reconfigurable tels que les réseaux de portes programmables sur le terrain avec des processeurs ou des processeurs multicœurs .

L'augmentation de la logique dans un FPGA a permis de programmer des algorithmes plus volumineux et plus complexes dans le FPGA. La connexion d'un tel FPGA à un processeur moderne via un bus à grande vitesse, comme PCI express , a permis à la logique configurable d'agir davantage comme un coprocesseur plutôt que comme un périphérique . Cela a introduit l'informatique reconfigurable dans la sphère du calcul haute performance .

De plus, la réplication d'un algorithme sur un FPGA ou l'utilisation d'une multiplicité de FPGA a permis de produire des systèmes SIMD reconfigurables dans lesquels plusieurs dispositifs de calcul peuvent fonctionner simultanément sur différentes données, ce qui constitue un calcul hautement parallèle .

Cette technique de systèmes hétérogènes est utilisée dans la recherche informatique et en particulier dans le calcul intensif . Un article de 2008 a fait état de facteurs d'accélération de plus de 4 ordres de grandeur et de facteurs d'économie d'énergie allant jusqu'à près de 4 ordres de grandeur. Certaines entreprises de supercalculateurs proposent des blocs de traitement hétérogènes, notamment des FPGA comme accélérateurs. Un domaine de recherche est la productivité des outils de programmation à double paradigme obtenue pour de tels systèmes hétérogènes.

La National Science Foundation des États-Unis possède un centre de calcul reconfigurable haute performance (CHREC). En avril 2011, la quatrième conférence sur le calcul intensif reconfigurable et à plusieurs cœurs s'est tenue en Europe.

Les systèmes informatiques reconfigurables commerciaux à hautes performances commencent à émerger avec l'annonce par IBM de l'intégration de FPGA à ses microprocesseurs IBM Power .

Reconfiguration partielle

La reconfiguration partielle est le processus de modification d'une partie d' un circuit matériel reconfigurable tandis que l'autre partie conserve sa configuration antérieure. Les matrices de portes programmables par l'utilisateur sont souvent utilisées comme support de reconfiguration partielle.

Le matériel électronique , comme le logiciel , peut être conçu de manière modulaire, en créant des sous-composants, puis des composants de niveau supérieur pour les instancier. Dans de nombreux cas, il est utile de pouvoir remplacer un ou plusieurs de ces sous-composants pendant que le FPGA est toujours en fonctionnement.

En règle générale, la reconfiguration d'un FPGA nécessite qu'il soit maintenu en mode réinitialisation pendant qu'un contrôleur externe recharge une conception sur celui-ci. La reconfiguration partielle permet aux parties critiques de la conception de continuer à fonctionner pendant qu'un contrôleur, soit sur le FPGA, soit hors de celui-ci, charge une conception partielle dans un module reconfigurable. La reconfiguration partielle peut également être utilisée pour économiser de l'espace pour plusieurs conceptions en stockant uniquement les conceptions partielles qui changent entre les conceptions.

Un exemple courant de cas où une reconfiguration partielle serait utile est le cas d'un périphérique de communication. Si le périphérique contrôle plusieurs connexions, dont certaines nécessitent un chiffrement , il serait utile de pouvoir charger différents cœurs de chiffrement sans faire tomber l'ensemble du contrôleur.

La reconfiguration partielle n'est pas prise en charge sur tous les FPGA. Un flux logiciel spécial mettant l'accent sur la conception modulaire est requis. En général, les modules de conception sont construits selon des limites bien définies à l'intérieur du FPGA, ce qui nécessite que la conception soit spécialement mappée au matériel interne.

En fonction de la fonctionnalité de la conception, la reconfiguration partielle peut être divisée en deux groupes :

  • reconfiguration partielle dynamique , également connue sous le nom de reconfiguration partielle active, permet de modifier une partie du dispositif pendant que le reste d'un FPGA est toujours en cours d'exécution ;
  • Reconfiguration partielle statique : l'appareil n'est pas actif pendant le processus de reconfiguration. Pendant que les données partielles sont envoyées au FPGA, le reste de l'appareil est arrêté (en mode arrêt) et remis en marche une fois la configuration terminée.

Systèmes actuels

Émulation d'ordinateur

Une carte FPGA est utilisée pour recréer l'ordinateur Vector-06C

Avec l'avènement des cartes FPGA abordables, les projets des étudiants et des amateurs cherchent à recréer des ordinateurs vintage ou à mettre en œuvre des architectures plus novatrices. De tels projets sont construits avec du matériel reconfigurable (FPGA), et certains appareils prennent en charge l'émulation de plusieurs ordinateurs vintage à l'aide d'un seul matériel reconfigurable ( C-One ).

COPACOBANA

Le COPACOBANA, le Cost Optimized Codebreaker and Analyzer et son successeur RIVYERA sont des ordinateurs entièrement basés sur FPGA. Une société dérivée SciEngines GmbH du projet COPACOBANA des universités de Bochum et Kiel en Allemagne poursuit le développement d'ordinateurs entièrement basés sur FPGA.

Mitrionique

Mitrionics a développé un SDK qui permet de compiler et d'exécuter des logiciels écrits à l'aide d'un langage d'affectation unique sur des ordinateurs basés sur FPGA. Le langage logiciel Mitrion-C et le processeur Mitrion permettent aux développeurs de logiciels d'écrire et d'exécuter des applications sur des ordinateurs basés sur FPGA de la même manière qu'avec d'autres technologies informatiques, telles que les unités de traitement graphique (« GPU »), les processeurs à base de cellules, les unités de traitement parallèles (« PPU »), les processeurs multicœurs et les clusters de processeurs monocœurs traditionnels. (fermeture de l'entreprise)

Instruments nationaux

National Instruments a développé un système informatique embarqué hybride appelé CompactRIO . Il se compose d'un châssis reconfigurable abritant le FPGA programmable par l'utilisateur, de modules d'E/S remplaçables à chaud, d'un contrôleur temps réel pour la communication et le traitement déterministes et d'un logiciel graphique LabVIEW pour une programmation rapide RT et FPGA.

Xilinx

Xilinx a développé deux styles de reconfiguration partielle des dispositifs FPGA : basée sur les modules et basée sur les différences . La reconfiguration partielle basée sur les modules permet de reconfigurer des parties modulaires distinctes de la conception, tandis que la reconfiguration partielle basée sur les différences peut être utilisée lorsqu'une petite modification est apportée à une conception.

Intel

Intel prend en charge la reconfiguration partielle de ses dispositifs FPGA sur des dispositifs 28 nm tels que Stratix V, et sur les dispositifs 20 nm Arria 10. Le flux de reconfiguration partielle du FPGA Intel pour Arria 10 est basé sur la méthodologie de conception hiérarchique du logiciel Quartus Prime Pro où les utilisateurs créent des partitions physiques du FPGA qui peuvent être reconfigurées au moment de l'exécution tandis que le reste de la conception continue de fonctionner. Le logiciel Quartus Prime Pro prend également en charge la reconfiguration partielle hiérarchique et la simulation de reconfiguration partielle.

Classification des systèmes

En tant que domaine émergent, les classifications des architectures reconfigurables sont encore en cours de développement et d'affinement au fur et à mesure que de nouvelles architectures sont développées ; aucune taxonomie unificatrice n'a été suggérée à ce jour. Cependant, plusieurs paramètres récurrents peuvent être utilisés pour classer ces systèmes.

Granularité

La granularité de la logique reconfigurable est définie comme la taille de la plus petite unité fonctionnelle (bloc logique configurable, CLB) qui est traitée par les outils de mappage. Une granularité élevée, qui peut également être appelée à grain fin, implique souvent une plus grande flexibilité lors de l'implémentation d'algorithmes dans le matériel. Cependant, cela entraîne une pénalité en termes de puissance, de surface et de délai accrus en raison de la plus grande quantité de routage requise par calcul. Les architectures à grain fin fonctionnent au niveau de la manipulation au niveau des bits, tandis que les éléments de traitement à grain grossier (unité de chemin de données reconfigurable, rDPU) sont mieux optimisés pour les applications de chemin de données standard. L'un des inconvénients des architectures à grain grossier est qu'elles ont tendance à perdre une partie de leur utilisation et de leurs performances si elles doivent effectuer des calculs plus petits que ceux fournis par leur granularité, par exemple pour un ajout d'un bit sur une unité fonctionnelle de quatre bits de large, trois bits seraient gaspillés. Ce problème peut être résolu en ayant un réseau à grain grossier ( réseau de chemin de données reconfigurable , rDPA) et un FPGA sur la même puce.

Les architectures à gros grain ( rDPA ) sont destinées à la mise en œuvre d'algorithmes nécessitant des chemins de données de largeur de mot (rDPU). Comme leurs blocs fonctionnels sont optimisés pour les calculs de grande taille et comprennent généralement des unités logiques arithmétiques (ALU) de largeur de mot, ils effectueront ces calculs plus rapidement et avec une meilleure efficacité énergétique qu'un ensemble d'unités fonctionnelles plus petites interconnectées ; cela est dû au fait que les fils de connexion sont plus courts, ce qui entraîne une capacité de fil inférieure et donc des conceptions plus rapides et moins gourmandes en énergie. Une conséquence indésirable potentielle d'avoir des blocs de calcul plus grands est que lorsque la taille des opérandes peut ne pas correspondre à l'algorithme, une utilisation inefficace des ressources peut en résulter. Souvent, le type d'applications à exécuter est connu à l'avance, ce qui permet d'adapter les ressources logiques, de mémoire et de routage pour améliorer les performances du dispositif tout en offrant un certain niveau de flexibilité pour une adaptation future. Des exemples de cela sont les matrices spécifiques à un domaine visant à obtenir de meilleures performances en termes de puissance, de surface et de débit que leurs cousins ​​FPGA plus génériques à grain plus fin en réduisant leur flexibilité.

Taux de reconfiguration

La configuration de ces systèmes reconfigurables peut avoir lieu au moment du déploiement, entre les phases d'exécution ou pendant l'exécution. Dans un système reconfigurable typique, un flux binaire est utilisé pour programmer le dispositif au moment du déploiement. Les systèmes à granularité fine, de par leur nature, nécessitent un temps de configuration plus long que les architectures à granularité plus grossière en raison du plus grand nombre d'éléments à traiter et à programmer. Par conséquent, les architectures à granularité plus grossière bénéficient de besoins énergétiques potentiellement plus faibles, car moins d'informations sont transférées et utilisées. Intuitivement, plus le taux de reconfiguration est lent, plus la consommation d'énergie est faible, car le coût énergétique associé à la reconfiguration est amorti sur une période plus longue. La reconfiguration partielle vise à permettre à une partie du dispositif d'être reprogrammée pendant qu'une autre partie effectue toujours des calculs actifs. La reconfiguration partielle permet d'obtenir des flux binaires reconfigurables plus petits, évitant ainsi de gaspiller de l'énergie pour transmettre des informations redondantes dans le flux binaire. La compression du flux binaire est possible, mais une analyse minutieuse doit être effectuée pour garantir que l'énergie économisée en utilisant des flux binaires plus petits n'est pas compensée par le calcul nécessaire pour décompresser les données.

Couplage hôte

Souvent, le réseau reconfigurable est utilisé comme accélérateur de traitement attaché à un processeur hôte. Le niveau de couplage détermine le type de transfert de données, la latence, la puissance, le débit et les frais généraux impliqués lors de l'utilisation de la logique reconfigurable. Certaines des conceptions les plus intuitives utilisent un bus périphérique pour fournir un agencement de type coprocesseur pour le réseau reconfigurable. Cependant, il existe également des implémentations où la structure reconfigurable est beaucoup plus proche du processeur, certaines sont même implémentées dans le chemin de données, en utilisant les registres du processeur. Le travail du processeur hôte consiste à exécuter les fonctions de contrôle, à configurer la logique, à planifier les données et à fournir une interface externe.

Routage/interconnexions

La flexibilité des dispositifs reconfigurables provient principalement de leur interconnexion de routage. Un style d'interconnexion rendu populaire par les fournisseurs de FPGA , Xilinx et Altera, est la disposition de type îlot, où les blocs sont disposés en réseau avec un routage vertical et horizontal. Une disposition avec un routage inadéquat peut souffrir d'une faible flexibilité et d'une mauvaise utilisation des ressources, offrant ainsi des performances limitées. Si trop d'interconnexions sont fournies, cela nécessite plus de transistors que nécessaire et donc plus de surface de silicium, des fils plus longs et une consommation d'énergie plus élevée.

Défis pour les systèmes d’exploitation

L'un des principaux défis de l'informatique reconfigurable est de permettre une productivité de conception plus élevée et de fournir un moyen plus simple d'utiliser les systèmes informatiques reconfigurables pour les utilisateurs qui ne sont pas familiarisés avec les concepts sous-jacents. L'un des moyens d'y parvenir est de fournir une normalisation et une abstraction, généralement prises en charge et appliquées par un système d'exploitation.

L'une des tâches principales d'un système d'exploitation est de cacher le matériel et de présenter les programmes (et leurs programmeurs) avec des abstractions agréables, propres, élégantes et cohérentes. En d'autres termes, les deux tâches principales d'un système d'exploitation sont l'abstraction et la gestion des ressources .

L'abstraction est un mécanisme puissant permettant de gérer des tâches (matérielles) complexes et différentes d'une manière bien définie et commune. L'une des abstractions les plus élémentaires du système d'exploitation est un processus. Un processus est une application en cours d'exécution qui a la perception (fournie par le système d'exploitation) qu'elle s'exécute seule sur le matériel virtuel sous-jacent. Cela peut être assoupli par le concept de threads, permettant à différentes tâches de s'exécuter simultanément sur ce matériel virtuel pour exploiter le parallélisme au niveau des tâches. Pour permettre à différents processus et threads de coordonner leur travail, des méthodes de communication et de synchronisation doivent être fournies par le système d'exploitation.

Outre l'abstraction, la gestion des ressources des composants matériels sous-jacents est nécessaire car les ordinateurs virtuels fournis aux processus et aux threads par le système d'exploitation doivent partager les ressources physiques disponibles (processeurs, mémoire et périphériques) de manière spatiale et temporaire.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index