Disk array system for processing and tracking the completion of I/O requests
First Claim
1. In a disk array system which comprises an array of disk drives which are controlled by an array of controllers, a method of processing an input/output (I/O) request so as to efficiently detect the completion of processing of the I/O request, the I/O request generated by a host computer and specifying a transfer of data between the host computer and the array of disk drives, the method comprising the steps of:
- (a) providing a completion monitoring circuit, the completion monitoring circuit configured to apply a logic function to a variable-length sequence of completion values to monitor the completion status of an I/O request;
(b) identifying a plurality of the controllers that are invoked by the I/O request, and generating a respective command sequence for each invoked controller, each command sequence specifying a sequence of disk transfer operations to be performed by a respective controller to process the I/O request, wherein different I/O requests invoke different numbers of controllers of the array of controllers;
(c) generating a plurality of completion values, each completion value corresponding to a different command sequence generated in step (b), the completion values generated such that application of the logic function to the plurality completion values produces a preselected final completion value that is known to the completion monitoring circuit;
(d) dispatching the command sequences generated in step (b) and the corresponding completion values generated in step (c) to the respective controllers that are invoked by the I/O request, and processing the command sequences with the controllers to transfer I/O data between the disk drives and the host computer;
(e) at each controller invoked by the I/O request, when processing of the respective command sequence dispatched in step (d) is complete, transferring the corresponding completion value to the completion monitoring circuit; and
(f) at the completion monitoring circuit, applying the logic function to the completion values transferred in step (e) and comparing an output of the logic function to the final completion value to detect the completion of processing of the I/O request.
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
23 Claims
-
1. In a disk array system which comprises an array of disk drives which are controlled by an array of controllers, a method of processing an input/output (I/O) request so as to efficiently detect the completion of processing of the I/O request, the I/O request generated by a host computer and specifying a transfer of data between the host computer and the array of disk drives, the method comprising the steps of:
-
(a) providing a completion monitoring circuit, the completion monitoring circuit configured to apply a logic function to a variable-length sequence of completion values to monitor the completion status of an I/O request; (b) identifying a plurality of the controllers that are invoked by the I/O request, and generating a respective command sequence for each invoked controller, each command sequence specifying a sequence of disk transfer operations to be performed by a respective controller to process the I/O request, wherein different I/O requests invoke different numbers of controllers of the array of controllers; (c) generating a plurality of completion values, each completion value corresponding to a different command sequence generated in step (b), the completion values generated such that application of the logic function to the plurality completion values produces a preselected final completion value that is known to the completion monitoring circuit; (d) dispatching the command sequences generated in step (b) and the corresponding completion values generated in step (c) to the respective controllers that are invoked by the I/O request, and processing the command sequences with the controllers to transfer I/O data between the disk drives and the host computer; (e) at each controller invoked by the I/O request, when processing of the respective command sequence dispatched in step (d) is complete, transferring the corresponding completion value to the completion monitoring circuit; and (f) at the completion monitoring circuit, applying the logic function to the completion values transferred in step (e) and comparing an output of the logic function to the final completion value to detect the completion of processing of the I/O request. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A disk array controller card configured to connect a host computer to an array of disk drives, the controller card comprising:
-
a completion monitoring circuit, the completion monitoring circuit configured to apply a logic function to a variable-length sequence of completion values to monitor the completion status of an input/output (I/O) request being processed by the controller card, the I/O request generated by the host computer and specifying a transfer of data between the host computer and a plurality of the disk drives of the array; a plurality of controllers, each controller connected to and configured to control the operation of at least one respective disk drive of the array; and a microcontroller that runs a control program, the microcontroller configured via the control program to receive an I/O request from the host computer and to generate a plurality of completion values, the plurality of completion values generated such that application of the logic function to the plurality completion values produces a final completion value that is known to the completion monitoring circuit, the microcontroller further configured to transfer each completion value to a different respective controller that is invoked by the I/O request; wherein each invoked controller passes a respective completion value to the completion monitoring circuit upon finishing processing the I/O request, and wherein the completion monitoring circuit applies the logic function to the completion values received from the controllers and compares a result of the logic function to the final completion value to determine whether the last completion value of the plurality of completion values has been received. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. In a disk array system which comprises an array of disk drives which are controlled by an array of controllers, a method of processing an input/output (I/O) request so as to efficiently detect the completion of processing of the I/O request, the I/O request generated by a host computer and specifying a transfer of data between the host computer and a variable number of disk drives, the method comprising the steps of:
-
(a) providing a completion monitoring circuit, the completion monitoring circuit configured to apply a logic function to a variable-length sequence of completion values to monitor the completion status pending I/O requests; (b) in response to receipt of the I/O request from the host computer, generating a plurality of completion values and transmitting each completion value to a different respective controller that is invoked by the I/O request, the completion values generated such that application of the logic fuction to the plurality completion values produces a preselected final completion value that is known to the completion monitoring circuit; (c) at each controller invoked by the I/O request, when processing of the I/O request is complete, transferring the completion value transmitted to the controller in step (b) to the completion monitoring circuit; and (d) at the completion monitoring circuit, applying the logic function to the completion values transferred in step (c), and comparing an output of the logic function to the final completion value to detect the receipt of the last completion value. - View Dependent Claims (19, 20, 21, 22, 23)
-
Specification