IP Library Granted Patent US 9,235,871
Granted Patent B2
US 9,235,871 · App. 14/174,091 · Granted Jan 12, 2016

Method and system of a command buffer between a CPU and GPU

Inventor: Daniel Kurt Baker (Towson, MD)
Assignee: OXIDE INTERACTIVE, LLC
G06T1/20G06F9/45516G06F9/5016G06F9/5083G06T1/00G06T1/60G06T15/005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,235,871
App. No.
14/174,091
Granted
Jan 12, 2016
Kind
B2
Abstract

A method and system for a command processor for efficient processing of a program multi-processor core system with a CPU and GPU. The multi-core system includes a general purpose CPU executing commands in a CPU programming language and a graphic processing unit (GPU) executing commands in a GPU programming language. A command processor is coupled to the CPU and GPU. The command processor sequences jobs from a program for processing by the CPU or the GPU. The command processor creates commands from the jobs in a state free command format. The command processor generates a sequence of commands for execution by either the CPU or the GPU in the command format. A compiler running a meta language converts program data for the commands into a first format readable by the CPU programming language and a second format readable by the GPU programming language.

Claims (18)

1. A system to interface between a CPU and GPU to execute a program, the system comprising: a general purpose central processing unit (CPU) device executing commands in a CPU programming language; a graphic processing unit (GPU) device executing commands in a GPU programming language that is distinct from the CPU programming language; a command processor accessible to the CPU device and the GPU device, the command processor managing jobs from the program for processing by the CPU device or the GPU device, the command processor creating commands from the jobs in a state free command format, the command processor generating a first sequence of commands for execution by the CPU device and a second sequence of commands for execution by the GPU device in the command format; and a data compiler running a meta language to convert program data for the commands into a first data format readable by the CPU programming language and a second data format readable by the GPU programming language.

2. The system of claim 1 , wherein the commands in the command format include commands for specific graphic processing functions or for general GPU operations.

3. The system of claim 1 , wherein the CPU device is one of a plurality of CPU devices in a processing system.

4. The system of claim 1 , further comprising a graphics transfer memory coupled to the CPU device and the GPU device, the graphics transfer memory storing resources for the commands created by the command processor requiring asynchronous communication between the CPU device and the GPU device.

5. The system of claim 4 , wherein the graphics transfer memory includes frame graphics transfer memory allowing transfer of data from the GPU device to the CPU device, frame command transfer memory visible to the CPU device to translate commands, graphics transfer memory allowing transfer of data from the CPU device to the GPU device, and owner command memory storing command instructions.

6. The system of claim 1 , wherein the command format maps the commands to a plurality of different hardware platforms.

7. The system of claim 1 , wherein the command format includes all state information required to execute each command independently of other commands.

8. The system of claim 1 , wherein the meta language includes resource sets and constant sets.

9. The system of claim 1 , wherein the second sequence of commands are executed in parallel by the GPU device.

10. A method for scheduling jobs for a central processing unit (CPU) device and a graphic processing unit (GPU) device in a multi-core system, the method comprising: obtaining a job from a program; generating a command related to the job in a command format including all necessary states for the command via a command processor; translating the command into a format executable by the CPU device and the GPU device; compiling data necessary for the command via a data compiler into a first data format associated with a CPU programming language and a second data format associated with a GPU programming language that is distinct from the CPU programming language; storing the command in a command buffer; and assigning the command to the CPU device or the GPU device.

11. The method of claim 10 , wherein the commands in the command format include commands for specific graphic processing functions or for general GPU operations.

12. The method of claim 10 , wherein the CPU device is one of a plurality of CPU devices in a processing system, and wherein the command is assigned to one of the plurality of CPU devices.

13. The method of claim 10 , further comprising storing resources for the commands created by the command processor requiring asynchronous communication between the CPU device and the GPU device in a graphic transfer memory coupled to the CPU device and the GPU device.

14. The method of claim 13 , wherein the graphics transfer memory includes frame graphics transfer memory allowing transfer of data from the GPU device to the CPU device, frame command transfer memory visible to the CPU device to translate commands, graphics transfer memory allowing transfer of data from the CPU device to the GPU device, and owner command memory storing command instructions.

15. The method of claim 10 , wherein the command format maps the commands to a plurality of different hardware platforms.

16. The method of claim 10 , wherein the command format includes all state information required to execute each command independently of other commands.

17. The method of claim 10 , wherein the meta language includes resource sets and constant sets.

18. A non-transitory, machine readable medium having stored thereon instructions for scheduling commands for execution by a plurality of processor cores including a central processing unit (CPU) device and a graphic processing unit (GPU) device, the stored instructions comprising machine executable code, which when executed by at least one machine processor, causes the machine processor to: obtain a job from a program; generate a command related to the job in a command format including all necessary states for the command via a command processor; translate the command into a format executable by a CPU device and a GPU device; compile data via a data compiler necessary for the command into a first data format readable by a CPU programming language and a second data format readable by a GPU programming language distinct from the CPU programming language; store the command in a command buffer; and assign the command to the CPU device or the GPU device.

Assignments (2)
CHANGE OF NAME Recorded Jul 26, 2023
From: OXIDE INTERACTIVE, LLC
To: OXIDE INTERACTIVE, INC.
Reel/Frame 064386/0636 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 3, 2015
From: BAKER, DANIEL K.
To: OXIDE INTERACTIVE LLC
Reel/Frame 036946/0027 →
Continuity (1)
Related Publication 20150221059A1 · Aug 6, 2015