Method for efficient buffer tag allocation
First Claim
1. A method for allocating a tag, said method comprising:
- incrementing a counter responsive to determining a tag of a plurality of unique tags has not been selected for allocation;
utilizing a value of said counter to identify a first tag of said tags;
determining whether said first tag is available for allocation;
repeating said incrementing, utilizing, and determining if said first tag is not available for allocation; and
selecting said first tag for allocation if said first tag is available for allocation and said first tag does not correspond to a tag most recently de-allocated.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and mechanism for allocating transaction tags. A request queue includes a counter whose value is used to identify a corresponding tag of a plurality of unique tags. The queue is configured to increment the counter and use the current count value to index into a buffer pool. If the tag corresponding to the currently indexed buffer pool entry is available for allocation, a determination is made as to whether the currently identified tag is corresponds to the last tag which has been de-allocated. If the identified available buffer pool entry/tag matches the last tag which was de-allocated, the queue continues the process of counter incrementation and searching of the buffer pool for an available entry to select for allocation. When a request is received, the currently selected tag is allocated. Additional circuitry may be used to identify a fallback tag in the event a request is received while the queue is searching for a tag. In such an event, the fallback tag may be allocated.
-
Citations
24 Claims
-
1. A method for allocating a tag, said method comprising:
-
incrementing a counter responsive to determining a tag of a plurality of unique tags has not been selected for allocation; utilizing a value of said counter to identify a first tag of said tags; determining whether said first tag is available for allocation; repeating said incrementing, utilizing, and determining if said first tag is not available for allocation; and selecting said first tag for allocation if said first tag is available for allocation and said first tag does not correspond to a tag most recently de-allocated. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A request queue comprising:
-
a buffer pool including a plurality of entries, each said entry being indicative of a unique tag; and a control unit, wherein said control unit is configured to; increment a counter responsive to determining no tag of said entries has been selected for allocation; utilize a value of said counter to identify a first entry of said entries; determine whether a first tag corresponding to said first entry is available for allocation; repeat said incrementing, utilizing, and determining in response to detecting said first tag is not available for allocation; and select said first tag for allocation in response to detecting said first tag is available for allocation and said first tag does not correspond to a tag most recently de-allocated. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A system comprising:
-
a bus master including a bus interface coupled to a bus; and a request queue coupled to said bus master via said bus; wherein said request queue is configured to; increment a counter responsive to determining no tag of said entries has been selected for allocation; utilize a value of said counter to identify a first entry of said entries; determine whether a first tag corresponding to said first entry is available for allocation; repeat said incrementing, utilizing, and determining in response to detecting said first tag is not available for allocation; and select said first tag for allocation in response to detecting said first tag is available for allocation and said first tag does not correspond to a tag most recently de-allocated. - View Dependent Claims (21, 22, 23, 24)
-
Specification