IP Library Granted Patent US 12,360,844
Granted Patent B2
US 12,360,844 · App. 17/875,424 · Granted Jul 15, 2025

Credit aware central arbitration for multi-endpoint, multi-core system

Inventors: Matthew David Pierson (Frisco, TX); Kai Chirca (Dallas, TX); Daniel Wu (Plano, TX)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F3/0604G06F3/0607G06F3/0632G06F3/064G06F3/0658G06F3/0659G06F3/0673G06F3/0679G06F9/30101G06F9/30123G06F9/3897G06F9/4881G06F9/5016G06F12/0607G06F12/0811G06F12/0815G06F12/0828G06F12/0831G06F12/084G06F12/0855G06F12/0857G06F12/0875G06F12/0891G06F12/10G06F12/1009G06F13/124G06F13/1642G06F13/1663G06F13/1668G06F13/4027H03M13/015H03M13/098H03M13/1575H03M13/276H03M13/2785G06F12/0833G06F12/0846G06F12/0851G06F12/0862G06F2212/1008G06F2212/1016G06F2212/1024G06F2212/1048G06F2212/304G06F2212/452G06F2212/6024G06F2212/657
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,360,844
App. No.
17/875,424
Granted
Jul 15, 2025
Kind
B2
Abstract

A device includes a data path, a first interface configured to receive a first memory access request from a first peripheral device, and a second interface configured to receive a second memory access request from a second peripheral device. The device further includes an arbiter circuit configured to determine a first destination device connected to the data path and associated with the first memory access request and a first credit threshold corresponding to the first memory access request. The arbiter circuit is further configured to determine a second destination device connected to the data path and associated with the second memory access request and a second credit threshold corresponding to the second memory access request. The arbiter circuit is configured to arbitrate access to the data path by the first memory access request and the second memory access request based on the first credit threshold and the second credit threshold.

Claims (80)

1. A device comprising:

a resource associated with a number of available credits;

a data path coupled to the resource;

a cache configuration register configured to store a setting; and

an arbiter circuit, wherein the arbiter circuit is configured to:

receive a first memory access request to the resource, the first memory access request associated with a first credit cost;

receive a second memory access request to the resource, the second memory access request associated with a second credit cost;

compare the first credit cost to the number of available credits to determine a first result;

compare the second credit cost to the number of available credits to determine a second result;

based on the first result and the second result, select a pre-arbitration winner between the first memory access request and the second memory access request;

determine whether 1) the setting stored in the cache configuration register has a first value indicative that the pre-arbitration winner is a real-time request or 2) the setting stored in the cache configuration register has a second value indicative that the pre-arbitration winner is a non-real-time request;

determine a first priority of the pre-arbitration winner based on the determination that the setting stored in the cache configuration register has the first value or the second value and a number of real-time requests that have previously been selected;

after receiving the first and second memory access requests, receive a subsequent memory access request to the resource;

compare the first priority with a second priority of the subsequent memory access request to determine a third result;

determine a final arbitration winner based on the third result; and

drive the final arbitration winner to the data path.

2. The device of claim 1 , wherein:

the cache configuration register is configured to store the setting as a bit mask indicating that the pre-arbitration winner is the real-time request or the non-real-time request; and

the first priority is based on a source of the pre-arbitration winner and the bit mask stored in the cache configuration register.

3. The device of claim 1 , wherein:

the first priority is based on a first indicator in the first memory access request or a second indicator in the second memory access request.

4. The device of claim 1 , wherein:

the first result indicates the first credit cost is less than or equal to the number of available credits; and

the second result indicates the second credit cost is less than or equal to the number of available credits.

5. The device of claim 1 , wherein:

the arbiter circuit is configured to:

based on the first and second results, drive the first memory access request to the data path prior to driving the second memory access request to the data path; and

in response to the first credit cost being less than or equal to the number of available credits, decrement the number of available credits by the first credit cost to produce a reduced number of available credits.

6. The device of claim 5 , wherein:

the arbiter circuit is configured to:

drive the second memory access request to the data path subsequent to driving the first memory access request to the data path and prior to receiving an acknowledgement that the first memory access request has been processed by the resource; and

in response to the second credit cost being less than or equal to the reduced number of available credits, decrement the reduced number of available credits by the second credit cost.

7. The device of claim 1 , wherein:

the arbiter circuit is configured to increase the number of available credits to the resource by a first amount equal to the first credit cost in response to receiving an acknowledgement that the first memory access request has been processed by the resource; and

the arbiter circuit is configured to increase the number of available credits to the resource by a second amount equal to the second credit cost in response to receiving an acknowledgement that the second memory access request has been processed by the resource.

8. The device of claim 1 , wherein:

the first memory access request is associated with a first priority group;

the second memory access request is associated with a second priority group; and

the first priority group is associated with a higher priority than the second priority group.

9. The device of claim 8 , wherein:

the arbiter circuit is configured to promote the second memory access request to the first priority group in response to the second memory access request losing arbitration to the first priority group for a number of clock cycles set in a starvation register.

10. The device of claim 1 , wherein:

the number of available credits corresponds to available space in one or more queues of the resource.

11. A method comprising:

receiving, at an arbiter circuit, a first memory access request to a resource coupled to a data path, the first memory access request associated with a first credit cost, wherein the resource includes a number of available credits;

receiving, at the arbiter circuit, a second memory access request to the resource, the second memory access request associated with a second credit cost;

comparing, by the arbiter circuit, the first credit cost to the number of available credits to determine a first result;

comparing, by the arbiter circuit, the second credit cost to the number of available credits to determine a second result;

based on the first result and the second result, selecting, by the arbiter circuit, a pre-arbitration winner between the first memory access request and the second memory access request;

determining whether 1) a setting stored in a cache configuration register has a first value indicative that the pre-arbitration winner is a real-time request or 2) the setting stored in the cache configuration register has a second value indicative that the pre-arbitration winner is a non-real-time request;

determining, by the arbiter circuit, a first priority of the pre-arbitration winner based on the determination that the setting stored in the cache configuration register has the first value or the second value and a number of real-time requests that have previously been selected;

after receiving the first and second memory access requests, receiving, by the arbiter circuit, a subsequent memory access request to the resource;

comparing, by the arbiter circuit, the first priority with a second priority of the subsequent memory access request to determine a third result;

determining, by the arbiter circuit, a final arbitration winner based on the third result; and

driving, by the arbiter circuit, the final arbitration winner to the data path based.

12. The method of claim 11 , wherein:

the setting is stored in the cache configuration register as a bit mask indicating that the pre-arbitration winner is the real-time request or the non-real-time request; and

the first priority is based on a source of the pre-arbitration winner and the bit mask stored in the cache configuration register.

13. The method of claim 11 , wherein:

the first priority is based on a first indicator in the first memory access request or a second indicator in the second memory access request.

14. The method of claim 11 , wherein:

the first result indicates the first credit cost is less than or equal to the number of available credits; and

the second result indicates the second credit cost is less than or equal to the number of available credits.

15. The method of claim 11 , further comprising:

based on the first and second results, driving, by the arbiter circuit, the first memory access request to the data path prior to driving the second memory access request to the data path; and

in response to the first credit cost being less than or equal to the number of available credits, decrementing, by the arbiter circuit, the number of available credits by the first credit cost to produce a reduced number of available credits.

16. The method of claim 15 , further comprising:

driving, by the arbiter circuit, the second memory access request to the data path subsequent to driving the first memory access request to the data path and prior to receiving an acknowledgement that the first memory access request has been processed by the resource; and

in response to the second credit cost being less than or equal to the reduced number of available credits, decrementing, by the arbiter circuit, the reduced number of available credits by the second credit cost.

17. The method of claim 11 , further comprising:

increasing, by the arbiter circuit, the number of available credits to the resource by a first amount equal to the first credit cost in response to receiving an acknowledgement that the first memory access request has been processed by the resource; and

increasing, by the arbiter circuit, the number of available credits to the resource by a second amount equal to the second credit cost in response to receiving an acknowledgement that the second memory access request has been processed by the resource.

18. The method of claim 11 , wherein:

the first memory access request is associated with a first priority group;

the second memory access request is associated with a second priority group; and

the first priority group is associated with a higher priority than the second priority group.

19. The method of claim 18 , further comprising:

promoting, by the arbiter circuit, the second memory access request to the first priority group in response to the second memory access request losing arbitration to the first priority group for a number of clock cycles set in a starvation register.

20. The method of claim 18 , wherein:

the number of available credits corresponds to available space in one or more queues of the resource.

Continuity (3)
Continuation 16653221 · Oct 15, 2019
Provisional Application 62745842 · Oct 15, 2018
Related Publication 20220374356A1 · Nov 24, 2022
References Cited (38)
US 5596376A · Howe · 1997 [cited by examiner]
US 6839784B1 · Ennis et al. · 2005 [cited by applicant]
US 8732370B2 · Chirca et al. · 2014 [cited by applicant]
US 9152586B2 · Wu et al. · 2015 [cited by applicant]
US 9262356B2 · Sonntag et al. · 2016 [cited by applicant]
US 9298665B2 · Pierson et al. · 2016 [cited by applicant]
US 9652404B2 · Pierson et al. · 2017 [cited by applicant]
US 9703602B1 · Kusters · 2017 [cited by applicant]
US 9798375B1 · Becker · 2017 [cited by applicant]
US 10432429B1 · Matthews · 2019 [cited by applicant]
US 10545701B1 · Mathews et al. · 2020 [cited by applicant]
US 10802974B2 · Pierson · 2020 [cited by applicant]
US 20030051103A1 · Lardner · 2003 [cited by applicant]
US 20030167294A1 · Neuman · 2003 [cited by examiner]
US 20040039455A1 · Donovan · 2004 [cited by applicant]
US 20070011389A1 · Nishikawa · 2007 [cited by applicant]
US 20070038791A1 · Subramanian · 2007 [cited by applicant]
US 20080091866A1 · Cox et al. · 2008 [cited by applicant]
US 20080186998A1 · Rijpkema · 2008 [cited by examiner]
US 20100088443A1 · Riocreux et al. · 2010 [cited by applicant]
US 20100115167A1 · Tardieux et al. · 2010 [cited by applicant]
US 20110296068A1 · Fredenberg · 2011 [cited by applicant]
US 20120072631A1 · Chirca · 2012 [cited by applicant]
US 20120290725A1 · Podila · 2012 [cited by applicant]
US 20130054901A1 · Biswas · 2013 [cited by examiner]
US 20130195210A1 · Swarbrick · 2013 [cited by examiner]
US 20140237205A1 · Takefman · 2014 [cited by examiner]
US 20140317360A1 · Campbell · 2014 [cited by applicant]
US 20140379922A1 · Xiao · 2014 [cited by applicant]
US 20150007189A1 · De Gruijl · 2015 [cited by applicant]
US 20150036503A1 · Kaplan · 2015 [cited by applicant]
US 20150278397A1 · Hendrickson · 2015 [cited by applicant]
US 20160253216A1 · Greenberger · 2016 [cited by applicant]
US 20170010986A1 · Coddington · 2017 [cited by applicant]
US 20170031619A1 · Luan et al. · 2017 [cited by applicant]
US 20170052781A1 · Yamamura · 2017 [cited by applicant]
US 20170083463A1 · Kachare · 2017 [cited by applicant]
US 20180217951A1 · Benisty · 2018 [cited by examiner]