# US 10,503,513 B2 · Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type

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

- Number: US 10,503,513 B2
- Document ID: US10503513B2
- Status: Granted
- Kind: B2
- Application number: 14/061,666
- Filed: 2013-10-23
- Published: 2015-04-23
- Granted: 2019-12-10
- Earliest claimed: 2013-10-23
- Assignees: NVIDIA Corporation
- Applicants: Nvidia Corporation
- Inventors: David Conrad Tannenbaum; Srinivasan (Vasu) Iyer; Stuart F. Oberman; Ming Y. Siu; Michael Alan Fetterman; John Matthew Burgess; Shirish Gadre
- Web page: https://patentgrep.com/patent/US10503513B2

## CPC

- G06F 9/3836: {Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A subsystem is configured to support a distributed instruction set architecture with primary and secondary execution pipelines. The primary execution pipeline supports the execution of a subset of instructions in the distributed instruction set architecture that are issued frequently. The secondary execution pipeline supports the execution of another subset of instructions in the distributed instruction set architecture that are issued less frequently. Both execution pipelines also support the execution of FFMA instructions as well as a common subset of instructions in the distributed instruction set architecture. When dispatching a requested instruction, an instruction scheduling unit is configured to select between the two execution pipelines based on various criteria. Those criteria may include power efficiency with which the instruction can be executed and availability of execution units to support execution of the instruction.

## Claims

### Claim 1

A computer-implemented method for scheduling instructions for execution, the method comprising:
receiving a first instruction;
comparing the first instruction to a second instruction stored in an instruction storage and determining whether the first instruction is of a different instruction type than the second instruction;
in response to determining that the first instruction is of a different instruction type than the second instruction:
identifying a first subset of execution pipelines within a plurality of execution pipelines based on a first set of selection criteria,
selecting a first execution pipeline within the first subset of execution pipelines, wherein the first execution pipeline includes a first execution element that executes the first instruction using less power than other execution elements within other execution pipelines included in the first subset of execution pipelines would use when executing the first instruction, and
dispatching the first instruction to the first execution pipeline for execution; and
in response to determining that the first instruction is of a same instruction type as the second instruction:
dispatching the second instruction for execution within a second execution pipeline selected for the second instruction, wherein the second instruction is dispatched based on determining that the first instruction is of the same instruction type as the second instruction.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the first subset of execution pipelines comprises identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the first subset of execution pipelines comprises identifying at least one execution pipeline within the plurality of execution pipelines that is available to execute the first instruction.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the first subset of execution pipelines comprises identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction with less than a threshold amount of latency.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein identifying the first subset of execution pipelines comprises identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction without causing a hardware conflict.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving a third instruction;
determining that no execution pipelines within the plurality of execution pipelines are currently available to execute the third instruction; and
storing the third instruction for dispatch at a later time.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the first execution pipeline is capable of executing an instruction that no other execution pipeline in the plurality of execution pipelines is capable of executing.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the first execution pipeline supports execution of at least one instruction that occurs more frequently in an instruction flow than another instruction that another execution pipeline within the plurality of execution pipelines supports.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, wherein the first instruction indicates that a fused floating point multiply-add operation should be performed, and the first execution element comprises a fused floating point multiply-add element.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein:
the first execution pipeline includes first execution elements that support instructions that are not supported by second execution elements included in the second execution pipeline, and
the second execution elements support instructions that are not supported by the first execution elements.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, further comprising:
identifying a second subset of execution pipelines within the plurality of execution pipelines based on a second set of selection criteria; and
selecting the second execution pipeline within the second subset of execution pipelines, wherein the second execution pipeline includes a second execution element that executes the second instruction using less power than other execution elements within other execution pipelines included in the second subset of execution pipelines would use when executing the second instruction.

### Claim 12

A subsystem for scheduling instructions for execution, including:
instruction storage; and
instruction allocation logic coupled to the instruction storage and that:
receives a first instruction;
compares the first instruction to a second instruction stored in the instruction storage and determines whether the first instruction is of a different instruction type than the second instruction;
in response to determining that the first instruction is of a different instruction type than the second instruction:
identifies a first subset of execution pipelines within a plurality of execution pipelines based on a first set of selection criteria,
selects a first execution pipeline within the first subset of execution pipelines, wherein the first execution pipeline includes a first execution element that executes the first instruction using less power than other execution elements within other execution pipelines included in the first subset of execution pipelines would use when executing the first instruction, and dispatches the first instruction to the first execution pipeline for execution; and
in response to determining that the first instruction is of a same instruction type as the second instruction:
dispatches the second instruction for execution within a second execution pipeline selected for the second instruction, wherein the second instruction is dispatched based on determining that the first instruction is of the same instruction type as the second instruction.

### Claim 13 (depends on 12)

The subsystem of claim 12, wherein the instruction allocation logic identifies the first subset of execution pipelines by identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction.

### Claim 14 (depends on 12)

The subsystem of claim 12, wherein the instruction allocation logic identifies the first subset of execution pipelines by identifying at least one execution pipeline within the plurality of execution pipelines that is available to execute the first instruction.

### Claim 15 (depends on 12)

The subsystem of claim 12, wherein the instruction allocation logic identifies the first subset of execution pipelines by identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction with less than a threshold amount of latency.

### Claim 16 (depends on 12)

The subsystem of claim 12, wherein the instruction allocation logic identifies the first subset of execution pipelines by identifying at least one execution pipeline within the plurality of execution pipelines that is capable of executing the first instruction without causing a hardware conflict.

### Claim 17 (depends on 12)

The subsystem of claim 12, wherein the instruction allocation logic further:
receives a third instruction;
determines that no execution pipelines within the plurality of execution pipelines are currently available to execute the third instruction; and
stores the third instruction in the instruction storage for dispatch at a later time.

### Claim 18 (depends on 12)

The subsystem of claim 12, wherein the first execution pipeline is capable of executing an instruction that no other execution pipeline in the plurality of execution pipelines is capable of executing.

### Claim 19 (depends on 12)

The subsystem of claim 12, wherein the first execution pipeline supports execution of at least one instruction that occurs more frequently in an instruction flow than another instruction that another execution pipeline within the plurality of execution pipelines supports.

### Claim 20 (depends on 12)

The subsystem of claim 12, wherein the first instruction indicates that a fused floating point multiply-add operation should be performed, and the first execution element comprises a fused floating point multiply-add element.

### Claim 21

A computing device for scheduling instructions for execution, including:
a memory including instructions; and
a processor coupled to the memory, the processor comprising:
a plurality of execution pipelines, and
an instruction scheduling unit that:
receives a first instruction from the memory;
compares the first instruction to a second instruction stored in an instruction storage and determines whether the first instruction is of a different instruction type than the second instruction;
in response to determining that the first instruction is of a different instruction type than the second instruction:
identifies a first subset of execution pipelines within a plurality of execution pipelines based on a first set of selection criteria,
selects a first execution pipeline within the first subset of execution pipelines, wherein the first execution pipeline includes a first execution element that executes the first instruction using less power than other execution elements within other execution pipelines included in the first subset of execution pipelines would use when executing the first instruction, and
dispatches the first instruction to the first execution pipeline for execution; and
in response to determining that the first instruction is of a same instruction type as the second instruction:
dispatches the second instruction for execution within a second execution pipeline selected for the second instruction, wherein the second instruction is dispatched based on determining that the first instruction is of the same instruction type as the second instruction.
