Patent ID: 8201172

Claim:
A method of storing data for multiple execution threads in a FIFO (first-in first-out memory) storage, comprising: issuing a sender credit to a sender indicating that at least one entry is available in the FIFO storage to store the data; receiving data for a first thread of the multiple execution threads from the sender; obtaining a pointer to an entry in the FIFO storage from a free pointer list that includes pointers to entries in the FIFO storage that are available to store data for the multiple execution threads; storing the data in the entry; storing the pointer in a list of pointers corresponding to the first thread, wherein each thread is associated with a corresponding list of pointers, and each list of pointers is ordered above a previous list of pointers to form an ordered list of pointers for the multiple execution threads; and incrementing a rollback address, a base address, and a reject address for each thread that is above the first thread in the ordered list of pointers, wherein the rollback address indicates an oldest entry in the ordered list of pointers that has not been popped for a corresponding thread, the base address indicates an entry in the ordered list of pointers that stores a next entry to read for a corresponding thread, and the reject address indicates a newest entry in the ordered list of pointers that has been committed for a corresponding thread.