Access arbiters are used to prioritize read and write access requests to
individual memory banks in DRAM memory devices, particularly fast cycle
DRAMs. This serves to optimize the memory bandwidth available for the
read and the write operations by avoiding consecutive accesses to the
same memory bank and by minimizing dead cycles. The arbiter first divides
DRAM accesses into write accesses and read accesses. The access requests
are divided into accesses per memory bank with a threshold limit imposed
on the number of accesses to each memory bank. The write receive packets
are rotated among the banks based on the write queue status. The status
of the write queue for each memory bank may also be used for system flow
control. The arbiter also typically includes the ability to determine
access windows based on the status of the command queues, and to perform
arbitration on each access window.