Apple has been granted a patent (number 10,120,728) for “graphical processing unit (GPU) implementing a plurality of virtual GPUs for use with Macs.” Apple and Blackmagic have teamed up for two eGPUs (the eGPU Pro is pictured), but this invention takes this a step further.
In February Apple released macOS High Sierra 10.13.4, which added support for external graphics processors (eGPUs). On a traditional physical computer, a GPU typically performs all the capture, encode and rendering to power complex tasks, such as 3D apps and video. A virtual eGPU (VGPU) is a computer processor that renders graphics on a virtual machine’s host server rather than on a physical endpoint device.
NVIDIA introduced the first virtual GPU in 2012 to help solve that problem, reducing lag time when delivering graphics to remote users and providing the same performance they would get from a PC. This is especially useful for users that require computer-aided design or 3D graphics applications.
In the patent filing, Apple notes that a GPU may sometimes experience “down time” (stall periods) in which one or more execution units do not perform any calculations. Down time can occur when accessing memory, for example, because an execution unit is waiting for new data to arrive. Thus, at times, one or more GPU execution units may be idle.
What’s more, when a first program is being executed by a GPU, a second program may have to wait. The second program may have to wait even while the first program is stalled (such as during a memory access). Although it would be advantageous for the second program to use idle GPU execution units while the first program is stalled, the overhead cost of switching to the second program may be prohibitively expensive. That is, setting up the GPU to execute the second program while the first program is stalled may take so much time and effort (i.e., power consumption) that it is not worth the trouble.
While the first program stalls, GPU execution units may remain idle. Apple says that, accordingly, GPU execution may be “inefficient, especially in environments where multiple computing tasks are being performed.” The company feels that its VGPU plans solve the problem.
Here’s Apple’s summary of the invention: “A VGPU may appear to software as an independent hardware GPU. However, two or more VGPUs can be implemented on the same GPU through the use of control structures and by duplicating some (but not all) hardware elements of the GPU. For example, additional registers and storage space may be added in a GPU supporting multiple VGPUs.
“Different execution priorities may be set for tasks and threads that correspond to the different supported VGPUs. Memory address space for the VGPUs may also be managed, including use of virtual address space for different VGPUs. Halting and resuming execution of different VGPUs allows for fine-grained execution control in various embodiments.”
Of course, Apple files for — and is granted — lots of patents by the U.S. Patent & Trademark Office. Many are for inventions that never see the light of day. However, you never can tell which ones will materialize in a real product.