Patent ID: 7389365

Claim:
In a system including a main memory storing data for a plurality of devices that each include one or more channels for making data requests, a method for arbitrating data requests from the plurality of devices, the method comprising the acts of: creating a first arbitration mechanism associated with a direct memory access (DMA) engine; creating a second arbitration mechanism associated with the DMA engine; at the first arbitration mechanism, receiving at least one data request from each of the plurality of devices, and such that each of the plurality of devices has made at least one corresponding data request; selecting, using the first arbitration mechanism, one or more eligible devices from the plurality of devices, the one or more eligible devices including all devices having at least one corresponding data request and which are also eligible to have their at least one corresponding data request fulfilled by the DMA engine during a particular DMA cycle, such selection of the one or more eligible devices being evaluated on a per device basis, treating each device of the plurality of devices as a separate unit for any and all channels of such device, and wherein the one or more eligible devices selected on the per device basis include a plurality of different types of channels; after determining the one or more eligible devices, using the second arbitration mechanism to select, from among the at least one corresponding data request of each of the one or more eligible devices, one or more cycle data requests that are to be fulfilled during the particular DMA cycle, wherein selecting the one or more cycle data requests includes evaluating the at least one corresponding data request of each of the one or more eligible devices on a per channel basis; and processing the selected one or more corresponding data requests of using the DMA engine during the particular DMA cycle.