Virtualization of computing accelerators
The wide adoption of the heterogeneous architecture design has led to the integration, in modern embedded SoCs, of a variety of computing accelerators to off-load workloads from general purpose CPUs (Cortex-A15, Cortex-A53, Cortex-A57, Cortex-A72, etc.). Such accelerators range from highly programmable devices (e.g., GPU) to FPGAs, up to custom ASICs designed to accelerate specific functions (e.g. Audio/Video decoders, VNF network functions accelerators, crypto accelerators, etc.). Applications make extensive use of these accelerators to keep pace with the increasing performance user requirements. In addition, the generalization of virtualization in all embedded systems requires accelerators to be made available to virtual machines at low performance overhead.
In this context, to maximize the user experience and the overall system performance in virtualized environments there is a strong demand for optimized accelerators virtualization solutions. Some devices embed hardware extensions to support accelerators virtualization, that makes it possible to assign them to multiple virtual machines without the need of emulation (i.e., full virtualization). However those hardware extensions are not always supported, making necessary the deployment of full software virtualization solutions for the accelerators. In other cases, some devices implement very specific functionalities that require the customization of the virtualization infrastructure (e.g., QEMU/KVM), where each device needs to be treated differently by adapting accordingly the virtualization software layer to ensure best performance.
Top level architecture of the Virtual Open Systems accelerators' virtualization product and service offer
Efficient Virtualization of accelerators is a key differentiating factor in modern systems, where it becomes a selling feature for application domains such as Networking Functions Virtualization (NFV), small cells gateways, smart meters gateways, automotive and many others.
Custom services for virtualization of accelerators
Thanks to its experience on virtualization and heterogeneous systems (e.g., ARM based SoCs), Virtual Open Systems is the right partner for the implementation of professional custom development services aiming to support the virtualization of any kind of computing accelerators, for both hardware extensions enabled and legacy devices. The virtualization services for accelerators span through:
- Memory virtualization optimization for devices equipped with an IOMMU
- Dual stage memory translation support for guest user-space drivers
- Direct assignment of accelerators to virtual machines (VFIO)
- Virtualization of GPUs
- Virtualization of FPGAs (assignment of FPGA partitions to virtual machines)
- Customization of QEMU/KVM to enable the virtualization of custom hardware accelerators
- Virtualization through API interception (OpenCL, OpenGL, custom programming APIs), to enable sharing of accelerators among virtual machines, where is missing hardware support for virtualization.
- Custom virtualization management runtime for dynamic assignment of accelerators to virtual machines