Virtual machines acceleration needs GPU full virtualization
Graphics Processing Units (GPUs) are today used not only to perform graphics tasks but also to execute general purpose applications for reducing CPU workload. Modern SoCs embed a GPU together with a general purpose CPU. Virtualization has become an essential technology in several application domains, thus also enabling virtual machines to benefit from GPU acceleration, not only to improve the graphical experience in virtualized systems but also to free CPU resources.
Enabling full GPU virtualization in new generation SoCs makes it easier to speed up the adoption of the SoC itself in several market segments including networking (Network Functions Virtualization - NFV), High Performance Computing (HPC), automotive and connected objects, smart-home and smart-meters gateways, smart-cell and telecommunication data centers.
GPU virtualization device assignment through VFIO
Legacy GPUs can be efficiently assigned to virtual machines with the so-called direct assignment virtualization technology through VFIO. Virtual Open Systems has ported the VFIO (Virtual Function I/O) framework to ARM platform devices, allowing to remove such devices from the host machine to be directly attached to a virtual machine. Thanks to VFIO, no action at the hypervisor level is needed to handle the interactions between a virtual machine and the physical device, providing near native performance in devices virtualization. In addition with this technology, the native vendor device driver can be used on the guest OS without any modification. Registers and interrupts are directly redirected to the virtual machine, while DMA access are secured by an IOMMU, which prevent the GPU to access memory spaces which are not allowed to.
Top level architecture of the Virtual Open Systems VFIO based GPU virtualization
As a requirement, the VFIO framework ported to ARM based embedded SoCs needs a device which is put behind an IOMMU; such a device can be bound to a single virtual machine to enable for instance GPU virtualization. Having been directly involved in the open source development as the maintainer of VFIO for ARM platform devices, Virtual Open Systems can provide professional custom solutions based on the VFIO framework to enable GPU and accelerators virtualization for modern SoC based systems:
- Support for custom IOMMU interface
- Device support in QEMU
- User space drivers development
- Custom virtualization solutions