IP Library Granted Patent US 11,687,238
Granted Patent B2
US 11,687,238 · App. 17/408,552 · Granted Jun 27, 2023

Virtual network pre-arbitration for deadlock avoidance and enhanced performance

Inventors: Matthew David Pierson (Frisco, TX); Daniel Wu (Plano, TX); Kai Chirca (Dallas, TX)
Assignee: Texas Instmments Incorporated
G06F3/0604G06F3/064G06F3/0607G06F3/0632G06F3/0658G06F3/0659G06F3/0673G06F3/0679G06F9/30101G06F9/30123G06F9/3897G06F9/4881G06F9/5016G06F12/0607G06F12/084G06F12/0811G06F12/0815G06F12/0828G06F12/0831G06F12/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 11,687,238
App. No.
17/408,552
Granted
Jun 27, 2023
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, in a first clock cycle, a pre-arbitration winner between a first memory access request and a second memory access request based on a first number of credits allocated to a first destination device and a second number of credits allocated to a second destination device. The arbiter circuit is further configured to, in a second clock cycle select a final arbitration winner from among the pre-arbitration winner and a subsequent memory access request based on a comparison of a priority of the pre-arbitration winner and a priority of the subsequent memory access request.

Claims (57)

1. A method comprising:

receiving a set of requests for transmission over a data path;

classifying each request of the set of requests as either blocking or non-blocking;

selecting a first request of the set of requests for transmission over the data path based on the classifying of each request of the set of requests as either blocking or non-blocking, wherein the first request has a first priority;

receiving a second request, wherein the second request has a second priority;

comparing the first priority to the second priority; and

determining whether to provide the first request or the second request for transmission over the data path first based on the comparing of the first priority to the second priority.

2. The method of claim 1 , wherein:

each request of the set of requests has an associated credit cost; and

the selecting of the first request of the set of requests is further based on the associated credit costs of the set of requests.

3. The method of claim 2 , wherein the associated credit cost of each request of the set of requests is based on a type associated with the respective request.

4. The method of claim 2 , wherein the associated credit cost of each request of the set of requests is based on whether the respective request is a read request or a write request.

5. The method of claim 1 , wherein:

each request of the set of requests has an associated destination device coupled to the data path that has a respective credit allocation; and

the selecting of the first request of the set of requests is further based on the respective credit allocations of the associated destination devices of the set of requests.

6. The method of claim 1 , wherein the second request is received subsequent to the set of requests.

7. The method of claim 1 , wherein the selecting of the first request includes applying a sharing algorithm to a subset of the set of requests that each meet a criterion.

8. The method of claim 7 , wherein the sharing algorithm includes a round robin algorithm.

9. The method of claim 1 further comprising:

determining a starvation bound value for at least one of the first request or the second request; and

determining a respective one of the first priority and the second priority based on the starvation bound value for the at least one of the first request or the second request.

10. The method of claim 1 , wherein the set of requests includes a set of memory requests directed to a shared memory.

11. A memory controller comprising:

a set of processor interfaces configured to couple to a processor; and

an arbiter circuit coupled to the set of processor interfaces and configured to couple to a data path, wherein the arbiter circuit is configured to:

receive a set of requests for transmission over the data path via the set of processor interfaces;

classify the set of requests as either blocking or non-blocking;

select a first request of the set of requests for transmission over the data path based on the classification of the set of requests as either blocking or non-blocking, wherein the first request has a first priority;

receive a second request for transmission over the data path, wherein the second request has a second priority;

compare the first priority to the second priority; and

select a selected request for transmission over the data path from among the first request and the second request based on the comparison of the first priority to the second priority.

12. The memory controller of claim 11 , wherein:

each request of the set of requests has an associated credit cost; and

the arbiter circuit is configured to select the first request from among the set of requests further based on the associated credit costs of the set of requests.

13. The memory controller of claim 12 , wherein the associated credit cost of each request of the set of requests is based on a type associated with the respective request.

14. The memory controller of claim 12 , wherein the associated credit cost of each request of the set of requests is based on whether the respective request is a read request or a write request.

15. The memory controller of claim 11 , wherein:

each request of the set of requests has an associated destination device coupled to the data path that has a respective credit allocation; and

the arbiter circuit is configured to select the first request from among the set of requests further based on the respective credit allocations of the associated destination devices of the set of requests.

16. The memory controller of claim 11 , wherein the second request is received subsequent to the set of requests.

17. The memory controller of claim 11 , wherein the arbiter circuit is configured to select the first request from among the set of requests by applying a sharing algorithm to a subset of the set of requests that each meet a criterion.

18. The memory controller of claim 17 , wherein the sharing algorithm includes a round robin algorithm.

19. The memory controller of claim 17 , wherein the arbiter circuit is configured to:

determine a first starvation bound value for the first request;

determine the first priority based on the first starvation bound value;

determine a second starvation bound value for the second request; and

determine the second priority based on the second starvation bound value.

20. A device comprising:

a set of processors;

a memory controller coupled to the set of processors; and

a set of memory devices coupled to the memory controller, wherein the memory controller is configured to:

receive a set of requests directed to the set of memory devices from the set of processors;

classify the set of requests as either blocking or non-blocking;

select a first request of the set of requests for providing to the set of memory devices based on the classification of the set of requests as either blocking or non-blocking, wherein the first request has a first priority;

receive a second request directed to the set of memory devices, wherein the second request has a second priority;

compare the first priority to the second priority; and

determine whether the first request or the second request is to be provided to the set of memory devices first based on the comparison of the first priority to the second priority.

Continuity (4)
Continuation 17066650 · Oct 9, 2020
Continuation 16653378 · Oct 15, 2019
Provisional Application 62745842 · Oct 15, 2018
Related Publication 20210382822A1 · Dec 9, 2021