Bus routing circuit

Abstract: A bus switch (40) providing versatile data path routing between a first group of buses (10) associated with a disk array controller and a second group of buses (20) associated with the individual disk drives within the disk array includes a plurality of bus multiplexers (141-146), equal in number to the number of drive buses. Each bus multiplexer (141-146) includes a plurality of inputs, each input being connected to a corresponding one of the controller buses. The multiplexers (141-146) are responsive to select and enable signals to connect selected controller buses to selected drive buses. The bus switch (20) additionally includes a plurality of bus multiplexers (151-154) for directing data from the drive busses to the controller busses. A parity generator (50) is coupled to the controller buses and to a further multiplexer (155) in the bus switch (20). The output of the parity generator (50) is also provided to each of the multiplexers (141-146;151-154) and can be directed thereby to any of the controller or drive buses.

Description: This invention relates to bus routing circuits of the kind for connecting a first plurality of first data buses associated with a host system to a second plurality of second data buses associated with a data storage disk array. Disk arrays comprising a multiplicity of small, inexpensive disk drives connected in parallel have emerged as a low cost alternative to the use of single large disks for non-volatile storage of information within a computer system. The disk array appears as a single large fast disk to the host system but offers improvements in performance, reliability, power consumption and scalability over a single large magnetic 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. This article describes five disk array arrangements, referred to as RAID levels. The first level RAID comprises N disks for storing data and N additional "mirror" disks for storing copies of the information written to the data disks. RAID level 1 write functions require that data be written to two disks, the second "mirror" disk receiving the same information provided to the first disk. When data is read, it can be read from either disk. RAID level 3 systems comprise one or more groups of N+1 disks. Within each group, N disks are used to store data, and the additional disk is utilized to store parity information. During RAID level 3 write functions, each block of data is divided into N portions for storage among the N data disks. The corresponding parity information is written to a dedicated parity disk. When data is read, all N data disks must be accessed. The parity disk is used to reconstruct information in the event of a disk failure. RAID level 4 systems are also comprised of one or more groups of N+1 disks wherein N disks are used to store data, and the additional disk is utilized to store parity information. RAID level 4 systems differ from RAID level 3 systems in that data to be saved is divided into larger portions, consisting of one or many blocks of data, for storage among the disks. Writes still require access to two disks, i.e., one of the N data disks and the parity disk. In a similar fashion, read operations typically need only access a single one of the N data disks, unless the data to be read exceeds the block length stored on each disk. As with RAID level 3 systems, the parity disk is used to reconstruct information in the event of a disk failure. RAID level 5 is similar to RAID level 4 except that parity information, in addition to the data, is distributed across the N+1 disks in each group. Although each group contains N+1 disks, each disk includes some blocks for storing data and some blocks for storing parity information. Where parity information is stored is controlled by an algorithm implemented by the user. As in RAID level 4 systems, RAID level 5 writes require access to at least two disks; however, no longer does every write to a group require access to the same dedicated parity disk, as in RAID level 4 systems. This feature provides the opportunity to perform concurrent write operations. An additional 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. In the parity striping system, only parity information is distributed across the disks, and the parity is mapped as large contiguous extents. Data is not divided among the disks but is stored in the conventional manner. US-A-4,914,656 discloses a bus routing circuit for connecting first and second pluralities of data buses, and including parity generating means from a parity bus and switch means connected to receive data from each of said buses. However the operability of the circuit is disadvantageously restricted in view of the arrangement of the switch means. EP-A-0,380,851 discloses a mapping and sub-mapping arrangement employing cross-connected multiplexers but again, the operability provided by such connectors is disadvantageously limited. To utilize any of the disk array configurations described above within a computer system, a data path structure interconnecting the host system data buses with the plurality of disk drives is required. It is an object of the present invention to provide a bus routing circuit of the kind specified which is configurable to support different disk array configurations. Therefore, according to the present invention as set forth in the appended claims, there is provided a bus routing circuit for connecting a first plurality of first data buses associated with a host system to a second plurality of second data buses associated with a data storage disk array, comprising parity generating means connected to receive data from each of said first data buses and adapted to calculate bus parity information therefrom; a parity bus connected to receive calculated parity information from said parity generating means; and switch means connected to receive data from each of said first data buses, said parity bus and each of said second data buses and adapted to selectively couple said first plurality of buses, characterised in that said switch means includes a first plurality of first bus multiplexers including a first bus multiplexer corresponding to each of said second buses and each having an output connected to its corresponding bus and a plurality of inputs, connected to receive data from a respective one of said first data buses and said parity bus. 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 showing the general architecture for routing data and parity information in accordance with the present invention. Figure 2 is a block diagram illustration of a data and parity exchange device including four host ports and six array ports representing a preferred embodiment of the present invention. Figure 3 is a block diagram illustration of the latch module shown in Figure 2. Figures 4A and 4B illustrate in block diagram form the internal structure of the bus switch module shown in Figure 2. Figure 5 is a block diagram illustration of the parity module shown in Figure 2. The general architecture for routing data between first and second bus groups in accordance with the present invention is shown in the block diagram of Figure 1. The architecture disclosed couples a first group of busses associated with a disk array controller (not shown), identified by reference letters C 1 through C X , with a second group of busses associated with a plurality of disk drives (not shown), identified by reference letters D 1 through D N . The number of controller busses, X, and the number of drive busses, N, are independent of each other and limited only by the implementation of the architecture. All of the busses shown are of the same width. The architecture is composed of three primary blocks: a bus switch module 40, a parity module 50 and a control module 60. Bus switch module 40 is connected between controller busses C 1 through C X and drive busses D 1 through D N . An additional bus 53 connects parity module 50 to bus switch module 40. Details regarding the internal construction and operation of bus switch 40 will be provided with reference to Figure 4A and 4B. A discussion of the functions which are provided by bus switch module 40 follows. Bus switch module 40 provides a unidirectional connection between any controller bus and any drive bus. Multiple connections between several controller busses and an equal number of drive busses is also permitted. Additionally, the bus switch module may provide unidirectional connection of any controller bus to two or more drive busses. Parity information obtained via bus 53 can also be ported to any one of the drive busses. Parity module 50 includes connections to each of the controller busses for receiving data therefrom and a connection to bus 53 for providing parity information to bus switch module 40. The internal construction and operation of parity module 50 are described below in the discussion of Figure 5. Parity module 50 generates parity information for RAID level 3, 4 and 5 operations by performing a bit-wise exclusive-OR of each active controller bus. The parity information is provided to bus switch module 40 via bus 53. Parity module 50 also functions to check parity information for RAID level 3, 4 and 5 read applications by recalculating parity from the data placed upon the controller busses and comparing the recalculated parity to the previously calculated and stored parity information. Reconstruction of drive data for RAID level 3, 4 and 5 applications can also be performed by module 50. Lost drive information can be reconstructed by performing a bit-wise exclusive-OR of the remaining disk drives. The internal configurations of bus switch module 40 and parity module 50 are controlled by module 60 under the direction of the disk array controller (not shown). Control module 60 also notifies the disk array controller whenever a problem, such as a parity error, occurs. A data and parity exchange device including four host ports and six array ports, representing a preferred embodiment of the present invention is shown block diagram form in Figure 2. The structure shown is formed upon a single semiconductor chip. The four host ports, labeled ABUF, BBUF, CBUF and DBUF, provide connection to four external controller busses. The array ports, identified as ADRV, BDRV, CDRV, DDRV, EDRV and FDRV, connect with six external disk drive busses. In addition to switch module 40 and parity module 50, a latch module 30 is included on the chip. Within the chip, internal busses BPAOUTL, BPBOUTL, BPCOUTL and BPDOUTL provide data to the four host ports and busses BPAIN, BPBIN, BPCIN and BPDIN conduct data from the host ports to latch module 30 and parity module 50. The six internal busses labeled DPAOUT, DPBOUT, DPCOUT, DPDOUT, DPEOUT and DPFOUT transmit data from switch module 40 to the drive ports and busses DPAIN, DPBIN, DPCIN, DPDIN, DPEIN and DPFIN provide data from the array ports to module 40. The internal structures of latch module 30, switch module 40 and parity module 50 are revealed in Figures 3; 4, and 5, respectively. Referring to Figure 3, latch module 30 is seen to comprise four latches, identified by reference numerals 101 through 104, connected to receive data from busses BPAIN, BPBIN, BPCIN and BPDIN, respectively, and provide latched data to switch module 40 via busses BPAINL, BPBINL, BPCINL and BPDINL, respectively. Latch module 30 further includes five bus latches 111 through 115 connected to receive data from bus switch module 40 via busses BPAOUT, BPBOUT, BPCOUT, BPDOUT and PARIN, respectively. The outputs of latches 111 through 114 are provided to busses BPAOUTL, BPBOUTL, BPCOUTL and BPDOUTL, respectively. The output of latch 115 is connected via bus PARINL to parity module 50. Latches 101 through 104 and 111 through 115 are responsive to control signals received from the control module (not shown) to latch or pass received data. Also shown in Figure 3 are parity check circuits, identified by reference numerals 121 through 124 and 131 through 135, connected to the outputs of each of the latches. Each one of the parity check circuits generates an error signal which is provided to the control module whenever a parity error is detected. Figures 4A and 4B provide a block diagram illustration of the internal structure of bus switch module 40 shown in Figure 2. Module 40 includes six 5:1 multiplexers 141 through 146. The corresponding inputs of each multiplexer are connected to busses BPAINL, BPBINL, BPCINL, BPDINL and PAROUT, the output of parity module 50. The outputs of multiplexers 141 through 146 are connected to busses DPAOUT, DPBOUT, DPCOUT, DPDOUT, DPEOUT and DPFOUT, respectively. Switch module 40 further includes four 7:1 bus multiplexers identified by reference numerals 151 through 154. The corresponding inputs of each one of multiplexers 151 through 154 are connected to busses DPAIN, DPBIN, DPCIN, DPDIN, DPEIN, DPFIN and PAROUT. The inputs of a 6:1 multiplexer 155 are also connected to busses DPAIN, DPBIN, DPCIN, DPDIN, DPEIN and DPFIN The outputs of multiplexers 151 through 155 are connected to busses BPAOUT, BPBOUT, BPCOUT, BPDOUT and PARIN, respectively. Each one of multiplexers 141 through 146 are responsive to select signals received from the control module (not shown) to couple any one of busses BPAINL, BPBINL, BPCINL, BPDINL and PAROUT to the multiplexer's corresponding output bus. Similarly, each one of multiplexers 151 through 155 are responsive to select signals received from the control module to couple any one of busses DPAIN, DPBIN, DPCIN, DPDIN, DPEIN, DPFIN and PAROUT to the bus connected to the multiplexer's output. The internal structure of parity module 50 is illustrated in the block diagram of Figure 5. Module 50 includes four 4:1 multiplexers 161 through 164. Multiplexer 161 is connected to receive data from busses BPAINL, BPAOUTL, PARINL and BPAOUT; multiplexer 161 is connected to receive data from busses BPBINL, BPBOUTL, PARINL and BPBOUT; multiplexer 161 is connected to receive data from busses BPCINL, BPCOUTL, PARINL and BPCOUT; and multiplexer 161 is connected to receive data from busses BPDINL, BPDOUTL, PARINL and BPDOUT. Parity information is calculated and checked, and drive data is reconstructed by performing a bit-wise exclusive-OR of selected busses. Module 50 includes a first exclusive-OR circuit 171 for combining the outputs of multiplexers 161 and 162, a second exclusive-OR circuit 172 connected to combine the outputs of multiplexers 163 and 164, and a third exclusive-OR circuit 181 for combining the outputs of exclusive-OR circuits 171 and 172. The output of parity module 50 is provided by a 3:1 multiplexer 191 connected to receive the outputs of the three exclusive-OR circuits. The output of multiplexer 191 is provided to bus switch 40 which can then direct the parity data to any controller or drive bus as described above. Multiplexers 161 through 164 are responsive to select signals received from the control module (not shown) to couple selected data busses into exclusive-OR circuits 171 and 172. Multiplexer 191 is responsive to select signals received from the control module to limit the number of busses involved in an exclusive-OR operation. For example, data from four busses may be combined to generate parity during RAID level 3, 4 or 5 write operations, but data from only two busses need be combined to check data saved in an array configured in accordance with RAID level 1.

Claims: A bus routing circuit for connecting a first plurality (10) of first data buses associated with a host system to a second plurality (20) of second data buses associated with a data storage disk array, comprising parity generating means (50) connected to receive data from each of said first data buses and adapted to calculate bus parity information therefrom; a parity bus (53) connected to receive calculated parity information from said parity generating means (50); and switch means (40) connected to receive data from each of said first data buses, said parity bus (53) and each of said second data buses and adapted to selectively couple said first plurality (10) of buses and said parity bus (53) with said second plurality (20) of data buses, characterized in that said switch means (40) includes a first plurality of first bus multiplexers (141-146) including a first bus multiplexer (141-146) corresponding to each of said second data buses and each having an output connected to its corresponding data bus and a plurality of inputs, connected to receive data from a respective one of said first data buses and said parity bus (53). A bus routing circuit according to Claim 1, characterized in that said switch means (40) includes a second plurality of second bus multiplexers (151-154) including a second bus multiplexer (151-154) corresponding to each of said first data buses each having an output connected to its corresponding first data bus and a plurality of inputs, each connected to receive data from a respective one of said second data buses and said parity bus (53). A bus routing circuit according to Claim 2, characterized in that said switch means (40) includes a further multiplexer (155) having a plurality of inputs each connected to receive data from a respective one of said second data buses and having an output connected to said parity generating means (50). A bus routing circuit according to Claim 3, characterized in that said parity generating means (50) includes exclusive-OR circuit means (171,172,181), input multiplexing means (161-164) connected to receive inputs from said first data buses and from said further multiplexer (155) and having outputs connected to said exclusive-OR circuit means (171,172,181), and output multiplexing means (191) having inputs connected to said exclusive-OR circuit means (171,172,181) and an output connected to said parity bus (53).

Inventors: COURTRIGHT II WILLIAM V, DULAC KEITH B, COURTRIGHT II. WILLIAM V., DULAC, KEITH B.
Applicants: HYUNDAI ELECTRONICS AMERICA, NCR INT INC, SYMBIOS LOGIC INC, NCR INTERNATIONAL, INC., SYMBIOS LOGIC INC.
Application year: 1992
Main classification: G06F11
IPC codes: G06F13, G06F11, G06F3