IP Library Granted Patent US 11,868,163
Granted Patent B2
US 11,868,163 · App. 17/200,841 · Granted Jan 9, 2024

Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric

Inventor: Tony M. Brewer (Plano, TX)
Assignee: Micron Technology, Inc.
G06F9/30036G06F9/3009G06F9/3013G06F9/3856G06F9/3871G06F9/45558G06F9/467G06F9/52G06F9/546G06F15/17325G06F15/7825G06F15/7867H04L41/0816H04L45/02H04L47/625H04L49/3063G06F2009/45595
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 11,868,163
App. No.
17/200,841
Granted
Jan 9, 2024
Kind
B2
Abstract

Representative apparatus, method, and system embodiments are disclosed for configurable computing. A representative system includes an interconnection network; a processor; and a plurality of configurable circuit clusters. Each configurable circuit cluster includes a plurality of configurable circuits arranged in an array; a synchronous network coupled to each configurable circuit of the array; and an asynchronous packet network coupled to each configurable circuit of the array. A representative configurable circuit includes a configurable computation circuit and a configuration memory having a first, instruction memory storing a plurality of data path configuration instructions to configure a data path of the configurable computation circuit; and a second, instruction and instruction index memory storing a plurality of spoke instructions and data path configuration instruction indices for selection of a master synchronous input, a current data path configuration instruction, and a next data path configuration instruction for a next configurable computation circuit.

Claims (59)

1. A configurable circuit, comprising:

a configurable computation circuit;

an asynchronous network input queue coupled to an asynchronous packet network;

an asynchronous network output queue coupled to the asynchronous packet network; and

a control circuit coupled to the configurable computation circuit, the control circuit comprising:

a plurality of control registers configured to store a completion table having a plurality of thread identifiers and a loop count of an active number of loop threads, the plurality of control registers further configured to store a thread identifier pool having a predetermined number of thread identifiers of the plurality of thread identifiers; and

a thread control circuit configured, in response to receipt of an asynchronous packet network message returning a thread identifier of the plurality of thread identifiers to the thread identifier pool, to decrement the loop count and, when the loop count reaches zero, to generate an asynchronous packet network completion message for transmission on the asynchronous packet network from the asynchronous network output queue.

2. The configurable circuit of claim 1 , wherein the configurable circuit further comprises:

a plurality of synchronous network inputs coupled to a synchronous network and to the configurable computation circuit; and

a plurality of synchronous network outputs coupled to the synchronous network and to the configurable computation circuit.

3. The configurable circuit of claim 2 , wherein a plurality of the configurable circuits are arranged in an array, one or more configurable circuits of the plurality of configurable circuits of the array are coupled in series in a first predetermined sequence through the synchronous network to form a first synchronous domain; and wherein one or more configurable circuits of the plurality of configurable circuits of the array are coupled in series in a second predetermined sequence through the synchronous network to form a second synchronous domain.

4. The configurable circuit of claim 3 , wherein the first synchronous domain is configured to generate a continuation message to the second synchronous domain transmitted through the asynchronous packet network.

5. The configurable circuit of claim 3 , wherein the second synchronous domain is configured to generate a completion message to the first synchronous domain transmitted through the asynchronous packet network.

6. The configurable circuit of claim 2 , wherein the configurable circuit further comprises:

a configuration memory circuit coupled to the configurable computation circuit, to the plurality of synchronous network inputs, and to the plurality of synchronous network outputs, the configuration memory circuit comprising:

a first instruction memory configured to store a first plurality of data path configuration instructions to configure a data path of the configurable computation circuit; and

a second instruction memory configured to store a second plurality of data path configuration instructions or instruction indices for selection of a master synchronous network input of the plurality of synchronous network inputs for receipt of a current data path configuration instruction or instruction index from an adjacent configurable circuit.

7. The configurable circuit of claim 6 , wherein the second plurality of data path configuration instructions or instruction indices further comprises data path configuration instructions or instruction indices for selection of the current data path configuration instruction of the first plurality of data path configuration instructions from the first instruction memory for the configurable computation circuit.

8. The configurable circuit of claim 6 , wherein the second plurality of data path configuration instructions or instruction indices further comprises data path configuration instructions or instruction indices for selection of a next data path configuration instruction or instruction index for output to the master synchronous network input of a next configurable computation circuit.

9. The configurable circuit of claim 1 , wherein the plurality of control registers are further configured to store, in the completion table, a corresponding data completion count for each thread identifier, for one or more current execution threads, of the plurality of thread identifiers.

10. The configurable circuit of claim 9 , wherein the plurality of control registers are further configured to store, in the completion table, for each thread identifier for the one or more current execution threads, of the plurality of thread identifiers, an identification of a last iteration or another thread identifier identifying a next execution thread for execution following execution of the current execution thread.

11. The configurable circuit of claim 10 , wherein the thread control circuit is further configured to queue a selected execution thread for execution when, for a thread identifier of the plurality of thread identifiers for the selected execution thread, the corresponding data completion count indicates completion of any data dependencies and the selected thread identifier is identified for the next execution thread.

12. The configurable circuit of claim 10 , wherein the data completion count indicates a predetermined number of completion messages to be received, per selected thread of a plurality of threads, prior to execution of the selected thread.

13. The configurable circuit of claim 1 , wherein the plurality of control registers are further configured to store, in the completion table, a plurality of types of thread identifiers, with each type of thread identifier indicating a loop level for loop and nested loop execution.

14. The configurable circuit of claim 1 , wherein the thread control circuit further comprises:

a run queue configured to store one or more thread identifiers for one or more threads which are ready to execute;

a continuation queue configured to store one or more thread identifiers for threads having completion counts allowing execution or storing threads without an assigned thread identifier; and

a reenter queue configured to store one or more thread identifiers for threads having completion counts allowing execution to provide for continuing execution of the threads in the reenter queue upon a predetermined cadence by moving the threads in the reenter queue into the run queue ahead of any threads in the continuation queue.

15. A configurable circuit, comprising:

a configurable computation circuit;

a plurality of synchronous network inputs coupled to a synchronous network and to the configurable computation circuit;

a plurality of synchronous network outputs coupled to the synchronous network and to the configurable computation circuit;

an asynchronous network input queue coupled to an asynchronous packet network;

an asynchronous network output queue coupled to the asynchronous packet network;

a configuration memory coupled to the configurable computation circuit, to the plurality of synchronous network inputs, and to the plurality of synchronous network outputs, the configuration memory comprising:

a first instruction memory configured to store a first plurality of data path configuration instructions to configure an internal data path of the configurable computation circuit; and

a second instruction memory configured to store a second plurality of data path configuration instructions or instruction indices for selection of a master synchronous network input of the plurality of synchronous network inputs for receipt of a current data path configuration instruction or instruction index from an adjacent configurable circuit;

and

a control circuit coupled to the configurable computation circuit, the control circuit comprising:

a plurality of control registers configured to store a completion table having a plurality of thread identifiers and a loop count of an active number of loop threads, the plurality of control registers further configured to store a thread identifier pool having a predetermined number of thread identifiers of the plurality of thread identifiers; and

a thread control circuit configured, in response to receipt of an asynchronous packet network message returning a thread identifier of the plurality of thread identifiers to the thread identifier pool, to decrement the loop count and, when the loop count reaches zero, to generate an asynchronous packet network completion message for transmission on the asynchronous packet network from the asynchronous network output queue.

16. The configurable circuit of claim 15 , wherein the plurality of control registers are further configured to store, in the completion table, a corresponding data completion count for each thread identifier, for one or more current execution threads, of the plurality of thread identifiers.

17. The configurable circuit of claim 16 , wherein the plurality of control registers are further configured to store, in the completion table, for each thread identifier for the one or more current execution threads, of the plurality of thread identifiers, an identification of a last iteration or another thread identifier identifying a next execution thread for execution following execution of the current execution thread; and wherein the thread control circuit is further configured to self-schedule and queue a selected execution thread for execution when, for a thread identifier of the plurality of thread identifiers for the selected execution thread, the corresponding data completion count indicates completion of any data dependencies and the selected thread identifier is identified for the next execution thread.

18. The configurable circuit of claim 16 , wherein the plurality of control registers are further configured to store, in the completion table, an iteration count and an identification of a first iteration.

19. The configurable circuit of claim 15 , wherein the second plurality of data path configuration instructions or instruction indices further comprises data path configuration instructions or instruction indices for selection of the current data path configuration instruction of the first plurality of data path configuration instructions from the first instruction memory for the configurable computation circuit and for selection of a next data path configuration instruction or instruction index for output to the master synchronous network input of a next configurable computation circuit.

20. A system comprising:

an interconnection network;

a processor coupled to the interconnection network;

a synchronous network;

an asynchronous packet network; and

a plurality of configurable circuits arranged in an array, each configurable circuit comprising:

a configurable computation circuit;

a plurality of synchronous network inputs coupled to the synchronous network and to the configurable computation circuit;

a plurality of synchronous network outputs coupled to the synchronous network and to the configurable computation circuit;

an asynchronous network input queue coupled to the asynchronous packet network;

an asynchronous network output queue coupled to the asynchronous packet network; and

a control circuit coupled to the configurable computation circuit, the control circuit comprising:

a plurality of control registers configured to store a completion table having a plurality of thread identifiers, a corresponding data completion count for each thread identifier, for one or more current execution threads, of the plurality of thread identifiers, and a loop count of an active number of loop threads, the plurality of control registers further configured to store a thread identifier pool having a predetermined number of thread identifiers of the plurality of thread identifiers, and the plurality of control registers further configured to store, for each thread identifier for the one or more current execution threads, an identification of a last iteration or another thread identifier identifying a next execution thread for execution following execution of the current execution thread; and

a thread control circuit configured to self-schedule and queue a selected execution thread for execution when, for a thread identifier of the plurality of thread identifiers for the selected execution thread, the corresponding data completion count indicates completion of any data dependencies and the selected thread identifier is identified for the next execution thread, and wherein in response to receipt of an asynchronous packet network message returning a thread identifier of the plurality of thread identifiers to the thread identifier pool, the thread control circuit is further configured to decrement the loop count and, when the loop count reaches zero, to generate an asynchronous packet network completion message for transmission on the asynchronous packet network from the asynchronous network output queue.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2023
From: BREWER, TONY M.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 065683/0654 →
Continuity (3)
Continuation 16371051 · Mar 31, 2019
Provisional Application 62651132 · Mar 31, 2018
Related Publication 20210243080A1 · Aug 5, 2021