Control system for a storage disk array

Abstract: An interrupt signal indicating the existence of a bus configuration error within a disk array system is generated by monitoring enable signals (EN1-EN4) controlling bus drivers (31,101,121,141) included in the array system. The array configuration error detector includes a bus configuration error detector (171-175) for each multiple-source bus (21-25) within the array. Each bus configuration error detector e.g. 171) is connected to receive all enable signals (EN1-EN4) for the bus drivers (31,101,121,141) associated with one bus (e.g. 21) and decode the received enable signals to generate an error signal when more than one of the received enable signals (EN1-EN4) is active. The error signals generated for each of the data busses (21-25) are provided to an adder (180) and combined to form the configuration error interrupt signal for the array.

Description: This invention relates to a control system for a storage disk array of the kind including a plurality of data busses associated with respective disk drives and a plurality of bus drivers associated with each one of said data busses. The invention also relates to a method of controlling a storage disk array. Recent and continuing increases in computer processing power and speed, in the speed and capacity of primary memory, and in the size and complexity of computer software has resulted in the need for faster operating, larger capacity secondary memory storage devices; magnetic disks forming the most common external or secondary memory storage means utilized in present day computer systems. Unfortunately, the rate of improvement in the performance of large magnetic disks has not kept pace with processor and main memory performance improvements. However, significant secondary memory storage performance and cost improvements may be obtained by the replacement of single large expensive disk drives with a multiplicity of small, inexpensive disk drives interconnected in a parallel array, which to the host appears as a single large fast disk. Several disk array design alternatives were presented in an article titled "A Case for Redundant Arrays of Inexpensive Disks (RAID)" by David A. Patterson, Garth Gibson and Randy H. Katz; University of California Report No. UCB/CSD 87/391, December 1987. The article, incorporated herein by reference, discusses disk arrays and the improvements in performance, reliability, power consumption and scalability that disk arrays provide in comparison to single large magnetic disks. Another disk array arrangement, referred to as parity striping, is presented in an article titled "Parity Striping of Disc Arrays: Low-Cost Reliable Storage with Acceptable Throughput" by Jim Gray, Bob Horst and Mark Walker; Tandem Computers, Inc., Tandem Technical Report No. 90.2, January 1990. Disk array architectures necessarily include several data busses for transferring data between the host system and the individual disk drives within the disk array. Each of these data busses may be connected to receive data from one of several data sources such as the host system, one or more of the array disk drives, a parity generation circuit, temporary storage devices, or diagnostic data sources. However, a problem arises if more than one source attempts to drive a bus at any instant, since corrupted data may appear on the bus. Damage may also be inflicted upon one or more of the data sources should more than one source attempt to drive the bus. Swedish Patent Application SE-A-460808 discloses a device for detecting faulty transmission from system processor units to a common processor bus in which the simultaneous access of two or more units to the common bus is detected and so that the access of one or more of the driver units to the common bus can be disabled and the error condition overcome. However, the manner in which the device of this document monitors the behaviour of the system units is disadvantageous particularly since it still allows for simultaneous access to the common bus to be made. Also, pages 97-100 of Electronics Vol.62,No.02, Feb. 1989, discusses the identification of errors over a plurality of data busses although the manner in which erroneous access is monitored exhibits limitations common in the prior art. Finally, US-A-4,945,540 discloses a gate circuit for bus signal lines which includes a failure detecting circuit which, although useful in detecting attempted erroneous bus access, provides no indicaton of the manner in which an error signal is processed once generated. It is an object of the present invention to provide a control system and method for storage disk array wherein the aforementioned problem is alleviated. Therefore, according to one aspect of the present invention there is provided a control system for a storage disk array, including a plurality of data busses associated with respective disk drives and a plurality of bus drivers associated with each one of said data busses, characterized by: a bus configuration error detector circuit corresponding to each one of said data busses, each one of said error detector circuits being arranged to be responsive to bus driver enable signals to generate a bus configuration interrupt signal for its corresponding data bus when more than one of the bus drivers associated with the corresponding data bus is enabled and combining means connected to receive the bus configuration interrupt signals generated by each of said bus configuration error detector circuits and adapted to combine the interrupt signals to generate an array configuration interrupt signal, said array configuration interrupt signal indicating the detection of a configuration error in at least one of said data busses. According to another aspect of the present invention there is provided a method of controlling a storage disk array including a plurality of data busses, each of said data busses having a plurality of bus drivers arranged to be enabled by respective bus driver enable signals, characterized by the steps of: for each one of said plurality of data busses: monitoring the application of said bus driver enable signals each to one of said plurality of bus drivers associated with said data bus; generating a bus configuration interrupt signal for said data bus when more than one of said plurality of bus drivers associated with said data bus is in enabled, and prohibiting any data bus transmission operations in response to said bus configuration interrupt signal while said configuration error is detected; and combining the bus configuration interrupt signals for each one of said plurality of data busses to generate an array configuration interrupt signal, said array configuration interrupt signal indicating the detection of a configuration error in at least one of said data busses. It will be appreciated that a control system and method according to the present invention have the advantage that an array bus configuration for the storage disk array can be validated before disk array data transfers are effected. A further advantage is that an array bus configuration may be checked with low software requirements. One embodiment of the present invention will now be described by way of example with reference to the accompanying drawings, in which:- Figure 1 is a block diagram of a disk array controller according to the present invention; Figure 2 is a functional block diagram of the Array Data Path Chip (ADP) shown in Figure 1; Figure 3 is a functional block diagram of the routing block shown in Figure 2; Figure 4 is a functional block diagram of one embodiment of the present invention for detecting bus configuration errors within the routing block shown in Figure 3; and Figure 5A through 5C show a schematic diagram of a portion of the bus configuration error detection circuit shown in Figure 4. Referring now to Figure 1, there is seen a block diagram of a SCSI (small computer system interface) disk array controller incorporating a bus configuration error detector. The controller includes a host SCSI adapter 14 to interface between the host system data bus 12 and SCSI data bus 16. Parity generation and data and parity routing are performed within Array Data Path Chip (ADP) 10. ADP chip 10 interconnects SCSI data bus 16 with six additional data busses, identified by reference numerals 21 through 26. SCSI bus interface chips 31 through 35 interface between respective SCSI data busses 21 through 25 and corresponding external disk drive data busses 41 through 45. Bus 26 connects ADP chip 10 with a 64 kilobyte static random access memory (SRAM) 36. ADP chip 10, SCSI adapter 14 and SCSI bus interface chips 31 through 35 all operate under the control of a dedicated microprocessor 51. All data busses shown, with the exception of bus 16, include nine data lines, one of which is a data bus parity line. Bus 16 includes 16 data lines, two of which are bus parity lines. Additional control, acknowledge and message lines, not shown, are also included with the data busses. SCSI adapter 14, SCSI bus interface chips 31 through 35, SRAM 36 and microprocessor 51 are commercially available items. For example, SCSI adapter 14 is a Fast SCSI 2 chip, SCSI bus interface chips 31 through 35 are NCR 53C96 chips and microprocessor 51 is a Motorola MC68020, 16 or 20 megahertz microprocessor. Also residing on the microprocessor bus are a one megabyte DRAM, a 128 kilobyte EPROM, an eight kilobyte EEPROM, a 68901 multifunction peripheral controller and various control and status registers. Array data path chip 10 is an application specific integrated circuit device capable of handling all data routing, data multiplexing and demultiplexing, and parity generation and checking aspects of RAID levels 1, 3, 4 and 5. Data multiplexing of non-redundant data among five channels is also accommodated. ADP chip 10 handles the transfer of data between host SCSI adapter 14 and SCSI bus interface chips 31 through 35. The ADP chip also handles the movement of data to and from the 64 kilobyte SRAM during read/modify/write operations of RAID level 5. Figure 2 is a functional block diagram of the Array Data Path Chip (ADP) shown in Figure 1. The ADP chip consists of the following internal functional blocks: control logic block 60 including diagnostic module 62, control and status register module 64, interrupt module 66 and interface module 68; DMA FIFO block 70; and data and parity routing block 100. The main function of control block 60 is to configure and to test the data path and parity path described herein. Microprocessor interface module 68 contains basic microprocessor read and write cycle control logic providing communication and data transfer between microprocessor 51 (shown in Figure 1) and control and status registers within the control block. This interface utilizes a multiplexed address and data bus standard wherein microprocessor read and write cycles consist of an address phase followed by a data phase. During the address phase a specific register is selected by the microprocessor. During the following data phase, data is written to or read from the addressed register. Control and status register module 64 includes numerous eight-bit registers under the control of microprocessor interface module 68 as outlined above. The contents of the control registers determine the configuration of the data and parity paths. Status registers provide configuration and interrupt information to the microprocessor. Diagnostic module 62 includes input and output data registers for the host and each array channel. The input registers are loaded by the processor and provide data to host bus 16, array busses 21 through 25 and SRAM bus 26 to emulate host or array transfers. The output registers, which are loaded with data routed through the various data buses, are read by the microprocessor to verify the proper operation of selected data and parity path configurations. Interrupt module 66 contains the control logic necessary to implement masking and grouping of ADP chip and individual array channel interrupt signals, including the configuration error signal generated by the present invention. Any combination of the channel interrupt signals and internally generated ADP error interrupt signals can be combined together to generate interrupt signals for the microprocessor. The function of DMA FIFO block 70 is to hold data received from the host until the array is ready to accept the data and to convert the data from eighteen bit bus 16 to nine bit busses 18. During read operations DMA FIFO block 70 holds the data received from the disk array until the host system is ready to accept the data and converts the data from nine bit busses 18 to eighteen bit bus 16. Data and parity routing block 100 contains the steering logic for configuring the data and parity paths between the host, the disk array and SRAM 36 in response to control bytes placed into the control registers contained in module 64. Block 100 also includes logic for generating and checking parity, verifying data, broadcasting data, monitoring data transfers, and reconstructing data lost due to a single disk drive failure. Figure 3 is a block diagram of DMA FIFO block 70 and routing block 100 shown in Figure 2. The data routing architecture includes several data channels identified as channels one through N. Each one of channels one through N provides a data path between SCSI adapter 14 and a corresponding bus interface chip, two of which are identified by reference numerals 31 and 35. The first data channel includes a data bank 101 connected between nine-bit data busses 16U and 16L and array bus 21. Data bank 101 holds data received from data busses 16U and 16L, or from controller processor bus 53 via transceiver 150, for placement onto array bus 21. Array bus 21 connects data bank 101 with bus interface chip 31, but also includes connections for receiving data from a system parity switch 110 and controller processor bus 53. The system parity switch connects to bus 21 through a tristate buffer 121. A transceiver 141 connects array bus 21 with processor bus 53. Thus, array bus 21 can be driven by four data sources: data bank 101, system parity switch 110 through tristate buffer 121, processor bus 53 through transceiver 141, and bus interface chip 31. Data bank 101, transceiver 141 and bus interface chip 31 can also operate to receive data from bus 21. Array channels two through N are similar in construction to channel one. For example, channel N connects data busses 16U and 16L through a data bank 105 and an array bus 25 with bus interface chip 35. Array bus 25 also includes connections to system parity switch 110 and processor bus 53. Thus, each of array channel busses two through N can be driven by four data sources. Also shown in Figure 3 is a static random access memory (SRAM) 36 providing temporary storage of data received from parity switch 110 or other array elements. Bus 26 provides a data path between parity switch 110 processor bus 53 and SRAM 36. Three data sources are connected to drive SRAM bus 26: SRAM 36, parity switch 110 through tristate buffer 126, and processor bus 53 through transceiver 146. Control lines, not shown, are provided between control registers residing in control and status module 64, discussed above, and data banks 101 through 105, tri-state buffers 121 through 126, transceivers 141 through 146 and 150, bus interface chips 31 through 35 and SRAM 36. Several control registers (not shown) included in configuration control and status register module 64 are responsible for configuration of the data paths, controlling the enablement of the various bus drivers, i.e. the data banks, tri-state buffers, transceivers, bus interface chips and SRAM 36. The enable signals provided by the control registers and associated control logic to the various bus drivers are binary; the bus drivers being enabled in response to the receipt of a high state logic level signal and disabled when a low state signal is received. The bus configuration validation circuit shown in the functional block diagram of Figure 4 monitors and decodes the states of the enable signals to determine that no more than one bus driver associated with each array bus is enabled at the same time. An interrupt signal is generated if two or more bus drivers are concurrently enabled on any single bus. Referring now to the functional block diagram of Figure 4, the bus configuration validation circuit is seen to include a register 161 and a configuration error detector circuit 171 associated with array channel one and a register 165 and a configuration error detector circuit 175 associated with array channel N. Corresponding registers and detector circuits, not shown, are also provided for the other array channels. Each register is connected to control lines 155 to receive the bus driver enable signals associated with its corresponding array channel. For example, register 161 receives the following active high enable signals: (1) ARRAY.CH1, which, depending upon the state of signal ARRAY.READ.CH1, enables bus interface chip 31 to either read data from or write data to array bus 21; (2) ARRAY.READ.CH1, which enables bus interface chip 31 to write data to bus 21 when signal ARRAY.CH1 is also set high; (3) DIAGNOSTIC.CH1, which enables transceiver 141; (4) DATA.BANK.CH1, which enables data bank 101; and (5) PARITY.CH1, which enables tri-state buffer 121. Register N is similarly connected to receive the corresponding control signals associated with channel N. The configuration error detector circuits for channel one (171) through channel N (175) are connected to receive the output signals from their corresponding registers and operate to combine the received signals to generate a configuration error interrupt signal for each channel, as will be discussed in greater detail with reference to Figures 5A and 5B. The N channel interrupt signals are combined by an adder 180 to produce the array configuration interrupt signal. Latch and filter circuitry 190 is included to remove false configuration errors generated when the array configuration is changed, to synchronize the configuration error signal to the system clock, and to hold any valid configuration interrupt signal until the detected error is corrected. Schematic diagrams of the internal circuitry within configuration error detectors 171 and 175 are shown in Figures 5A and 5B, respectively. Referring to Figure 5A, detector 171 includes an AND gate 229 connected by lines 201 and 202 to register 161 to receive enable signals ARRAY.CH1 and ARRAY.READ.CH1. The output of gate 229 is connected to the input of a first inverter 231. Three additional inverters, identified by reference numerals 233 through 235, are connected by lines 203 through 205 to register 161 to receive enable signals DIAGNOSTIC.CH1, DATA.BANK.CH1, and PARITY.CH1, respectively. Detector 171 further includes five four-input AND gates identified with reference numerals 240 through 244. Gate 240 is connected to receive the outputs of inverters 231 and 233 through 235; gate 241 is connected to receive the output of AND gate 229 and the outputs of inverters 233 through 235; the inputs of gate 242 are connected to line 203 and the output terminals of inverters 231, 234 and 235; the inputs of gate 243 are connected to line 204 and the output terminals of inverters 231, 233 and 235; and AND gate 244 is connected to receive the signal on line 205 and the outputs of inverters 231, 233 and 234. The outputs of AND gates 240 through 244 are provided to a NOR gate 249 to produce the interrupt signal for array channel one. The logic shown in Figure 5A operates to combine the enable signals for the bus drivers associated with array bus 21 to generate a high state channel interrupt signal whenever more than one bus driver has been enabled. The table below shows the binary value of the channel one interrupt signal for the sixteen possible combination of bus driver enable signals for bus 21. The enable signals are designated EN1 through EN4, where EN1 is the Boolean product of signals ARRAY.CH1 and ARRAY.READ.CH1, EN2 corresponds to enable signal DIAGNOSTIC.CH1, EN3 corresponds to signal DATA.BANK.CH1, and EN4 is equivalent to signal PARITY.CH1. EN4 EN3 EN2 EN1 CH1 Interrupt 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 The configuration error detectors associated with array channels two through N are identical in construction and operation to the channel one error decoder discussed above. The channel N error detectors (175) is shown in Figure 5B. A similar error detector may be provided to generate a configuration error signal for SRAM bus 26. The detector circuit for the SRAM bus as shown in Figure 3 may be simplified, however, since the SRAM bus includes only three bus drivers. Adder 180, shown in Figure 5C, includes a NOR gate 281 having a plurality of inputs 221 through 225 connected to receive the individual channel interrupt signals from the array channel error detectors. An inverter 283 is connected to receive the SRAM interrupt signal from line 220. A NAND gate 285 combines the outputs of NOR gate 281 and inverter 283 to produce the Boolean sum of the channel interrupt signals and the SRAM interrupt signal. Filter and latch circuitry 190 includes two D-type flip-flops identified by reference numerals 291 and 293. Each of flip-flops 291 and 293 has its preset input (S) connected to a reference voltage VDD, its clear input (R) connected to receive a system reset signal, and its clock input (C) connected to receive the system clock signal. The output of adder 180 is provided to the data input of flip-flop 291 and the Q output of flip-flop 291 is connected to the data input of flip-flop 293. The Q output of flip-flop 293 is combined with the output of adder 180 by an AND gate 295 to produce the array configuration interrupt signal. It can thus be seen that there has been provided by the present invention a simple method implemented in hardware for detecting bus contention within a disk array. The apparatus described above provides notification to the controller or system processor of an unallowed controller bus configuration. Erroneous data transfers and the corruption of data can thereby be prevented. Those skilled in the art will recognize that the invention is not limited to the specific embodiments described above and that numerous modifications and changes are possible without departing from the scope of the present invention as it is defined in the appended claims. For example, the architecture shown in Figures 4 through 5C and discussed in detail above may be readily expanded or contracted to accommodate any number of array channels and any number of bus drivers per channel.

Claims: A control system for a storage disk array, including a plurality of data busses (21-25) associated with respective disk drives and a plurality of bus drivers (31,101,121,141) associated with each one of said data busses (21), characterized by: a bus configuration error detector circuit (171) corresponding to each one of said data busses (21), each one of said error detector circuits (171) being arranged to be responsive to bus driver enable signals to generate a bus configuration interrupt signal for its corresponding data bus (21) when more than one of the bus drivers (31,101,121,141) associated with the corresponding data bus (21) is enabled, and means responsive to said bus configuration interrupt signal serving to prohibit any data bus transmission operation while said configuration error is detected; and combining means (180,190) connected to receive the bus configuration interrupt signals generated by each of said bus configuration error detector circuits (171-175) and adapted to combine the interrupt signals to generate an array configuration interrupt signal, said array configuration interrupt signal indicating the detection of a configuration error in at least one of said data busses (21-25). A system according to Claim 1, characterized in that each one of said bus drivers (31,101,121,141) is enabled in response to an associated binary enable signal (EN1-EN4), each of said enable signals (EN1-EN4) having a first state enabling its associated bus driver (31,101,121,141) to provide data to its associated array bus (21) and having a second state disabling its associated bus driver (31,101,121,141); and in that each one of said bus configuration error detector circuits (171) includes decoding means (231-235,240-244) connected to receive the enable signals (EN1-EN4) for the bus drivers (31,101,121,141) associated with the data bus (21) corresponding to that error detector circuit (171). A system according to Claim 2, characterized in that each of said decoding means (231-235,240-244) includes: an inverter (231-235) associated with each enable signal (EN1-EN4) received by the decoding means (231-235,240-244); an AND gate (241-244) associated with each enable signal (EN1-EN4) received by the decoding means (231-235,240-244), each one of said AND gates (241-244) being connected to receive its associated enable signal (EN1-EN4); an AND gate (240) connected to receive the output signals from each of said inverters (321-235); and a NOR gate (249) connected to receive the output signals from each of said AND gates (240-244). A system according to any one of the preceding claims, characterized in that said combining means includes filtering means (190) connected to receive said array configuration interrupt signal for suppressing temporary signal transients in said array configuration interrupt signal. A system according to any one of Claims 2 to 4, characterized by: a register (161-165) corresponding to each one of said data busses (21-25) and connected to receive and hold the enable signals (EN1-EN4) for the bus drivers (31,101,121,141) associated with its corresponding data bus, wherein each one of said bus configuration error detector circuits (171) is connected to receive the enable signals (EN1-EN4) stored in a corresponding one of said registers (161). A method of controlling a storage disk array including a plurality of data busses (21-25), each of said data busses (21-25) having a plurality of bus drivers arranged to be enabled by respective bus driver enable signals, (31,101,121,141) characterized by the steps of: for each one of said plurality of data busses (21-25): monitoring the application of said bus driver enable signals to each one of said plurality of bus drivers (31,101,121,141) associated with said data bus (21); generating a bus configuration interrupt signal for said data bus (21) when more than one of said plurality of bus drivers (31,101,121,141) associated with said data bus (21) is enabled, and prohibiting any data bus transmission operation in response to said bus configuration interrupt signal and while said configuration error is detected ; and combining the bus configuration interrupt signals for each one of said plurality of data busses (21-25) to generate an array configuration interrupt signal, said array configuration interrupt signal indicating the detection of a configuration error in at least one of said data busses (21-25).

Inventors: JIBBE MAHMOUD K, MCCOMBS CRAIG C, JIBBE, MAHMOUD K., MCCOMBS, CRAIG C.
Applicants: HYUNDAI ELECTRONICS AMERICA, NCR INT INC, SYMBIOS LOGIC INC, NCR INTERNATIONAL, INC., SYMBIOS LOGIC INC.
Application year: 1992
Main classification: G06F3
IPC codes: G06F13, G06F3, G06F11