Architecture vFPGA-restreint : un modèle restreint pour une exploration rapide

Virtualisation

En tant que couche d’abstraction placée entre l’application et le FPGA, l’overlay permet de virtualiser les ressources du FPGA, afin de faciliter leur exploitation dans un contexte Cloud. Historiquement, la virtualisation de ressources matérielles reconfigurables de type FPGA a été considérée dans la recherche depuis une vingtaine d’années, mais les overlays n’ont pas tout de suite été considérés comme solution de virtualisation. Les premiers concepts de virtualisation adressent la limitation en ressources reconfigurables et en entrées/sorties des FPGAs [14, 15]. Ils proposent d’exploiter la capacité de reconfiguration des FPGAs afin de charger et extraire des modules matériels dans/depuis un FPGA de manière similaire à la pagination de la mémoire par un système d’exploitation (SE), où des segments mémoires sont échangés entre la RAM et le disque dur. Le but est de donner aux applications une vue virtuelle du FPGA, comme ayant un nombre illimité de ressources et étant entièrement dédié à chaque application. D’autres travaux [16, 17, 18] vont dans ce sens de la gestion des ressources FPGA par un SE, en partageant le FPGA spatialement et dans le temps. Les FPGAs récents proposent la fonctionnalité de reconfiguration partielle dynamique (DPR), permettant de reconfigurer dynamiquement différentes zones du FPGA indépendamment les unes des autres, c’est-à-dire que la reconfiguration d’une zone ne perturbe pas l’exécution des autres zones. Ainsi, la DPR peut être utilisée pour partager spatialement le FPGA, et configurer différents modules au cours du temps. Cependant, un point clef pour un partage efficace de ressources est la capacité de préemption,

c’est-à-dire de suspendre l’exécution d’un module afin de libérer la ressource au profit d’un autre, pour la reprendre plus tard. En plus de la capacité de reconfiguration, le mécanisme de préemption nécessite donc aussi de pouvoir sauvegarder et restaurer l’état d’exécution des modules. Cependant, les FPGAs ne possèdent pas nativement un tel mécanisme de sauvegarde et restauration. Différentes approches existent [19] : relire le bitstream pour extraire les informations d’état, ou instrumenter le circuit applicatif pour permettre le chargement et l’extraction d’état [20]. Les travaux cités ci-dessus traitent la virtualisation des FPGAs par leur partage temporel et spatial, ce qui permet à un système d’exploitation de donner aux applications une vue virtuelle du FPGA physique. Une approche différente pour la virtualisation de ressources FPGA est le concept de FPGAs virtuels. Les FPGAs virtuels ont été introduits par Lagadec et al. [21] comme des architectures FPGA synthétisées sur des FPGAs physiques, c’est-à-dire des overlays. Lagadec et al. ont exposé les avantages d’une telle approche comme étant la portabilité des circuits applicatifs et la possibilité d’expérimenter avec de nouvelles architectures FPGA. Ils ont aussi souligné des désavantages tels que le surcoût en ressources physiques, la diminution de la fréquence d’horloge, et le besoin d’outils de synthèse ciblant l’architecture du FPGA virtuel. Notons que le concept de d’overlay n’est pas incompatible avec l’approche de virtualisation par un système d’exploitation (partage temporel et spatial). Au contraire, du fait que les architectures overlays ne sont pas contraintes par les architectures des FPGAs hôtes, il est possible de concevoir des overlays qui implémentent des mécanismes de sauvegarde et de restauration de contextes permettant la préemption des applications, et ainsi faciliter la gestion des overlays par un système d’exploitation. Ainsi, les overlays se prêtent bien à une exploitation dans un cadre Cloud, qui nécessite une exploitation dynamique des ressources.

Portabilité

Dans le contexte d’un datacenter, différentes générations de ressources sont exploitées simultanément. Il est donc nécessaire de pouvoir supporter l’hétérogénéité des ressources de calcul. Pour l’exécution logicielle, l’hétérogénéité des ressources informatiques est bien supportée : la majorité des processeurs utilisés dans les datacenters partagent le même jeu d’instruction (le x86), et des mécanismes tels que les machines virtuelles permettent d’exécuter un système d’exploitation depuis un autre. Cependant, dans le cas des FPGAs, l’hétérogénéité des FPGAs fait obstacle d’une part à la gestion homogène des ressources, et d’autre part à la productivité des concepteurs applicatif (les clients du Cloud). En apportant la portabilité applicative sur FPGA, les overlays sont à même de faciliter l’exploitation dans le Cloud de FPGAs différents. Il n’y a pas de compatibilité binaire entre différents FPGAs. Le bitstream d’une application est le fichier binaire de configuration permettant de configurer un FPGA pour implémenter une application donnée. Chaque bit du bitstream participe à la configuration d’un élément configurable du FPGA. Ainsi, même si deux FPGAs d’une même famille partagent le même format de bitstream, un bitstream produit pour un modèle de FPGA ne peut pas configurer un FPGA d’un modèle différent. Or, dans le contexte d’un datacenter, où différentes générations de matériel son exploitées simultanément et présentent donc un ensemble hétérogène de ressources, la non-compatibilité des binaires applicatifs avec certaines ressources de l’infrastructure fait obstacle à une gestion efficace de cette infrastructure. Les FPGAs n’offrent pas non plus de compatibilité au niveau des sources applicatives. Suivant leur modèle et leur constructeur, les FPGA présentent différentes spécificités, telles que le fonctionnement, l’interface et les possibilités offertes par les blocks DSP et les blocks mémoires qu’ils intègrent. D’une part, ces différences entre FPGAs rendent le portage d’une application d’un FPGA à un autre non trivial, et peut demander jusqu’à re-concevoir entièrement l’application. D’autre part, ces incompatibilités entre FPGAs nuisent au “design reuse” sur FPGA, et donc à la productivité des concepteurs d’applications.

Kirchgessner et al. adressent le problème de la portabilité des sources en introduisant VirtualRC [22]. VirtualRC est une couche d’abstraction qui agit comme un “wrapper” : le concepteur écrit son circuit dans une entité “top level”, l’interface de laquelle fournit des connexions à des mémoires, des multiplieurs et des canaux de communication. VirtualRC est portée sur différents FPGAs, implémentant selon les spécificités de chaque FPGA les mémoires, multiplieurs et canaux de communication, tout en gardant une interface fixe pour le “top level” offert au concepteur. Le code applicatif écrit dans le top level de VirtualRC n’instancie pas directement de composants spécifiques au FPGA et est donc portable tel quel sur tous les FPGAs pour lesquels le framework VirtualRC a été porté, quel que soit l’outil de synthèse constructeur utilisé. Cette approche résout le problème de la portabilité des sources : l’effort de portage est mutualisé sur le portage de du framework et non sur chaque application. Cependant, cette approche ne répond pas au problème de l’incompatibilité binaire entre différents FPGAs. L’overlay étant une architecture reconfigurable placée entre l’application et le FPGA hôte, il apporte son propre modèle d’exécution (cf figure 1.1) et isole l’application du FPGA sous-jacent ; l’application ne voit que l’overlay.

L’application doit donc se conformer au modèle d’exécution de l’overlay, et non à celui du FPGA hôte. Par conséquent, l’overlay apporte par nature la portabilité au niveau des sources sur tous les FPGAs pour lesquels il a été synthétisé. Au-delà de la portabilité des sources applicatives, l’overlay apporte aussi la compatibilité binaire entre différents FPGAs hôtes. En effet, le mécanisme de configuration de l’overlay est implémenté dans l’overlay lui-même, donc le rôle de chaque bit de configuration du bitstream ciblant l’overlay est propre à l’overlay et est indépendant du FPGA sous-jacent. Ainsi, si une application est synthétisée pour un overlay, alors elle peut être exécutée de manière transparente sur tout FPGA supportant l’overlay, sans nécessiter de re-synthétiser l’application. L’effort de portage et donc mutualisé sur le portage de l’overlay d’un FPGA à un autre, et non des applications. Par exemple, dans [23], les auteurs ont démontrés la compatibilité binaire apportée par leur overlay grain fin Zuma entre un FPGA Xilinx et un FPGA Altera. Finalement, l’overlay apporte l’indépendance par rapport aux outils de synthèse constructeur. Effectivement, l’architecture de l’overlay étant indépendante de celle du FPGA hôte, l’outil de synthèse ciblant ce dernier ne peut pas être utilisé pour synthétiser des applications sur l’overlay. Il est donc nécessaire d’obtenir un outil de synthèse adapté à l’architecture de l’overlay ciblé [21]. En revanche, cet outil est indépendant des outils constructeurs, et le même outil peut être utilisé pour synthétiser sur overlay quel que soit le constructeur et le modèle du FPGA hôte. Dans le contexte du Cloud, les overlays permettent donc de présenter un environnement de développement applicatif uniforme, quels que soient les FPGAs hôtes physiques présents dans l’infrastructure des datacenters.

Table des matières

1 Introduction
2 État de l’art sur les overlays
2.1 Bénéfices apportés par les overlays
2.1.1 Virtualisation
2.1.2 Portabilité
2.1.3 Abstraction des ressources physiques
2.1.4 Nouvelles fonctionnalités et usages
2.2 Types d’overlays et optimisations
2.2.1 Overlays grain fin
2.2.2 Overlays gros grain
2.3 Du prototypage à l’exploitation d’overlays
2.3.1 Conception, implémentation et synthèse d’overlays
2.3.2 Programmation des overlays
2.3.3 Accès à l’overlay, contrôle et exploitation
2.4 Synthèse et contributions
2.5 Plan du manuscrit
3 Architecture virtuelle : conception, faisabilité et modèle de coût
3.1 Architectures fonctionnelle : plan de calcul
3.1.1 Architecture vFPGA-restreint : un modèle restreint pour une exploration rapide
3.1.2 Architecture vFPGA-flexible : un modèle plus flexible pour un espace de conception plus large
3.2 Implémentation et instrumentation des overlays
3.2.1 Implémentation des ressources atomiques
3.2.2 Plan de configuration et pré-configuration
3.2.3 Implémentation des registres applicatifs et horloge applicative
3.2.4 Plan de snapshot, accès au contexte d’exécution
3.2.5 Implémentation des mémoires virtuelles
3.3 Synthèse physique des overlays
3.3.1 Spécificités d’un overlay en tant que design FPGA
3.3.2 Synthèse des overlays : passage à l’échelle
3.3.3 Temps de synthèse avec ou sans les VTPRs
3.4 Génération des overlays
3.4.1 vFPGA-restreint : génération par template
3.4.2 vFPGA-flexible : génération par parcours de modèle
3.5 Évaluation et modélisation du coût en ressources
3.5.1 Évaluation du coût de l’instrumentation
3.5.2 Modélisation du coût
3.6 Résumé
4 Intégration des overlays : utilisabilité système
4.1 De la matrice à l’IP
4.1.1 Les contrôleurs de configuration et de snapshot
4.1.2 Le contrôleur d’horloge
4.1.3 Le contrôleur DMA et de mémoire virtuelle
4.1.4 Interruption générée par l’application
4.1.5 Réorganisation des IOs
4.2 De l’IP au système sur carte
4.2.1 Intégration de l’IP overlay avec processeur physique
4.2.2 ZeFF : un SoC minimaliste pour le prototypage et l’exploitation d’overlay sans processeur physique
4.3 L’hyperviseur : du système sur carte au périphérique réseau
4.4 Implémentations : coûts respectifs des composants
4.4.1 Coût des contrôleurs de l’IP overlay
4.4.2 Implémentations de ZeFF
4.4.3 Implémentations de noeuds de calcul avec processeur externe
4.4.4 Co-simulation : noeud de calcul virtuel
4.5 Résumé
5 Programmation des overlays : synthèse applicative
5.1 Flot de synthèse virtuelle
5.1.1 Flot de synthèse modulaire
5.1.2 Exploration architecturale : généricité et spécialisation du flot
5.1.3 Les étapes du flot de synthèse virtuelle
5.1.4 Les outils existants
5.2 Conception d’un flot de synthèse virtuelle
5.2.1 Adéquation outil/architecture
5.2.2 Tester et vérifier le flot de synthèse et les applications
5.2.3 Débogage du flot de synthèse virtuelle et des applications
5.3 Réalisations pratique de flots de synthèse
5.3.1 Architecture overlay et l’architecture fonctionnelle ciblée par le flot
5.3.2 Utilisation de Madeo dans le flot de synthèse virtuelle.
5.4 L’analyse de timing sur overlay : différentes solutions
5.4.1 Analyse de timing
5.4.2 Spécificités de l’analyse de timing sur overlay
5.4.3 Approches top-down : du circuit applicatif au délais physiques
5.4.4 Approches bottom-up : des délais physiques à l’analyse du circuit applicatif
5.5 Notre solution pour l’analyse de timing : les VTPRs
5.5.1 L’analyse de timing avec les VTPRs
5.5.2 Limitations des VTPRs
5.5.3 L’analyse de timing dans le flot de synthèse virtuelle
5.6 Évaluation du surcoût de la couche de virtualisation
5.6.1 Avantage des VTPRs par rapport à l’utilisation d’une fréquence pessimiste
5.6.2 surcoût en performances
5.6.3 surcoût en ressources
5.6.4 Comparaison avec une implémentation native depuis les sources136
5.7 Résumé
6 Exploitation des overlays dans un cadre Cloud
6.1 Le cadre Cloud
6.2 Exigences
6.3 Solutions existantes
6.4 L’hyperviseur : contrôle local
6.4.1 Applications virtuelles
6.4.2 Changement de contexte sur l’overlay
6.4.3 Optimisations pour le changement de contexte
6.5 Contrôle global, vue haut niveau
6.5.1 Migration à chaud
6.5.2 Résilience aux pannes
6.5.3 Support de l’évolution des overlays
6.5.4 Infrastructure de déploiement des overlays
6.6 Modèle de coût
6.6.1 Modélisation des temps de sauvegarde et de restauration
6.6.2 Expérimentation
6.6.3 Scénarios d’ordonnancements
6.6.4 Choix du quantum pour l’ordonnancement avec pré-configuration
6.7 Illustration
6.8 Résumé
Conclusion et perspectives
Glossaire
Bibliographie
Annexes

Cours gratuitTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *