IP Library Granted Patent US 8,024,553
Granted Patent B2
US 8,024,553 · App. 12/192,813 · Granted Sep 20, 2011

Data exchange and communication between execution units in a parallel processor

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 8,024,553
App. No.
12/192,813
Granted
Sep 20, 2011
Kind
B2
Abstract

A method of operation within an integrated-circuit processing device having a plurality of execution lanes. Upon receiving an instruction to exchange data between the execution lanes, respective requests from the execution lanes are examined to determine a set of the execution lanes that may send data to one or more others of the execution lanes during a first interval. Each execution lane within the set of the execution lanes is signaled to indicate that the execution lane may send data to the one or others of the execution lanes.

Claims (36)

1. A method of operation within an integrated-circuit processing device having a plurality of execution lanes, the method comprising:

receiving an instruction to exchange data between the plurality of execution lanes;

examining, in response to the instruction, respective requests from the plurality of execution lanes to determine a set of the execution lanes that is to send data to one or more others of the execution lanes during a first interval;

signaling each execution lane within the set of the execution lanes to indicate that each execution lane is to send data to the one or more others of the execution lanes;

determining, based on the set of the execution lanes, each of the one or more others of the execution lanes to which data is to be sent during the first interval;

outputting, to each of the one or more others of the execution lanes to which data is to be sent during the first interval, a source lane identifier that identifies which execution lane within the set of the execution lanes from which to receive data during the first interval; and

selecting, for each of the one or more others of the execution lanes to which data is to be sent during the first interval via an associated multiplexing circuit, a signal path coupled to the execution lane identified by the source lane identifier, wherein the associated multiplexing circuit comprises a plurality of multiplexers each having an output coupled to a respective one of the plurality of execution lanes, and inputs coupled to others of the plurality of execution lanes, and wherein each of the one or more others of the execution lanes to which data is to be sent during the first interval outputs a value that corresponds to the source lane identifier to a control input of a respective one of the plurality of multiplexers to switchably couple, to the output of the multiplexer, the signal path coupled to the execution lane identified by the source lane identifier.

2. The method of claim 1 wherein receiving an instruction to exchange data between the plurality of execution lanes comprises retrieving the instruction from a memory external to the integrated-circuit processing device and loading the instruction into an instruction memory of the integrated-circuit processing device.

3. The method of claim 1 wherein examining respective requests from the plurality of execution lanes comprises receiving, from each of the execution lanes in the plurality of execution lanes, a request that includes a destination identifier and a valid indicator, the valid indicator indicating whether the request is valid and the destination identifier indicating one of the execution lanes in the plurality of execution lanes.

4. The method of claim 3 wherein examining respective requests from the plurality of execution lanes to determine a set of the execution lanes that is to send data to the one or more others of the execution lanes during a first interval comprises selecting, for inclusion within the set of the execution lanes that is to send data, each execution lane from which a request was received and for which (i) the valid indicator indicates a valid request, and (ii) the destination identifier does not match a destination identifier associated with a request from another one of the execution lanes for which the valid indicator also indicates a valid request.

5. The method of claim 4 wherein examining respective requests from the plurality of execution lanes to determine a set of the execution lanes that is to send data to the one or more others of the execution lanes during a first interval further comprises:

arbitrating between two or more requests, indicated to be valid and having matching destination identifiers, including identifying one of the two or more requests as an arbitration winner and the remainder of the two or more requests as arbitration losers; and

selecting, for inclusion within the set of the execution lanes that is to send data, the execution lane corresponding to the one of the two or more requests identified as the arbitration winner.

6. The method of claim 4 wherein selecting an execution lane for inclusion within the set of the execution lanes that is to send data comprises outputting a success signal to the selected execution lane.

7. An integrated-circuit processing device comprising:

a plurality of execution lanes to execute instructions in parallel;

an interlane switch coupled to the plurality of execution lanes to enable data to be exchanged between execution lanes in the plurality of execution lanes;

an instruction sequencing circuit to receive an instruction to enable data exchange between the execution lanes in the plurality of execution lanes; and

a control circuit to examine, in response to the instruction, respective requests from the plurality of execution lanes to determine a set of the execution lanes that is to send data to one or more others of the execution lanes during a first interval, the control circuit to signal each execution lane within the set of the execution lanes to indicate that the execution lane is to send data to the one or more others of the execution lanes;

wherein the control circuit determines, based on the set of the execution lanes, each of the one or more others of the execution lanes to which data is to be sent during the first interval, and wherein the control circuit outputs, to each of the execution lanes to which data is to be sent during the first interval, a source lane identifier that identifies which execution lane within the set of the execution lanes from which to receive data during the first interval; and

wherein the interlane switch comprises a plurality of multiplexers each having an output coupled to a respective one of the plurality of execution lanes, and inputs coupled to others of the plurality of execution lanes, and wherein, each of the one or more others of the execution lanes to which data is to be sent during the first interval, outputs a value that corresponds to the source lane identifier to a control input of a respective one of the plurality of multiplexers to switchably couple, to the output of the multiplexer, a signal path coupled to the execution lane identified by the source lane identifier.

8. The processing device of claim 7 further comprising:

an instruction memory; and

an instruction fetch unit to fetch the instruction from a memory external to the integrated-circuit processing device and to load the instruction into the instruction memory.

9. The processing device of claim 7 wherein the control circuit includes inputs to receive, from each of the execution lanes in the plurality of execution lanes, a request that includes a destination identifier and a valid indicator, the valid indicator indicating whether the request is valid and the destination identifier indicating one of the execution lanes in the plurality of execution lanes.

10. The processing device of claim 9 wherein the control circuit determines the set of the execution lanes that is to send data to the one or more others of the execution lanes, at least in part, by selecting, within the set of the execution lanes that is to send data, each execution lane from which a request was received and for which (i) the valid indicator indicates a valid request, and (ii) the destination identifier does not match a destination identifier associated with a request from another one of the execution lanes for which the valid indicator also indicates a valid request.

11. The processing device of claim 10 wherein the control circuit further determines the set of the execution lanes that is to send data to the one or more others of the execution lanes, at least in part, by arbitrating between two or more requests, indicated to be valid and having matching destination identifiers, including identifying one of the two or more requests as an arbitration winner and the remainder of the two or more requests as arbitration losers, the control circuit selecting, for inclusion within the set of the execution lanes that is to send data, the execution lane corresponding to the one of the two or more requests identified as the arbitration winner.

12. The processing device of claim 10 wherein the control circuit selects an execution lane for inclusion within the set of the execution lanes that is to send data by outputting a success signal to the selected execution lane.

13. A non-transitory computer-readable media storing instructions that, when executed by computer, generate mask information of an integrated circuit (IC) package comprising:

a plurality of execution lanes to execute instructions in parallel;

an interlane switch coupled to the plurality of execution lanes to enable data to be exchanged between respective pairs of the execution lanes;

an instruction sequencing circuit to receive an instruction to enable exchange of data between the execution lanes; and

a control circuit to examine, in response to the instruction, respective requests from the plurality of execution lanes to determine a set of the execution lanes that is to send data to the one or more others of the execution lanes during a first interval, the control circuit to signal each execution lane within the set of the execution lanes to indicate that the execution lane is to send data to the one or more others of the execution lanes;

wherein the control circuit determines, based on the set of the execution lanes, each of the one or more others of the execution lanes to which data is to be sent during the first interval, and wherein the control circuit outputs, to each of the one or more others of the execution lanes to which data is to be sent during the first interval, a source lane identifier that identifies which execution lane within the set of the execution lanes from which to receive data during the first interval; and

wherein the interlane switch comprises a plurality of multiplexers each having an output coupled to a respective one of the plurality of execution lanes, and inputs coupled to others of the plurality of execution lanes, and wherein, each of the one or more others of the execution lanes to which data is to be sent during the first interval, outputs a value that corresponds to the source lane identifier to a control input of a respective one of the plurality of multiplexers to switchably couple, to the output of the multiplexer, a signal path coupled to the execution lane identified by the source lane identifier.

14. The non-transitory computer-readable media of claim 13 wherein the control circuit includes inputs to receive, from each of the execution lanes in the plurality of execution lanes, a request that includes a destination identifier and a valid indicator, the valid indicator indicating whether the request is valid and the destination identifier indicating one of the execution lanes in the plurality of execution lanes.

Assignments (8)
MERGER Recorded Dec 29, 2015
From: CALOS FUND LIMITED LIABILITY COMPANY
To: OL SECURITY LIMITED LIABILITY COMPANY
Reel/Frame 037373/0402 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2011
From: KHAILANY, BRUCEK; DALLY, WILLIAM JAMES; KAPASI, UJVAL J.; LIN, JIM JIAN; RAO, RAGHUNATH; TOVEY, DEFOREST; RYGH, MARK; AHN, JUNG-HO
To: STREAM PROCESSORS, INC.
Reel/Frame 026708/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: DYNACOLOR, INC.
To: STREAM DEVELOPMENT CORPORATION
Reel/Frame 026704/0387 →
PEACEFUL FORECLOSURE AGREEMENT AND BILL OF FORECLOSURE SALE Recorded Aug 4, 2011
From: STREAM PROCESSORS, INC.
To: DYNACOLOR INC.
Reel/Frame 026704/0721 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: STREAM DEVELOPMENT CORPORATION
To: THE SKEET PRACTICE, LLC
Reel/Frame 026704/0433 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2011
From: THE SKEET PRACTICE, LLC
To: CALOS FUND LIMITED LIABILITY COMPANY
Reel/Frame 026701/0037 →
RELEASE OF SECURITY INTEREST Recorded May 26, 2011
From: PINNACLE VENTURES, L.L.C.
To: DYNACOLOR, INC.
Reel/Frame 026345/0880 →
SECURITY AGREEMENT Recorded Mar 26, 2009
From: STREAM PROCESSORS, INC.
To: PINNACLE VENTURES, L.L.C., AS AGENT
Reel/Frame 022458/0488 →