droite|200x200px|vignette|Photo d'une puce Xilinx FPGA XCV400E-PQ240.|alt=Photo d'une Xilinx FPGA XCV400E-PQ240.
Depuis les années 2015, les clouds FPGA (Field Programmable Gate Arrays) commencent à émerger dans le domaine du cloud computing. Les FPGA ont été déployés dans des centres de données des principaux fournisseurs de services cloud, tels que Microsoft, Amazon, Alibaba et Huawei et sont accessibles par les entreprises ou le grand public.
Au fil des années, les clouds FPGA se sont virtualisés pour être multi-utilisateurs et multi-applications exposant cette architecture à différentes menaces dont il est important d'apporter une réponse sur le plan de la sécurité.
L'accélération des calculs, la sécurisation et la performance énergétique sont les principales motivations de ce déploiement dans les centres de données et l'on retrouve leur utilisation dans différents domaines tels que la médecine, le big data, l'éducation et les télécommunications.
Motivations Accélération des calculs L'une des motivations de l'utilisation des FPGA dans le cloud est l'accélération des calculs. Certains FPGA sont utilisés comme accélérateurs statiques, conçus une seule fois et utilisés pour une seule fonction. Les systèmes combinant processeur et FPGA offrent une bande passante de donnée extrêmement élevée permettant à des applications de haute performance avec une exécution matérielle et logicielle entrelacée, comme par exemple la puce Xilinx Zynq. Les FPGA sont très utilisés pour les applications intensives en calcul grâce à leur puissance et leurs délais d'exécution rapides. La performance clé et les avantages de puissance sont réalisés en concevant des calculs personnalisés des chemins de données adaptés à une application particulière. Les FPGA sont connus pour surpasser les GPU dans de nombreuses applications spécifiques (Chiffrement, Mathématique et Médicale).
Sécurisation du Cloud La sécurité figure parmi les motivations principales de l'utilisation des FPGA dans le cloud. L'une des techniques de sécurisation est le chiffrement homomorphe. Il est une réponse prometteuse aux problèmes de sécurité soulevés par le cloud computing car il permet de stocker et de manipuler des données à distance sous une forme chiffrée, empêchant efficacement le serveur d'accéder aux informations traitées.
Faible consommation d'énergie des FPGA La faible consommation d'énergie est l'une des raisons de l'utilisation des FPGA dans le cloud. Un des moyens possibles qui permettent d'améliorer l'efficacité énergétique d'un nœud dans le cloud computing consiste à appliquer des accélérateurs matériel basés sur le FPGA. L'une des approches est de s'intéresser à la réduction énergétique des composants de l’infrastructure cloud.
Architecture Implémentation matérielle Coprocesseur 350px|vignette|Exemple schéma copresseur CPU-FPGA connecté au réseau cloud
L'hyperviseur FPGA est une plateforme spécifique pour piloter les accélérateurs FPGA] qui sont utilisés comme périphériques connecté en PCIExpress. OpenCL fournit non seulement l'API pour communiquer et gérer les périphériques informatiques à l'intérieur du FPGA] ; il est aussi utilisé comme langage et API de programmation pour des appareils hétérogène pour une application hôte exécuté sur une machine CPU.
Un système d'exploitation est proposé pour gérer les FPGA. L'système d'exploitation a une gestion complète du bus PCIExpress du serveur de connectivité, pour permettre au FPGA d'accéder aux périphériques connectés au serveur. Le système d'exploitation assure également, la prise en charge de l'allocation de ressources FPGA aux utilisateurs et aux applications cloud.
Un autre cas d'usage présente une approche PaaS afin de simplifier la formation et le développement des systèmes FPGA-attachés. Ce système se compose d'un environnement de développement Web personnalisable et d'un système de gestion de cluster CPU-FPGA. Cela permet de compléter le développement FPGA grâce à un navigateur et le système PaaS peut par la suite réaliser automatiquement la compilation et le déploiement FPGA.
Autonome La dissociation du FPGA d'un serveur hôte est préconisée au moyen d'une interface de contrôleur de réseau (Network interface controller : NIC) 10GbE, connectant le FPGA au réseau du centre de données en tant que ressource autonome. Il en découle un changement majeur sur la carte FPGA qui devient un appareil indépendant. Celui-ci exécute des tâches qui étaient auparavant sous le contrôle d'un processeur hôte, comme les actions de mise sous tension et hors tension, se connecter au réseau après la mise sous tension, réaliser des tâches locales de surveillance de l'état et de gestion du système. On peut ajouter à ce qui a été décrit, cette étude se repose également sur des services cloud courants et le transfert d'état de représentation (REST).
Virtualisation
200px|vignette|Classification des techniques de virtualisation FPGA
Une manière de classer les travaux existants sur la virtualisation des FPGA, peut être de les organiser par niveau d'abstraction des systèmes de calcul qui utilisent la virtualisation. On peut donc les classer au niveau ressource, d'un nœud, ou de multiples nœuds.
Au niveau ressource La ressource peut être de deux types : reconfigurable, on parle de virtualisation d'architecture ; et non reconfigurable, dans le cas de la virtualisation des E/S.
Les overlays (superpositions) sont des architectures implémentées sur les FPGA reconfigurables. Ainsi, un overlay peut être vu de deux manières : l'architecture fonctionnelle est la vue de dessus, c'est l'ensemble des éléments reconfigurables disponibles pour les applications ciblant l'overlay. La mise en œuvre est la vue de dessous, c'est la manière dont l'architecture fonctionnelle est mise en œuvre et synthétisée sur le FPGA hôte. Ces architectures offrent trois avantages : ils peuvent être utilisés pour homogénéiser différents FPGA vendus sur l'étagère COTS (Commercial Off The Shelf) hétérogènes, en implémentant la même architecture fonctionnelle sur différents hôtes. L'architecture fonctionnelle de superposition peut être plus grossière, plus simple et plus abstraite que celle de son hôte. Les concepteurs d'overlay peuvent ajouter des fonctionnalités, à l'implémentation de l'overlay, qui peuvent ne pas être présentes sur le FPGA hôte (sauvegarde de contexte dynamique, restauration du préchargement de la reconfiguration). Il est ajouté de nouvelles fonctionnalités pour permettre la planification préventive des tâches matérielles et la migration en direct. vignette|Fonctionnement d'allocation de ressource FPGA pour machine virtuelle Un autre cadre de virtualisation permet d'implémenter un système de communication efficace entre les machines virtuelles et les FPGA physiques non reconfigurable. Il utilise une technique spécifique pour les communications entre VM et FPGA. Il utilise la table de mappage CID (Context Identifier)/VF (Virtual Functions) qui enregistre des régions FPGA attribuées aux machines virtuelles. Le FPGA possède principalement une architecture de superposition en pourvoyant des fonctions virtuelles (VF, Virtual Functions) aux machines virtuelles, et un ensemble de BRAM (blocs de RAM) pour stocker les données des VF conçus avec une taille spécifique. L'architecture overlay fournit plusieurs VF sur le même FPGA ou sur plusieurs FPGA distants à un utilisateur ; cela permet de répondre aux exigences de disponibilité des services cloud sur les tâches matérielles d'un utilisateur sur plusieurs FPGA. Lorsqu'un VF est attribué à un utilisateur, le service de gestion du FPGA fait une mise à jour de sa table mappage CID/VF pour pouvoir enregistrer l'utilisateur en question. Par la suite, il configure le HWSB (HardWare SandBoxes) en bloquant toutes tentatives d'accès à un VF ou BRAM qui n'appartient pas à l'utilisateur enregistré; cela permet de répondre aux exigences d'isolements du Cloud.
Au niveau d'un nœud Au niveau d'un nœud : le terme "nœud" signifie un FPGA unique. L'infrastructure et les techniques de management du FPGA sont le sujet de cette rubrique.
Ce système adopte le moniteur de machine virtuelle VMM (Virtual Machine Monitor) Xen pour créer un environnement paravirtualisé comme accélérateur FPGA. Il se différencie des autres techniques, car la virtualisation se réalise directement au niveau du pilote du périphérique. Pour permettre l'utilisation de l'accélérateur FPGA dans le cas du pvFPGA (paravirtualized FPGA), il faut un mécanisme de transfert partant de quelques dizaines de kilo-octets jusqu'à des gigaoctets de données entre le serveur et l'accélérateur FPGA. La mise en place d'un composant appelé coproviseur pour pvFPGA permet le multiplexage des requêtes provenant de différents domaines et accédant au coprocesseur FPGA. Cette proposition repose sur la virtualisation GPU, qui réalise le travail de multiplexage dans l'espace utilisateur; plus précisément, le multiplexeur et l'ordonnanceur sont situés au-dessus du CUDA (Compute Unified Device Architecture), qui fournit deux interfaces de programmation : l'interface de programmation du pilote et l'interface de programmation d'exécution.
Le prototype RC2F (Reconfigurable Common Computing Frame) qui s'appuie sur des études antérieures, se base sur plusieurs vFPGAs (virtual FPGA) utilisateurs fonctionnant sur un seul FPGA. La partie principale est composée d'un hyperviseur qui gère la configuration, les cœurs FPGA et la surveillance des informations d'état. L'espace mémoire du contrôleur est disponible depuis l'hôte via une API. Les FIFO d'entrée sortie, procurent un débit élevé pour des applications comme le streaming. Les vFPGAs apparaissent comme un périphérique individuel au sein de la machine virtuelle du point de vue de l'utilisateur. Les FPGA sont situés sur le système d'hôte accessible depuis l'interface PCI Express. Sur les deux composants hôtes et FPGA, il existe un hyperviseur qui gère les accès des vFPGA, la configuration des vFPGA, l'affectation des vFPGA, et les communications de la puce entre les interfaces frontend et backend via le PCI Express (le prototype utilise un PCIe-Core de Xillybus pour l'accès direct à la mémoire DMA(Direct Memory Access). L'hyperviseur FPGA s'occupe de la gestion des vFPGA, leur encapsulation, la gestion de l'état et la reconfiguration grâce à l'ICAP (Internal Configuration Access Port). L'interaction entre l'hôte et l'hyperviseur FPGA repose sur la mémoire de configuration composée de : la configuration de l'hyperviseur FPGA (état du système, donnée de configuration et état général) et l'administration des vFPGA.
Au niveau multiple noeud 350px|vignette|Photo d'une carte FPGA du cas d'usage "Catapult"
Le "multiple nœuds" est défini comme un cluster de deux ou plus puces FPGA. Dans cette section, on traite des techniques et architectures utilisées pour connecter plusieurs FPGA combinés afin d'accélérer une tâche.