IP Library › Granted Patent US 12,373,103
Granted Patent B2
US 12,373,103 · App. 17/948,169 · Granted Jul 29, 2025

Round robin arbitration using random access memory

Inventor: Tama Gal (Haifa, IL)
Assignee: Microsoft Technology Licensing, LLC
G06F3/0611G06F3/0653G06F3/0673
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,373,103
App. No.
17/948,169
Granted
Jul 29, 2025
Kind
B2
Abstract

A circuit performs a method of arbitrating requests between multiple requestors. The method includes accessing, via an arbitration processor, a requestor random access memory (RRAM) having multiple entries. Each entry corresponds to a requestor and includes a valid field indicating whether or not the requestor is requesting. One of the multiple entries is selected in a round robin manner as a function of a value in the valid field indicative of the corresponding requestor requesting. The corresponding requestor requesting arbitration is notified.

Claims (60)

1. A method of arbitrating requests between multiple requestors, the method comprising:

performing round robin arbitration using a group RAM having multiple group entries, each group entry corresponding to a group of requestors and including a group valid field indicating whether or not the group of requestors is requesting, a start pointer to a corresponding requestor random access memory (RRAM), an end pointer to the corresponding RRAM, and a last chosen pointer;

selecting one of the multiple entries in the group RAM in a round robin manner as a function of a value in the group valid field indicative of the corresponding group of requestors requesting;

accessing, via an arbitration processor, a portion of the RRAM containing the corresponding group of requestors and having multiple entries, each entry corresponding to a requestor and including a valid field indicating whether or not the requestor is requesting;

selecting one of the multiple entries in a round robin manner as a function of a value in the valid field indicative of the corresponding requestor requesting; and

notifying the corresponding requestor requesting arbitration.

2. The method of claim 1 and further comprising resetting the valid field of the one of the multiple entries following the selecting of the one of the multiple entries and wherein selecting one of the multiple entries is based on a last chosen value indication accessed from a last chosen value register.

3. The method of claim 1 and further comprising:

receiving an indication that a requestor is requesting;

identifying an entry in the RRAM corresponding to the requestor that is requesting; and

setting the valid field in a corresponding entry to indicate the requestor is requesting.

4. The method of claim 1 wherein accessing the RRAM comprises:

accessing a last chosen value to obtain a starting point for selecting one of the multiple entries in the round robin manner; and

upon selecting one of the multiple entries in a round robin manner, setting the last chosen value to indicate a next starting point.

5. The method of claim 1 wherein selecting one of the multiple entries in a round robin manner further comprises:

accessing a credit field for entries; and

selecting the one of the multiple entries as a function of a credit value in athe corresponding credit field in addition to the value in the valid field.

6. The method of claim 1 wherein accessing the RRAM is performed in a pipelined manner to enable a read of an entry every arbitration processor clock cycle.

7. The method of claim 1 wherein the RRAM comprises two RAMs, each of the two RAMs that are accessed in parallel, with entries divided between the two RAMs, and wherein the one of the multiple entries is selected as a function of a distance from a last chosen entry.

8. The method of claim 1 and further comprising resetting the group valid field of the one of the multiple group entries following the selecting of the one of the groups.

9. The method of claim 1 and further comprising:

receiving an indication that a requestor is requesting;

identifying a group entry in the group RAM corresponding to the requestor that is requesting; and

setting a corresponding group valid field in a corresponding group entry to indicate a requestor in the group is requesting.

10. The method of claim 1 wherein selecting one of the multiple entries in the group RAM comprises;

accessing a group last chosen value to obtain a starting point for selecting one of the groups of requestors in the round robin manner; and

upon selecting one of the multiple entries in the round robin manner, setting the last chosen value to indicate a next starting point.

11. The method of claim 1 wherein selecting one of the groups in a round robin manner further comprises:

accessing a RRAM starting pointer and end pointer for the selected group;

accessing a RRAM last chosen value for the selected group; and

performing the round robin arbitration on entries in the RRAM corresponding to the starting pointer, end pointer, and last chosen value.

12. The method of claim 1 wherein the RRAM is a dedicated RAM.

13. An arbitration system comprising:

a requestor random access memory (RRAM) having multiple entries, each entry corresponding to a requestor and including a valid field indicating whether or not the requestor is requesting;

a group RAM having multiple group entries, each group entry corresponding to a group of requestors and including a group valid field indicating whether or not the group of requestors is requesting, a start pointer to a corresponding to the RRAM, an end pointer to the corresponding RRAM, and a last chosen pointer wherein one of the multiple entries in the group RAM is selectable in a round robin manner as a function of a value in the group valid field indicative of the corresponding group of requestors requesting; and

arbitration circuitry configured to:

receive requests for arbitration between the multiple requestors;

perform round robin arbitration using the group RAM to select one of the multiple entries in the group RAM corresponding to a portion of the RRAM;

access the RRAM to select one of the multiple entries in a round robin manner from the corresponding portion of the RRAM as a function of a value in the valid field indicative of the corresponding requestor requesting; and

send an indication to the corresponding requesting requestor.

14. The system of claim 13 wherein the arbitration is further configured to reset the valid field of the one of the multiple entries following the selecting of the one of the multiple entries.

15. The system of claim 13 wherein the arbitration circuitry is further configured to:

receive an indication that a requestor is requesting;

identify an entry in the RRAM corresponding to the requestor that is requesting; and

setting a corresponding valid field in a corresponding entry to indicate the requestor is requesting.

16. The system of claim 13 and further comprising a last chosen register accessible by the arbitration circuitry and wherein arbitration circuitry is configured to access the RRAM by:

accessing the last chosen register to obtain a starting point for selecting one of the multiple entries in the RRAM in the round robin manner; and

upon selecting one of the multiple entries in a round robin manner, setting the last chosen register to indicate a next starting point.

17. The system of claim 13 wherein the arbitration circuitry is further configured to select one of the multiple entries of the RRAM in a round robin manner by:

accessing a credit field for each entry; and

selecting the one of the multiple entries in the RRAM as a function of a credit value in a corresponding credit field in addition to the value in the valid field.

18. The system of claim 13 wherein the arbitration circuitry is further configured to access the RRAM in a pipelined manner to enable a read of an entry every arbitration processor clock cycle.

19. A method comprising:

receiving arbitration requests at an arbitration processor from multiple requestors;

performing round robin arbitration for each request using a group RAM having multiple group entries, each group entry corresponding to a group of requestors and including a group valid field indicating whether or not the group of requestors is requesting, a start pointer to a corresponding requestor random access memory (RRAM), an end pointer to the corresponding RRAM, and a last chosen pointer;

selecting one of the multiple entries in the group RAM in a round robin manner as a function of a value in the group valid field indicative of the corresponding group of requestors requesting;

sending set valid field request to the RRAM having multiple entries, each entry corresponding to a requestor and including a valid field;

accessing a portion of the RRAM containing the corresponding group of requestors to select one of the multiple entries in a round robin manner as a function of a value in the valid field indicative of the corresponding requestor requesting;

resetting the value in the valid field of the selected one of the multiple entries; and

sending an arbitration done indication to the corresponding requestor.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2022
From: GAL, TAMA
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 061142/0609 →
Continuity (1)
Related Publication 20240094910A1 · Mar 21, 2024
References Cited (21)
US 5524268A · Geldman · 1996 [cited by examiner]
US 5987549A · Hagersten et al. · 1999 [cited by applicant]
US 6625678B1 · Koguchi · 2003 [cited by applicant]
US 6829647B1 · Biran et al. · 2004 [cited by applicant]
US 7150021B1 · Vajjhala · 2006 [cited by applicant]
US 7239646B1 · Sindhu et al. · 2007 [cited by applicant]
US 8867533B2 · Machnicki · 2014 [cited by applicant]
US 10972408B1 · Chidambaram Nachiappan · 2021 [cited by examiner]
US 11321248B2 · Chachad et al. · 2022 [cited by applicant]
US 11443479B1 · Yeung · 2022 [cited by applicant]
US 20070174529A1 · Rodriguez et al. · 2007 [cited by applicant]
US 20110296078A1 · Khan · 2011 [cited by examiner]
US 20120036412A1 · Sugawara · 2012 [cited by examiner]
US 20130019052A1 · Somanache · 2013 [cited by examiner]
US 20170317875A1 · Zeng · 2017 [cited by examiner]
US 20180217951A1 · Benisty · 2018 [cited by applicant]
US 20200293366A1 · Margetts · 2020 [cited by examiner]
US 20220217073A1 · Roweth · 2022 [cited by applicant]
Www.wikipedia.com, Random Access Memory, Aug. 2004, p. 1-2 (Year: 2004). [cited by examiner]
International Search Report and Written Opinion received for PCT Application No. PCT/US2023/030881, mailed on Dec. 8, 2023, 13 Pages. [cited by applicant]
International Preliminary Report on Patentability received for PCT Application No. PCT/US23/030881, mailed on Apr. 3, 2025, 06 pages. [cited by applicant]