Patent ID: 8719542

Claim:
A data transfer apparatus for transferring data in a storage area to another storage area, the apparatus comprising: a CPU core, which executes a plurality of user programs; an acquisition unit, which acquires a plurality of transfer requests from the plurality of user programs executed by the CPU core asynchronously with processing performed by the CPU core, wherein the transfer requests for each of the plurality of user programs are respectively stored in a predetermined dedicated memory area as a program memory space allocated for a respective requesting user program, and wherein a transfer request specifies at least a virtual address of a transfer source and a virtual address of a transfer destination in the program memory space into which the transfer request is to be stored for the respective requesting user program; an identification unit, which identifies a physical address corresponding to a virtual address specified in each of the plurality of transfer requests; and a transcription unit, which transcribes original data stored in a storage area indicated by a physical address of a transfer source specified by the identification unit, to a storage area indicated by a virtual address or a physical address of a transfer destination, wherein: when a transfer request, from a given one of the user programs that is currently being executed by the CPU core, is stored in a respective program memory space allocated to the currently-executed user program, then the acquisition unit refers to the respective program memory space allocated to the currently-executed user program first, so as to acquire the transfer request from the currently-executed user program first, and when no transfer request from the currently-executed user program is stored in a respective program memory space allocated to the currently-executed user, then the acquisition unit refers, in a time-sharing manner, to different program memory spaces allocated, respectively, to other user programs, so as to acquire existing transfer requests from each of the other user programs.