Microsoft a été le premier à utiliser l'acronyme « vGPU » (virtual Graphics Processing Unit) pour désigner une fonctionnalité de RemoteFX qui permettait à plusieurs utilisateurs, au travers du protocole RDP, de pouvoir renvoyer DirectX vers des processeurs graphiques. Le constructeur NVIDIA l'a ensuite repris pour l'associer à sa technologie GRID mais la signification n'était plus vraiment la même. Pour NVIDIA, les applications de plusieurs VMs peuvent réellement utiliser une partie d’un GPU, la VM considérant cette partie GPU comme un vrai processeur graphique physique.
En 2010, quand Microsoft a sorti vGPU RemoteFX, les GPUs n’étaient pas généralisés parce qu’à cette époque, personne n’avait besoin de puissance GPU sur ses serveurs. Il n’y avait effectivement pas encore vraiment d’usage qui s’y prêtait, les seuls besoins se retrouvaient surtout dans des jeux et des stations de travail qui exécutaient des applications de CAO. Une exception quand même pour quelques clients « haut de gamme » qui utilisaient des solutions de virtualisation très couteuse (un utilisateur/serveur) car aucune fonctionnalité de partage GPU n’existait encore dans les hyperviseurs. Le seul mode disponible était le « PCIe Passthrough » où le GPU ne pouvait être affecté qu’à une seule machine virtuelle.
Malheureusement, le mode GPU Passthrough présente de gros inconvéniants :
- Le coût : Une VM pour un GPU
- La limitation des fonctionnalités hyperviseur : Pas de migration à chaud des VMs (vMotion) et pas de snapshot en direct (entre autre)…
- La sécurité : le mode Passthrough présente des vulnérabilités en matière de sécurité car il n’y a pas de couche sur l'hyperviseur pour protéger la machine virtuelle.
En fait, les exigences croissantes des OS et des protocoles en matière de CPU nécessitaient de pouvoir déléguer une partie des traitements graphiques sur un GPU partagé et c’est surtout pour cela que Microsoft a développé vGPU RemoteFX. Même si cette fonctionnalité n’était pas conçue pour accélérer des applications graphiques 3D, ni même pour être utilisée dans des environnements VDI, elle pouvait tirer parti des GPU en toute sécurité pour une meilleure évolutivité des serveurs et pour améliorer les performances de protocole pour les postes de travail et les applications ordinaires.
Mais comme les options de partage virtuel de GPU n’existaient pas dans les hyperviseurs, Microsoft a dû adopter une approche avant-gardiste pour bénéficier des avantages d’un GPU en s’affranchissant des problèmes liés au mode GPU Passthrough. Microsoft a développé des technologies d’interception d’API, qui font que lors de l’appel de certaines API, et plus principalement de celles qui prennent en charge les fonctions graphiques du système d’exploitation et du protocole, plutôt que d’accéder directement au pilote GPU natif, une couche d’interception logicielle prenait le relai et les convertissait en appels vers le GPU.
Les inconvénients liés à ces technologies faisaient que les applications d’une VM pilotée par RemoteFX ne voyaient pas directement de processeur graphique. Mais ce n’était pas forcement gênant car elles n’avaient généralement pas besoin de GPU, hormis les applications 3D, et même si la couche d'interception réduisait une partie des performances du processeur graphique et ne procurait pas d'avantage considérable en termes d'expérience utilisateur, elle était hautement évolutive et sans restriction au niveau du nombre d'utilisateurs.