Patent ID: 7360035

Claim:
In a computer system utilizing a network processor incorporating multiple general purpose processors, a memory access device comprising: a memory comprising at least one memory module comprising at least one memory bank, each of which includes multiple rows, each bank using a different FIFO buffer to queue memory access requests from multiple general function processors into the bank, said FIFO buffer having a top; an arbiter including an atomic read and write function, the arbiter including: a separate FIFO buffer for each bank within the memory, wherein at least one of the separate FIFO buffers has a depth that is equal to the number of outstanding requests and stores the type of access, address, and the data block height in addition to the number of processors when each of the multiple general purpose processors is not limited to only one outstanding request; a selection algorithm to choose one general purpose processor requesting access to the memory to be a winner, and to load an encoded value associated with the winner into all of the FIFO buffers associated with the memory banks to be accessed by the request before choosing another winner, wherein read and write requests are interleaved into different windows; a function that accesses all of the data within one memory bank for the memory access request of the general purpose processor associated with the encoded value that is at the top of the FIFO buffer associated with the memory bank before accessing data within the memory bank for another general purpose processor and, thereby, the access for a given block is atomic, and the access spans multiple banks, multiple addresses, and multiple memory modules.