1. Field of the Invention
The present invention relates to a serial interface for a data storage array. More particularly, the present invention relates to interfacing multiple device controllers to an array of data storage devices.
2. Description of Related Art
The need to store and access an increasing amount of information drives the relentless pursuit of larger, faster and more reliable data storage systems. Although various mass storage devices, including optical disks, magnetic tape, and flexible disks, exist today, the hard disk is the most widely used storage device. As technology advances, a number of interface standards have evolved prescribing the way data storage devices are connected to other components in a system. The rate at which data can be transferred to and from the data storage device is a major factor in overall system performance and is controlled in part by the type of interface used. Interface methods for connecting data storage devices and other peripheral devices to a host system include, for example, small computer system interface (SCSI), Universal Serial Bus (USB), Fibre Channel Arbitrated Loop (FC-AL) and advanced technology attachment (ATA). Each of these methods has a characteristic set of protocols and options with corresponding advantages and disadvantages.
Data storage devices with ATA interfaces are used in the vast majority of modern personal computers and offer good performance at low cost. ATA interfaces typically use a parallel sixteen bit data bus and special signaling to prevent commands sent to one device from interfering with commands sent to another device. However, with ever increasing data transfer rates, signaling problems and interference between parallel connections has become a limiting factor for parallel ATA. In August 2001, a new specification was published specifying a serial version of ATA (S-ATA). Serial ATA is a high speed serial interface protocol that minimizes the interference and signaling problems associated with parallel ATA. Serial ATA is compatible with existing ATA software drivers and will run on standard operating systems without modification.
Many applications cannot be adequately accommodated by a single data storage device regardless of its size, performance or quality level. In critical applications, systems cannot go down even for brief periods without causing major problems for the user. Further, some applications require fast data transfer exceeding the transfer rate of current data storage devices. One method used to increase throughput and reliability of data storage systems is arranging data storage devices into a parallel connected array accessible as single data storage device. For example, a number of individual hard disks may be arranged in an array. This type of storage approach is denoted Redundant Array of Independent or Inexpensive Disks (RAID). The fundamental principle behind RAID is the use of multiple hard disks in an array that essentially behaves like a single large, fast disk. There are many different ways to implement a RAID array, generally denoted RAID levels, using some combination of mirroring, duplexing, striping and parity techniques to accommodate various user requirements. The functions of the RAID array are implemented by a RAID controller which may be coupled to a host directly or through a network.
One RAID configuration used to increase system reliability is the active-active controller configuration implemented in conjunction with duplexing. In this configuration, two RAID controllers simultaneously process I/O commands sent from one or more host computers to an array of disks. If one RAID controller in an active-active configuration ceases to operate properly, the surviving RAID controller automatically assumes its workload. Thus, active-active RAID systems provide greater reliability than single controller and active-passive RAID systems in which only one RAID controller actively processes I/O commands at a time.
In addition to increasing reliability, data storage arrays are also used to increase storage system speed. For example, the mechanical components of the hard disk limit data transfer rates because of lag time in physically positioning the read/write head over the magnetic disk for data storage or retrieval. This problem can be reduced through a process denoted striping. Striping is a technique of dividing a large block of data into a number of smaller blocks and storing the smaller blocks on many drives in the array. When the file is retrieved, many disks are used to simultaneously access the file. The use of striping in a RAID array reduces the number of times a read/write head must be positioned to access large data files and correspondingly increases the rate of data transfer.
The use of ATA devices in data storage arrays is attractive because ATA devices are ubiquitous and inexpensive. The serial ATA interface overcomes many of the problems associated with standard parallel ATA and offers a high speed connection that can be used with standard ATA protocols. However, serial ATA is configured as a point-to-point connection from the controller interface to a drive rather than a bus-based system such as SCSI or Fibre Channel. The point-to-point serial interface, such as serial ATA, presents a problem when used to connect an array of many data storage devices to multiple controllers, for example, in the active-active controller configuration. Each data storage device is accessible through only a single serial port, making it impossible to directly connect the device to two controllers simultaneously.
It can be seen there is a need for a method and apparatus to provide a serial interface to be used for data storage arrays with multiple controllers.