Patent ID: 8407418

Claim:
An information processing apparatus comprising: a memory comprising a buffer area; a first external storage separate from the memory; a second external storage separate from the memory; and a driver configured to control the first and second external storages, wherein the driver comprises a cache reservation module configured to reserve a cache area in the memory, the cache area being logically between the buffer area and the first external storage and between the buffer area and the second external storage, the driver being configured to use the cache area, secured on the memory by the cache reservation module, as a primary cache for the second external storage and a cache for the first external storage, and uses part or the entire first external storage as a secondary cache for the second external storage, the buffer area being reserved in order to transfer data between the driver and a host system that requests for data writing and data reading, a read controller configured to operate in response to a read request issued by the host system, and configured to: store data in the cache area into the buffer area if data to be read exists in the cache area, read data in the first external storage and store the read data into the buffer area if data to be read does not exist in the cache area and exists in the first external storage, and read data in the second external storage into the cache area, store the read data into the buffer area and accumulate the read data in the first external storage, if data to be read does not exist in the cache area or the first external storage; and a write controller configured to operate in response to a write request issued by the host system, and configured to: rewrite data in the cache area by data to be written and accumulate the rewritten data in the first external storage, if data to be updated exists in the cache area and does not exist in the first external storage; invalidate data in the first external storage, and rewrite data in the cache area by data to be written and accumulate the rewritten data in the first external storage, if data to be updated exists in both the cache area and the first external storage; rewrite data in the first external storage by data to be written if data to be updated does not exist in the cache area and exists in the first external storage; and store data to be written into the cache area and accumulate the stored data into the first external storage, if data to be updated does not exist in the cache area or the first external storage.