摘要 |
Disclosed herein is a method and apparatus for dynamically controlling data flow on a bi-directional data bus. Windows of time on the bus are divided between input, output, and pointer transactions. The number of input transactions relative to the number of output transactions is dynamically determined as a function of an input/output bias factor. Input transactions are written to a plurality of input queues (IQs) over the bus, and output transactions are read from a plurality of output queues (OQs) over the bus. The IQ receiving an input transaction is selected at least in part according to the occupancies of the IQs relative to a threshold occupancy. The number of output transactions allocated to an OQ during a window is determined as a function of that OQ's occupancy. Pointer transactions comprise reading or writing two copies of the pertinent pointers to prevent pointer corruption resulting from simultaneous pointer read/write accesses.
|