Introduction

From Open-IOV
Revision as of 17:04, 12 December 2022 by Arthur (talk | contribs) (Created page with "This page will provide introductory context on where to begin reading. It will aim to give you a sense of primitives or foundational concepts used for GPU Virtualization. == Primarives == The primitives section will cover a few notes on the basics of virtualizing a GPU or IO device. === PCI BAR === PCI-e devices such as GPUs are used for input and output to and from a computer system. This input and output occurs using [http://xillybus.com/tutorials/pci-express-tlp-pci...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This page will provide introductory context on where to begin reading. It will aim to give you a sense of primitives or foundational concepts used for GPU Virtualization.

Primarives

The primitives section will cover a few notes on the basics of virtualizing a GPU or IO device.

PCI BAR

PCI-e devices such as GPUs are used for input and output to and from a computer system. This input and output occurs using TLPs or Transaction Layer Packets over the PCI-e packet network. The IO device is presented to the host operating system as BARs or Base Address Registers.

GPU Drivers

GPUs need software to communicate from a host computer system to the device (of course) - this software is called a GPU Driver and it typically interacts with the device using MMIO or Memory Mapped IO. MMIO is a set of operations used to allow normal CPU instructions to address registers in RAM in order to communicate with the PCI-e device. In the context of virtualization these registers must be presented into the device in a way that the guest operating system expects. Typically this is accomplished using VFIO or Virtual Function IO. VFIO is used for many methods of virtualizing the device. This includes discrete assignment, software virtualization, and firmware virtualization.

IOMMU

MMU or Memory Management Units handle hardware enforcement access to memory paging in computer systems. In the context of virtualized Memory Mapped Input Output devices an MMU is required to hardware enforce access to virtual devices (an Input Output Memory Management Unit or IOMMU). In the case of VFIO, groups of IOMMU devices (IOMMU Groups) are used to control access to the device. These IOMMU Groups often represent individual devices or sub-devices (in the context of Unassisted Virtualization, Hardware-Assisted Virtualization, or Hardware-Assisted Paravirtualization) which may be bound to a VFIO bus driver (such as vfio-pci) which results in a VFIO Group (unit of ownership).

Virtualization vs. Paravirtualization

Virtualization provides the use of unmodified guest drivers in the context of GPUs.

Paravirtualization provides

Software Virtualization vs. Firmware Virtualization