Besoin de virtualisation des accélérateurs de calcul
L'adoption d'architectures hétérogènes a conduit à l'intégration dans les systèmes intégrés d'une variété d'accélérateurs pour étoffer la puissance de calcul des processeurs à usage général (c'est à dire Cortex-A15, Cortex-A53, Cortex-A57, Cortex-A72, etc.). Ces accélérateurs incluent des dispositifs hautement programmables comme par exemple GPU, FPGA, mais aussi des ASIC personnalisés conçus pour accélérer des fonctions spécifiques (décodeurs audio/vidéo, accélérateurs de fonctions de réseau NFV, accélérateurs cryptographiques , etc.). Beaucoup d'applications font un usage intensif de ces accélérateurs pour mieux satisfaire les besoins des utilisateurs en prestations croissantes. En outre, la généralisation de la virtualisation dans tous les systèmes embarqués rend nécessaire la mise à la disposition de ces accélérateurs aussi pour les machines virtuelles et sans dégradation de prestation.
Dans ce contexte, afin de maximiser l'expérience d'utilisateur et la performance globale du système dans des environnements virtualisés, il y a une forte demande pour des solutions optimisées de virtualisation d'accélérateurs. Certains accélérateurs intègrent des extensions matérielles pour faciliter leur virtualisation, ce qui permet de les allouer à des multiples machines virtuelles sans besoin d'émulation (i.e., cas de la virtualisation complète). Toutefois, ces extensions matérielles ne sont pas toujours disponibles, ce qui rend nécessaire le déploiement de solutions logicielles de virtualisation pour ces accélérateurs. Dans d'autres cas, des accélérateurs mettent en oeuvre des fonctionnalités très spécifiques qui nécessitent la personnalisation de l'infrastructure de virtualisation (par exemple des extensions QEMU et/ou KVM), où chaque accélérateur doit être traité différemment par adaptation de la couche logicielle de virtualisation afin d'assurer la meilleure performance.
Architecture haut niveau de l'offre de virtualisation d'accélérateurs par Virtual Open Systems
Une virtualisation efficace des accélérateurs est un facteur clé de différenciation dans des systèmes embarqués modernes, qui devient un argument de vente pour nombreux domaines d'application tels que la virtualisation des fonctions réseau (NFV), les passerelles des small cells, les passerelles des compteurs intelligents, l'automobile, etc.
Services de développement adaptés à la virtualisation des accélérateurs
Par son expérience de la programmation logicielle des systèmes hétérogènes (c'est à dire, SoC basés sur processeurs ARM et accélérateurs) et de la couche de virtualisation, Virtual Open Systems est un partenaire idéal pour la réalisation de services professionnels de développement personnalisé visant à mettre en oeuvre la virtualisation de toute sorte d'accélérateurs de calcul. Ces services de virtualisation pour les accélérateurs incluent:
- L'optimisation de la virtualisation de la mémoire pour les dispositifs équipés d'un IOMMU
- Support de la translation de mémoire dual stage pour les pilotes de l'espace utilisateur d'invité
- Allocation directe des accélérateurs aux machines virtuelles (VFIO)
- Virtualisation des GPUs
- Virtualisation des FPGAs (allocation de partitions de FPGA aux machines virtuelles)
- Extensions QEMU/KVM pour permettre la virtualisation d'accélérateurs matériels personnalisés
- Virtualisation par interception d'API (OpenCL, OpenGL, etc.) afin de permettre le partage d'accélérateurs entre machines virtuelles, où le support matériel pour la virtualisation est manquant.
- Exécution de gestion personnalisée de virtualisation pour l'allocation dynamique d'accélérateurs aux machines virtuelles