# US 8,544,019 B2 · Thread queueing method and apparatus

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

- Number: US 8,544,019 B2
- Document ID: US8544019B2
- Status: Granted
- Kind: B2
- Application number: 13/116,245
- Filed: 2011-05-26
- Published: 2011-12-22
- Granted: 2013-09-24
- Earliest claimed: 2006-12-30
- Assignees: Intel Corporation
- Applicants: Hong Jiang; Thomas A. Piazza; Brian D. Rauchfuss; Sreedevi Chalasani; Steven J. Spangler
- Inventors: Hong Jiang; Thomas A. Piazza; Brian D. Rauchfuss; Sreedevi Chalasani; Steven J. Spangler
- Web page: https://patentgrep.com/patent/US8544019B2

## CPC

- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In some embodiments, a method includes receiving a request to generate a thread and supplying a request to a queue in response at least to the received request. The method may further include fetching a plurality of instructions in response at least in part to the request supplied to the queue and executing at least one of the plurality of instructions. In some embodiments, an apparatus includes a storage medium having stored therein instructions that when executed by a machine result in the method. In some embodiments, an apparatus includes circuitry to receive a request to generate a thread and to queue a request to generate a thread in response at least to the received request. In some embodiments, a system includes circuitry to receive a request to generate a thread and to queue a request to generate a thread in response at least to the received request, and a memory unit to store at least one instruction for the thread.

## Claims

### Claim 1

A method comprising:
receiving, in a processing system that includes at least one processor, a request to generate a first thread;
supplying a first request to a first queue in the processing system in response at least in part to the received request to generate a first thread;
receiving, in the processing system, a request to generate a second thread;
supplying a second request to a second queue in the processing system in response at least in part to the request to generate a second thread;
fetching a first plurality of instructions in response at least in part to the first request supplied to the first queue;
supplying at least one of the first plurality of instructions to an execution unit to execute the at least one of the first plurality of instructions;
fetching a second plurality of instructions in response at least in part to the second request supplied to the second queue;
supplying at least one of the second plurality of instructions to an execution unit to execute the at least one of the second plurality of instructions; and
supplying a spawn root message to the first queue;
wherein the second request supplied to the second queue is a request for a synchronized root thread; and
wherein the request for a synchronized root thread does not proceed beyond a head of the second queue until the spawn root message reaches a head of the first queue.

### Claim 2 (depends on 1)

The method of claim 1 wherein receiving a request to generate a first thread comprises:
receiving a first pointer.

### Claim 3 (depends on 2)

The method of claim 2 wherein fetching a first plurality of instructions in response at least in part to the first request supplied to the first queue comprises:
fetching a first plurality of instructions in response at least in part to the first pointer.

### Claim 4 (depends on 3)

The method of claim 3 wherein fetching a first plurality of instructions in response at least in part to the first pointer comprises:
fetching a first plurality of instructions in response at least in part to the first pointer and a second pointer.

### Claim 5 (depends on 1)

The method of claim 1 further comprising;
arbitrating between a request in the first queue and a request in the second queue.

### Claim 6 (depends on 1)

The method of claim 1 wherein all requests supplied to the first queue are supplied at least in part in response to requests from the execution unit; and
wherein no requests supplied to the second queue are supplied at least in part in response to requests from the execution unit.

### Claim 7 (depends on 1)

The method of claim 1 wherein the spawn root message does not proceed beyond the head of the first queue before the request for the synchronized root thread reaches the head of the second queue.

### Claim 8 (depends on 1)

The method of claim 1 further comprising:
receiving, in the processing system, a request to generate a third thread; and
supplying a third request to the second queue in response at least in part to the request to generate a third thread;
wherein the third request supplied to the second queue is a request for an unsynchronized root thread.

### Claim 9

An apparatus comprising:
circuitry to:
receive a request to generate a first thread;
supply a first request to a first queue in response at least in part to the received request to generate a first thread;
receive a request to generate a second thread;
supply a second request to a second queue in response at least in part to the request to generate a second thread;
fetch a first plurality of instructions in response at least in part to the first request supplied to the first queue;
supply at least one of the first plurality of instructions to an execution unit to execute the at least one of the first plurality of instructions;
fetch a second plurality of instructions in response at least in part to the second request supplied to the second queue; and
supply at least one of the second plurality of instructions to an execution unit to execute the at least one of the second plurality of instructions; and
supply a spawn root message to the first queue;
wherein the second request supplied to the second queue is a request for a synchronized root thread; and
wherein the request for a synchronized root thread does not proceed beyond a head of the second queue until the spawn root message reaches a head of the first queue.

### Claim 10 (depends on 9)

The apparatus of claim 9 wherein the circuitry comprises:
the execution unit to execute the at least one of the first plurality of instructions.

### Claim 11 (depends on 10)

The apparatus of claim 10 wherein the circuitry further comprises:
the execution unit to execute the at least one of the second plurality of instructions.

### Claim 12 (depends on 9)

The apparatus of claim 9 wherein the circuitry comprises:
circuitry to receive a first pointer.

### Claim 13 (depends on 12)

The apparatus of claim 12 wherein the circuitry comprises:
circuitry to fetch the first plurality of instructions in response at least in part to the first pointer and to execute the at least one of the first plurality of instructions.

### Claim 14 (depends on 13)

The apparatus of claim 13 wherein the circuitry to fetch the first plurality of instructions in response at least in part to the first pointer comprises:
circuitry to fetch the first plurality of instructions in response at least in part to the first pointer and a second pointer.

### Claim 15 (depends on 9)

The apparatus of claim 9 wherein the circuitry comprises:
the first queue.

### Claim 16 (depends on 15)

The apparatus of claim 15 wherein the circuitry further comprises:
the second queue.

### Claim 17 (depends on 16)

The apparatus of claim 16 wherein the circuitry further comprises:
circuitry to arbitrate between a request in the first queue and a request in the second queue.

### Claim 18 (depends on 9)

The apparatus of claim 9 wherein all requests supplied to the first queue are supplied at least in part in response to requests from the execution unit; and
wherein no requests supplied to the second queue are supplied at least in part in response to requests from the execution unit.

### Claim 19 (depends on 9)

The apparatus of claim 9 wherein the spawn root message does not proceed beyond the head of the first queue before the request for the synchronized root thread reaches the head of the second queue.

### Claim 20 (depends on 9)

The apparatus of claim 9 the circuitry further to:
receive a request to generate a third thread; and
supply a third request to the second queue in response at least in part to the request to generate a third thread;
wherein the third request supplied to the second queue is a request for an unsynchronized root thread.

### Claim 21

An apparatus comprising:
a non-transitory storage medium having stored therein instructions that when executed by a machine result in the following:
receiving a request to generate a first thread;
supplying a first request to a first queue, in response at least in part to the received request to generate a first thread;
receiving a request to generate a second thread;
supplying a second request to a second queue in response at least in part to the request to generate a second thread;
fetching a first plurality of instructions in response at least in part to the first request supplied to the first queue;
supplying at least one of the first plurality of instructions to an execution unit to execute the at least one of the first plurality of instructions;
fetching a second plurality of instructions in response at least in part to the second request supplied to the second queue;
supplying at least one of the second plurality of instructions to an execution unit to execute the at least one of the second plurality of instructions; and
supplying a spawn root message to the first queue;
wherein the second request supplied to the second queue is a request for a synchronized root thread; and
wherein the request for a synchronized root thread does not proceed beyond a head of the second queue until the spawn root message reaches a head of the first queue.

### Claim 22 (depends on 21)

The apparatus of claim 21 wherein all requests supplied to the first queue are supplied at least in part in response to requests from the execution unit; and
wherein no requests supplied to the second queue are supplied at least in part in response to requests from the execution unit.

### Claim 23 (depends on 21)

The apparatus of claim 21 wherein the spawn root message does not proceed beyond the head of the first queue before the request for the synchronized root thread reaches the head of the second queue.

### Claim 24 (depends on 21)

The apparatus of claim 21 the non-transitory storage medium further having stored therein instructions that when executed by a machine result in the following:
receiving, in the processing system, a request to generate a third thread; and
supplying a third request to the second queue in response at least in part to the request to generate a third thread;
wherein the third request supplied to the second queue is a request for an unsynchronized root thread.

### Claim 25

A system comprising:
circuitry to:
receive a request to generate a first thread;
supply a first request to a first queue in response at least in part to the received request to generate a first thread;
receive a request to generate a second thread;
supply a second request to a second queue in response at least in part to the request to generate a second thread;
fetch a first plurality of instructions in response at least in part to the first request supplied to the first queue;
supply at least one of the first plurality of instructions to an execution unit to execute the at least one of the first plurality of instructions;
fetch a second plurality of instructions in response at least in part to the second request supplied to the second queue;
supply at least one of the second plurality of instructions to an execution unit to execute the at least one of the second plurality of instructions; and
supply a spawn root message to the first queue;
wherein the second request supplied to the second queue is a request for a synchronized root thread; and
wherein the request for a synchronized root thread does not proceed beyond a head of the second queue until the spawn root message reaches a head of the first queue; and
a memory unit to store at least one instruction for the first thread.

### Claim 26 (depends on 25)

The system of claim 25 wherein the circuitry comprises:
the execution unit to execute the at least one of the first plurality of instructions.

### Claim 27 (depends on 26)

The system of claim 26 wherein the circuitry further comprises:
the execution unit to execute the at least one of the second plurality of instructions.

### Claim 28 (depends on 25)

The system of claim 25 wherein all requests supplied to the first queue are supplied at least in part in response to requests from the execution unit; and
wherein no requests supplied to the second queue are supplied at least in part in response to requests from the execution unit.

### Claim 29 (depends on 25)

The system of claim 25 wherein the spawn root message does not proceed beyond the head of the first queue before the request for the synchronized root thread reaches the head of the second queue.

### Claim 30 (depends on 25)

The system of claim 25 the circuitry further to:
receive a request to generate a third thread; and
supply a third request to the second queue in response at least in part to the request to generate a third thread;
wherein the third request supplied to the second queue is a request for an unsynchronized root thread.
