IP Library Granted Patent US 11,467,846
Granted Patent B2
US 11,467,846 · App. 16/942,492 · Granted Oct 11, 2022

Overlay layer for network of processor cores

Inventors: Davor Capalija (Toronto, CA); Ivan Matosevic (Toronto, CA); Jasmina Vasiljevic (Toronto, CA); Utku Aydonat (Toronto, CA); Andrew Lewycky (Toronto, CA); S. Alexander Chin (Toronto, CA); Ljubisa Bajic (Toronto, CA)
Assignee: Tenstorrent Inc.
G06F9/3881G06F9/3005G06F9/30098G06F9/541G06F15/1735G06F15/7807G06F15/7825
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,467,846
App. No.
16/942,492
Granted
Oct 11, 2022
Kind
B2
Abstract

Methods and systems related to the efficient execution of complex computations by a multicore processor and the movement of data among the various processing cores in the multicore processor are disclosed. A multicore processor stack for the multicore processor can include a computation layer, for conducting computations using the processing cores in the multicore processor, with executable instructions for processing pipelines in the processing cores. The multicore processor stack can also include a network-on-chip layer, for connecting the processing cores in the multicore processor, with executable instructions for routers and network interface units in the multicore processor. The computation layer and the network-on-chip layer can be logically isolated by a network-on-chip overlay layer.

Claims (86)

1. A multicore processor stack, stored on non-transitory computer readable media in a multicore processor, comprising:

a computation layer, for conducting a complex computation using a set of processing cores in the multicore processor, with executable instructions for a set of processing pipelines in the set of processing cores;

a network-on-chip layer, for connecting the set of processing cores in the multicore processor, with executable instructions for a set of routers and a set of network interface units in the multicore processor; and

a network-on-chip overlay layer that logically isolates the computation layer and the network-on-chip layer;

wherein the network-on-chip overlay layer logically isolates the computation layer and the network-on-chip layer in that the computation layer exchanges computation data: (i) required for the complex computation (ii) between the processing cores in the set of processing cores; (iii) through the network-on-chip layer and the network-on-chip overlay layer; (iv) without providing any data to the network-on-chip overlay layer that identifies a location of the computation data; and (v) without providing any data to the network-on-chip overlay layer from a processing core in the set of processing cores that identifies an alternative processing core in the set of processing cores.

2. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer is software-instantiated via storage of executable instructions in a set of memories on the set of processing cores in the multicore processor; and

the executable instructions of the network-on-chip overlay layer are executed by the set of processing pipelines in the set of processing cores.

3. The multicore processor stack of claim 2 , further comprising:

an interface between the network-on-chip overlay layer and the computation layer;

wherein the interface is an application programming interface.

4. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer is hardware-instantiated via a set of network overlay units in the multicore processor; and

the set of network overlay units physically isolate: (i) the set of network interface units; and (ii) the set of routers; from: (i) a set of memories on the set of processing cores; and (ii) the set of processing pipelines.

5. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer is hardware-instantiated via the set of network interface units in the multicore processor; and

the set of network interface units physically isolate the set of routers from: (i) a set of memories on the set of processing cores; and (ii) the set of processing pipelines.

6. The multicore processor stack of claim 1 , wherein the network-on-chip overlay layer logically isolates the computation layer from the network-on-chip layer in that:

the executable instructions for the set of processing pipelines used to conduct the computations do not include data that can be used to identify any processing core in the set of processing cores.

7. The multicore processor stack of claim 1 , wherein:

the computation layer and the network-on-chip overlay layer are communicatively connected via an interface; and

the interface is an application programming interface.

8. The multicore processor stack of claim 7 , wherein:

the interface includes a pull message.

9. The multicore processor stack of claim 8 , wherein:

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

a path of the network-on-chip overlay graph begins on a first processing core and terminates with a pull computation data API call response on a second processing core.

10. The multicore processor stack of claim 9 , wherein the network-on-chip overlay layer logically isolates the computation layer from the network-on-chip layer in that:

the network-on-chip overlay layer implements the path of the network-on-chip overlay graph asynchronously to the pull computation data API call.

11. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

the network-on-chip overlay graph is configured via a compiler offline.

12. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

the network-on-chip overlay graph is configured by a runtime system during an application execution.

13. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer includes a network-on-chip overlay graph;

the network-on-chip overlay graph is defined by a set of edges and a set of nodes;

the nodes in the set of nodes represent streams in a set of streams; and

the edges in the set of edges represent a flow of computation data through the network-on-chip overlay graph.

14. The multicore processor stack of claim 13 , wherein:

the set of streams include a set of input streams and a set of output streams; and

the set of output streams are accessed by a pull computational data command from the computation layer.

15. The multicore processor stack of claim 14 , wherein:

the network-on-chip overlay layer is software-instantiated; and

the pull computation data command is a pull computational data API call.

16. The multicore processor stack of claim 14 , wherein:

the network-on-chip overlay layer is hardware-instantiated; and

the pull computation data command is a write to a pull computational data register file.

17. The multicore processor stack of claim 1 , wherein:

the network-on-chip overlay layer implements a network overlay graph describing a flow of data between the processing cores in the set of processing cores; and

the network-on-chip overlay layer executes the network overlay graph asynchronously to an execution of the executable instructions of the computation layer.

18. The multicore processor stack of claim 17 , wherein:

a path of the network overlay graph terminates with a pull computation data API call from the computation layer; and

the pull computation API call reads from a buffer.

19. A multicore processor, comprising a multicore processor stack, wherein the multicore processor stack comprises:

a computation layer, for conducting a complex computation using a set of processing cores in the multicore processor, with executable instructions for a set of processing pipelines in the set of processing cores;

a network-on-chip layer, for connecting the set of processing cores in the multicore processor, with executable instructions for a set of routers and network interface units in the multicore processor; and

a network-on-chip overlay layer that logically isolates the computation layer and the network-on-chip layer;

wherein the network-on-chip overlay layer logically isolates the computation layer and the network-on-chip layer in that the computation layer exchanges computation data: (i) required for the complex computation (ii) between the processing cores in the set of processing cores; (iii) through the network-on-chip layer and the network-on-chip overlay layer; (iv) without providing any data to the network-on-chip overlay layer that identifies a location of the computation data; and (v) without providing any data to the network-on-chip overlay layer from a processing core in the set of processing cores that identifies an alternative processing core in the set of processing cores.

20. The multicore processor of claim 19 , wherein:

the computation layer and the network-on-chip overlay layer are communicatively connected via an interface;

the interface is an application programming interface;

the application programming interface includes a pull computation data API call;

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

a path of the network-on-chip overlay graph begins on a first processing core and terminates with a pull computation data API call response on a second processing core.

21. The multicore processor of claim 20 , wherein the network-on-chip overlay layer logically isolates the computation layer from the network-on-chip layer in that:

the network-on-chip overlay layer implements the path of the network-on-chip overlay graph asynchronously to the pull computation data API call.

22. The multicore processor of claim 19 , wherein:

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

the network-on-chip overlay graph is configured via a compiler offline.

23. The multicore processor of claim 19 , wherein:

the network-on-chip overlay layer distributively instantiates a network-on-chip overlay graph across the set of processing cores; and

the network-on-chip overlay graph is configured by a runtime system during an application execution.

24. The multicore processor of claim 19 , wherein:

the network-on-chip overlay layer implements a network overlay graph describing a flow of data between the processing cores in the set of processing cores; and

the network-on-chip overlay layer executes the network overlay graph asynchronously to an execution of the executable instructions of the computation layer.

25. The multicore processor of claim 24 , wherein:

a path of the network overlay graph terminates with a pull computation data API call from the computation layer; and

the pull computation API call reads from a buffer.

26. A multicore processor, comprising a multicore processor stack, wherein the multicore processor stack comprises:

a computation layer, for conducting a complex computation using a set of processing cores in the multicore processor, with executable instructions for a set of processing pipelines in the set of processing cores;

a network-on-chip layer, for connecting the set of processing cores in the multicore processor, with executable instructions for a set of routers and network interface units in the multicore processor; and

a network-on-chip overlay layer that: (i) is in communication with both the computation layer and the network-on-chip layer; and (ii) administrates a network-on-chip overlay graph for administrating an exchange of data among the cores of the multicore processor;

wherein the network-on-chip overlay graph executes asynchronously; and

wherein the network-on-chip overlay layer logically isolates the computation layer and the network-on-chip layer in that the computation layer exchanges computation data: (i) required for the complex computation (ii) between the processing cores in the set of processing cores; (iii) through the network-on-chip layer and the network-on-chip overlay layer; (iv) without providing any data to the network-on-chip overlay layer that identifies a location of the computation data; and (v) without providing any data to the network-on-chip overlay layer from a processing core in the set of processing cores that identifies an alternative processing core in the set of processing cores.

Assignments (3)
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT INC.
To: TENSTORRENT AI INC.
Reel/Frame 070298/0922 →
CHANGE OF NAME Recorded Feb 23, 2025
From: TENSTORRENT AI INC.
To: TENSTORRENT AI ULC
Reel/Frame 070298/0944 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2020
From: CAPALIJA, DAVOR; MATOSEVIC, IVAN; VASILJEVIC, JASMINA; AYDONAT, UTKU; LEWYCKY, ANDREW; CHIN, S. ALEXANDER; BAJIC, LJUBISA
To: TENSTORRENT INC.
Reel/Frame 053346/0671 →
Continuity (2)
Provisional Application 62882065 · Aug 2, 2019
Related Publication 20210034373A1 · Feb 4, 2021