# Cloud de FPGA

Ces dernières années, 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 BigData, 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

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'OS 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

Une manière de classer les travaux existants sur la virtualisation des FPGAs, 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 noeud, ou de multiples noeuds.

#### 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 FPGAs 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.
Un autre cadre de virtualisation permet d'implémenter un système de communication efficace entre les machines virtuelles et les FPGAs 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 VM (Virtual Machine), et un ensemble de BRAM (Blocs de RAM) pour stocker les données des VFs conçus avec une taille spécifique. L'architecture overlay fournit plusieurs VFs 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'API du pilote et l'API d'exécution$^,$$^,$.
Le prototype RC2F (Reconfigurable Common Computing Frame) qui s'appuie sur des études antérieures, se base sur plusieurs vFPGAs (virtual FPGAs) 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 PCIExpress. 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 PCIExpress (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 Conﬁguration 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

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.
Les FPGA sont déployés sur l'ensemble d'un lot de serveurs, chaque serveur possède une petite carte avec un FPGA et une DRAM(une photo de cette carte ci-contre). Les FPGA sont directement câblés ensemble, permettant aux services d'allouer des groupes de FPGA pour fournir la zone reconfigurable nécessaire afin d'implémenter la fonctionnalité souhaitée. Les FPGAs communiquent à travers un réseau spécialisé pour faciliter la communication FPGA-FPGA sans dégrader le réseau Ethernet du centre de données. Cela permet de mapper logiquement les services sur plusieurs FPGA. Catapult, qui s'appuie sur cette structure, est une partie importante du moteur de classement Bing. L'interface logicielle participe à la gestion de la compression des requêtes vers Bing en document. Pour y arriver, différents mécanismes sont mis en place comme : Le pipeline de traitement divisé en plusieurs étapes de macropipelines, ce qui limite la durée de traitement. Une file d'attente de requêtes et documents se situe dans la DRAM du FPGA, pour être traité par le pipeline. Il existe d'autres fonctionnalités de Catapult comme l'expression de forme libre et la notation des documents.
La solution proposée est une réponse aux deux limitations majeures du FPGA, le difficile couplage entre la compilation et l'allocation des ressources, et la complexité de la programmation de l'accélération des FPGA. ViTAL fournit une abstraction pour séparer la compilation et l'allocation des ressources. La compilation des applications est réalisée hors ligne sur l'abstraction, tandis que l'allocation des ressources est faite dynamiquement au moment de l'exécution. ViTAL crée l'illusion d'un seul et grand FPGA pour les utilisateurs, ce qui allège la complexité de la programmation, et prend en charge l'accélération de la montée en charge. De plus, il fournit une prise en charge de la virtualisation pour les composants périphériques (par exemple, DRAM et Ethernet intégrés), ainsi qu'une prise en charge de la protection et de l'isolation pour garantir une exécution sécurisée dans l'environnement cloud. Cette nouvelle abstraction système, qui permet de faire l'intermédiaire entre les FPGA et la couche compilation. Pour la prise en compte de cette abstraction, un FPGA physique est partitionné en trois régions, la région de service (modules dédiés pour réaliser le support de virtualisation des périphériques), la région de communication (comprend des tampons et une logique de contrôle pour implémenter l'interface), et la région utilisateur divisée en un groupe de blocs physiques identiques. La couche compilation met à disposition un flux de compilation générique pour appliquer des applications écrites dans divers langages de programmation de haut niveau sur différents FPGA. La partition fractionne une "netlist" donnée générée à partir de l'étape précédente en un groupe de blocs virtuels$^,$.

### Fiabilité

Les FPGA basés sur SRAM (Static Random Access Memory)$^,$ utilisent celle-ci pour développer les fonctions de routage et de calcul de base, grâce à l'utilisation de LUT et de MUX. Il utilise un commutateur SRAM comme élément programmable qui est un transistor passe-oxyde mince. En fonction de la valeur de la tension, le commutateur peut soit permettre aux données de traverser l'entrée du commutateur, soit interrompre la connexion entre elles. Le bouleversement d'événement unique SEU (Single-Event Upsets) est défini comme des erreurs induites par le rayonnement dans les circuits microélectroniques provoqués lorsque des particules chargées (provenant de ceintures de rayonnement ou de rayons cosmiques)$^,$. Dans les FPGA, les SEU peuvent directement corrompre les résultats des calculs ou induire des modifications de la mémoire de configuration. Les bouleversements doivent être détectés et corrigés pour garantir que les erreurs ne s'accumulent pas. Les particules chargées peuvent également modifier la fonction logique du circuit mappé lorsqu'elles atteignent la configuration sur la puce$^,$$^,$.
Sur le même thème, il est bon de citer l'effet d'événement unique SEE (Single Event Effect), dans les environnements terrestres, causés par divers neutrons et des particules alpha. ainsi que les méthodes pour mesurer le taux d'erreurs modéré, grâce entre autres, en matière de défaillances dans le temps FIT (Failures In Time), et de temps moyen avant défaillance MTTF (Mean Time To Failure). Les auteurs éprouvent le FPGA par des injections volontaires d'erreurs et commentent les résultats$^,$.

### Sécurité
#### L'impact de la sécurité sur l'architecture

La sécurité n'est pas sans impact sur l'architecture des cloud FPGA.
Habituellement, l'utilisateur doit faire confiance au service de cloud pour que ces données gardent leur confidentialité. Une telle confiance n'est cependant pas nécessaire, si la nature des données de l'utilisateur reste inaccessible grâce à un chiffrement. On peut donc garder les données utilisateurs chiffrées tout du long du traitement. Lorsque les données sont traitées et doivent être rendues à un autre utilisateur, il est habituellement nécessaire de déchiffrer ces données pour les chiffrer à nouveau avec la clé de cet autre utilisateur. Un déchiffrement n'est cependant pas nécessaire si l'on utilise un proxy de re-chiffrement.
Parmi les solutions existantes, il y a la mise en place d'un proxy de re-chiffrement qui permet de rechiffrer les données déjà chiffrées.
Le concept du proxy de re-chiffrement permet aux utilisateurs d'utiliser leurs propres clés pour le chiffrement. De plus, la donnée chiffrée par la clé d’un utilisateur peut être re-chiffrée par une clé FPGA sans déchiffrer la donnée chiffrée. Cela permet à l'utilisateur et au FPGA d'échanger des données chiffrées sans échanger de clé.
Il y a généralement trois parties pour une architecture d'un proxy de re-chiffrement : l'utilisateur 𝐴, l'utilisateur 𝐵 et le proxy. Les utilisateurs A et B possèdent une paire de clés (𝑝𝑘𝐴, 𝑠𝑘𝐴) et (𝑝𝑘𝐵, 𝑠𝑘𝐵) respectivement. Avec les informations des clés, une clé de re-chiffrement 𝑟𝑘𝐴𝐵 peut être calculée. La clé de re-chiffrement est généralement envoyée au Proxy. Le fournisseur de FPGA est également responsable de l'intégration des clés dans les FPGA. Les clés peuvent être intégrées dans le bitstream FPGA qui est chiffré.
Parmi d’autres solutions afin de mettre en œuvre la sécurité, il y a les fonctions physiques non clonables PUF (Physical Unclonable Functions) qui sont des puces électroniques. Les fonctions non clonables physiques (PUF) sont utilisées principalement pour l'authentification et le stockage de clé$^,$$^,$. Les deux principales applications des PUF sont : l'authentification à faible coût et la génération de clé sécurisée.

#### La confidentialité des données

Les données utilisateurs sont protégées par des protocoles cryptographiques comme l'Oblivious Transfer et le Yao’s Garbled Circuit (en). L'un des protocoles très efficace utilisé est le chiffrement homomorphe pour préserver la confidentialité.
L'adoption d'un flux de bits de bootstrapper sécurisé par les fabricants de FPGA est une technique de sécurisation. Le programme d'amorçage sécurisé partage une clé secrète avec ses clients et déchiffre les données et le flux de bits. Les accélérateurs FPGA sont mis en œuvre pour des techniques de préservation de la confidentialité des données, comme par exemple les circuits brouillés ou l'évaluation de fonction sécurisée. Un accélérateur matériel a été conçu pour l'apprentissage automatique (Machine Learning) préservant la confidentialité sur les serveurs cloud qui repose sur une architecture FPGA et le protocole cryptographique Circuit brouillé de Yao.

#### Les différentes menaces de sécurité

L'enjeu de la sécurité des cloud FPGA est soumis à différentes menaces. Dans le cas des cloud multi-utilisateurs, certains utilisateurs ou administrateurs malveillants peuvent accéder aux données d’autrui.
Parmi les types de menaces, il y a les outils FPGA malveillants qui remplacent certaines fonctions des outils FPGA. La modification malveillante dans la conception compilée n'apparaît qu’à la génération du bitstream. Dans le processus de génération de flux bitstream, l'outil de conception recherche ces modifications malveillantes. Si l'outil trouve ces modifications malveillantes, il les reconfigure pour activer le cheval de Troie (informatique). Comme menace malveillante, on trouve les trojan (cheval de troie) conçu spécifiquement pour les FPGA. Par exemple le cheval de troie LUT (LookUp Table) qui s'injecte et se déclenche par le bitstream (flux de conception).
L’une des attaques possible sur les FPGA est de les reprogrammer pour générer des fluctuations de tension excessives en utilisant des bitstream valides. Cela peut provoquer un crash de l'appareil dans un court laps de temps. Dans le pire des cas, l'appareil ne se réinitialisera pas, ça sera une attaque Deny Of Services (DoS). Il faudra alors débrancher physiquement l’appareil.
Il y a aussi les attaques par injection de faute (Fault-injection attacks), un attaquant injecte des fautes dans l'exécution processus d'une tâche de calcul. Ainsi, l'appareil produit des sorties erronées au niveau des ports de sortie. Ce problème peut avoir de graves conséquences dans un système cryptographique. Dans un tel système, des sorties défectueuses due à l’attaque peut conduire à une récupération réussie de la clé secrète dans le système.

## Les solutions du marché

Avec la croissance des demandes de ressources FPGA, les offres commencent à émerger sur le marché du cloud computing.
Amazon propose des FPGA aux développeurs d'applications à travers son offre EC2 F1 pour permettre la création d’une accélération matérielle personnalisée. Ils proposent également des infrastructures FPGA et des applications pour des domaines ciblés comme la cryptologie avec AWS Cloud Crypto ou encore le machine learning avec FPGA-Accelerated Deep-Learning.
OVH lance en 2017 une offre "Acceleration as a Service" en partenariat avec Accelize qui propose un magasin d'applications pour la finance et les études de marché basée sur la technologie FPGA de Xilinx.
Huawei propose également des offres "Cloud accéléré" qui reposent sur des FPGA VU9P de Xilinx.
Microsoft utilise les FPGA sur son cloud Azure en tant qu'accélérateur dans le domaine du machine learning. Il est alors possible de déployer un modèle en tant que service Web sur des FPGA pour réduire la latence et améliorer les performances.
| Entreprise | Offre | Nombre de FPGA | Constructeur FPGA | Implémentation | Domaine |
| Amazon | EC2 F1 | 1/2/8 FPGA | Xilinx UltraScale Plus FPGA | Coprocesseur (PCIE) | Développement |
| Amazon AWS | FPGA Cloud Crypto | 1 FPGA | Xilinx UltraScale Plus FPGA | Coprocesseur (PCIE) | Cryptologie |
| Amazon AWS | FPGA-Accelerated Deep-Learning | 1 FPGA | Xilinx UltraScale Plus FPGA | Coprocesseur (PCIE) | Machine learning |
| Accelize | Pro | - | Xilinx | - | Finance/Marché |
| Accelize | Entreprise | - | Xilinx | - | Finance/Marché |
| Huawei | FP1 basic/enhanced | 1/4/8 | Xilinx VU9P | Coprocesseur (PCIE) | Développement |
| Alibaba | ecs.f3 | 1/2/4 | Xilinx VU9P | Coprocesseur (PCIE) | Développement |
| Alibaba | ecs.f1 | 1/2/4 | Intel Arria 10 GX 1150 | Coprocesseur (PCIE) | Développement |
| Microsoft | Azure ML | - | Intel Arria 10 | Coprocesseur (PCIE) | Machine learning |

## Exemples d'utilisation
### Apprentissage Automatique

La complexité de calcul élevée des réseaux de neurones représente un défi critique pour leur adoption plus large dans des scénarios en temps réel et éco-énergétiques. Dans l'implémentation de certains algorithmes utilisés pour l' Apprentissage automatique tel que Long Short-Term Memory (LSTM), les CPU et GPU ne peuvent pas atteindre de parallélisme élevé et consomment beaucoup. L'utilisation des FPGA dans ce contexte, de par leur flexibilité permet d’améliorer l'efficacité énergétique et d'optimiser chaque étape de l’algorithme de calcul.
Le fonctionnement est le suivant. Le serveur hôte reçoit les demandes de calculs des clients et leur répond. Il transfère également les données et taches gourmandes en calculs au FPGA via l'interface PCI Express. Ces tâches sont "bufferisées" sur la mémoire persistante de la carte FPGA avant d'être relayées sur la puce FPGA par le bus AXI4 (ou AXI4Lite). Sur la puce FPGA sont intégrées les fonctions algorithmiques de Long Short-Term Memory (LSTM) qui est un réseau de neurone récurrent(RNN) ou plus généralement les fonctions de réseau de neurone profond (DNN).

### Data Caching

Les magasins de valeurs-clés KVS (Key–value Store) deviennent de plus en plus courant dans les infrastructures Web mais ces technologies sont souvent implémentées sur des serveurs dont les performances sont limitées.
Memcached, déjà utilisé par des grands acteurs informatique tels que Facebook, Wikipédia, Flickr et Wordpress est alors limité par le processeur dans des infrastructures classiques.
Les projets visant à utiliser des FPGA comme accélérateur memcached permettent d'obtenir de meilleurs résultats sur trois domaines : la latence, le débit en opérations par seconde et le coût.

### Equilibreur de Charge

Les équilibreurs de charge sont des éléments essentiels dans les centres de données permettant de répartir les demandes entre serveurs actifs. L'implémentation d'un équilibreur de charge sur des ressources FPGA virtualisées permet de surpasser une version logicielle installé sur un serveur standard en termes de débit et de latence.
L'utilisation d'une telle solution montre que l'équilibreur de charge FPGA garde une latence constante malgré l'augmentation du débit et ne perd aucun paquet contrairement à un équilibreur de charge sur machine virtuelle ou quand la charge augmente, le nombre de paquets abandonnés et la latence sont en hausses.
L'autre avantage réside dans la gestion du Cloud. En effet, un équilibreurs de charge FPGA peut remplacer plusieurs machines virtuelles simplifiant et rationalisant le systèmes de l'utilisateur, potentiellement réduire les coûts d'exploitation et réduire la consommation d'énergie globale et les coûts du centre de données.

### Télécommunication

Les fournisseurs de services de télécommunications sont confrontés à des demandes d'utilisation croissantes, une augmentation exponentielle des abonnés mobiles et des appareils de l'Internet des objets. Avec l'arrivée de la 5G, la virtualisation des fonctions réseau NFV (Network function virtualization) est cruciale.
La virtualisation des fonctions réseau est aujourd'hui une tendance importante dans l'industrie des réseaux, qui vise à remplacer les fonctions réseau de télécommunications actuelles basées sur des composants matériels spécialisés, par des fonctions de réseau virtuel fonctionnant sur des serveurs à usage général. Le déplacement des NFV d'un matériel spécialement conçu vers des serveurs virtualisés à usage général présente en fait de gros avantages du point de vue de la maintenabilité et de la flexibilité, mais présente des défis sans précédent pour les processeurs qui ne sont pas en mesure de faire face aux besoins des opérateurs de réseau mobile.
Dans cet exercice, les FPGA sont une solution prometteuse pour les environnements cloud NFV et 5G en raison de leur temps d'exécution rapide et de leur grand potentiel d'accélération grâce à la cartographie du parallélisme des applications sur la structure reconfigurable$^,$.
Dans ce contexte, Intel travaille avec des leaders de l'industrie qui développent des solutions afin de transformer le réseau de demain pour les NFV (Open vSwitch,Segment routing V6), le réseau d'accès (Virtual RAN,LDPC 5G), le réseau cœur et périphérique(Réseau Cœur 5G, virtual Evolved Packet Core, et la sécurité (Virtual Firewall,IPsec & TLS).

### Chiffrement

Le Chiffrement homomorphe est une technique permettant au calcul de se dérouler sur des données chiffrées.
Les implémentations précédentes de ce chiffrement homomorphe sur des processeurs à usage général avaient une latence très longue et des coûts de calcul extrêmement élevés ce qui le rend impraticable pour le cloud computing.
Les algorithmes de chiffrement ont des caractéristiques particulières, comme le calcul intégral ou la manipulation au niveau des bits ce qui rend les plates-formes standard comme les CPU et les GPU moins compétitives que les FPGA. Par rapport à l'accélération GPU, la conception basée sur FPGA a une consommation d'énergie beaucoup plus faible et de meilleures performances.
Les résultats obtenus sur différentes études soulignent le grand potentiel des technologies FPGA dans l'accélération d'algorithmes cryptographiques à forte intensité de calcul.
Une autre approche que le chiffrement homomorphe travaillant sur des données chiffrées permet de développer et d'implémenter des fonctions sécurisées dans un langage de haut niveau. Ainsi, les données sont transmises chiffrées et le FPGA les déchiffre, exécute une fonction préalablement développée et chiffre de nouveau le résultat avant de le retourner.

### Big Data

Les FPGA reçoivent beaucoup d'attention ces dernières années pour les applications d'analyse des données en raison de leur capacité à prendre en charge le traitement parallèle personnalisé. Les nouvelles applications d'analyse de Big Data nécessitent une quantité importante de puissance de calcul du serveur, chose pour laquelle sont reconnus les FPGA. Ils sont de ce fait déployés dans l'environnement cloud en tant qu'accélérateurs pour le traitement de données à grande échelle comme MapReduce.
L’intérêt des FPGA dans ce domaine est d'accélérer le traitement des données, d'augmenter l’efficacité énergétique en déchargeant les fonctions intensives en calcul vers l'accélérateur matériel mais également de permettre, de par la flexibilité de programmation des puces, la mise en place d'une solution qui préserve la confidentialité de l’analyse de données en exploitant les propriétés de sécurité uniques des FPGA. En combinant la méthode de protection par hashcode avec le cloud FPGA, les données de l'utilisateur sont correctement protégées : les textes en clair des données de l'utilisateur n'apparaissent qu'à l'intérieur des FPGA pour le traitement des données, et le fournisseur de services cloud n'a pas accès à ces dernières.
La programmation des FPGA est nécessaire avant son utilisation. Il faut préalablement convertir les fonctions C (Cartographie et réduction) de MapReduce en modules matériels HLS (High-level synthesis) avant de les transférer sur les puces FPGA. Généralement, les fonctions sont implémentées en pipeline pour de meilleurs résultats$^,$.

### Médecine

La médecine est également concerné par le cloud FPGA. En effet, la quantité de données générées en génomique devrait se situer entre 2 et 40 exaoctets par an pour la prochaine décennie, complexifiant ainsi leur analyse. Les accélérateur FPGA dans le cloud permettent aux bio-informaticiens d’améliorer le temps d’exécution et le débit des analyses de données génomique$^,$. Les performances et la rentabilité se révèlent nettement supérieur que GATK (boîte à outils d'analyse du génome) sur un serveur à CPU Xeon standard.

### Éducation

Nous retrouvons également les plateformes cloud FPGA pour l'éducation. Une université chinoise a jugé intéressant d'intégrer un pool de ressources FPGA à disposition des étudiants informatique pour qu'ils développent leur capacité à visualiser le matériel et les logiciels dans un système informatique. Les étudiants acquièrent ainsi une méthodologie et des pratiques de co-conception matériel-logiciel.

## Efficacité énergétique

Un centre de données représente la majeure partie de la consommation d'énergie dans l'infrastructure Cloud. De nos jours, les centres de données contiennent des milliers de nœuds de calcul qui consomment une énorme quantité d'électricité. Malgré l'innovation mondiale appliquée au Green cloud computing, la plupart des entreprises informatiques choisissent d'acheter simplement de l'énergie au prix le plus bas au lieu d'augmenter l'efficacité des nœuds de calcul.
Augmenter les performances sur le Cloud, c'est augmenter le nombre de nœuds de calcul, ce qui conduit à augmenter la consommation d'énergie. D'autre part, les nœuds de calcul basés sur le CPU peuvent être remplacés par des solutions matérielles optimisées, dont l'efficacité est évidemment plus élevée. Les processeurs universels tels que Atom et Xeon ne sont pas conçus pour offrir une efficacité maximale pour chaque application . L'un des moyens possibles d'améliorer l'efficacité énergétique du nœud de Cloud computing consiste à utiliser des accélérateurs matériels basés sur FPGA et décharger des applications vers un matériel dédié.
Les avantages des ressources FPGA sont la manière optimisée d'utiliser la solution matérielle et leur excellent rapport performances/consommation. Il est possible d'appliquer une solution FPGA optimisée basée sur le matériel pour une tâche de calcul précise améliorant significativement l'efficacité du calcul et la réduction de la consommation d'énergie du centre de données. Les FPGA dans le cloud ont principalement été proposés pour une informatique présentant moins d'impacts environnementaux, en réduisant la consommation d'énergie et donc les coûts d'exploitation et les investissements dans les infrastructures pour les sources d'électricité non issue d'énergies fossiles.
L'utilisation de FPGA sur des modèles informatiques existants tels que le Big Data permet une réduction de la puissance et une augmentation significative de l'efficacité énergétique.