IP Library Granted Patent US 11,477,120
Granted Patent B2
US 11,477,120 · App. 16/828,778 · Granted Oct 18, 2022

Congestion control in an on-chip network

Inventors: Deepak Goel (San Jose, CA); Rohit Sunkam Ramanujam (Sunnyvale, CA); Yogesh Andra (Fremont, CA)
Assignee: Fungible, Inc.
H04L47/12H04L47/30H04L47/32H04W4/023H04W4/06H04W28/0289H04W84/18
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,477,120
App. No.
16/828,778
Granted
Oct 18, 2022
Kind
B2
Abstract

The disclosure describes example techniques for determining a data rate at which destination blocks are to receive data unit on a communication mesh. The destination block may determine the data rate at which the destination block is to receive data unit and broadcast information indicative of the data rate on a congestion mesh. The congestion mesh may be configured to route the broadcasted information in a manner that accounts for the relative positions of the circuit blocks in the congestion mesh.

Claims (81)

1. A data processing unit (DPU) integrated circuit comprising:

a plurality of circuit blocks comprising at least one destination block, wherein the at least one destination block includes a first broadcast router, and wherein the at least one destination block is configured to:

determine information indicative of a rate at which data units are to be transmitted to the at least one destination block; and

broadcast, via the first broadcast router, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block;

a communication mesh comprising a plurality of data lines to carry the data units to the at least one destination block;

a congestion mesh comprising a plurality of congestion lines to carry the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block; and

a plurality of broadcast routers, including the first broadcast router of the at least one destination block and a second broadcast router, coupled to the congestion mesh, wherein the second broadcast router is configured to receive broadcasted information from two or more of the broadcast routers, including the first broadcast router, and further broadcast the determined information from the first broadcast router, and not broadcast broadcasted information from the other broadcast routers, based on a position of the first broadcast router relative to the second broadcast router to route the determined information via the broadcast routers in a manner that accounts for relative positions of the circuit blocks in the congestion mesh.

2. The DPU of claim 1 , further comprising an egress buffer associated with the at least one destination block, and wherein to determine information indicative of the rate at which data units are to be transmitted to the at least one destination block, the at least one destination block is configured to:

determine an occupancy value of the egress buffer;

determine a drain rate of the egress buffer, wherein the drain rate is indicative of a rate at which data units are outputted from the egress buffer for processing by the at least one destination block; and

determine the information indicative of the rate at which data units are to be transmitted to the at least one destination block based on the occupancy value of the egress buffer and the drain rate.

3. The DPU of claim 2 , wherein to determine the information indicative of the rate at which data units are to be transmitted to the at least one destination block based on the occupancy of the egress buffer and the drain rate, the at least one destination block is configured to:

determine an occupancy range among a plurality of discrete occupancy ranges that includes the determined occupancy value; and

scale the drain rate based on the determined occupancy range to determine the rate at which data units are to be transmitted to the at least one destination block.

4. The DPU of claim 1 ,

wherein each of the plurality of circuit blocks comprise a respective one of the plurality of broadcast routers that are coupled to the congestion mesh,

wherein to further broadcast the determined information from the first broadcast router, and not broadcast broadcasted information from the other broadcast routers, based on the position of the first broadcast router relative to the second broadcast router, the second broadcast router is configured to:

determine which of the broadcasted information to further broadcast on the congestion lines of the congestion mesh based on positions of the two or more of the broadcast routers,

wherein a third broadcast router of a source block of the circuit blocks is configured to, based on the second broadcast router determining to broadcast the broadcasted information from the first broadcast router, transmit the information indicative of the rate at which data units are to be transmitted to the at least one destination block to a processing circuit of the source block, and

wherein the source block is configured to:

determine the rate at which to transmit data units for the at least one destination block based on the received information from the third broadcast router; and

transmit data units that are for the at least one destination block at the determined rate.

5. The DPU of claim 1 , wherein the plurality of circuit blocks comprise one or more source blocks configured to transmit the data units to the at least one destination block, wherein the one or more source blocks are configured to:

receive the information indicative of a rate at which data units are to be transmitted to the at least one destination block;

determine the rate at which to transmit data units for the at least one destination block based on the received information; and

transmit data units that are for the at least one destination block at the determined rate.

6. The DPU of claim 5 , wherein the one or more source blocks are configured to transmit data units to destination blocks other than the at least one destination block at a rate different than the rate at which the one or more source blocks are configured to transmit data units to the at least one destination block.

7. The DPU of claim 1 , wherein a number of congestion lines is equal to a number of the plurality of circuit blocks.

8. The DPU of claim 1 , wherein the at least one destination block is configured to transmit a synchronization pulse, and wherein to broadcast to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, the at least one destination block is configured to broadcast subsequent to the transmission of the synchronization pulse.

9. The DPU of claim 1 , wherein to broadcast, via the first broadcast router, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, the first broadcast router of the destination block is configured to output the information indicative of the rate at which data units are to be transmitted to the at least one destination block to all other broadcast routers to which the first broadcast router is directly coupled.

10. A method for communicating in a data processing unit (DPU) integrated circuit, the method comprising:

determining, with at least one destination block of the DPU, information indicative of a rate at which data units are to be transmitted to the at least one destination block of the DPU, wherein the DPU comprises a plurality of circuit blocks, and at least one of the plurality of circuit blocks is the at least one destination block;

broadcasting, with a first broadcast router of the at least one destination block, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block;

carrying, via a plurality of data lines of a communication mesh, the data unit on to the at least one destination block;

carrying, via a plurality of congestion lines of a congestion mesh, the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, wherein the first broadcast router is one of a plurality of broadcast routers, and wherein the plurality of broadcast routers are coupled to the congestion mesh;

receiving, with a second broadcast router of the plurality of broadcast routers coupled to the congestion mesh, broadcasted information from two or more of the broadcast routers, including the first broadcast router; and

further broadcasting, with the second broadcast router, the determined information from the first broadcast router, and not broadcast broadcasted information from the other broadcast routers, based on a position of the first broadcast router relative to the second broadcast router to route the determined information via the broadcast routers in a manner that accounts for relative positions of the circuit blocks in the congestion mesh.

11. The method of claim 10 , wherein determining, with the at least one destination block, information indicative of the rate at which data units are to be transmitted to the at least one destination block comprises:

determining determine an occupancy value of an egress buffer associated with the at least one destination block;

determining a drain rate of the egress buffer, wherein the drain rate is indicative of a rate at which data units are outputted from the egress buffer for processing by the at least one destination block; and

determining the information indicative of the rate at which data units are to be transmitted to the at least one destination block based on the occupancy value of the egress buffer and the drain rate.

12. The method of claim 11 , wherein determining the information indicative of the rate at which data units are to be transmitted to the at least one destination block based on the occupancy of the egress buffer and the drain rate comprises:

determining an occupancy range among a plurality of discrete occupancy ranges that includes the determined occupancy value; and

scaling the drain rate based on the determined occupancy range to determine the rate at which data units are to be transmitted to the at least one destination block.

13. The method of claim 10 ,

wherein each of the plurality of circuit blocks comprise a respective one of the plurality of broadcast routers that are coupled to the congestion mesh,

wherein further broadcasting, with the second broadcast router, the determined information from the first broadcast router, and not broadcast broadcasted information from the other broadcast routers, based on the position of the first broadcast router relative to the second broadcast router comprises determining, with the second broadcast router, which of the broadcasted information to further broadcast on the congestion lines of the congestion mesh based on positions of the two or more of the broadcast routers,

the method further comprising:

based on the second broadcast router determining to broadcast the broadcasted information from the first broadcast router, transmitting, with a third broadcast router, the information indicative of the rate at which data units are to be transmitted to the at least one destination block to a processing circuit of the source block;

determining, with the source block, the rate at which to transmit data units for the at least one destination block based on the received information from the third broadcast router; and

transmitting, with the source blocks, data units that are for the at least one destination block at the determined rate.

14. The method of claim 10 , wherein the plurality of circuit blocks comprise one or more source blocks configured to transmit the data units to the at least one destination block, the method further comprising:

receiving, with the one or more source blocks, the information indicative of a rate at which data units are to be transmitted to the at least one destination block;

determining, with the one or more source blocks, the rate at which to transmit data units for the at least one destination block based on the received information; and

transmitting, with the one or more source blocks, data units that are for the at least one destination block at the determined rate.

15. The method of claim 14 , further comprising:

transmitting, with the one or more source blocks, data units to destination blocks other than the at least one destination block at a rate different than the rate at which the one or more source blocks are configured to transmit data units to the at least one destination block.

16. The method of claim 10 , wherein a number of congestion lines is equal to a number of the plurality of circuit blocks.

17. The method of claim 10 , further comprising

transmitting, with the at least one destination block, a synchronization pulse,

wherein broadcasting to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block comprising broadcasting subsequent to the transmission of the synchronization pulse.

18. The method of claim 10 , wherein broadcasting, with the first broadcast router of the at least one destination block, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block comprises:

outputting, with the first broadcast router of the destination block, the information indicative of the rate at which data units are to be transmitted to the at least one destination block to all other broadcast routers to which the first broadcast router is directly coupled.

19. A data processing unit (DPU) integrated circuit comprising:

a plurality of broadcast routers;

a plurality of circuit blocks comprising at least one destination block and one or more source blocks configured to transmit the data units to the at least one destination block, wherein the at least one destination block is configured to:

determine information indicative of a rate at which data units are to be transmitted to the at least one destination block; and

broadcast, via a broadcast router of the plurality of broadcast routers, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block;

a communication mesh comprising a plurality of data lines to carry the data units to the at least one destination block; and

a congestion mesh coupled to the plurality of broadcast routers, the congestion mesh comprising a plurality of congestion lines to carry the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, wherein the congestion mesh is configured to route broadcasted information, including the determined information, in a manner that accounts for relative positions of the circuit blocks in the congestion mesh, wherein to route the broadcasted information, including the determined information, each broadcast router of the plurality of broadcast router is configured to receive the broadcasted information from two or more of the broadcast routers, and further broadcast the broadcasted information on the congestion mesh from one of the two or more of the broadcast routers based on respective positions of the two or more of the broadcast routers, and

wherein the one or more source blocks are configured to:

receive the information indicative of a rate at which data units are to be transmitted to the at least one destination block;

determine the rate at which to transmit data units for the at least one destination block based on the received information; and

transmit data units that are for the at least one destination block at the determined rate.

20. A data processing unit (DPU) integrated circuit comprising:

a plurality of broadcast routers;

a plurality of circuit blocks comprising at least one destination block, wherein the at least one destination block is configured to:

determine information indicative of a rate at which data units are to be transmitted to the at least one destination block; and

broadcast, via a broadcast router of the plurality of broadcast routers, to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, wherein to broadcast to the plurality of circuit blocks the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, the broadcast router of the destination block is configured to output the information indicative of the rate at which data units are to be transmitted to the at least one destination block to all other broadcast routers to which the broadcast router is directly coupled;

a communication mesh comprising a plurality of data lines to carry the data units to the at least one destination block; and

a congestion mesh coupled to the plurality of broadcast routers, the congestion mesh comprising a plurality of congestion lines to carry the determined information indicative of the rate at which data units are to be transmitted to the at least one destination block, wherein the congestion mesh is configured to route broadcasted information, including the determined information, in a manner that accounts for relative positions of the circuit blocks in the congestion mesh, and wherein to route the broadcasted information, including the determined information, each broadcast router of the plurality of broadcast router is configured to receive the broadcasted information from two or more of the broadcast routers, and further broadcast the broadcasted information on the congestion mesh from one of the two or more of the broadcast routers based on respective positions of the two or more of the broadcast routers.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
RELEASE OF SECURITY INTEREST Recorded Jan 9, 2023
From: HERCULES CAPITAL, INC., AS AGENT
To: FUNGIBLE, INC.
Reel/Frame 062335/0803 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2023
From: SILICON VALLEY BANK
To: FUNGIBLE, INC.
Reel/Frame 062308/0191 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE RECEIVING PARTY'S STREET ADDRESS DU TYPOGRAPHICAL ERRO PREVIOUSLY RECORDED AT REEL: 052215 FRAME: 0167. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 7, 2022
From: GOEL, DEEPAK; SUNKAM RAMANUJAM, ROHIT; ANDRA, YOGESH
To: FUNGIBLE, INC.
Reel/Frame 061395/0940 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: SILICON VALLEY BANK
Reel/Frame 058523/0960 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 058533/0429 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2020
From: GOEL, DEEPAK; SUNKAM RAMANUJAM, ROHIT; ANDRA, YOGESH
To: FUNGIBLE, INC.
Reel/Frame 052215/0167 →
Continuity (2)
Provisional Application 62823306 · Mar 25, 2019
Related Publication 20200314012A1 · Oct 1, 2020