Patent ID: 7421545

Claim:
A multiple entry queue system for a multiprocessor system, comprising: a storage unit having a plurality of storage locations; a plurality of multiplexers, each multiplexer having inputs coupled to each of the plurality of storage locations, and each multiplexer corresponding to a respective one of a plurality of pointers including a response pointer, and each pointer corresponding to one of a plurality of different phases of processing a bus request in the storage unit and each pointer being adjustable to reference one of the storage locations having a bus request in one of the phases, wherein the plurality of phases includes a snoop phase; a controller coupled to the storage unit and coupled to each of the plurality of multiplexers to allow simultaneous access to the plurality of storage locations, wherein the controller provides a first pointer that indicates a next available one of the plurality of storage locations, advances a response pointer of the plurality of pointers that indicates a storage location having a bus request that was completed in response to completion of the bus request, in response to receipt of a new bus request stores the new bus request in the storage location referenced by the first pointer and advances the first pointer, controls access to the plurality of storage locations as a circular FIFO and prevents the first pointer from advancing past the response pointer, and generates respective selection signals corresponding to the plurality of pointers, wherein each selection signal is coupled to a selection input of a respective one of the plurality of multiplexers; wherein for each of the plurality of pointers other than the response pointer, a request in a storage location selected by the corresponding selection signal remains for subsequent reading and the storage location is unavailable for a new request; and wherein the plurality of pointers does not include the first pointer, and selection signals from the plurality of pointers provide simultaneous read access to data in storage locations bounded by the first pointer and the response pointer.