HYBRID ADDRESS MUTEX MECHANISM FOR MEMORY ACCESSES IN A NETWORK PROCESSOR
First Claim
1. A method of arbitrating access to a level one (L1) cache of a network processor having a plurality of processing modules and at least one shared memory, the method comprising:
- generating, by one or more processing modules of the network processor, one or more memory access requests, each memory access request comprising a requested address and an ID value corresponding to the requesting processing module, wherein each memory access request comprises one of a locked access request and one or more simple access requests;
determining, by an address mutually exclusive (mutex) arbiter of the network processor, whether one or more received memory access requests are simple access requests or locked access requests, wherein, for each locked access request, the address mutex arbiter performs the steps of;
determining, by the address mutex arbiter, whether two or more of the memory access requests are either conflicted or non-conflicted based on the requested address of each of the one or more memory access requests;
if one or more of the memory access requests are non-conflicted, determining, by the address mutex arbiter, for each non-conflicted memory access request, whether the requested address of each non-conflicted memory access request is locked out by one or more prior memory access requests based on a lock table of the address mutex arbiter;
if one or more of the non-conflicted memory access requests are locked-out by one or more prior memory access requests;
queuing, by the address mutex arbiter, one or more locked-out memory requests;
granting one or more non-conflicted memory access requests that are not locked-out;
updating the lock table corresponding to the requested addresses associated with the one or more granted memory access requests.
5 Assignments
0 Petitions
Accused Products
Abstract
Described embodiments provide arbitration for a cache of a network processor. Processing modules of the network processor generate memory access requests including a requested address and an ID value corresponding to the requesting processing module. Each request is either a locked request or a simple request. An arbiter determines whether the received requests are locked requests. For each locked request, the arbiter determines whether two or more of the requests are conflicted based on the requested address of each received memory requests. If one or more of the requests are non-conflicted, the arbiter determines, for each non-conflicted request, whether the requested addresses are locked out by prior memory requests based on a lock table. If one or more of the non-conflicted memory requests are locked-out by prior memory requests, the arbiter queues the locked-out memory requests. The arbiter grants any non-conflicted memory access requests that are not locked-out.
-
Citations
20 Claims
-
1. A method of arbitrating access to a level one (L1) cache of a network processor having a plurality of processing modules and at least one shared memory, the method comprising:
-
generating, by one or more processing modules of the network processor, one or more memory access requests, each memory access request comprising a requested address and an ID value corresponding to the requesting processing module, wherein each memory access request comprises one of a locked access request and one or more simple access requests; determining, by an address mutually exclusive (mutex) arbiter of the network processor, whether one or more received memory access requests are simple access requests or locked access requests, wherein, for each locked access request, the address mutex arbiter performs the steps of; determining, by the address mutex arbiter, whether two or more of the memory access requests are either conflicted or non-conflicted based on the requested address of each of the one or more memory access requests; if one or more of the memory access requests are non-conflicted, determining, by the address mutex arbiter, for each non-conflicted memory access request, whether the requested address of each non-conflicted memory access request is locked out by one or more prior memory access requests based on a lock table of the address mutex arbiter; if one or more of the non-conflicted memory access requests are locked-out by one or more prior memory access requests; queuing, by the address mutex arbiter, one or more locked-out memory requests; granting one or more non-conflicted memory access requests that are not locked-out; updating the lock table corresponding to the requested addresses associated with the one or more granted memory access requests. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. The method of claim A, wherein each locked access request is one of a locked read request and a locked write request.
-
12. The method of claim A, further comprising:
loading, from the at least one shared memory to the L1 cache, data corresponding to the memory access request.
-
13. A non-transitory machine-readable medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of arbitrating access to a level one (L1) cache of a network processor having a plurality of processing modules and at least one shared memory, the method comprising:
-
generating, by one or more processing modules of the network processor, one or more memory access requests, each memory access request comprising a requested address and an ID value corresponding to the requesting processing module, wherein each memory access request comprises one of a locked access request and one or more simple access requests; determining, by an address mutually exclusive (mutex) arbiter of the network processor, whether one or more received memory access requests are simple access requests or locked access requests, wherein, for each locked access request, the address mutex arbiter performs the steps of; determining, by the address mutex arbiter, whether two or more of the memory access requests are either conflicted or non-conflicted based on the requested address of each of the one or more memory access requests; if one or more of the memory access requests are non-conflicted, determining, by the address mutex arbiter, for each non-conflicted memory access request, whether the requested address of each non-conflicted memory access request is locked out by one or more prior memory access requests based on a lock table of the address mutex arbiter; if one or more of the non-conflicted memory access requests are locked-out by one or more prior memory access requests; queuing, by the address mutex arbiter, one or more locked-out memory requests; granting one or more non-conflicted memory access requests that are not locked-out; updating the lock table corresponding to the requested addresses associated with the one or more granted memory access requests. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A network processor comprising:
-
a plurality of processing modules, at least one level one (L1) cache, and at least one shared memory, wherein one or more of the plurality of processing modules are configured to generate one or more memory access requests, each memory access request comprising a requested address and an ID value corresponding to the requesting processing module, wherein each memory access request comprises one of a locked access request and one or more simple access requests; an address mutually exclusive (mutex) arbiter configured to arbitrate access to the L1 cache, wherein the address mutex arbiter is further configured to; determine whether one or more received memory access requests are simple access requests or locked access requests, wherein, for each locked access request, the address mutex arbiter is configured to; determine whether two or more of the memory access requests are either conflicted or non-conflicted based on the requested address of each of the one or more memory access requests; if one or more of the memory access requests are non-conflicted; determine, for each non-conflicted memory access request, whether the requested address of each non-conflicted memory access request is locked out by one or more prior memory access requests based on a lock table of the address mutex arbiter; if one or more of the non-conflicted memory access requests are locked-out by one or more prior memory access requests; queue the one or more locked-out memory requests; grant one or more non-conflicted memory access requests that are not locked-out; and update the lock table corresponding to the requested addresses associated with the one or more granted memory access requests. - View Dependent Claims (20)
-
Specification