Patent ID: 7716391

Claim:
A data transfer apparatus used in a system having a first data bus, a second data bus, and a third data bus, each of which is independent from one another, a first memory connected with the first data bus, a second memory connected with the second data bus, a third memory connected with the third data bus, and a fourth memory connected with the third data bus, said data transfer apparatus comprising: a first transferor operable to transfer data by direct memory access between the first memory, and one of the third memory and the fourth memory; a second transferor operable to transfer data by direct memory access between the second memory, and one of the third memory and the fourth memory; a holder which holds, as a queue, commands for instructing data transfers; an obtainer operable to obtain the commands held in said holder; a grouper operable to group the held commands, based on a source or a destination indicated in each of the commands obtained by said obtainer, into a first group corresponding to said first transferor and a second group corresponding to said second transferor; a scheduler operable to prioritize the first and second groups by giving a higher priority to one of the first and second groups to which more commands belong and to decide an order of issuing the commands sequentially from the one of the first and second groups having the higher priority; and an issuer operable to issue a command to one of said first transferor and said second transferor, according to the decided order, wherein said scheduler determines whether a conflict exists between a first command to be issued from the first group to said first transferor and a second command to be issued from the second group to said second transferor when the first command and the second command are to be executed by said first transferor and said second transferor in parallel, said issuer issues the first command in the first group to said first transferor and issues the second command in the second group to said second transferor when said scheduler determines that a conflict does not exist, and said scheduler prioritizes the groups so as to parallelize data-transfers by said first transferor and said second transferor when said scheduler determines that a conflict exists.