35
GPU-resource multiplexing in component-based systems Sebastian Sumpf <[email protected]> Josef Söntgen <[email protected]>

GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GPU-resource multiplexing in component-basedsystems

Sebastian Sumpf<[email protected]>

Josef Söntgen<[email protected]>

Page 2: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 2

Page 3: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 3

Page 4: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Motivation

GPU-resource multiplexing in component-based systems 4

Page 5: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Motivation

Architecture layout of an Intel Core i7 6700K processor 1

1https://software.intel.com/sites/default/files/managed/c5/9a/The-Compute-Architecture-of-Intel-Processor-Graphics-Gen9-v1d0.pdf

GPU-resource multiplexing in component-based systems 5

Page 6: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Motivation

GPUs have become freely programmable, think shader language,CUDA/OpenCL 2

2https://www.shadertoy.com/view/ldlcRf

GPU-resource multiplexing in component-based systems 6

Page 7: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GPU machine code

3

3https://twitter.com/adamjmiles/status/821914849038966784

GPU-resource multiplexing in component-based systems 7

Page 8: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Maybe operating systems

→ should handle GPUs in a way like they do it for CPUs

GPU-resource multiplexing in component-based systems 8

Page 9: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 9

Page 10: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

State of the art

GPU-resource multiplexing in component-based systems 10

Page 11: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Complexity analysis (Intel only)

Mesa library

Mesa KLOCEGL 7.5OpenGL 170GLSL 90i965 DRI driver 81

i915 driver

~100 KLOC

GPU-resource multiplexing in component-based systems 11

Page 12: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Port Mesa with software rendering back end

GPU-resource multiplexing in component-based systems 12

Page 13: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Or this

GPU-resource multiplexing in component-based systems 13

Page 14: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Until

GPU-resource multiplexing in component-based systems 14

Page 15: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

3D software stack on Linux

GPU-resource multiplexing in component-based systems 15

Page 16: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

3D software stack on Linux

1. Observation while investigating the i915 GPU driver fromLinux

I A lot of code to support previous IGD generationsI Support for many outdated features

2. Idea→ Support current hardware generations (i. e., Broadwell andnewer) only→ Take advantage of modern features→ Try to write a minimal GPU multiplexer from scratch

GPU-resource multiplexing in component-based systems 16

Page 17: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GPU resource multiplexing on Linux

GPU-resource multiplexing in component-based systems 17

Page 18: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Engines

1. Render engine (3D/GPGPU)

2. VCS engine (Video Command Streamer - video decodesupport)

3. VECS engine (Video Enhancement Command Streamer)

4. Blitter engine

→ Concentrate on render engine

GPU-resource multiplexing in component-based systems 18

Page 19: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Resource management by the GPU driver

44 https://image.slidesharecdn.com/19gscale1-160901124550/95/xpds16-live-scalability-for-vgpu-using-gscale-

xiao-zheng-intel-5-638.jpg?cb=1472733989

GPU-resource multiplexing in component-based systems 19

Page 20: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GGTT and PPGTT

Global Graphics Translation Table (GGTT)I Only one per GPUI One level (8MB)I 8 Byte page table entries (PTEs) point to 4KB physical pagesI The leading PTEs directly map into the aperture

Per-process GTT (PPGTT)I Hierarchical page table in various formatsI Gen8+ supports four level page table formatI 48 bit virtual-address space

GPU-resource multiplexing in component-based systems 20

Page 21: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Aperture and fence registers

ApertureI Only way for way CPU to access graphics memory directlyI Mapped through the GTTI Up to 512MB on Broadwell/Skylake

Fence registersI Allow to set tiling mode (X or Y) for memory area mapped

through the aperture (automatic tiling/detiling on write/readaccess by the CPU)

I 32 registers on Broadwell/Skylake

GPU-resource multiplexing in component-based systems 21

Page 22: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Ring management

Physical and logical rings

GPU-resource multiplexing in component-based systems 22

Page 23: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Command execution

1. Classical ring execution by setting the head

2. ExeclistsI Hardware status pageI Register state context

I PPGTT contextI Logical-ring contextI HW/engine context

GPU-resource multiplexing in component-based systems 23

Page 24: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 24

Page 25: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GPU resource multiplexing in user space

GPU-resource multiplexing in component-based systems 25

Page 26: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

GPU resource multiplexing in user space

GPU-resource multiplexing in component-based systems 26

Page 27: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

And of course

GPU-resource multiplexing in component-based systems 27

Page 28: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Something new

GPU-resource multiplexing in component-based systems 28

Page 29: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Component based scenario

GPU-resource multiplexing in component-based systems 29

Page 30: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 30

Page 31: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Results

Trusted computing base

Component KLOCMicrokernel 10Genode base system < 30Nitpicker GUI server 5GPU multiplexer 10

GPU-resource multiplexing in component-based systems 31

Page 32: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

State

Current stateSupport for Mesa-based GPU clients

FutureTake advantage of the blitter engineSkylake, Kaby Lake, ...

Future (tempting) workVirtual GPU in VirtualBox as GPU client

GPU-resource multiplexing in component-based systems 32

Page 33: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Outline

1. Motivation

2. State of the art

3. GPU resource multiplexing in user space

4. Results

5. References

GPU-resource multiplexing in component-based systems 33

Page 34: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

References

Intel’s open source community: https://01.org

Ben Widawsky: https://bwidawsk.net/blog/index.php/2015/09/gen-graphics-and-the-urb

Daniel Vetter:http://blog.ffwll.ch/2012/10/i915gem-crashcourse.html

GPU-resource multiplexing in component-based systems 34

Page 35: GPU-resource multiplexing in component-based systems · Outline 1. Motivation 2. State of the art 3. GPU resource multiplexing in user space 4. Results 5. References GPU-resourcemultiplexingincomponent-basedsystems2

Demo

GPU-resource multiplexing in component-based systems 35