Entry allocation in a circular buffer using wrap bits indicating whether a queue of the circular buffer has been traversed
First Claim
1. A method for allocating entries in a circular buffer, said method comprising the steps of:
- receiving at least one request for storing data in entries of said circular buffer;
generating a head pointer to identify a starting entry in said circular buffer for which circular buffer entries are not allocated, said head pointer including a wrap bit to specify whether said head pointer has traversed a linear queue of said circular buffer;
generating a tail pointer to identify an ending entry in said circular buffer for which circular buffer entries are allocated including a wrap bit to specify whether said tail pointer has traversed a linear queue of said circular buffer; and
allocating free entries in said circular buffer by utilizing said head pointer and said tail pointer to sequentially allocate entries between said starting entry and said ending entry.
0 Assignments
0 Petitions
Accused Products
Abstract
An allocator assigns entries for a circular buffer. The allocator receives requests for storing data in entries of the circular buffer, and generates a head pointer to identify a starting entry in the circular buffer for which circular buffer entries are not allocated. In addition to pointing to an entry in the circular buffer, the head pointer includes a wrap bit. The allocator toggles the wrap bit each time the allocator traverses the linear queue of the circular buffer. A tail pointer is generated, including the wrap bit, to identify an ending entry in the circular buffer for which circular buffer entries are allocated. In response to the request for entries, the allocator sequentially assigns entries for the requests located between the head pointer and the tail pointer. The allocator has application for use in a microprocessor performing out-of-order dispatch anti speculative execution. The allocator is coupled to a reorder buffer, configured as a circular buffer, to permit allocation of entries. The allocator utilizes an all or nothing allocation policy, such that either all or no incoming instructions are allocated during an allocation period.
-
Citations
8 Claims
-
1. A method for allocating entries in a circular buffer, said method comprising the steps of:
-
receiving at least one request for storing data in entries of said circular buffer; generating a head pointer to identify a starting entry in said circular buffer for which circular buffer entries are not allocated, said head pointer including a wrap bit to specify whether said head pointer has traversed a linear queue of said circular buffer; generating a tail pointer to identify an ending entry in said circular buffer for which circular buffer entries are allocated including a wrap bit to specify whether said tail pointer has traversed a linear queue of said circular buffer; and allocating free entries in said circular buffer by utilizing said head pointer and said tail pointer to sequentially allocate entries between said starting entry and said ending entry. - View Dependent Claims (2, 3, 4)
-
-
5. An apparatus for allocating entries in a circular buffer, said apparatus comprising:
-
a head pointer circuit coupled to said circular buffer for generating a head pointer to identify a starting entry in said circular buffer for which circular buffer entries are not allocated, said head pointer including a wrap bit to specify whether said head pointer has traversed a linear queue of said circular buffer; a tail pointer circuit coupled to said circular buffer for generating a tail pointer to identify an ending entry in said circular buffer for which circular buffer entries are allocated including a wrap bit to specify whether said tail pointer has traversed a linear queue of said circular buffer; and an allocation circuit coupled to said head pointer circuit, said tail pointer circuit and said circular buffer, said allocation circuit being constructed to receive at least one request for storing data in entries of said circular buffer, and being constructed to allocate free entries in said circular buffer by utilizing said head pointer and said tail pointer to sequentially allocate entries between said starting entry and said ending entry. - View Dependent Claims (6, 7, 8)
-
Specification