wikifr.info

Cloud de FPGA

Un article de Wikipédia, l'encyclopédie libre
Photo d'une Xilinx FPGA XCV400E-PQ240
Photo d'une puce Xilinx FPGA XCV400E-PQ240

Ces dernières années les cloud 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 accessible par les entreprises ou le grand publique.

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 en termes de 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 centre de données et l'on retrouve leur utilisation dans différents domaines tel que la médecine, le BigData, l'éducation et la télécommunication.

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[1]. 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[2]. 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[3]. 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[1]. Les FPGA sont connus pour surpasser les GPU dans de nombreuses applications spécifiques (Chiffrement, Mathématique et Médicale)[4].

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 cryptage 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[5].

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[6]. L'une des approches est de s'intéresser à la réduction énergétique des composants de l’infrastructure cloud[6].

Architecture

Implémentation Matérielle

CoProcesseur

Exemple schéma copresseur CPU-FPGA connecté au réseau cloud

L'hyperviseur FPGA est une plateforme spécifique[7] pour piloter les accélérateurs FPGA qui sont utilisés comme périphériques connecté en PCIExpress[8]. 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[9] pour une application hôte exécuté sur une machine CPU[10].

Un système d'exploitation est proposé pour gérer les FPGA[11]. 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[12].

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[13]. 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[14].

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[15]. 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[16]. On peut ajouter à ce qui a été décrit, cette étude se repose également sur des services cloud courants[17] et le Transfert d'état de représentation (REST)[17].

Virtualisation

Classification des techniques de virtualisation FPGA

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[18].

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[18].

Les overlays (superpositions) sont des architectures implémentées sur les FPGAs reconfigurables[19]. 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[19]. Ces architectures offrent trois avantages : ils peuvent être utilisés pour homogénéiser différents FPGA vendus sur l'étagère COTS (Commercial Of 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)[19]. Il est ajouté de nouvelles fonctionnalités pour permettre la planification préventive des tâches matérielles et la migration en direct[19].

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 FPGAs physiques non reconfigurable[20]. Il utilise une technique spécifique[21] pour les communications entre VM et FPGA[20]. Il utilise la table de mappage CID (Context Identifier)[22]/VF (Virtual Functions)[22] 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[23]. 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[23]. 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)[24] 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[23].

Au Niveau d'un noeud

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[18].

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[4]. Pour permettre l'utilisation de l'accélérateur FPGA dans le cas du pvFPGA (paravirtualized FPGA)[25], 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[26] 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[27],[28],[29].

Le prototype RC2F (Reconfigurable Common Computing Frame) qui s'appuie sur des études antérieures[30], se base sur plusieurs vFPGAs (virtual FPGAs) utilisateurs fonctionnant sur un seul FPGA[31]. La partie principale est composée d'un hyperviseur[32] qui gère la configuration, les coeurs FPGA et la surveillance des informations d'état[31]. 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[31],[33]. Les FPGA sont situés sur 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)[34]. L'hyperviseur FPGA s'occupe de la gestion des vFPGA, leur encapsulation, la gestion de l'état et la reconfiguration[35] grâce à l'ICAP (Internal Configuration Access Port)[33]. 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[33].

Au Niveau multiple noeud

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[18].

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[36](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[36]. 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[36]. Cela permet de mapper logiquement les services sur plusieurs FPGA[37]. Catapult, qui s'appuie sur cette structure, est une partie importante du moteur de classement Bing[38]. L'interface logicielle participe à la gestion de la compression des requêtes vers Bing en document[38]. 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[39]. Une file d'attente de requêtes et documents se situe dans la DRAM du FPGA, pour être traité par le pipeline[39]. Il existe d'autres fonctionnalités de Catapult comme l'expression de forme libre[40] et la notation des documents[41].

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[42]. 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[42]. 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[42]. 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[42]. Cette nouvelle abstraction système, qui permet de faire l'intermédiaire entre les FPGA et la couche compilation[43]. 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[44]. 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[45]. La partition fractionne une "netlist" donnée générée à partir de l'étape précédente en un groupe de blocs virtuels[45],[46].

Fiabilité

Les FPGA basés sur SRAM (Static Random Access Memory)[47],[48] utilisent celle-ci pour développer les fonctions de routage et de calcul de base, grâce à l'utilisation de LUT et de MUX[49]. Il utilise un commutateur SRAM comme élément programmable qui est un transistor passe-oxyde mince[49]. 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[50]. Le bouleversement d'événement unique SEU (Single-Event Upsets)[50] 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)[50],[51]. Dans les FPGA, les SEU peuvent directement corrompre les résultats des calculs ou induire des modifications de la mémoire de configuration[50]. Les bouleversements doivent être détectés[52] et corrigés pour garantir que les erreurs ne s'accumulent pas[53]. Les particules chargées peuvent également modifier la fonction logique du circuit mappé lorsqu'elles atteignent la configuration sur la puce[52],[51],[50].

Sur le même thème, il est bon de citer l'effet d'événement unique SEE (Single Event Effect)[54], dans les environnements terrestres, causés par divers neutrons et des particules alpha[55]. 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)[55]. Les auteurs éprouvent le FPGA par des injections volontaires d'erreurs et commentent les résultats[56],[57].

Sécurité

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

Fonctionnement Proxy de rechiffrement avec un cloud FPGA

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 garde 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 doivent être rendus à un autre utilisateur, il est habituellement nécessaire de déchiffrer ces données pour les chiffrer à nouveau avec la clé de cette 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[58].

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é 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é[59].

Il y a généralement trois parties pour une architecture d'un proxy de re-chiffrement : l'utilisateur

What is wikifr.info Wiki est la principale source d'information sur Internet. Il est ouvert à tout utilisateur. Un wiki est une bibliothèque publique et multilingue.

La base de cette page est sur Wikipedia. Texte disponible sous CC BY-SA 3.0 Unported License.

Wikipedia® est une marque déposée de Wikimedia Foundation, Inc., une organisation à but non lucratif. wikifr.info est une société indépendante et non affiliée à la Wikimedia Foundation.

E-mail: ivanovalik@yahoo.com