Difference between revisions of "GPU Driver Internals"

From Open-IOV
Jump to navigation Jump to search
Line 2: Line 2:


== i915 ==
== i915 ==
=== High Level Architecture ===


=== Scheduling ===
=== Scheduling ===
Line 8: Line 10:


===== vExeclist =====
===== vExeclist =====
The vExeclist is a method to submit commands directly to the GPU without the use of an intermediate microcontroller.


===== vGuC =====
===== vGuC =====
Line 17: Line 20:


===== i915 Clients =====
===== i915 Clients =====
Processes which make use of the Intel i915 driver receive an i915 Client ID.
===== Translation Tables =====


===== GTT (Graphics Translation Table) =====
====== GTT (Graphics Translation Table) ======
GPU Memory on-device is a part of a GTT or Graphics Translation Table. This table stores information globally for all graphics processes within the system. Some processes access the GTT such as [[wikipedia:Direct_Rendering_Infrastructure|DRI]] while other's receive a Per-Process Graphics Translation Table (PPGTT) buffer based on their i915 Client ID.
GPU Memory on-device is a part of a GTT or Graphics Translation Table. This table stores information globally for all graphics processes within the system. Some processes access the GTT such as [[wikipedia:Direct_Rendering_Infrastructure|DRI]] while other's receive a Per Process Graphics Translation Table (PPGTT) buffer based on their i915 Client ID.


===== PPGTT (Per Process Graphics Translation Table) =====
====== PPGTT (Per Process Graphics Translation Table) ======
Process-specific memory buffers are stored inside a Per Process Graphics Translation Table or PPGTT. This is an [https://open-iov.org/index.php/Virtual_IO_Internals#VRAM_Isolation_(GPU_GMMU) GPU MMU] translated subregion or IOVA of global GPU memory specific to a GPU process's client ID.


====== Aliasing PPGTT ======
====== Aliasing PPGTT ======
Line 28: Line 35:


== OpenRM ==
== OpenRM ==
=== High Level Architecture ===


=== Scheduling ===
=== Scheduling ===
Line 42: Line 51:


===== RM Clients =====
===== RM Clients =====
Processes which make use of the RM driver receive an RM Client ID.
===== Translation Tables =====


== amdgpu ==
== amdgpu ==

Revision as of 21:05, 9 December 2022

This page will detail the internals of various GPU drivers for use with I/O Virtualization.

i915

High Level Architecture

Scheduling

In-VM Scheduling

vExeclist

The vExeclist is a method to submit commands directly to the GPU without the use of an intermediate microcontroller.

vGuC

vGuC is a command submission interface used to process commands to the Intel Graphics Microcontroller (GuC).

Between-VM Scheduling

Memory Management

i915 Clients

Processes which make use of the Intel i915 driver receive an i915 Client ID.

Translation Tables
GTT (Graphics Translation Table)

GPU Memory on-device is a part of a GTT or Graphics Translation Table. This table stores information globally for all graphics processes within the system. Some processes access the GTT such as DRI while other's receive a Per Process Graphics Translation Table (PPGTT) buffer based on their i915 Client ID.

PPGTT (Per Process Graphics Translation Table)

Process-specific memory buffers are stored inside a Per Process Graphics Translation Table or PPGTT. This is an GPU MMU translated subregion or IOVA of global GPU memory specific to a GPU process's client ID.

Aliasing PPGTT
Real PPGTT

OpenRM

High Level Architecture

Scheduling

In-VM Scheduling

gpu-mgr

Between-VM Scheduling

nvidia.ko

Memory Management

RM Clients

Processes which make use of the RM driver receive an RM Client ID.

Translation Tables

amdgpu

Citations (Talks and Reading Material)

  1. Intel Graphics Programmer's Reference Manuals (PRM)
  2. i915: Hardware Contexts (and some bits about batchbuffers)
  3. i915: The Global GTT Part 1
  4. i915: Aliasing PPGTT Part 2
  5. i915: True PPGTT Part 3
  6. i915: Future PPGTT Part 4 (Dynamic page table allocations, 64 bit address space, GPU "mirroring", and yeah, something about relocs too)
  7. i915: Security of the Intel Graphics Stack - Part 1 - Introduction
  8. i915: Security of the Intel Graphics Stack - Part 2 - FW <-> GuC