A bus arbitration algorithm precisely controls the relative bus channel
bandwidth allocated to each master device by considering the direction
of, and/or the bus channel bandwidth consumed by, a bus transaction. At
least one weighting register is associated with each master device; in
one embodiment, one weighting register per bus channel. The register is
periodically loaded with a proportionate share of the available bus
bandwidth. Upon being granted a bus transaction on a bus channel, the
corresponding weighting register is decremented by an amount that
reflects the bus channel bandwidth consumed by the transaction, measured
in amount of data transferred or number of bus data transfer cycles
required to complete the transaction. In the case of equal initial
allocation of relative bandwidth share, master devices that consume bus
channel bandwidth will have relatively low priority; master devices that
do not consume bus channel bandwidth retain relatively high priority.