IP Library › Granted Patent US 12,284,116
Granted Patent B2
US 12,284,116 · App. 16/795,459 · Granted Apr 22, 2025

Dynamic buffer management in multi-client token flow control routers

Inventors: Alan Dodson Smith (Austin, TX); Chintan S. Patel (Austin, TX); Eric Christopher Morton (Austin, TX); Vydhyanathan Kalyanasundharam (Santa Clara, CA); Narendra Kamat (West Lafayette, IN)
Assignee: Advanced Micro Devices, Inc.
H04L47/125G06F9/5011G06F13/36H04L47/50
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 12,284,116
App. No.
16/795,459
Granted
Apr 22, 2025
Kind
B2
Abstract

Systems, apparatuses, and methods for dynamic buffer management in multi-client token flow control routers are disclosed. A system includes at least one or more processing units, a memory, and a communication fabric with a plurality of routers coupled to the processing unit(s) and the memory. A router servicing multiple active clients allocates a first number of tokens to each active client. The first number of tokens is less than a second number of tokens needed to saturate the bandwidth of each client to the router. The router also allocates a third number of tokens to a free pool, with tokens from the free pool being dynamically allocated to different clients. The third number of tokens is equal to the difference between the second number of tokens and the first number of tokens. An advantage of this approach is reducing the amount of buffer space needed at the router.

Claims (40)

1. A communication fabric having a maximum bandwidth, the maximum bandwidth corresponding to a maximum number of tokens, the communication fabric comprising:

a router comprising circuitry configured to allocate tokens to a plurality of clients according to a token allocation scheme, wherein each of the plurality of clients is configured to access a shared resource via the router, wherein the token allocation scheme comprises:

statically allocating a first number of tokens to at least one client that is not active of the plurality of clients, the first number of tokens being:

at least one token; and

less than the maximum number of tokens; and

dynamically allocating to each active client of the plurality of clients a second number of tokens from a free pool, the second number of tokens from the free pool is less than or equal to a difference between the maximum number of tokens and the first number of tokens;

deallocate one or more tokens from a given client while allowing the given client to maintain at least one token, based at least in part on a determination that the given client is no longer active; and

wherein a total buffering requirement in the router corresponding to a total number of packets for the plurality of clients is equal to a sum of the maximum number of tokens and a product of the first number of tokens and a total number of clients of the plurality of clients less one.

2. The communication fabric as recited in claim 1 , wherein statically allocating, at a beginning of a token allocation round, the first number of tokens is performed per unit time.

3. The communication fabric as recited in claim 1 , wherein a total number of tokens available to allocate to the plurality of clients is less than a product of a number of the plurality of clients and the maximum number of tokens corresponding to the maximum bandwidth.

4. The communication fabric as recited in claim 1 , wherein dynamically allocating, during a token allocation round, the second number of tokens is performed over a unit time.

5. The communication fabric as recited in claim 1 , wherein the router is further configured to, based at least in part on a determination that two or more active clients are contending for the shared resource, dynamically allocate the second number of tokens to each active client of the plurality of clients based on one or more arbitration weights.

6. The communication fabric as recited in claim 1 , wherein the router is configured to deallocate the one or more tokens from the given client in further response to a determination that the given client had been previously active.

7. A method comprising:

statically allocating, by a router comprising circuitry, a first number of tokens to at least one client that is not active of a plurality of clients, wherein each of the plurality of clients is configured to access a shared resource via the router, the first number of tokens being:

at least one token; and

less than a maximum number of tokens corresponding to a maximum bandwidth of a communication fabric; and

dynamically allocating, by the router, to each active client of the plurality of clients a second number of tokens from a free pool, the second number of tokens being less than or equal to a difference between the maximum number of tokens and the first number of tokens;

deallocating one or more tokens from a given client while allowing the given client to maintain at least one token, based at least in part on a determination that the given client is no longer active; and

wherein a total buffering requirement in the router corresponding to a total number of packets for the plurality of clients is equal to a sum of the maximum number of tokens and a product of the first number of tokens and a total number of clients of the plurality of clients less one.

8. The method as recited in claim 7 , wherein statically allocating, at a beginning of a token allocation round, the first number of tokens is performed per unit time.

9. The method as recited in claim 7 , wherein a total number of tokens available to allocate to the plurality of clients is less than a product of a number of the plurality of clients and the maximum number of tokens corresponding to the maximum bandwidth.

10. The method as recited in claim 7 , wherein dynamically allocating, during a token allocation round, the second number of tokens is performed over a unit time.

11. The method as recited in claim 7 , further comprising dynamically allocating the second number of tokens based on an activity level of the active client.

12. The method as recited in claim 7 , further comprising dynamically allocating the second number of tokens to each active client of the plurality of clients based on one or more arbitration weights, responsive to determining that two or more active clients are contending for the shared resource.

13. An apparatus comprising:

a free pool of tokens;

a plurality of buffers; and

a router comprising circuitry configured to:

statically allocate a first number of tokens to at least one client that is not active of a plurality of clients, wherein each of the plurality of clients is configured to access a shared resource via the router, the first number of tokens being:

at least one token; and

less than a maximum number of tokens corresponding to a maximum bandwidth of a communication fabric; and

dynamically allocate, to each active client of the plurality of clients, one or more tokens from the free pool, the one or more tokens representing a difference between the maximum number of tokens and the first number of tokens currently allocated to the active client; and

deallocate one or more tokens from a given client while allowing the given client to maintain at least one token, based at least in part on a determination that the given client is no longer active; and

update a number of tokens in the free pool such that a number of tokens available for allocation corresponds to available buffer space in the plurality of buffers;

wherein a total buffering requirement in the router corresponding to a total number of packets for the plurality of clients is equal to a sum of the maximum number of tokens and a product of the first number of tokens and a total number of clients of the plurality of clients less one.

14. The apparatus as recited in claim 13 , wherein statically allocating, at a beginning of a token allocation round, the first number of tokens is performed per unit time.

15. The apparatus as recited in claim 13 , wherein a total number of tokens available to allocate to the plurality of clients is less than a product of a number of the plurality of clients and the maximum number of tokens corresponding to the maximum bandwidth.

16. The apparatus as recited in claim 13 , wherein dynamically allocating, during a token allocation round, a second number of tokens is performed over a unit time.

17. The apparatus as recited in claim 13 , wherein the apparatus is further configured to dynamically allocate, during a token allocation round, a second number of tokens based on an activity level of the active client.

Continuity (2)
Continuation 15796528 · Oct 27, 2017
Related Publication 20200259747A1 · Aug 13, 2020
References Cited (82)
US 4964113A · Geyer et al. · 1990 [cited by applicant]
US 5309428A · Copley et al. · 1994 [cited by applicant]
US 5315586A · Charvillat · 1994 [cited by examiner]
US 5506844A · Rao · 1996 [cited by applicant]
US 5528591A · Lauer · 1996 [cited by applicant]
US 5553076A · Behtash et al. · 1996 [cited by applicant]
US 5592622A · Isfeld et al. · 1997 [cited by applicant]
US 5638363A · Gittins · 1997 [cited by examiner]
US 5708974A · Smith · 1998 [cited by applicant]
US 5838994A · Valizadeh · 1998 [cited by applicant]
US 5886992A · Raatikainen et al. · 1999 [cited by applicant]
US 6034945A · Hughes · 2000 [cited by examiner]
US 6262989B1 · Gemar · 2001 [cited by examiner]
US 6377546B1 · Guerin · 2002 [cited by examiner]
US 6466579B1 · Scott · 2002 [cited by examiner]
US 6678813B1 · Le · 2004 [cited by applicant]
US 6717912B1 · Lemyre · 2004 [cited by examiner]
US 6738371B1 · Ayres · 2004 [cited by examiner]
US 6990070B1 · Aweya · 2006 [cited by examiner]
US 7315552B2 · Kalkunte et al. · 2008 [cited by applicant]
US 7321594B2 · Murakami · 2008 [cited by examiner]
US 7474650B2 · O'Neill · 2009 [cited by examiner]
US 7587549B1 · Arulambalam · 2009 [cited by examiner]
US 7756037B2 · Oren · 2010 [cited by examiner]
US 8000241B2 · O'Neill · 2011 [cited by examiner]
US 8015289B2 · Hill · 2011 [cited by examiner]
US 8103788B1 · Miranda · 2012 [cited by applicant]
US 8160072B1 · Gnanasekaran et al. · 2012 [cited by applicant]
US 8964596B1 · Yermakov · 2015 [cited by examiner]
US 10608943B2 · Smith et al. · 2020 [cited by applicant]
US 20010039582A1 · McKinnon, III · 2001 [cited by examiner]
US 20010043574A1 · Nguyen · 2001 [cited by examiner]
US 20020039350A1 · Wang · 2002 [cited by examiner]
US 20020049901A1 · Carvey · 2002 [cited by applicant]
US 20020131375A1 · Vogel · 2002 [cited by examiner]
US 20030003933A1 · Deshpande · 2003 [cited by examiner]
US 20030009560A1 · Venkitaraman · 2003 [cited by examiner]
US 20030120705A1 · Chen et al. · 2003 [cited by applicant]
US 20030123390A1 · Takase · 2003 [cited by examiner]
US 20030174649A1 · Shankar · 2003 [cited by examiner]
US 20030223445A1 · Lodha · 2003 [cited by examiner]
US 20030231593A1 · Bauman · 2003 [cited by examiner]
US 20040017825A1 · Stanwood · 2004 [cited by examiner]
US 20040085959A1 · Ohkawa · 2004 [cited by examiner]
US 20040179542A1 · Murakami · 2004 [cited by examiner]
US 20040218604A1 · Porter · 2004 [cited by examiner]
US 20050013248A1 · Mekkittikul · 2005 [cited by examiner]
US 20050071471A1 · Saenz · 2005 [cited by examiner]
US 20050100009A1 · Botvich · 2005 [cited by examiner]
US 20050249115A1 · Toda · 2005 [cited by examiner]
US 20050254471A1 · Zhang · 2005 [cited by examiner]
US 20060045011A1 · Aghvami · 2006 [cited by examiner]
US 20060109829A1 · O'Neill · 2006 [cited by examiner]
US 20060120282A1 · Carlson · 2006 [cited by examiner]
US 20060168081A1 · Okada · 2006 [cited by examiner]
US 20070008884A1 · Tang · 2007 [cited by examiner]
US 20070041384A1 · Das · 2007 [cited by examiner]
US 20070049216A1 · Karaoguz · 2007 [cited by examiner]
US 20070104102A1 · Opsasnick · 2007 [cited by examiner]
US 20070104210A1 · Wu · 2007 [cited by examiner]
US 20070153697A1 · Kwan · 2007 [cited by examiner]
US 20090010252A1 · Tsang · 2009 [cited by examiner]
US 20090010279A1 · Tsang · 2009 [cited by examiner]
US 20090285217A1 · Frink · 2009 [cited by applicant]
US 20100173667A1 · Hui · 2010 [cited by examiner]
US 20110134934A1 · Arroyo · 2011 [cited by examiner]
US 20120170552A1 · Oprescu-Surcobe · 2012 [cited by examiner]
US 20120240233A1 · Loman · 2012 [cited by examiner]
US 20120263120A1 · Gopalakrishnan · 2012 [cited by examiner]
US 20130132603A1 · Cohen · 2013 [cited by applicant]
US 20130259063A1 · Thottan · 2013 [cited by examiner]
US 20140133307A1 · Yoshida · 2014 [cited by examiner]
US 20140211698A1 · Aguirre · 2014 [cited by examiner]
US 20140269293A1 · Patrick · 2014 [cited by examiner]
US 20140281034A1 · Callard · 2014 [cited by examiner]
US 20150071075A1 · Ramakrishnan · 2015 [cited by applicant]
US 20160065408A1 · Yermakov · 2016 [cited by examiner]
US 20160127779A1 · Elstermann et al. · 2016 [cited by applicant]
US 20170251246A1 · Hua · 2017 [cited by examiner]
US 20170289048A1 · Chao · 2017 [cited by examiner]
US 20180288171A1 · Fogelson · 2018 [cited by examiner]
International Search Report and Written Opinion in International Application No. PCT/US2018/051555, mailed Dec. 11, 2018, 12 pages. [cited by applicant]