Controller for receiving transfer requests for noncontiguous sectors and reading those sectors as a continuous block by interspersing no operation requests between transfer requests
First Claim
1. A method of transferring data between a memory and a disk drive in a computer system comprising a memory and a disk subsystem, wherein the disk subsystem comprises a controller and a disk drive coupled to the controller, the method comprising the steps of:
- the controller occasionally receiving a high-level data transfer request which identifies a data transfer between noncontiguous memory addresses and noncontiguous disk sectors;
the controller reading a contiguous block of sectors on said disk drive, wherein said contiguous block of sectors includes said noncontiguous disk sectors and disk sectors not involved in said transfer;
the controller generating one or more high-level data transfer requests into two or more atomic transfer requests for said contiguous block of sectors, wherein said controller inserts one or more no-operation requests into said transfer requests corresponding to data read from said disk sectors not involved in said transfer, wherein said no-operation requests are interspersed with said atomic transfer requests so that said two or more atomic transfer requests and said no-operation requests form a contiguous sequence of memory addresses; and
the controller executing said atomic transfer requests to transfer data from said noncontiguous disk sectors to said noncontiguous memory addresses, wherein said no-operation requests prevent said data read from said disk sectors not involved in said transfer from being transferred.
6 Assignments
0 Petitions
Accused Products
Abstract
A disk drive array including a controller which provides scatter/scatter (bi-directional scatter/gather) operations between noncontiguous host memory address locations and noncontiguous disk address locations. The host provides a single request to launch a scatter/scatter transfer. The single data request includes a pointer to a list of transfer counts and addresses, the length of the list, and the starting logical address on the disk transfer. Skipped blocks in a scatter/scatter request are specified by data address value of -1, and a no-operation (no-op) request is enqueued for each skipped block. Thus, during reads the controller extends the scattered read from the disk into a single large read of contiguous sectors and suppresses the unwanted data by inserting "no-operation" commands in place of the read commands during the transfer to the host.
-
Citations
24 Claims
-
1. A method of transferring data between a memory and a disk drive in a computer system comprising a memory and a disk subsystem, wherein the disk subsystem comprises a controller and a disk drive coupled to the controller, the method comprising the steps of:
-
the controller occasionally receiving a high-level data transfer request which identifies a data transfer between noncontiguous memory addresses and noncontiguous disk sectors; the controller reading a contiguous block of sectors on said disk drive, wherein said contiguous block of sectors includes said noncontiguous disk sectors and disk sectors not involved in said transfer; the controller generating one or more high-level data transfer requests into two or more atomic transfer requests for said contiguous block of sectors, wherein said controller inserts one or more no-operation requests into said transfer requests corresponding to data read from said disk sectors not involved in said transfer, wherein said no-operation requests are interspersed with said atomic transfer requests so that said two or more atomic transfer requests and said no-operation requests form a contiguous sequence of memory addresses; and the controller executing said atomic transfer requests to transfer data from said noncontiguous disk sectors to said noncontiguous memory addresses, wherein said no-operation requests prevent said data read from said disk sectors not involved in said transfer from being transferred. - View Dependent Claims (2, 3, 4, 6, 13, 14, 15, 16, 17, 18)
-
-
5. A disk controller which transfers data between a memory and a disk drive in computer system comprising a memory and a disk subsystem, wherein the disk subsystem comprises the controller and a disk drive coupled to the controller, the controller comprising:
-
means for receiving a high-level data transfer request which identifies a data transfer between noncontiguous memory addresses and noncontiguous disk sectors; means for reading a contiguous block of disk sectors on said disk drive, wherein said contiguous block of disk sectors includes said noncontiguous disk sectors and disk sectors not involved in said transfer; means for generating one or more high-level data transfer requests into two or more atomic transfer requests for said contiguous block of sectors, wherein said means for generating includes means for inserting one or more no-operation requests into said transfer requests corresponding to data from said disk sectors not involved in said transfer, wherein said no-operation requests are interspersed with said atomic transfer requests so that said two or more atomic transfer requests and said no-operation requests form a contiguous sequence of memory addresses; and means for executing said atomic transfer requests to transfer data from said noncontiguous disk sectors to said noncontiguous memory addresses, wherein said no-operation requests prevent data corresponding to said disk sectors not included in said transfer from being transferred. - View Dependent Claims (7, 8, 9, 10, 11, 12, 19, 20, 21, 22, 23, 24)
-
Specification