Patent ID: 8370857

Claim:
A device controller connected between an application software or device driver and a target device, the application software or device driver dividing a read or write request to the target device into plural commands at an upper limit on a data transfer size and sequentially sending the divided commands, the device controller comprising: a cache memory that caches data received from the application software or device driver and data received from the target device; and a control unit that transfers the data cached in the cache memory to the target device and the application software or device driver, wherein upon receiving a write request of the upper limit on the data transfer size, the control unit: predicts that the write request corresponds to a data transfer of more than the upper limit on the data transfer size; returns upstream a command complete for each of the commands; sequentially caches data transferred from the application software or device driver into the cache memory; issues a command for a data transfer size which is greater than the upper limit on the data transfer size of each command divided by the application software or device driver; and transfers the data in the cache memory to the target device, and wherein upon receiving a read request of the upper limit on the data transfer size, the controller: predicts that the read request corresponds to a data transfer of more than the upper limit on the data transfer size before issues a command for a data transfer size which is greater than the upper limit on the data transfer size of each command divided by the application software or device driver; reads out data from the target device; caches the data into the cache memory; and thereafter transfers the data to the application software or device driver from the cache memory in a case where data corresponding to a command of a read request which has been sequentially sent from the application software or device driver is cached in the cache memory.