Disk array controller with automated processor which routes I/O data according to addresses and commands received from disk drive controllers
First Claim
1. A disk array controller which operatively connects a host computer to an array of disk drives, the host computer including a system memory, the disk array controller comprising:
- a plurality of disk drive controllers, each disk drive controller connected to and configured to control at least one disk drive of the array;
a microcontroller which dispatches controller commands to the disk drive controllers over a control bus to initiate transfers of input/output (I/O) data between the disk drives and the host computer, at least some of the controller commands including system memory addresses for performing said transfers, the microcontroller responsive to I/O requests generated by the host computer; and
an automated processor which transfers I/O data between at least the disk drive controllers and the system memory, the automated processor connected to the plurality of disk drive controllers by a packet bus which is separate from the control bus, and connected as a bus master to a bus of the host computer, the automated processor responsive to transfer commands and target addresses received from the disk drive controllers over the packet bus, at least some of the transfer commands specifying transfers of I/O data between the disk drive controllers and the system memory.
4 Assignments
0 Petitions
Accused Products
Abstract
A high-performance RAID system for a PC comprises a controller card which controls an array of ATA disk drives. The controller card includes an array of automated disk drive controllers, each of which controls one respective disk drive. The disk drive controllers are connected to a microcontroller by a control bus and are connected to an automated coprocessor by a packet-switched bus. The coprocessor accesses system memory and a local buffer. In operation, the disk drive controllers respond to controller commands from the microcontroller by accessing their respective disk drives, and by sending packets to the coprocessor over the packet-switched bus. The packets carry I/O data (in both directions, with the coprocessor filling-in packet payloads on I/O writes), and carry transfer commands and target addresses that are used by the coprocessor to access the buffer and system memory. The packets also carry special completion values (generated by the microcontroller) and I/O request identifiers that are processed by a logic circuit of the coprocessor to detect the completion of processing of each I/O request. The coprocessor grants the packet-switched bus to the disk drive controllers using a round robin arbitration protocol which guarantees a minimum I/O bandwidth to each disk drive. This minimum I/O bandwidth is preferably greater than the sustained transfer rate of each disk drive, so that all drives of the array can operate at the sustained transfer rate without the formation of a bottleneck.
-
Citations
47 Claims
-
1. A disk array controller which operatively connects a host computer to an array of disk drives, the host computer including a system memory, the disk array controller comprising:
-
a plurality of disk drive controllers, each disk drive controller connected to and configured to control at least one disk drive of the array; a microcontroller which dispatches controller commands to the disk drive controllers over a control bus to initiate transfers of input/output (I/O) data between the disk drives and the host computer, at least some of the controller commands including system memory addresses for performing said transfers, the microcontroller responsive to I/O requests generated by the host computer; and an automated processor which transfers I/O data between at least the disk drive controllers and the system memory, the automated processor connected to the plurality of disk drive controllers by a packet bus which is separate from the control bus, and connected as a bus master to a bus of the host computer, the automated processor responsive to transfer commands and target addresses received from the disk drive controllers over the packet bus, at least some of the transfer commands specifying transfers of I/O data between the disk drive controllers and the system memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A disk array controller which operatively connects a host computer to an array of disk drives, the host computer including a system memory, the disk array controller comprising:
-
a plurality of disk drive controllers, each disk drive controller connected to and configured to control at least one disk drive of the array; a microcontroller which dispatches controller commands to the disk drive controllers over a first bus to initiate transfers of input/output (I/O) data between the disk drives and the host computer, at least some of the controller commands including system memory addresses for performing said transfers, the microcontroller responsive to I/O requests generated by the host computer; and an automated processor which transfers I/O data between at least the disk drive controllers and the system memory in response to transfer commands and target system memory addresses received from the disk drive controllers, the automated processor connected to the plurality of disk drive controllers by a second bus which is separate from the first bus. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. In a computer system which comprises a host computer and an array of disk drives, a method of processing an input/output (I/O) request generated by the host computer, the method comprising:
-
(a) dispatching at least one controller command to a disk drive controller to initiate a transfer of I/O data from a disk drive controlled by the disk drive controller to a system memory of the host computer, the controller command including a system memory address which specifies a location to which the I/O data is to be transferred; (b) dispatching controller commands to a plurality of other disk drive controllers to initiate transfers of I/O data from other disk drives of the array to the system memory; (c) responding to the controller command dispatched in step (a) with the disk drive controller by (i) reading the I/O data from the disk drive, and (ii) generating and sending a sequence of packets to an automated processor, the sequence of packets including the I/O data and at least one target system memory address, the at least one target system memory address based on the system memory address included within the controller command; and (d) processing the sequence of packets with the automated processor by writing the I/O data included therein to said location in system memory. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. In a disk array controller which operatively connects a host computer to an array of disk drives, and which processes multiple input/output (I/O) requests from the host computer concurrently, a method of processing an I/O request from the host computer, comprising, with an automated processor:
-
receiving packets over a bus from each of a plurality of disk drive controllers invoked by the I/O request, at least some of the packets including I/O data read from the disk drives and including transfer commands and target system memory addresses that fully specify to the automated processor transfers of the I/O data to a system memory of the host computer; and transferring the I/O data to the system memory of the host computer according to the transfer commands and the target system memory addresses contained within the packets without regard to an identity of the I/O request. - View Dependent Claims (36, 37, 38, 39, 40)
-
-
41. In a disk array controller which operatively connects a host computer to an array of disk drives, a method of processing a disk drive specific portion of an I/O read request, comprising, with an automated disk drive controller:
-
receiving a controller command that specifies at least a disk read operation to be performed and a target system memory address for writing resulting I/O data to the system memory; reading the I/O data from the disk drive according to the command; transmitting the I/O data on a bus within a sequence of packets, wherein at least some of the packets include transfer commands and target system memory addresses that fully specify transfer operations for transferring the I/O data to the system memory. - View Dependent Claims (42, 43, 44, 45, 46, 47)
-
Specification