# US 11,907,691 B2 · Method and system of command buffer between a CPU and GPU

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,691 B2
- Document ID: US11907691B2
- Status: Granted
- Kind: B2
- Application number: 17/203,207
- Filed: 2021-03-16
- Published: 2021-10-07
- Granted: 2024-02-20
- Earliest claimed: 2014-02-06
- Assignees: Oxide Interactive, LLC
- Applicants: Oxide Interactive, Inc.
- Inventors: Daniel K. Baker
- Web page: https://patentgrep.com/patent/US11907691B2

## CPC

- G06F 8/41: Compilation
- G06F 8/443: {Optimisation}
- G06F 8/447: {Target code generation}
- G06F 8/51: Source to source
- G06F 9/45516: {Runtime code conversion or optimisation}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06T 1/00: General purpose image data processing
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 1/60: Memory management
- G06T 15/005: {General purpose rendering architectures}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## 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 CPU. 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

### Claim 1

A system for executing a program, the system comprising:
a first processing unit device configured to execute a first sequence of one or more commands in a first programming language;
a second processing unit device configured to execute a second sequence of one or more commands in a second programming language that is distinct from the first programming language;
a transfer memory accessible by the first processing unit device and the second processing unit device, the transfer memory being configured to store program data usable by (i) the first processing unit device to execute the first set of one or more commands, (ii) the second processing unit device to execute the second set of one or more commands, or (iii) both (i) and (ii); and
a data compiler configured to simultaneously convert the program data into (a) a first data format usable by the first programming language and (b) a second data format usable by the second programming language,
wherein the first sequence of one or more commands, the second sequence of one or more commands, or both, include commands in a state-free command format, and
wherein the state-free command format maps each of at least some of the commands in the first sequence of one or more commands and the second sequence of one or more commands to a plurality of different hardware platforms.

### Claim 2 (depends on 1)

The system of claim 1, further comprising a command processor configured to generate (i) the first set of one or more commands for execution by the first processing unit device, (ii) the second set of one or more commands for execution by the second processing unit device, or (iii) both (i) and (ii).

### Claim 3 (depends on 2)

The system of claim 2, wherein the command processor is configured to be accessible by both the first processing unit device and the second processing unit device.

### Claim 4 (depends on 2)

The system of claim 2, wherein the command processor is configured to manage jobs for the program for processing by the first processing unit device or the second processing unit device.

### Claim 5 (depends on 1)

The system of claim 1, wherein the first processing unit device executes the first sequence of one or more commands in parallel with the second processing unit device executing the second sequence of one or more commands.

### Claim 6 (depends on 1)

The system of claim 1, wherein the first sequence of one or more commands, the second sequence of one or more commands, or both, include one or more commands for specific graphic processing functions or for general processing unit operations.

### Claim 7 (depends on 1)

The system of claim 1, wherein each of the commands in the first sequence of one or more commands and the second sequence of one or more commands includes all state information required to execute each of the commands independently of others of the commands.

### Claim 8 (depends on 1)

The system of claim 1, wherein the data compiler is configured to run a meta language to convert the program data for the one or more commands into the first data format and the second data format.

### Claim 9 (depends on 8)

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

### Claim 10 (depends on 1)

The system of claim 1, wherein the first processing unit device is a central processing unit (CPU) device and the second processing unit device is a graphics processing unit (GPU) device.

### Claim 11 (depends on 1)

The system of claim 1, wherein the transfer memory includes (i) frame graphics transfer memory allowing transfer of data from the second processing unit device to the first processing unit device, (ii) frame command transfer memory visible to the first processing unit device to translate the one or more commands, (iii) owner graphics transfer memory allowing transfer of data from the first processing unit device to the second processing unit device, (iv) owner command memory storing command instructions, or (v) any combination of (i)-(iv).

### Claim 12

A method for executing a program, the method comprising:
executing, by a first processing unit device, a first sequence of one or more commands in a first programming language;
executing, by a second processing unit device, a second sequence of one or more commands in a second programming language that is distinct from the first programming language;
storing, by a transfer memory accessible by the first processing unit device and the second processing unit device, program data usable by (i) the first processing unit device to execute the first set of one or more commands, (ii) the second processing unit device to execute the second set of one or more commands, or (iii) both (i) and (ii); and
simultaneously converting, by a data compiler, the program data into (a) a first data format usable by the first programming language and (b) a second data format usable by the second programming language,
wherein the first sequence of one or more commands, the second sequence of one or more commands, or both, include commands in a state-free command format, and
wherein the state-free command format maps each of at least some of the commands in the first sequence of one or more commands and the second sequence of one or more commands to a plurality of different hardware platforms.

### Claim 13 (depends on 12)

The method of claim 12, further comprising generating, via a command processor, (i) the first set of one or more commands for execution by the first processing unit device, (ii) the second set of one or more commands for execution by the second processing unit device, or (iii) both (i) and (ii).

### Claim 14 (depends on 13)

The method of claim 13, wherein the command processor is configured to be accessible by both the first processing unit device and the second processing unit device.

### Claim 15 (depends on 13)

The method of claim 13, wherein the command processor is configured to manage jobs for the program for processing by the first processing unit device or the second processing unit device.

### Claim 16 (depends on 12)

The method of claim 12, wherein the first processing unit device executes the first sequence of one or more commands in parallel with the second processing unit device executing the second sequence of one or more commands.

### Claim 17

A set of non-transitory, machine-readable media having stored thereon instructions for scheduling jobs for a first processing unit device and a second processing unit device to thereby execute a program, the stored instructions comprising machine executable code, which when executed by at least one machine processor, causes the machine processor to:
execute, via a first processing unit device, a first sequence of one or more commands in a first programming language;
executing, by a second processing unit device, a second sequence of one or more commands in a second programming language that is distinct from the first programming language;
store, via a transfer memory accessible by the first processing unit device and the second processing unit device, program data usable by (i) the first processing unit device to execute the first set of one or more commands, (ii) the second processing unit device to execute the second set of one or more commands, or (iii) both (i) and (ii); and
simultaneously convert, via a data compiler, the program data into (a) a first data format usable by the first programming language and (b) a second data format usable by the second programming language,
wherein the first sequence of one or more commands, the second sequence of one or more commands, or both, include commands in a state-free command format, and
wherein the state-free command format maps each of at least some of the commands in the first sequence of one or more commands and the second sequence of one or more commands to a plurality of different hardware platforms.

### Claim 18 (depends on 17)

The set of non-transitory, machine-readable media claim 17, further comprising instructions for a command processor configured to generate (i) the first set of one or more commands for execution by the first processing unit device, (ii) the second set of one or more commands for execution by the second processing unit device, or (iii) both (i) and (ii).

### Claim 19 (depends on 18)

The set of non-transitory, machine-readable media of claim 18, wherein the command processor is configured to be accessible by both the first processing unit device and the second processing unit device.

### Claim 20 (depends on 18)

The set of non-transitory, machine-readable media of claim 18, wherein the command processor is configured to manage jobs for the program for processing by the first processing unit device or the second processing unit device.

### Claim 21 (depends on 17)

The set of non-transitory, machine-readable media of claim 17, wherein the first processing unit device executes the first sequence of one or more commands in parallel with the second processing unit device executing the second sequence of one or more commands.
