• Aucun résultat trouvé

4.2 Architecture hétérogène CPU-FPGA

4.2.2 nœud de calcul FPGA

Les réseaux de logique programmables sont des circuits composés de nombreuses cel- lules logiques élémentaires pouvant être assemblées sur mesure. Les composants FPGA sont basés sur ces cellules SRAM aussi bien pour le routage que pour les blocs logiques interconnectables. Chacun de ces blocs logiques est généralement constitué d’une ou plu- sieurs table(s) de correspondance (Look-Up-Table ou LUT) et d’une ou plusieurs bascule(s) (Flip-Flop). La LUT permet d’implémenter des fonctions logiques et peut être également considérée comme une mémoire de petite capacité, un registre à décalage ou un multi- plexeur. Si l’on prend le cas du Virtex 7 de chez Xilinx [23] [21], chaque "slice" contient 4 LUTs et 8 bascules. D’ailleurs, certains de ces slices peuvent utiliser leurs LUTs comme des mémoires RAM distribuée ou bien des registres à décalage.

La configuration de ces composants est aujourd’hui facilitée par la possibilité d’implé- mentation d’IP Cores (Intellectual Property) pouvant assurer des fonctions spécifiques. Un catalogue varié d’IP Cores est proposé par les constructeurs eux-mêmes comme Xilinx, Al- tera, ainsi que par des sociétés extérieures. Ces IP Cores peuvent être implantés aisément sur les composants FPGAs via les environnements de développement disponibles sur le marché et proposés par les constructeurs.

Aujourd’hui, plusieurs types d’IP Cores sont proposés, assurant des fonctions les plus élémentaires aux plus complexes :

– Les Blocs élémentaires tels que les FIFOs, les mémoires, les opérateurs arithmétiques à virgule flottante utiles dans le cadre de développement de modèles test et de simu- lation parallélisables complexes.

– Les IPs de test permettant la vérification dynamique des fonctions implémentées sur le composant dans le but d’assurer leur bon fonctionnement.

– Les éléments architecturaux tels que les interfaces mémoire, horloges et d’entrées/- sorties standard nécessaires pour l’utilisation optimale de la carte où le composant FPGA est implémenté.

– Les BUS interfaces rapides tels que le PCI, PCIe, Ethernet pour la liaison rapide du composant FPGA vers d’autres nœuds de calcul. Ces interfaces rapides sont néces- saires pour le développement d’architectures hétérogènes pour le calcul haute perfor- mance.

architectures FPGAs permettra alors une implémentation aisée de fonctions pure- ment matérielles sur les futurs systèmes de test et de simulation.

– Les fonctions plus spécifiques à certains domaines tels que les bus avioniques (Arinc 429, CAN, 1553, etc) primordiaux dans le cadre du développement des futurs sys- tèmes de test et de simulation.

Dans le cadre de notre projet, nous proposons de définir plusieurs familles d’IPs propres à notre application :

– Les Entrées-Sorties qui permettront la communication avec les équipements sous tests, composées de bus utilisés dans le domaine de l’aéronautique (CAN, 1553, ARINC 429, etc.) sont aujourd’hui disponibles sur le marché et pourront donc être facilement intégrées aux composants présents sur le support matériel.

– Les fonctions matérielles telles que le traitement de signal, aisées à intégrer sur ce type d’architecture comme nous l’avons vu précédemment. Ces fonctions sont nécessaires dans le cadre de scénarios de test et de simulation afin d’introduire des signaux ou perturbations matérielles. En effet, un scénario peut prévoir ce type de perturbations lors de la session de test.

– Les fonctions de traitement de données nécessaires pour la gestion des différents types transitant au sein du/des composants hétérogènes du support matériel.

– Les modèles de test et de simulation seront les mêmes que ceux composant les sessions décrites dans le chapitre d’état de l’art. Ces derniers devront nécessiter un développement spécifique décrit dans la suite de ce chapitre. En effet, afin de tirer parti des propriétés des composants FPGA, la mise en place d’un environnement de développement est nécessaire. D’ailleurs, nous allons proposer dans le chapitre suivant une description de cet environnement.

Il devient alors possible lors de la conception de notre support matériel spécifique d’ob- tenir des solutions "sur étagère" pour accélérer le cycle de développement. Dans le cadre de notre projet, notre intérêt s’est porté dans un premier temps sur cette technologie car l’offre d’IP Core de bus avioniques répond désormais à la demande des futurs architectures de test et de simulation pour la communication avec les équipements sous test.

De plus de ces facilités de développement, les FPGAs offrent une capacité de configuration et de reconfiguration dynamique intéressantes. En effet, il est possible de remplacer une configuration par une autre en rechargeant l’intégralité du composant ou bien de créer des régions reconfigurables dynamiquement comme cela se fait usuellement sur les composants FPGA dotés de cette capacité.

Malgré des fréquences de fonctionnement inférieures, les composants FPGA bénéficient grâce à leur structure interne composée d’éléments indépendants les uns des autres de capacités de calcul haute performance intéressantes. En effet, dans le cas d’algorithmes composés de fonctions pouvant s’exécuter indépendamment les unes des autres les com- posants FPGA peuvent offrir des performances supérieures aux CPUs ainsi qu’aux GPUs dans le cas de traitement d’image par exemple. En effet, dans [12], les auteurs présentent la comparaison de temps d’exécution d’application spécifiques entre CPU, GPU et FPGA. Il est alors prouvé que les architectures FPGA offrent de meilleurs performances dans le cadre de certaines applications telles que le traitement d’image en comparaison des performances offertes par les CPUs et GPUs.

Comme nous l’avons décrit dans la sous-section précédente sur l’utilisation des cœurs processeurs, un second niveau de hiérarchisation est visible pour les régions reconfigurables sur la partie droite de la figure 4.1 :

– Un premier niveau hiérarchique correspond à l’ensemble des modèles de test et de simulation (Hardware model sur la figure4.1). Ces derniers pourront communiquer avec d’autres modèles présents sur les cœurs, sur le composant FPGA ou avec un équipement sous test via un IP d’entrées-sorties.

– Un second niveau hiérarchique correspond à l’ensemble des IPs d’entrées-sorties vers les équipements (AVIONIC I/O IP sur la figure 4.1).

– Un troisième niveau hiérarchique correspond à un wrapper qui fera le lien entre les données entrantes et sortantes vers les IPs (modèles, fonctions ou entrées-sorties). S’il devenait nécessaire d’implémenter des mécanismes de reconfiguration dynamiques pour des raisons d’optimisation de la consommation ou des ressources matérielles sur les composants FPGA, ces trois niveaux peuvent correspondre à trois différentes régions re- configurables. Dès lors, il sera nécessaire que le wrapper soit mis à jour dès qu’un modèle ou un IP soit implanté/remplacé par un autre.

La définition des nœuds de calcul n’est pas suffisante dans ce type d’architecture, un lien de communication performant entre les nœuds doit être établi. En effet, aussi performants les nœuds de calcul soient-ils indépendamment les uns des autres, le lien permettant de rendre l’ensemble du système cohérent devra permettre un coût de communication inter- nœud très faible voire négligeable. Dans la prochaine section, nous allons décrire la solution mise en place dans le cadre du développement des futurs systèmes de test et de simulation.

4.3 Un bus de communication rapide pour les systèmes