US20080140881A1 - Method and apparatus for storage command and data router - Google Patents

Method and apparatus for storage command and data router Download PDF

Info

Publication number
US20080140881A1
US20080140881A1 US12/034,561 US3456108A US2008140881A1 US 20080140881 A1 US20080140881 A1 US 20080140881A1 US 3456108 A US3456108 A US 3456108A US 2008140881 A1 US2008140881 A1 US 2008140881A1
Authority
US
United States
Prior art keywords
unit
host
command
storage device
serial
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/034,561
Inventor
Bahareh Ghaffari
Aloke Guha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
RPX Corp
Copan Systems Inc
Original Assignee
Copan Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Copan Systems Inc filed Critical Copan Systems Inc
Priority to US12/034,561 priority Critical patent/US20080140881A1/en
Publication of US20080140881A1 publication Critical patent/US20080140881A1/en
Assigned to SILICON GRAPHICS INTERNATIONAL CORP. reassignment SILICON GRAPHICS INTERNATIONAL CORP. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC.
Assigned to RPX CORPORATION reassignment RPX CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SILICON GRAPHICS INTERNATIONAL CORP.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Definitions

  • the present invention relates to data storage systems. Specifically, the present invention describes a routing device that provides the ability to concurrently route command and data over a serial storage link protocol in a data storage system.
  • a high capacity storage system requires a storage controller that enables a host to communicate with a large number of storage devices.
  • a typical storage controller is a processor that receives a command from a host, and translates the command into a format, essential for communication with the storage devices.
  • this communication is serial in nature.
  • the serial communication is enabled by storage serial protocols such as Serial Advanced Technology Attachment (SATA), or Serially Attached SCSI (SAS), which employ a point-to-point connection.
  • SATA Serial Advanced Technology Attachment
  • SAS Serially Attached SCSI
  • a storage controller that uses SATA or SAS-based protocol to communicate with the storage devices needs a switching or device control unit that interconnects the storage controller to the plurality of storage devices.
  • the communication between the host and the storage devices involves the exchange of command and data.
  • the host sends a command to a storage device to perform a read or write operation.
  • the read or write operation is performed after the storage device, to which the command is sent, has accepted the command.
  • the data can either be read out from the storage device, or a new data can be written into the storage device.
  • This communication based on the SATA or SAS-STP protocol, is made in the form of a “Frame Information Structure”(FIS).
  • FIS encapsulates the command and data being exchanged between the host and the storage device. Further details of FIS are described in serial ATA specification 1.0 described in the article “Serial ATA: High Speed Serialized AT Attachment”, Aug. 29, 2001.
  • An interconnecting unit between the host and the storage devices enables the above-described communication.
  • Two draft standards, based on SATA protocol, have been proposed for this interconnecting unit.
  • the first standard involves a port multiplier (PM) approach, which uses a multiplexer to multiplex an active host connection to up to 15 device connections. This enables utilization of the full bandwidth of the host connection.
  • PM port multiplier
  • the PM approach requires the modification of the packet structure in SATA, in particular the FIS to incorporate the PM routing field. Consequently, either the host or the interconnecting unit has to be modified to produce PM FIS (FIS specific to the port multiplier).
  • the second standard involves a routers, switches and multiplexers (RSM) approach.
  • This approach consists of an interconnecting unit that allows command and data information to be directed from one or more hosts to multiple storage devices.
  • the interconnecting unit utilizes a wrapper FIS into which all other FIS types can be encapsulated.
  • the wrapper FIS includes a header that is used to define and activate a connection between route-aware devices.
  • this approach requires a SATA-based host or interconnecting unit to support RSM, in order to provide this connectivity.
  • all the elements in the SATA-based interconnecting unit have to be RSM route aware and able to process the header to forward the encapsulated FIS.
  • the interconnecting unit based on any of the above-described two approaches can be used to connect a plurality of storage devices to a plurality of hosts.
  • This interconnecting unit contains multiple RSMs or multiplexers to connect the storage devices and the hosts.
  • interconnecting units suffer from one or more of the following limitations.
  • the implementation of an interconnecting unit based on the PM or RSM approach requires changes to be made to the architecture of hosts, which is expensive to implement.
  • the RSM system is expensive because it involves host modification. Further, the RSM system is not backward compatible with existing solutions, thus it also involves software changes.
  • the cost of the port multiplier is dependent on the host design. A host that allows for commands to be sent to multiple devices can be very expensive. Consequently, the port multiplier is expensive although it has a relatively higher performance.
  • the hosts that allow one command to be active at a time are not expensive and thus the port multiplier is not expensive. But, this host/PM solution has lower performance.
  • the interconnecting unit based on either approach, is very complex.
  • the interconnecting unit allows a single command to be executed at a time. Even if the multiple hosts issue multiple commands at the same time, the interconnecting unit is able to execute only one command at a time. Consequently, the throughput of the interconnecting unit is low. Fourthly, the interconnecting unit will fail to operate where a failure is encountered in the path between a host and a storage device. This means that the communication is not reliable and robust enough to tolerate faults and thus lowers the storage device's availability.
  • the interconnecting unit should avoid changes in the architecture of the hosts, thereby reducing cost. Further, the interconnecting unit should have higher throughput and should allow reliable communication between the hosts and the storage devices. The mechanism should be strong enough to tolerate at least a single point of failure and not limit the availability of the storage devices in case of a fault.
  • the present invention is directed at data storage systems. Specifically, the present invention is directed at a routing device that provides the ability to concurrently route command and data over a serial-storage link protocol in a data storage system.
  • An aspect of the present disclosure is to provide a system and method to enable connectivity between a plurality of hosts and a plurality of storage devices.
  • Another aspect of the present disclosure is to provide a system such that multiple commands can be distributed to the storage devices, thus having multiple storage devices active concurrently.
  • Another aspect of the present disclosure is a provision of fault identification and isolation to improve the time required to repair failures.
  • Another aspect of the present disclosure is a provision of load balancing between the hosts.
  • Another aspect of the present disclosure is a provision of data redundancy for error detection and correction.
  • Yet another aspect is a provision for data parallelism for increased performance.
  • a data storage system comprising a plurality of hosts, a plurality of storage devices and an interconnecting unit for coupling the plurality of hosts and the plurality of storage devices.
  • the interconnecting unit comprises a plurality of host interface units, a plurality of device control units, an interconnect routing unit and a plurality of device interface units.
  • the device control unit enables distribution of multiple commands from a single host to more than one storage device. This is achieved by not requiring the device control unit to wait for the completion of the submitted command before allowing another command to be submitted, and by enabling queuing at the host layer.
  • the device control unit also monitors the status of various components, thereby locating any fault that may occur during the communication between the hosts and the storage devices.
  • the device control unit is simple in design and its complexity is less, in comparison with existing device control units.
  • the device control unit achieves a higher throughput than the existing device control units.
  • the invention improves the time for recovery in the case of failures.
  • the present invention also allows a non-queue capable device, or a different generation of a storage device to be connected to a queue capable host.
  • the device control unit processes data destined for the storage devices.
  • ECC error correction code
  • FIG. 1 illustrates a data storage system, in accordance with an embodiment of the present invention
  • FIG. 2 is a block diagram illustrating the essential elements of a device control unit in accordance with an embodiment of the present invention
  • FIG. 3 is a block diagram of the target transmit and receive block in accordance with an embodiment of the present invention
  • FIG. 4 is a block diagram of the device selector in accordance with an embodiment of the present invention
  • FIG. 5 is a block diagram of the initiator transmit and receive block in accordance with an embodiment of the present invention.
  • FIG. 6 a is a block diagram of the host interface unit in accordance with an embodiment of the present invention.
  • FIG. 6 b is a detailed block diagram of the device interface unit in accordance with an embodiment of the present invention.
  • FIGS. 7 a and 7 b show a flowchart illustrating the method of data communication between a plurality of hosts and storage devices.
  • a command refers to a special packet structure such as a Frame Information Structure (FIS), whose payload contains an instruction.
  • FIS Frame Information Structure
  • the commands are generated by the host and executed by the storage devices.
  • the storage devices generate a status to report the result of the execution of the command to the host.
  • Data is the user data that is written on a storage device or read from the storage device. A command initiates the read or write operation of data.
  • Serial I/O structure comprises a command to a storage device, some or no data transfer, and a completion status from the storage device.
  • the serial I/O structure contains all the bit data necessary to achieve a serial communication, referred to as primitives.
  • I/O Structure Bit data on a 32 bit boundary that has been extracted from the serial I/O structure.
  • This structure may contain a command, user data or status, and is free of any protocol used in the Serial I/O Structure necessary for communication in serial format, i.e. In the I/O structure the primitives of the Serial I/O structure are removed.
  • the present invention relates to a method and system for data storage between a plurality of hosts and a plurality of storage devices by using an interconnecting unit.
  • the invention describes a device control unit that allows a plurality of commands from the hosts to be distributed concurrently to the plurality of storage devices.
  • FIG. 1 is a block diagram illustrating a data storage system in accordance with the present invention.
  • a data storage system 100 comprises an interconnecting unit 104 coupling a plurality of hosts 102 to a plurality of storage devices 106 .
  • the coupling comprises the exchange of serial I/O structures between plurality of hosts 102 and plurality of storage devices 106 .
  • Host 102 generates at least one command for coupling to at least one of plurality of storage devices 106 .
  • serial I/O structure The elements of serial I/O structure vary with the serial protocol used. For example, if SATA is used as the serial protocol, the serial I/O structure is composed of a command and status FIS, and if there is exchange of data, data FISes and any other FIS necessary for exchange of a data FIS. If the SAS-SCSI is used as the serial protocol, then the serial I/O structure is sent in the SCSI command structure format. For the purpose of illustration, the invention has been described using the FIS format for serial I/O structure although the invention is equally applicable to other I/O structures.
  • Each host 102 is queue capable, i.e., multiple commands can be transmitted without waiting for the completion of the previous commands in the queue.
  • Interconnecting unit 104 is capable of processing the serial I/O structures for plurality of storage devices 106 and hosts 102 and establishing communication between one of storage devices 106 and host 102 based on a given fairness algorithm.
  • An example of a fairness algorithm can be one wherein the order in which interconnecting unit 104 processes storage devices 106 is the order in which the commands are received from host 102 .
  • Another example is that interconnecting unit 104 processes the commands in the order in which plurality of storage devices 106 are ready to process them.
  • Interconnecting unit 104 comprises a plurality of host interface units 107 , a plurality of device control units 108 , an interconnect routing unit 110 and a plurality of device interface units 112 .
  • Each device control unit 108 communicates with host 102 and selects storage device 106 to which the received command is to be routed.
  • Each device control unit 108 also controls interconnect routing unit 110 to route the serial I/O structure to device interface unit 112 .
  • interconnect routing unit 110 comprises a plurality of multiplexers, each multiplexer enabling connection between device control unit 108 and device interface unit 112 corresponding to selected storage device 106 .
  • Device interface unit 112 for each storage device 106 .
  • Device interface unit 112 establishes a point-to-point connection with storage device 106 until device control unit 108 selects device interface unit 112 . After the selection, device control unit 108 handles the communication with storage device 106 .
  • interconnect routing unit 110 using a plurality of multiplexers, ensures that input to each device control unit 108 can be received from any device interface unit 112 , and output of each device control unit can go to any device interface unit 112 .
  • interconnecting unit 104 is implemented as a Field Programmable Gate Array (FPGA). In an alternate embodiment, interconnecting unit 104 can be implemented as an Application Specific Integrated Circuit (ASIC).
  • FPGA Field Programmable Gate Array
  • ASIC Application Specific Integrated Circuit
  • Host interface unit 107 and device interface unit 112 synchronize the serial data received from their respective connection to the running internal clock of device control unit 108 via an elasticity buffer. Synchronization is essential since device control unit 108 , hosts 102 and storage devices 106 need not operate on the same clock, i.e., the clock rate need not be the same for device control unit 108 , hosts 102 and storage devices 106 . If the clock rates are the same, there is still a need for an elasticity buffer due to differences between the extracted clock from the physical interface (connecting a host 102 and interconnecting unit 104 as well as a storage device 106 and interconnecting unit 104 ) and the running internal clock of device control unit 108 . Additionally, host interface unit 107 and device interface unit 112 extract the bits from the serial bit stream directed from host 102 and storage device 106 respectively. The bits are extracted in a character bit format such as a 10-bit character format.
  • Device control unit 108 directs multiple commands from hosts 102 to more than one storage devices 106 . Therefore, interconnecting unit 104 enables coupling between plurality of hosts 102 and plurality of storage devices 106 .
  • the point-to-point connection between each host 102 and interconnecting unit 104 is over a single serial link using host interface unit 107 .
  • the point-to-connection between storage devices 106 and interconnecting unit 104 , through device interface unit 112 is over a single serial storage link.
  • the serial storage link can be implemented using protocols such as SATA or SAS.
  • SATA and SAS protocols are well known in the art, and their applications in the present invention should be apparent to one skilled in the art.
  • FIG. 2 illustrates the elements of device control unit 108 in accordance with an embodiment of the present invention.
  • Device control unit 108 comprises a target transmit and receive block 204 , a device selector 206 , and an initiator transmit and receive block 208 . Further, device control unit 108 comprises an error register 210 and a plurality of data processing logic unit 212 .
  • Target transmit and receive block 204 monitors the processed command/data (in the form of serial I/O structure) from host 102 in the 10 bit character format.
  • the serial I/O structure is sent in the form of FIS.
  • Target transmit and receive block 204 converts the received FIS, in the character format, into a fixed data format.
  • Target transmit and receive 204 converts the 10-bit character format into a 32-bit size data format. The elements of target transmit and receive block 204 will be further described by means of FIG. 3 .
  • Device selector 206 monitors the received element of the serial I/O structure from target transmit and receive block 204 , to identify the presence of a command.
  • the received element of the serial I/O structure is a command
  • one of storage devices 106 to which the command is directed, is selected. This selection is based on a tag for the command that stores the identity of storage device 106 to which the command is directed.
  • the command is modified according to the type of storage device 106 that is selected. For example, a queued read or write command from host 102 destined to a non-queue capable storage device 106 is modified to relocate the tag and the command opcode before it is forwarded to initiator transmit and receive block 208 .
  • the location of the tag, identifying the selected storage device, in the command depends on storage device 106 to which the command is being directed. In an embodiment of the invention, for SATA commands directed to non-queue capable storage device 106 , higher bits of the address are used as the tag to represent storage device 106 . In case the command is directed to queue capable storage device 106 , the location of the tag is as per the SATA standard. Please note that the location of the tag as part of the address is design specific. It should be apparent to a person skilled in the art that there are other methods of tagging, such as using an unused field of the command.
  • non-queued SATA commands directed to queue capable or non-queue capable storage devices 106 can be wrapped into a queue command received by interconnecting unit 104 , which in turn unwraps the command into a regular SATA command to storage device 106 .
  • This option allows some hosts that are not otherwise capable of interleaving non-queued commands, to queue them as if they were queue capable. It should be apparent to a person skilled in the art that the method of wrapping of non-queue command is implementation specific and does not limit the scope of the invention.
  • the command is subsequently forwarded to selected storage device 106 through initiator transmit and receive block 208 .
  • Initiator transmit and receive block 208 is responsible for delivering the command to selected storage device 106 .
  • the elements of initiator transmit and receive block 208 are further described using FIG. 4 .
  • the command forwarded to selected storage device 106 may or may not be accepted by it.
  • Selected storage device 106 may not accept the command if it detected a CRC error or a bit error while receiving the command. In such a scenario, host 102 tries the command again. Also, some storage devices may not accept more than one command at a time. This knowledge is kept in host 102 and device selector 206 and multiple commands are not issued to that storage device. If host 102 initiates a command to a storage device that is busy, device control unit 108 does not accept the command and host 102 tries again until the busy storage device is no longer busy.
  • Device control unit 108 also includes an error register 210 that stores the status of various connections between host 102 , device control unit 108 , and storage devices 106 . This can be used to locate an error, if any, encountered while the coupling is established between hosts 102 and storage devices 106 . Errors tracked by error register 210 include bit errors and Cyclic Redundancy Code (CRC) errors and the port at which they occurred. Please note that there is a unique error register 210 connected to each device control unit 108 . For example, if there is a plurality of device control units 108 , each device control unit is connected to error register 210 .
  • CRC Cyclic Redundancy Code
  • each device control unit 108 also includes a data processing logic unit 212 to process data before it is stored in storage devices 106 .
  • data processing logic unit 212 is connected between target transmit and receive block 204 and initiator transmit and receive block 208 . The processing is done to produce error correction codes, which provide data integrity, compression of data to reduce actual storage and encryption for data security purposes.
  • Target transmit and receive block 202 comprises a link unit 301 , a target transport transmit unit 302 and a target transport receive unit 304 .
  • Link unit 301 defined as per the SATA standard definition, is responsible for the following operations for the received data: convert a 10-bit character to 8-bit data, remove primitives, unscramble the data, check CRC, and pack four bytes into 32-bit data with correct character boundaries.
  • Link unit 301 is responsible for the following operations on the transmit data: calculate CRC for the transmit data, scramble the data, convert 32 bit data to four 10-bit characters, add the appropriate primitives and pack the four 10-bit characters on correct boundaries for transmission.
  • the link 301 receives an element of the serial I/O structure from host 102 and converts to 32 bit data for target transport receive unit 304 .
  • link unit 301 is implemented using a finite state machine on an integrated circuit.
  • Target transport receive unit 304 receives an element of the serial I/O structure from link 301 . Further, it has an adequate buffer to hold data received from host 102 in case storage device 106 is not ready. Target transport receive unit 304 interprets the incoming serial I/O structure and signals device selector 206 as to what element of the serial I/O structure is being exchanged. It further communicates with the data processing unit 212 via a finite state machine to pass the received I/O structure for any further processing.
  • data processing unit 212 may pass the I/O structure directly to initiator transmit unit 502 or further process it prior to passing it.
  • Target transport transmit unit 302 forwards the request received from any of storage devices 106 to host 102 , allowing link unit 301 to add the link functions to the data. It further communicates with data processing unit 212 via a finite state machine to receive the received I/O structure from initiator receive unit 504 .
  • data processing engine 212 may pass the I/O structure directly to target transport transmit unit 302 or further process it prior to passing it.
  • Device selector 206 comprises a command queue block 404 , a read select logic unit 406 , a write select logic unit 408 and a flow select logic 410 .
  • Command queue block 404 stores a signature of a pending command while the command FIS is delivered to storage device 106 .
  • the pending command is stored if either selected storage device 106 has not yet responded to the command or other commands are being processed.
  • Command queue block 404 is checked to identify if there is a command in the queue for execution.
  • Read and write select logic units 406 and 408 select storage device 106 to which the I/O structure is directed.
  • Write select logic 408 selects a routing path from host 102 through interconnect routing unit 110 to selected storage device 106 .
  • Read select logic 406 selects a routing path from selected storage device 106 through interconnect routing unit 110 to host 102 .
  • Read select logic unit 406 and write select logic unit 408 generate the control signals for the multiplexer used in interconnect routing unit 110 to enable the routing path.
  • Read select logic unit 406 and write select logic unit 408 ensures that the commands of the I/O structure can be delivered while storage devices 106 are monitored for communication.
  • Flow select logic unit 410 arbitrates the order of processing of the device requests as well as negotiations with host 102 in case of non-queue capable storage devices 106 and non-queue commands.
  • Flow select logic unit 410 receives signals from target transport receive block 304 and initiator transmit and receive block 208 as to a serial I/O structure element that is being exchanged.
  • Flow select logic 410 is implemented by using a finite state machine whose operational flow is defined in FIG. 7 .
  • the identification of queue capability of storage devices is performed when storage devices 106 are initially powered up and identified by the host. Subsequently, the knowledge is passed on to interconnecting unit 104 .
  • a storage device 106 is queue enabled, multiple commands can be delivered by device control unit 108 to a storage device. Queue-capable storage device 106 completes the I/O structure by executing the command and interconnecting unit 104 merely acts as a router of the FIS between host 102 and storage device 106 .
  • interconnecting unit 104 modifies the tag and the command opcode and forwards the modified command FIS to non-queue capable storage device 106 .
  • flow select logic unit 410 negotiates with host 102 before coupling storage device 106 and host 102 for communication. In particular, if host 102 sends a command to a non-queue capable storage device 106 that has previously received a command, interconnecting unit 104 retries that command until storage device 106 is no longer busy.
  • Initiator transmit and receive block 208 comprises a pair of links 501 a and 501 b , an initiator transmit unit 502 and an initiator receive unit 504 .
  • Links 501 a and 501 b are used to encode and decode storage protocol primitives.
  • Link 501 a is connected to initiator transmit unit 502 and interconnect routing unit 110 .
  • Link 501 b is connected to initiator receive unit 504 and interconnect routing unit 110 .
  • Links 501 a and 501 b have functionality similar to link unit 301 .
  • link 501 a has special states that resolve the collision of a serial I/O structure received from host 102 with that of one received from storage device 106 . This case of a deadly embrace is resolved in the following way.
  • serial I/O structure received from storage device 106 is aborted by interconnecting unit 104 , through link 501 a , and the software reset instruction is forwarded to storage device 106 . If the transmitted serial I/O structure is other than software reset instruction to storage device 106 , then interconnecting unit 104 aborts both operations and allows the host software to resolve the anomaly.
  • links 501 a and 501 b are implemented using a finite state machine on an integrated circuit.
  • the design of the finite state machine to achieve the above-described functionalities of link unit 301 will be apparent to a person skilled in the art.
  • Initiator transmit unit 502 accepts the I/O structure, which was received by target transport receive unit 304 , by communicating via a finite state machine.
  • the I/O structure may be further modified by data processing unit 212 or passed through directly.
  • storage device 106 receives the I/O structure from initiator transmit unit 502 and signals the successful receipt of the I/O structure. This receipt is forwarded back through initiator transmit unit 502 and target receive unit 304 to host 102 .
  • an I/O structure is delivered to storage device 106 and if the I/O structure was a command, device select unit 206 has a signature of the pending command in its command queue 404 .
  • Flow select logic unit 410 instructs initiator receive unit 504 to monitor storage devices 106 for activity.
  • the activity comprises a signal from selected storage device 106 indicating that it is ready to communicate.
  • Initiator receive unit 504 interprets the incoming serial I/O structure (corresponding to an activity signal) and signals flow select logic unit 410 in device selector 206 as what serial I/O structure element is being exchanged.
  • Initiator receive unit 504 further communicates with data processing unit 212 via a finite state machine to pass the received I/O structure for any further processing.
  • data processing unit 212 may pass the I/O structure directly to target transmit 302 or further process it prior to passing it.
  • the present invention enables execution of multiple commands at the same time.
  • multiple commands can be delivered to storage device 106 , which executes them one-by-one, in any order.
  • Flow select logic unit 410 can transmit a command to the same (selected) or a different storage device while initiator receive unit 504 is monitoring all storage devices 106 for activity. Further, device selector 206 tracks the delivery of the commands, and keeps track of them until its queue is empty.
  • more than one storage device 106 can be active at the same time. Specifically, multiple commands can be delivered to multiple storage devices 106 . Each of these active storage devices 106 is then serviced according to the pre-specified fairness algorithm.
  • Host interface unit 107 is, hereinafter, described using FIG. 6 a .
  • Host interface unit 107 comprises a target physical interface 602 , and a controller connection 604 a .
  • Target physical interface 602 connects host 102 to device control unit 108 in accordance with point-to-point storage serial protocol such as SATA.
  • Controller connection 604 a synchronizes the serial data received from host 102 to the running internal clock via the elasticity buffer.
  • Device interface unit 112 comprises a controller connection 604 b , a link control unit 608 and an initiator physical interface 610 .
  • Controller connection 604 b synchronizes the serial data received from storage device 106 to the running internal clock via the elasticity buffer.
  • Link control unit 608 generates primitives when either of initiator transmit unit 502 or initiator receive units 504 is not connected to device control unit 108 . Please note that a given storage device 106 is not connected to the initiator receive and transmit unit 208 at all times. However, serial storage devices need to actively send and receive valid primitives. The valid primitives are generated by link control unit 608 while initiator transmit unit 502 or initiator receive unit 504 are not in communication with a particular storage device.
  • initiator physical interface 610 The connection between interconnecting unit 104 and storage device 106 is established over initiator physical interface 610 .
  • Initiator physical interface 610 is enabled for SATA/SAS-STP protocol.
  • SATA Serial Advanced Technology Attachment
  • target physical interface 602 and initiator physical interface 610 in accordance with serial storage protocol such as SATA, is known in the art and it should be apparent to a person skilled in the art.
  • target receive block 304 receives a command from host 102 .
  • target transport receive block 304 notifies device selector 206 and also forwards the command to initiator transmit unit 502 .
  • device selector 206 selects a storage device 106 in step 704 .
  • device selector 206 selects a proper routing through interconnect routing unit 110 to create a connection between initiator transmit unit 502 and device interface unit 112 . Once the connection is created, initiator transmit unit 502 delivers the command to selected storage device 106 in step 706 .
  • Device interface unit 112 serializes the data to be transmitted to selected storage device 106 .
  • Initiator transmit unit 502 and target transport receive unit 304 remain engaged till an acknowledgement of proper receipt of the command is received from storage device 106 . Subsequently, initiator transmit unit 502 , device selector 206 and target transport receive unit 304 each, in turn, forward the receipt until it is received by host 102 .
  • initiator receive unit 504 monitors plurality of storage devices 106 for a response.
  • the order in which plurality of storage devices 106 are monitored is the same as the order in which the commands are delivered.
  • a storage device that responds, thereby indicating that it is ready for communication is served first. If a response is detected, the subsequent steps are determined by the nature of storage device, i.e., whether responding storage device 106 is queue or non-queue capable.
  • target transport receive unit 304 monitors host 102 for another command.
  • step 711 when responding storage device 106 is selected through device selector 206 , it is determined if responding storage device 106 is queue capable or not.
  • step 712 read select logic 406 routes the response from responding storage device 106 to initiator receive unit 504 , which then forwards the response to host 102 , through target transport transmit unit 302 .
  • flow select logic 410 negotiates with host 102 . The negotiation is done to ensure that a tag with which responding storage device 106 was initially selected by host 102 is presented back to host 102 during the negotiations.
  • step 716 flow control logic 410 locks host 102 and responding storage device 106 . Locking is done to ensure that host 102 and responding storage device 106 exchange serial I/O structures until the user data is exchanged to completion.
  • step 718 it is determined if the operation is a read operation or a write operation. If the operation is a read operation, responding storage device 106 sends read data to host 102 , at step 720 , in a single or multiple serial I/O structures followed by a completion status at step 724 .
  • storage device 106 sends a DMA activated serial I/O structure, at step 722 , to enable host 102 to send the write data for every serial I/O structure that needs to be transmitted from host 102 to responding storage device 106 .
  • host 102 receives the DMA activated serial I/O structure, it sends the write data to responding storage device 106 .
  • Responding storage device then sends a completion status to host 102 at step 724 .
  • flow select logic unit 410 monitors to see if there is any command in the queue. It then samples storage devices 106 with the command in queue to see if they are ready for communication. If there is any storage device 106 ready for communication, flow select logic unit moves to step 711 .
  • the FIS travels from host interface unit 107 , target transport receive unit 304 to write select logic 408 that selects a routing path through interconnect routing unit 110 to a storage device 106 , The routing is through initiator transmit unit 502 , interconnect routing 110 , and device interface unit 112 .
  • the serial I/O structure travels device interface unit 112 , read select logic 406 that selects the proper routing through interconnect routing unit 110 .
  • the routing path is through initiator receive unit 504 , target transport transmit unit 302 and finally to host interface unit 107 .
  • serial link protocol such as SAS, SCSI
  • serial I/O structure the structure of the command and data exchanged (as serial I/O structure) between hosts 102 and storage devices 106 would depend on the serial link protocol used.
  • serial I/O structures that need to be exchanged during negotiations between host 102 and storage device 106 would depend on the serial link protocol used.
  • each of target transport transmit unit 302 , target transport receive unit 304 , device selector 206 , initiator transmit unit 502 , and initiator receive unit 504 is implemented as a finite state machine on an FPGA.
  • target transport transmit unit 302 is implemented as a finite state machine that receives a 32-bit serial I/O structure as the input.
  • device selector 206 can be implemented as a finite state machine that performs the above-described functions of device selector 206 .
  • device control unit 108 is simple in design and its complexity is lesser, in comparison with existing device control units.
  • device control unit 108 uses a single target transmit and receive block 204 and Initiator transmit and receive block 208 per host rather than one target transmit and receive block 204 per host and one initiator transmit and receive block 208 per storage device as in the case of existing systems. Consequently, the number of gates required for implementing device control unit 108 is substantially lower than that for the existing systems.
  • device control unit 108 achieves a higher throughput than the throughput with the existing device control unit.
  • distribution of multiple commands to multiple storage devices allows concurrent processing across plurality of storage devices 106 .
  • storage devices 106 operate at a data rate, which is lesser than hosts 102 . Consequently, each of hosts 102 can overlap multiple commands across plurality of storage devices 106 at the same time.
  • each device control unit 108 uses a plurality of device control units 108 to create path redundancy as well as data parallelism. This would allow two, or in general, multiple hosts, to concurrently communicate with as many storage devices, as there are host, in parallel.
  • Device selector 206 in each device control unit 108 allows more than one host to access each of storage devices 106 . Consequently, even if one of the communication paths failure is detected by software, the communication can still be performed.
  • the multiple communication paths also create parallelism and enable load balancing of the workload.
  • the invention improves the time for recovery in the case of failures. This is achieved by using error register 210 to isolate the fault location. This fault isolation scheme ensures that the fault is detected, located and quick recovery is affected. Several types of fault related to serial interfaces such as CRC error, bit error, loss of synchronization, and more are detected. Some are retried by hardware and some cause a failure in the I/O, which requires software to re-issue the serial I/O structure.
  • the present invention also allows a non-queue capable device, or a different generation of a storage device to be connected to a queue capable host.
  • the negotiation is handled by interconnecting unit 104 and transparent to host 102 . This allows for cheap drives to be connected to an expensive host
  • device control unit processes data destined for storage devices 106 .
  • Data destined for storage devices 106 can be processed to produce error correction code (ECC) to provide data integrity, compression of the data to reduce actual storage, or encryption for data security reasons.
  • ECC error correction code

Abstract

An interconnecting unit and method for data communication between a plurality of computer hosts and a plurality of storage devices. The interconnecting unit couples the hosts to the storage devices and enables the data communication. The interconnection includes a plurality device control units. Each of the device control unit allows multiple commands to be distributed to multiple storage devices. The communication through the interconnecting unit is strong enough to tolerate failure across one connection path between the hosts and the storage devices.

Description

    REFERENCE TO RELATED APPLICATIONS
  • This application claims the priority of U.S. Provisional Patent Application No. 60/462,336, entitled “Method And Apparatus For Storage Command And Data Router”, by Ghaffari, et al., filed Apr. 14, 2003, which is incorporated as reference as of set forth herein in its entirety.
  • BACKGROUND
  • The present invention relates to data storage systems. Specifically, the present invention describes a routing device that provides the ability to concurrently route command and data over a serial storage link protocol in a data storage system.
  • The need for large data storage motivates the building of large-scale and high-capacity storage systems. A high capacity storage system requires a storage controller that enables a host to communicate with a large number of storage devices. A typical storage controller is a processor that receives a command from a host, and translates the command into a format, essential for communication with the storage devices. Currently, this communication is serial in nature. The serial communication is enabled by storage serial protocols such as Serial Advanced Technology Attachment (SATA), or Serially Attached SCSI (SAS), which employ a point-to-point connection. A storage controller that uses SATA or SAS-based protocol to communicate with the storage devices needs a switching or device control unit that interconnects the storage controller to the plurality of storage devices.
  • The communication between the host and the storage devices involves the exchange of command and data. The host sends a command to a storage device to perform a read or write operation. The read or write operation is performed after the storage device, to which the command is sent, has accepted the command. After the command has been accepted, the data can either be read out from the storage device, or a new data can be written into the storage device. This communication, based on the SATA or SAS-STP protocol, is made in the form of a “Frame Information Structure”(FIS). The FIS encapsulates the command and data being exchanged between the host and the storage device. Further details of FIS are described in serial ATA specification 1.0 described in the article “Serial ATA: High Speed Serialized AT Attachment”, Aug. 29, 2001.
  • An interconnecting unit between the host and the storage devices enables the above-described communication. Two draft standards, based on SATA protocol, have been proposed for this interconnecting unit.
  • The first standard involves a port multiplier (PM) approach, which uses a multiplexer to multiplex an active host connection to up to 15 device connections. This enables utilization of the full bandwidth of the host connection. The PM approach requires the modification of the packet structure in SATA, in particular the FIS to incorporate the PM routing field. Consequently, either the host or the interconnecting unit has to be modified to produce PM FIS (FIS specific to the port multiplier).
  • The second standard involves a routers, switches and multiplexers (RSM) approach. This approach consists of an interconnecting unit that allows command and data information to be directed from one or more hosts to multiple storage devices. The interconnecting unit utilizes a wrapper FIS into which all other FIS types can be encapsulated. The wrapper FIS includes a header that is used to define and activate a connection between route-aware devices. However, this approach requires a SATA-based host or interconnecting unit to support RSM, in order to provide this connectivity. In addition, all the elements in the SATA-based interconnecting unit have to be RSM route aware and able to process the header to forward the encapsulated FIS.
  • The interconnecting unit, based on any of the above-described two approaches can be used to connect a plurality of storage devices to a plurality of hosts. This interconnecting unit contains multiple RSMs or multiplexers to connect the storage devices and the hosts.
  • An interconnecting unit is described in US patent application number US2004/0024950 titled ‘Method and Apparatus for Enhancing Reliability and Scalability of Serial Storage Devices’. This patent application describes a method and system for data communication between a plurality of hosts and a plurality of storage devices. The communication is achieved by using a switch architecture-based interconnecting unit.
  • Another interconnecting unit is described in WIPO Publication No. WO03091887 titled ‘Method and Apparatus for Dual Porting a Single Port Serial at a Disk Drive’. The patent describes a method and system to connect single port devices to a plurality of hosts. The invention provides a switched assembly to selectively connect a storage device to one of the plurality of hosts.
  • The above-mentioned interconnecting units suffer from one or more of the following limitations. First, the implementation of an interconnecting unit based on the PM or RSM approach requires changes to be made to the architecture of hosts, which is expensive to implement. The RSM system is expensive because it involves host modification. Further, the RSM system is not backward compatible with existing solutions, thus it also involves software changes. On the other hand, the cost of the port multiplier is dependent on the host design. A host that allows for commands to be sent to multiple devices can be very expensive. Consequently, the port multiplier is expensive although it has a relatively higher performance. The hosts that allow one command to be active at a time are not expensive and thus the port multiplier is not expensive. But, this host/PM solution has lower performance.
  • Secondly, the interconnecting unit, based on either approach, is very complex.
  • For example, to connect ‘m’ hosts to ‘n’ number of storage devices, m*n multiplexers are required. As a result, the design complexity of the interconnecting unit increases substantially. Increased complexity results in the need for a larger chip area, and, consequently, high cost and high power consumption. Thirdly, the interconnecting unit allows a single command to be executed at a time. Even if the multiple hosts issue multiple commands at the same time, the interconnecting unit is able to execute only one command at a time. Consequently, the throughput of the interconnecting unit is low. Fourthly, the interconnecting unit will fail to operate where a failure is encountered in the path between a host and a storage device. This means that the communication is not reliable and robust enough to tolerate faults and thus lowers the storage device's availability.
  • In light of the above-described limitations, there is a need for a simple, cost-efficient interconnecting unit that enables a plurality of storage controllers to communicate with a large number of serially attached storage devices. The interconnecting unit should avoid changes in the architecture of the hosts, thereby reducing cost. Further, the interconnecting unit should have higher throughput and should allow reliable communication between the hosts and the storage devices. The mechanism should be strong enough to tolerate at least a single point of failure and not limit the availability of the storage devices in case of a fault.
  • SUMMARY
  • The present invention is directed at data storage systems. Specifically, the present invention is directed at a routing device that provides the ability to concurrently route command and data over a serial-storage link protocol in a data storage system.
  • An aspect of the present disclosure is to provide a system and method to enable connectivity between a plurality of hosts and a plurality of storage devices.
  • Another aspect of the present disclosure is to provide a system such that multiple commands can be distributed to the storage devices, thus having multiple storage devices active concurrently.
  • Another aspect of the present disclosure is a provision of fault identification and isolation to improve the time required to repair failures.
  • Another aspect of the present disclosure is a provision of load balancing between the hosts.
  • Another aspect of the present disclosure is a provision of data redundancy for error detection and correction.
  • Yet another aspect is a provision for data parallelism for increased performance.
  • The above aspects are attained by a data storage system comprising a plurality of hosts, a plurality of storage devices and an interconnecting unit for coupling the plurality of hosts and the plurality of storage devices. The interconnecting unit comprises a plurality of host interface units, a plurality of device control units, an interconnect routing unit and a plurality of device interface units. The device control unit enables distribution of multiple commands from a single host to more than one storage device. This is achieved by not requiring the device control unit to wait for the completion of the submitted command before allowing another command to be submitted, and by enabling queuing at the host layer. The device control unit also monitors the status of various components, thereby locating any fault that may occur during the communication between the hosts and the storage devices. The system and method of the present invention have numerous advantages over the prior art:
  • First, the device control unit is simple in design and its complexity is less, in comparison with existing device control units.
  • Second, the device control unit achieves a higher throughput than the existing device control units.
  • Third, the use of a plurality of device control units creates path redundancy as well as data parallelism.
  • Fourth, the invention improves the time for recovery in the case of failures.
  • Fifth, the present invention also allows a non-queue capable device, or a different generation of a storage device to be connected to a queue capable host.
  • Finally, the device control unit processes data destined for the storage devices.
  • Data destined for the storage devices can be processed to produce error correction code (ECC) to provide data integrity, compression of the data to reduce actual storage, or encryption for data security reasons.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The preferred embodiments of the invention will hereinafter be described in conjunction with the appended drawings provided to illustrate and not to limit the invention, wherein like designations denote like elements, and in which:
  • FIG. 1 illustrates a data storage system, in accordance with an embodiment of the present invention;
  • FIG. 2 is a block diagram illustrating the essential elements of a device control unit in accordance with an embodiment of the present invention;
  • FIG. 3 is a block diagram of the target transmit and receive block in accordance with an embodiment of the present invention; FIG. 4 is a block diagram of the device selector in accordance with an embodiment of the present invention;
  • FIG. 5 is a block diagram of the initiator transmit and receive block in accordance with an embodiment of the present invention;
  • FIG. 6 a is a block diagram of the host interface unit in accordance with an embodiment of the present invention;
  • FIG. 6 b is a detailed block diagram of the device interface unit in accordance with an embodiment of the present invention;
  • FIGS. 7 a and 7 b show a flowchart illustrating the method of data communication between a plurality of hosts and storage devices.
  • DESCRIPTION OF PREFERRED EMBODIMENTS
  • For the sake of convenience, the terms used to describe various embodiments are defined below. It should be understood that these are provided to merely aid the understanding of the description, and that definitions in no way limit the scope of the invention.
  • Command—A command refers to a special packet structure such as a Frame Information Structure (FIS), whose payload contains an instruction. The commands are generated by the host and executed by the storage devices. The storage devices generate a status to report the result of the execution of the command to the host.
  • Data—Data is the user data that is written on a storage device or read from the storage device. A command initiates the read or write operation of data.
  • Serial I/O structure—A serial I/O structure comprises a command to a storage device, some or no data transfer, and a completion status from the storage device. The serial I/O structure contains all the bit data necessary to achieve a serial communication, referred to as primitives.
  • I/O Structure—Bit data on a 32 bit boundary that has been extracted from the serial I/O structure. This structure may contain a command, user data or status, and is free of any protocol used in the Serial I/O Structure necessary for communication in serial format, i.e. In the I/O structure the primitives of the Serial I/O structure are removed.
  • The present invention relates to a method and system for data storage between a plurality of hosts and a plurality of storage devices by using an interconnecting unit. In particular, the invention describes a device control unit that allows a plurality of commands from the hosts to be distributed concurrently to the plurality of storage devices.
  • FIG. 1 is a block diagram illustrating a data storage system in accordance with the present invention. A data storage system 100 comprises an interconnecting unit 104 coupling a plurality of hosts 102 to a plurality of storage devices 106. The coupling comprises the exchange of serial I/O structures between plurality of hosts 102 and plurality of storage devices 106. Host 102 generates at least one command for coupling to at least one of plurality of storage devices 106.
  • The elements of serial I/O structure vary with the serial protocol used. For example, if SATA is used as the serial protocol, the serial I/O structure is composed of a command and status FIS, and if there is exchange of data, data FISes and any other FIS necessary for exchange of a data FIS. If the SAS-SCSI is used as the serial protocol, then the serial I/O structure is sent in the SCSI command structure format. For the purpose of illustration, the invention has been described using the FIS format for serial I/O structure although the invention is equally applicable to other I/O structures.
  • Each host 102 is queue capable, i.e., multiple commands can be transmitted without waiting for the completion of the previous commands in the queue. Interconnecting unit 104 is capable of processing the serial I/O structures for plurality of storage devices 106 and hosts 102 and establishing communication between one of storage devices 106 and host 102 based on a given fairness algorithm. An example of a fairness algorithm can be one wherein the order in which interconnecting unit 104 processes storage devices 106 is the order in which the commands are received from host 102. Another example is that interconnecting unit 104 processes the commands in the order in which plurality of storage devices 106 are ready to process them.
  • Interconnecting unit 104 comprises a plurality of host interface units 107, a plurality of device control units 108, an interconnect routing unit 110 and a plurality of device interface units 112. There is one device control unit 108 for each host 102. Each device control unit 108 communicates with host 102 and selects storage device 106 to which the received command is to be routed. Each device control unit 108 also controls interconnect routing unit 110 to route the serial I/O structure to device interface unit 112. In an embodiment of the present invention, interconnect routing unit 110 comprises a plurality of multiplexers, each multiplexer enabling connection between device control unit 108 and device interface unit 112 corresponding to selected storage device 106. There is a device interface unit 112 for each storage device 106. Device interface unit 112 establishes a point-to-point connection with storage device 106 until device control unit 108 selects device interface unit 112. After the selection, device control unit 108 handles the communication with storage device 106.
  • Please note that interconnect routing unit 110, using a plurality of multiplexers, ensures that input to each device control unit 108 can be received from any device interface unit 112, and output of each device control unit can go to any device interface unit 112.
  • It should be noted that in an embodiment of the invention, interconnecting unit 104 is implemented as a Field Programmable Gate Array (FPGA). In an alternate embodiment, interconnecting unit 104 can be implemented as an Application Specific Integrated Circuit (ASIC).
  • Host interface unit 107 and device interface unit 112 synchronize the serial data received from their respective connection to the running internal clock of device control unit 108 via an elasticity buffer. Synchronization is essential since device control unit 108, hosts 102 and storage devices 106 need not operate on the same clock, i.e., the clock rate need not be the same for device control unit 108, hosts 102 and storage devices 106. If the clock rates are the same, there is still a need for an elasticity buffer due to differences between the extracted clock from the physical interface (connecting a host 102 and interconnecting unit 104 as well as a storage device 106 and interconnecting unit 104) and the running internal clock of device control unit 108. Additionally, host interface unit 107 and device interface unit 112 extract the bits from the serial bit stream directed from host 102 and storage device 106 respectively. The bits are extracted in a character bit format such as a 10-bit character format.
  • Device control unit 108 directs multiple commands from hosts 102 to more than one storage devices 106. Therefore, interconnecting unit 104 enables coupling between plurality of hosts 102 and plurality of storage devices 106.
  • The point-to-point connection between each host 102 and interconnecting unit 104 is over a single serial link using host interface unit 107. Similarly, the point-to-connection between storage devices 106 and interconnecting unit 104, through device interface unit 112, is over a single serial storage link. The serial storage link can be implemented using protocols such as SATA or SAS. The SATA and SAS protocols are well known in the art, and their applications in the present invention should be apparent to one skilled in the art.
  • FIG. 2 illustrates the elements of device control unit 108 in accordance with an embodiment of the present invention. Device control unit 108 comprises a target transmit and receive block 204, a device selector 206, and an initiator transmit and receive block 208. Further, device control unit 108 comprises an error register 210 and a plurality of data processing logic unit 212.
  • Target transmit and receive block 204 monitors the processed command/data (in the form of serial I/O structure) from host 102 in the 10 bit character format. In an embodiment that uses SATA serial link, the serial I/O structure is sent in the form of FIS. Target transmit and receive block 204 converts the received FIS, in the character format, into a fixed data format. In an embodiment of the invention, Target transmit and receive 204 converts the 10-bit character format into a 32-bit size data format. The elements of target transmit and receive block 204 will be further described by means of FIG. 3.
  • Device selector 206 monitors the received element of the serial I/O structure from target transmit and receive block 204, to identify the presence of a command. In case the received element of the serial I/O structure is a command, one of storage devices 106, to which the command is directed, is selected. This selection is based on a tag for the command that stores the identity of storage device 106 to which the command is directed. After this selection, the command is modified according to the type of storage device 106 that is selected. For example, a queued read or write command from host 102 destined to a non-queue capable storage device 106 is modified to relocate the tag and the command opcode before it is forwarded to initiator transmit and receive block 208.
  • The location of the tag, identifying the selected storage device, in the command depends on storage device 106 to which the command is being directed. In an embodiment of the invention, for SATA commands directed to non-queue capable storage device 106, higher bits of the address are used as the tag to represent storage device 106. In case the command is directed to queue capable storage device 106, the location of the tag is as per the SATA standard. Please note that the location of the tag as part of the address is design specific. It should be apparent to a person skilled in the art that there are other methods of tagging, such as using an unused field of the command. Alternatively, non-queued SATA commands directed to queue capable or non-queue capable storage devices 106 can be wrapped into a queue command received by interconnecting unit 104, which in turn unwraps the command into a regular SATA command to storage device 106. This option allows some hosts that are not otherwise capable of interleaving non-queued commands, to queue them as if they were queue capable. It should be apparent to a person skilled in the art that the method of wrapping of non-queue command is implementation specific and does not limit the scope of the invention.
  • The command is subsequently forwarded to selected storage device 106 through initiator transmit and receive block 208. Initiator transmit and receive block 208 is responsible for delivering the command to selected storage device 106. The elements of initiator transmit and receive block 208 are further described using FIG. 4. Once the command is forwarded to selected storage device 106, target transmit and receive block 204 starts monitoring hosts 102 for more commands and initiator transmit and receive block 208 monitors storage devices 106 for a response.
  • In the above discussion we are referring in detail to the reception of a command. It is worth mentioning that the other serial I/O structures received or transmitted are discussed when we discuss the operation flow.
  • The command forwarded to selected storage device 106 may or may not be accepted by it. Selected storage device 106 may not accept the command if it detected a CRC error or a bit error while receiving the command. In such a scenario, host 102 tries the command again. Also, some storage devices may not accept more than one command at a time. This knowledge is kept in host 102 and device selector 206 and multiple commands are not issued to that storage device. If host 102 initiates a command to a storage device that is busy, device control unit 108 does not accept the command and host 102 tries again until the busy storage device is no longer busy.
  • Device control unit 108 also includes an error register 210 that stores the status of various connections between host 102, device control unit 108, and storage devices 106. This can be used to locate an error, if any, encountered while the coupling is established between hosts 102 and storage devices 106. Errors tracked by error register 210 include bit errors and Cyclic Redundancy Code (CRC) errors and the port at which they occurred. Please note that there is a unique error register 210 connected to each device control unit 108. For example, if there is a plurality of device control units 108, each device control unit is connected to error register 210.
  • In an embodiment of the present invention, each device control unit 108 also includes a data processing logic unit 212 to process data before it is stored in storage devices 106. In an embodiment of the invention, data processing logic unit 212 is connected between target transmit and receive block 204 and initiator transmit and receive block 208. The processing is done to produce error correction codes, which provide data integrity, compression of data to reduce actual storage and encryption for data security purposes.
  • The elements of target transmit and receive block 204 are described, hereinafter, using FIG. 3. Target transmit and receive block 202 comprises a link unit 301, a target transport transmit unit 302 and a target transport receive unit 304.
  • Link unit 301, defined as per the SATA standard definition, is responsible for the following operations for the received data: convert a 10-bit character to 8-bit data, remove primitives, unscramble the data, check CRC, and pack four bytes into 32-bit data with correct character boundaries. Link unit 301 is responsible for the following operations on the transmit data: calculate CRC for the transmit data, scramble the data, convert 32 bit data to four 10-bit characters, add the appropriate primitives and pack the four 10-bit characters on correct boundaries for transmission. The link 301 receives an element of the serial I/O structure from host 102 and converts to 32 bit data for target transport receive unit 304. In an embodiment of the present invention, link unit 301 is implemented using a finite state machine on an integrated circuit. The design and logical interconnections of the finite state machine to achieve the above-described functionalities of link unit 301 will be apparent to a person skilled in the art. Target transport receive unit 304 receives an element of the serial I/O structure from link 301. Further, it has an adequate buffer to hold data received from host 102 in case storage device 106 is not ready. Target transport receive unit 304 interprets the incoming serial I/O structure and signals device selector 206 as to what element of the serial I/O structure is being exchanged. It further communicates with the data processing unit 212 via a finite state machine to pass the received I/O structure for any further processing. Depending on the type of the I/O structure, data processing unit 212 may pass the I/O structure directly to initiator transmit unit 502 or further process it prior to passing it. Target transport transmit unit 302 forwards the request received from any of storage devices 106 to host 102, allowing link unit 301 to add the link functions to the data. It further communicates with data processing unit 212 via a finite state machine to receive the received I/O structure from initiator receive unit 504. Depending on the type of the I/O structure, data processing engine 212 may pass the I/O structure directly to target transport transmit unit 302 or further process it prior to passing it.
  • The elements of device selector 206 are described, hereinafter, using FIG. 4. Device selector 206 comprises a command queue block 404, a read select logic unit 406, a write select logic unit 408 and a flow select logic 410.
  • Command queue block 404 stores a signature of a pending command while the command FIS is delivered to storage device 106. The pending command is stored if either selected storage device 106 has not yet responded to the command or other commands are being processed. Command queue block 404 is checked to identify if there is a command in the queue for execution.
  • Read and write select logic units 406 and 408 select storage device 106 to which the I/O structure is directed. Write select logic 408 selects a routing path from host 102 through interconnect routing unit 110 to selected storage device 106. Read select logic 406 selects a routing path from selected storage device 106 through interconnect routing unit 110 to host 102. Read select logic unit 406 and write select logic unit 408 generate the control signals for the multiplexer used in interconnect routing unit 110 to enable the routing path. Read select logic unit 406 and write select logic unit 408 ensures that the commands of the I/O structure can be delivered while storage devices 106 are monitored for communication.
  • Flow select logic unit 410 arbitrates the order of processing of the device requests as well as negotiations with host 102 in case of non-queue capable storage devices 106 and non-queue commands. Flow select logic unit 410 receives signals from target transport receive block 304 and initiator transmit and receive block 208 as to a serial I/O structure element that is being exchanged. Flow select logic 410 is implemented by using a finite state machine whose operational flow is defined in FIG. 7.
  • Please note that the identification of queue capability of storage devices is performed when storage devices 106 are initially powered up and identified by the host. Subsequently, the knowledge is passed on to interconnecting unit 104. In case a storage device 106 is queue enabled, multiple commands can be delivered by device control unit 108 to a storage device. Queue-capable storage device 106 completes the I/O structure by executing the command and interconnecting unit 104 merely acts as a router of the FIS between host 102 and storage device 106.
  • If storage device 106 is non-queue capable, interconnecting unit 104 modifies the tag and the command opcode and forwards the modified command FIS to non-queue capable storage device 106. When non-queue capable storage device 106 is ready to communicate with host 102, flow select logic unit 410 negotiates with host 102 before coupling storage device 106 and host 102 for communication. In particular, if host 102 sends a command to a non-queue capable storage device 106 that has previously received a command, interconnecting unit 104 retries that command until storage device 106 is no longer busy.
  • The elements of initiator transmit and receive block 208 is described, hereinafter, using FIG. 5. Initiator transmit and receive block 208 comprises a pair of links 501 a and 501 b, an initiator transmit unit 502 and an initiator receive unit 504.
  • Links 501 a and 501 b are used to encode and decode storage protocol primitives. Link 501 a is connected to initiator transmit unit 502 and interconnect routing unit 110. Link 501 b is connected to initiator receive unit 504 and interconnect routing unit 110. Links 501 a and 501 b have functionality similar to link unit 301. Additionally, link 501 a has special states that resolve the collision of a serial I/O structure received from host 102 with that of one received from storage device 106. This case of a deadly embrace is resolved in the following way.
  • If host 102 is transmitting a software reset instruction to storage device 106, serial I/O structure received from storage device 106 is aborted by interconnecting unit 104, through link 501 a, and the software reset instruction is forwarded to storage device 106. If the transmitted serial I/O structure is other than software reset instruction to storage device 106, then interconnecting unit 104 aborts both operations and allows the host software to resolve the anomaly.
  • In an embodiment of the present invention, links 501 a and 501 b are implemented using a finite state machine on an integrated circuit. The design of the finite state machine to achieve the above-described functionalities of link unit 301 will be apparent to a person skilled in the art.
  • Initiator transmit unit 502 accepts the I/O structure, which was received by target transport receive unit 304, by communicating via a finite state machine. The I/O structure may be further modified by data processing unit 212 or passed through directly. If selected by write select logic 406, storage device 106 receives the I/O structure from initiator transmit unit 502 and signals the successful receipt of the I/O structure. This receipt is forwarded back through initiator transmit unit 502 and target receive unit 304 to host 102. At this point, an I/O structure is delivered to storage device 106 and if the I/O structure was a command, device select unit 206 has a signature of the pending command in its command queue 404. Flow select logic unit 410 instructs initiator receive unit 504 to monitor storage devices 106 for activity. The activity comprises a signal from selected storage device 106 indicating that it is ready to communicate. Initiator receive unit 504 interprets the incoming serial I/O structure (corresponding to an activity signal) and signals flow select logic unit 410 in device selector 206 as what serial I/O structure element is being exchanged. Initiator receive unit 504 further communicates with data processing unit 212 via a finite state machine to pass the received I/O structure for any further processing. Depending on the type of the I/O structure, data processing unit 212 may pass the I/O structure directly to target transmit 302 or further process it prior to passing it. In this manner, other serial I/O structures are exchanged between host 102 and interconnecting unit 104, as well as storage device 106 and host 102 until the command is executed to completion, i.e., either of the read or the write operation is performed to completion. The flow of the data is further described in FIG. 7.
  • The present invention enables execution of multiple commands at the same time. In particular, multiple commands can be delivered to storage device 106, which executes them one-by-one, in any order. Flow select logic unit 410 can transmit a command to the same (selected) or a different storage device while initiator receive unit 504 is monitoring all storage devices 106 for activity. Further, device selector 206 tracks the delivery of the commands, and keeps track of them until its queue is empty.
  • In this way, more than one storage device 106 can be active at the same time. Specifically, multiple commands can be delivered to multiple storage devices 106. Each of these active storage devices 106 is then serviced according to the pre-specified fairness algorithm.
  • Host interface unit 107 is, hereinafter, described using FIG. 6 a. Host interface unit 107 comprises a target physical interface 602, and a controller connection 604 a. Target physical interface 602 connects host 102 to device control unit 108 in accordance with point-to-point storage serial protocol such as SATA. Controller connection 604 a synchronizes the serial data received from host 102 to the running internal clock via the elasticity buffer.
  • Similarly, the connection between storage device 106 and device control unit 108 is established using device interface unit 112. The elements of device interface unit 112 are described, hereinafter, using FIG. 6 b. Device interface unit 112 comprises a controller connection 604 b, a link control unit 608 and an initiator physical interface 610.
  • Controller connection 604 b synchronizes the serial data received from storage device 106 to the running internal clock via the elasticity buffer. Link control unit 608 generates primitives when either of initiator transmit unit 502 or initiator receive units 504 is not connected to device control unit 108. Please note that a given storage device 106 is not connected to the initiator receive and transmit unit 208 at all times. However, serial storage devices need to actively send and receive valid primitives. The valid primitives are generated by link control unit 608 while initiator transmit unit 502 or initiator receive unit 504 are not in communication with a particular storage device.
  • The connection between interconnecting unit 104 and storage device 106 is established over initiator physical interface 610. Initiator physical interface 610 is enabled for SATA/SAS-STP protocol. Please note that the implementation of target physical interface 602 and initiator physical interface 610, in accordance with serial storage protocol such as SATA, is known in the art and it should be apparent to a person skilled in the art.
  • The above-described working of the invention is further explained using a flowchart in FIG. 7 a and FIG. 7 b. In step 702, target receive block 304 receives a command from host 102. In response to this, target transport receive block 304 notifies device selector 206 and also forwards the command to initiator transmit unit 502. Based on the received tag, device selector 206 selects a storage device 106 in step 704. Further, device selector 206 selects a proper routing through interconnect routing unit 110 to create a connection between initiator transmit unit 502 and device interface unit 112. Once the connection is created, initiator transmit unit 502 delivers the command to selected storage device 106 in step 706. Device interface unit 112 serializes the data to be transmitted to selected storage device 106. Initiator transmit unit 502 and target transport receive unit 304 remain engaged till an acknowledgement of proper receipt of the command is received from storage device 106. Subsequently, initiator transmit unit 502, device selector 206 and target transport receive unit 304 each, in turn, forward the receipt until it is received by host 102.
  • Meanwhile, in step 708, initiator receive unit 504 monitors plurality of storage devices 106 for a response. The order in which plurality of storage devices 106 are monitored is the same as the order in which the commands are delivered. Alternatively, a storage device that responds, thereby indicating that it is ready for communication, is served first. If a response is detected, the subsequent steps are determined by the nature of storage device, i.e., whether responding storage device 106 is queue or non-queue capable. At the same time, in step 710, target transport receive unit 304 monitors host 102 for another command.
  • In step 711, when responding storage device 106 is selected through device selector 206, it is determined if responding storage device 106 is queue capable or not.
  • If responding storage device 106 is queue capable, then in step 712, read select logic 406 routes the response from responding storage device 106 to initiator receive unit 504, which then forwards the response to host 102, through target transport transmit unit 302. There are several serial I/O structures that are related to negotiation between host 102 and responding storage device 106 as to which tag is being processed. In particular, if responding storage device 106 is not queue capable, then in step 714, flow select logic 410 negotiates with host 102. The negotiation is done to ensure that a tag with which responding storage device 106 was initially selected by host 102 is presented back to host 102 during the negotiations.
  • Subsequently, in step 716, flow control logic 410 locks host 102 and responding storage device 106. Locking is done to ensure that host 102 and responding storage device 106 exchange serial I/O structures until the user data is exchanged to completion. In step 718, it is determined if the operation is a read operation or a write operation. If the operation is a read operation, responding storage device 106 sends read data to host 102, at step 720, in a single or multiple serial I/O structures followed by a completion status at step 724. If the operation is a write operation, storage device 106 sends a DMA activated serial I/O structure, at step 722, to enable host 102 to send the write data for every serial I/O structure that needs to be transmitted from host 102 to responding storage device 106. Once host 102 receives the DMA activated serial I/O structure, it sends the write data to responding storage device 106. Responding storage device then sends a completion status to host 102 at step 724. Subsequently, at step 726, flow select logic unit 410 monitors to see if there is any command in the queue. It then samples storage devices 106 with the command in queue to see if they are ready for communication. If there is any storage device 106 ready for communication, flow select logic unit moves to step 711.
  • Please note that the above-described negotiation related to DMA activation is specific to SATA I protocol and has been described for illustration purpose only. It will be apparent to a person skilled in the art that negotiations performed using SATA II and other serial interfaces are different. The serial I/O structures used for DMA activation or completion status vary according to the serial protocol used.
  • To summarize, for every serial I/O structure that is from host 102 to storage device 106, the FIS travels from host interface unit 107, target transport receive unit 304 to write select logic 408 that selects a routing path through interconnect routing unit 110 to a storage device 106, The routing is through initiator transmit unit 502, interconnect routing 110, and device interface unit 112. For every serial I/O structure that is from storage device 106 to host 102, the serial I/O structure travels device interface unit 112, read select logic 406 that selects the proper routing through interconnect routing unit 110. The routing path is through initiator receive unit 504, target transport transmit unit 302 and finally to host interface unit 107.
  • The present invention has been described using SATA for illustration purposes only. It will be apparent to a person skilled in the art that any other serial link protocol such as SAS, SCSI can be used to work the invention without diverting from the scope of the invention. Further, the structure of the command and data exchanged (as serial I/O structure) between hosts 102 and storage devices 106 would depend on the serial link protocol used. Further, it will be apparent to a person skilled in the art that the serial I/O structures that need to be exchanged during negotiations between host 102 and storage device 106 would depend on the serial link protocol used.
  • In an embodiment of the present invention, each of target transport transmit unit 302, target transport receive unit 304, device selector 206, initiator transmit unit 502, and initiator receive unit 504 is implemented as a finite state machine on an FPGA. For example, in an embodiment of the invention, target transport transmit unit 302 is implemented as a finite state machine that receives a 32-bit serial I/O structure as the input. Similarly, device selector 206 can be implemented as a finite state machine that performs the above-described functions of device selector 206.
  • The above-described system and method have various advantages.
  • First, device control unit 108 is simple in design and its complexity is lesser, in comparison with existing device control units. In particular, device control unit 108 uses a single target transmit and receive block 204 and Initiator transmit and receive block 208 per host rather than one target transmit and receive block 204 per host and one initiator transmit and receive block 208 per storage device as in the case of existing systems. Consequently, the number of gates required for implementing device control unit 108 is substantially lower than that for the existing systems.
  • For example, consider the case when the gate counts for target transmit and receive block is x and the gate count for initiator transmit and receive block is y. The system described in the present invention would have (x+y)*(number of hosts) for gate count. On the other hand, prior art systems have (x+(number of devices*y))*(number of hosts) for gate count, which is much higher.
  • Second, device control unit 108 achieves a higher throughput than the throughput with the existing device control unit. In particular, distribution of multiple commands to multiple storage devices allows concurrent processing across plurality of storage devices 106. This is advantageous because storage devices 106 operate at a data rate, which is lesser than hosts 102. Consequently, each of hosts 102 can overlap multiple commands across plurality of storage devices 106 at the same time.
  • Third, the use of plurality of device control units 108 creates path redundancy as well as data parallelism. This would allow two, or in general, multiple hosts, to concurrently communicate with as many storage devices, as there are host, in parallel. Device selector 206 in each device control unit 108 allows more than one host to access each of storage devices 106. Consequently, even if one of the communication paths failure is detected by software, the communication can still be performed. The multiple communication paths also create parallelism and enable load balancing of the workload.
  • Fourth, the invention improves the time for recovery in the case of failures. This is achieved by using error register 210 to isolate the fault location. This fault isolation scheme ensures that the fault is detected, located and quick recovery is affected. Several types of fault related to serial interfaces such as CRC error, bit error, loss of synchronization, and more are detected. Some are retried by hardware and some cause a failure in the I/O, which requires software to re-issue the serial I/O structure.
  • Fifth, the present invention also allows a non-queue capable device, or a different generation of a storage device to be connected to a queue capable host. The negotiation is handled by interconnecting unit 104 and transparent to host 102. This allows for cheap drives to be connected to an expensive host
  • Sixth, device control unit processes data destined for storage devices 106. Data destined for storage devices 106 can be processed to produce error correction code (ECC) to provide data integrity, compression of the data to reduce actual storage, or encryption for data security reasons.
  • While the preferred embodiments of the invention have been illustrated and described, it will be clear that the invention is not limited to these embodiments only. Numerous modifications, changes, variations, substitutions and equivalents will be apparent to those skilled in the art, without departing from the spirit and scope of the invention, as described in the claims.

Claims (20)

1. An interconnecting unit for coupling a plurality of hosts to a plurality of storage devices, the coupling involving exchange of a plurality of serial I/O structures between the plurality of hosts and the plurality of storage devices, the interconnecting unit comprising:
a. a plurality of device control units enabling distribution of a plurality of commands to the plurality of storage devices, each of the plurality of commands being an element of a serial I/O structure;
b. a plurality of host interface units, each of the plurality of host interface units synchronizing data between a host and the interconnecting unit;
c. a plurality of device interface units, each of the plurality of device interface units synchronizing data between a storage device and the interconnecting unit; and
d. an interconnect routing unit situated between a device control unit and a device interface unit, wherein the device control unit is configured to select a routing path out of possible routing paths through the interconnect routing unit between the device control unit and the device interface unit upon receiving a command from a host to create a connection between the host and a storage device to allow processing of the command, which is an element of a serial I/O structure.
2. The interconnecting unit according to claim 1, wherein each of the plurality of the elements of a serial I/O structure is transmitted in a serial bit format.
3. The interconnecting unit according to claim 1, wherein each of the plurality of host interface units converts each of the plurality of the received elements of the serial I/O structure in a serial bit stream format to a character bit format.
4. The interconnecting unit according to claim 1, wherein each of the plurality of device interface units converts each of the plurality of the received elements of the serial I/O structure in a serial bit stream format to a character bit format.
5-18. (canceled)
19. The interconnecting unit according to claim 1, wherein the routing path includes a read routing path from the host to storage device through the interconnect routing unit and the write routing path from the storage device to the host through the interconnect routing unit, the read routing path and the write routing path being selected by the device control unit.
20. The interconnecting unit according to claim 19 wherein the device control unit comprises a read select unit configured to select the read routing path and a write select routing unit configured to select the write routing path.
21. The interconnecting unit according to claim 20, wherein the plurality of device control units each include a single read select unit and a single write select unit for a single host.
22. The interconnecting unit according to claim 1, wherein the device control unit serializes the data for sending to the interconnect unit over a serial link.
23. The interconnecting unit according to claim 1, wherein the device interface unit serializes the data for the storage device over a serial link
24. A method for coupling a host to a storage device, the method comprising:
receiving, at a device control unit, a command from a host, the command being an element of a serial I/O structure;
determining a storage device in which to route the command;
selecting, at the device control unit, a routing path out of possible routing paths through an interconnect routing unit situated between the device control unit and a device interface unit upon receiving the command from the host to create a connection between the host and the storage device to allow processing of the command;
routing the command to the device interface unit through the routing path;
serializing data for the command at the device interface unit; and
sending the serialized data for the command to the storage device.
25. The method of claim 24, further comprising:
monitoring the storage device for a response;
determining if the storage device is queue capable; and
routing the response to the host if the storage device is queue capable.
26. The method of claim 25, further comprising locking the host and the storage device to allow exchanging of serial I/O structures for the command.
27. The method of claim 25, further comprising negotiating with the host to indicate which storage device is going to be used.
28. The method of claim 24, further comprising:
serializing data for the command from the host; and
sending the serialized data for the command to the interconnect unit from the device control unit.
29. An apparatus comprising:
one or more processors; and
logic encoded in one or more tangible media for execution by the one or more processors and when executed operable to:
receive, at a device control unit, a command from a host, the command being an element of a serial I/O structure;
determine a storage device in which to route the command;
select, at the device control unit, a routing path out of possible routing paths through an interconnect routing unit situated between the device control unit and a device interface unit upon receiving the command from the host to create a connection between the host and the storage device to allow processing of the command;
route the command to the device interface unit through the routing path;
serialize data for the command at the device interface unit; and
send the serialized data for the command to the storage device.
30. The apparatus of claim 29, wherein the logic when executed is further operable to:
monitor the storage device for a response;
determine if the storage device is queue capable; and
route the response to the host if the storage device is queue capable.
31. The apparatus of claim 30, wherein the logic when executed is further operable to lock the host and the storage device to allow exchanging of serial I/O structures for the command.
32. The apparatus of claim 30, wherein the logic when executed is further operable to negotiate with the host to indicate which storage device is going to be used.
33. The apparatus of claim 29, wherein the logic when executed is further operable to:
serialize data for the command from the host; and
send the serialized data for the command to the interconnect unit from the device control unit.
US12/034,561 2003-04-14 2008-02-20 Method and apparatus for storage command and data router Abandoned US20080140881A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/034,561 US20080140881A1 (en) 2003-04-14 2008-02-20 Method and apparatus for storage command and data router

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US46233603P 2003-04-14 2003-04-14
US10/822,971 US7360010B2 (en) 2003-04-14 2004-04-12 Method and apparatus for storage command and data router
US12/034,561 US20080140881A1 (en) 2003-04-14 2008-02-20 Method and apparatus for storage command and data router

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/822,971 Continuation US7360010B2 (en) 2003-04-14 2004-04-12 Method and apparatus for storage command and data router

Publications (1)

Publication Number Publication Date
US20080140881A1 true US20080140881A1 (en) 2008-06-12

Family

ID=33135277

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/822,971 Active 2025-04-04 US7360010B2 (en) 2003-04-14 2004-04-12 Method and apparatus for storage command and data router
US12/034,561 Abandoned US20080140881A1 (en) 2003-04-14 2008-02-20 Method and apparatus for storage command and data router

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/822,971 Active 2025-04-04 US7360010B2 (en) 2003-04-14 2004-04-12 Method and apparatus for storage command and data router

Country Status (1)

Country Link
US (2) US7360010B2 (en)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426534B2 (en) * 2001-12-19 2008-09-16 International Business Machines Corporation Method and system for caching message fragments using an expansion attribute in a fragment link tag
US7346135B1 (en) 2002-02-13 2008-03-18 Marvell International, Ltd. Compensation for residual frequency offset, phase noise and sampling phase offset in wireless networks
US7263153B2 (en) 2002-10-09 2007-08-28 Marvell International, Ltd. Clock offset compensator
US7319705B1 (en) 2002-10-22 2008-01-15 Marvell International Ltd. Programmable pre-emphasis circuit for serial ATA
US7246192B1 (en) 2003-01-10 2007-07-17 Marvell International Ltd. Serial/parallel ATA controller and converter
US8095704B2 (en) * 2003-01-13 2012-01-10 Sierra Logic Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves that may be incorporated within disk arrays
US7360010B2 (en) * 2003-04-14 2008-04-15 Copan Systems, Inc. Method and apparatus for storage command and data router
US8930583B1 (en) * 2003-09-18 2015-01-06 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for controlling data transfer in a serial-ATA system
US20050198425A1 (en) * 2004-03-05 2005-09-08 Wang Liang-Yun Combined optical storage and flash card reader using single ide or sata port and method thereof
US7206875B2 (en) * 2004-03-31 2007-04-17 Intel Corporation Expander device capable of persistent reservations and persistent affiliations
TWI269968B (en) * 2004-04-22 2007-01-01 Mediatek Inc Method for processing the noise in the SATA
US7865803B2 (en) * 2004-04-30 2011-01-04 Mediatek Inc. Method for processing noise interference in data accessing device with serial advanced technology attachment (SATA) interface
US7958292B2 (en) 2004-06-23 2011-06-07 Marvell World Trade Ltd. Disk drive system on chip with integrated buffer memory and support for host memory access
US20060094466A1 (en) * 2004-10-20 2006-05-04 Bao Tran Systems and methods for providing expansion to wireless communicators
US7418545B2 (en) * 2004-10-28 2008-08-26 Intel Corporation Integrated circuit capable of persistent reservations
US7370128B2 (en) 2004-10-29 2008-05-06 Intel Corporation Expander device capable of communication protocol translation
US7853741B2 (en) * 2005-04-11 2010-12-14 Emulex Design & Manufacturing Corporation Tunneling SATA targets through fibre channel
JP4751153B2 (en) 2005-06-08 2011-08-17 株式会社日立製作所 Storage system
JP4404023B2 (en) * 2005-06-30 2010-01-27 セイコーエプソン株式会社 Data transfer control device and electronic device
JP4442523B2 (en) * 2005-06-30 2010-03-31 セイコーエプソン株式会社 Data transfer control device and electronic device
JP4337783B2 (en) * 2005-06-30 2009-09-30 セイコーエプソン株式会社 Data transfer control device and electronic device
JP2007011682A (en) * 2005-06-30 2007-01-18 Hitachi Ltd Storage control device and path switching method for it
US7318138B1 (en) 2005-08-30 2008-01-08 Symantec Operating Corporation Preventing undesired trespass in storage arrays
US7738366B2 (en) * 2005-09-13 2010-06-15 Lsi Corporation Methods and structure for detecting SAS link errors with minimal impact on SAS initiator and link bandwidth
US7817555B2 (en) * 2006-02-14 2010-10-19 Jds Uniphase Corporation Compacting of frames in a network diagnostic device
JP2007280258A (en) * 2006-04-11 2007-10-25 Hitachi Ltd Memory control device
US7761657B2 (en) * 2006-07-10 2010-07-20 Hitachi, Ltd. Storage control system, control method for storage control system, port selector, and controller
US7594134B1 (en) * 2006-08-14 2009-09-22 Network Appliance, Inc. Dual access pathways to serially-connected mass data storage units
US7761642B2 (en) * 2006-12-22 2010-07-20 Lsi Corporation Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US8060775B1 (en) 2007-06-14 2011-11-15 Symantec Corporation Method and apparatus for providing dynamic multi-pathing (DMP) for an asymmetric logical unit access (ALUA) based storage system
US20090006657A1 (en) * 2007-06-26 2009-01-01 Asad Azam Enabling consecutive command message transmission to different devices
US7747796B1 (en) * 2007-12-20 2010-06-29 Nvidia Corporation Control data transfer rates for a serial ATA device by throttling values to control insertion of align primitives in data stream over serial ATA connection
CN101471833B (en) * 2007-12-29 2012-01-25 联想(北京)有限公司 Method and apparatus for processing data
US20110162570A1 (en) * 2010-01-06 2011-07-07 Robert Moser Boat Hull Washing Apparatus
US8402196B2 (en) * 2010-03-04 2013-03-19 Xyratex Technology Limited Storage assembly, a physical expander and a method
US8838871B2 (en) 2012-04-09 2014-09-16 Dell Products L.P. Methods and systems for virtualization of storage services in an integrated chassis
US9158637B2 (en) * 2012-07-31 2015-10-13 Infinidat Ltd. Storage control grid and method of operating thereof
US8756345B2 (en) 2012-10-31 2014-06-17 Lsi Corporation Methods and structure for managing protection information with a serial attached SCSI expander
US8904119B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Method and structures for performing a migration of a logical volume with a serial attached SCSI expander
US9135198B2 (en) 2012-10-31 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Methods and structure for serial attached SCSI expanders that self-configure by setting routing attributes of their ports based on SMP requests
US8904108B2 (en) 2012-10-31 2014-12-02 Lsi Corporation Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander
US8782292B2 (en) 2012-10-31 2014-07-15 Lsi Corporation Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander
WO2014120136A1 (en) 2013-01-30 2014-08-07 Hewlett-Packard Development Company, L.P. Failover in response to failure of a port
US9298566B2 (en) 2013-04-17 2016-03-29 Hewlett Packard Enterprise Development Lp Automatic cluster-based failover handling
US9460012B2 (en) * 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
US9996262B1 (en) * 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385681B1 (en) * 1998-09-18 2002-05-07 Hitachi, Ltd. Disk array control device with two different internal connection systems
US20020095549A1 (en) * 1998-12-22 2002-07-18 Hitachi, Ltd. Disk storage system
US20040024950A1 (en) * 2002-08-01 2004-02-05 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
US20040100944A1 (en) * 2002-11-27 2004-05-27 Scott Richmond Serial ATA frame structure routing circuitry and protocols
US20040162926A1 (en) * 2003-02-14 2004-08-19 Itzhak Levy Serial advanced technology attachment interface
US20040193737A1 (en) * 2003-03-31 2004-09-30 Huffman Amber D. Apparatus, method and system to couple one or more hosts to a storage device using unique signal from host
US20040205288A1 (en) * 2003-04-14 2004-10-14 Copan Systems, Inc Method and apparatus for storage command and data router
US20050182874A1 (en) * 2003-02-28 2005-08-18 Herz John P. Disk array controller and system with automated detection and control of both ATA and SCSI disk drives
US20050251588A1 (en) * 2002-01-18 2005-11-10 Genx Systems, Inc. Method and apparatus for supporting access of a serial ATA storage device by multiple hosts with separate host adapters

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4294142B2 (en) * 1999-02-02 2009-07-08 株式会社日立製作所 Disk subsystem
JP2003084919A (en) * 2001-09-06 2003-03-20 Hitachi Ltd Control method of disk array device, and disk array device
JP2003177963A (en) * 2001-12-12 2003-06-27 Hitachi Ltd Storage device
US20030135577A1 (en) * 2001-12-19 2003-07-17 Weber Bret S. Dual porting serial ATA disk drives for fault tolerant applications
US7089345B1 (en) 2002-04-23 2006-08-08 Adaptec, Inc. Method and apparatus for dual porting a single port serial ATA disk drive
US6961813B2 (en) * 2002-06-21 2005-11-01 Hewlett-Packard Development Company, L.P. System and method for providing multi-initiator capability to an ATA drive
US7523236B1 (en) * 2003-06-11 2009-04-21 Lsi Corporation Switching serial advanced technology attachment (SATA) to a parallel interface
US7523235B2 (en) * 2003-06-11 2009-04-21 Lsi Corporation Serial Advanced Technology Attachment (SATA) switch
US7155546B2 (en) * 2003-12-18 2006-12-26 Intel Corporation Multiple physical interfaces in a slot of a storage enclosure to support different storage interconnect architectures
JP4494031B2 (en) * 2004-02-06 2010-06-30 株式会社日立製作所 Storage control device and storage control device control method
US20050216680A1 (en) * 2004-03-25 2005-09-29 Itzhak Levy Device to allow multiple data processing channels to share a single disk drive

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385681B1 (en) * 1998-09-18 2002-05-07 Hitachi, Ltd. Disk array control device with two different internal connection systems
US20020095549A1 (en) * 1998-12-22 2002-07-18 Hitachi, Ltd. Disk storage system
US20050251588A1 (en) * 2002-01-18 2005-11-10 Genx Systems, Inc. Method and apparatus for supporting access of a serial ATA storage device by multiple hosts with separate host adapters
US20040024950A1 (en) * 2002-08-01 2004-02-05 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
US20040100944A1 (en) * 2002-11-27 2004-05-27 Scott Richmond Serial ATA frame structure routing circuitry and protocols
US20040162926A1 (en) * 2003-02-14 2004-08-19 Itzhak Levy Serial advanced technology attachment interface
US20050182874A1 (en) * 2003-02-28 2005-08-18 Herz John P. Disk array controller and system with automated detection and control of both ATA and SCSI disk drives
US6965956B1 (en) * 2003-02-28 2005-11-15 3Ware, Inc. Disk array controller and system with automated detection and control of both ATA and SCSI disk drives
US20040193737A1 (en) * 2003-03-31 2004-09-30 Huffman Amber D. Apparatus, method and system to couple one or more hosts to a storage device using unique signal from host
US20040205288A1 (en) * 2003-04-14 2004-10-14 Copan Systems, Inc Method and apparatus for storage command and data router
US7360010B2 (en) * 2003-04-14 2008-04-15 Copan Systems, Inc. Method and apparatus for storage command and data router

Also Published As

Publication number Publication date
US7360010B2 (en) 2008-04-15
US20040205288A1 (en) 2004-10-14

Similar Documents

Publication Publication Date Title
US7360010B2 (en) Method and apparatus for storage command and data router
US7457902B2 (en) Lock and release mechanism for out-of-order frame prevention and support of native command queueing in FC-SATA
US9400616B2 (en) Methodology for manipulation of SATA device access cycles
US7743178B2 (en) Method and apparatus for SATA tunneling over fibre channel
US9804788B2 (en) Method and apparatus for transferring information between different streaming protocols at wire speed
EP3032787B1 (en) Method, device, system and storage medium for implementing packet transmission in pcie switching network
US6578158B1 (en) Method and apparatus for providing a raid controller having transparent failover and failback
US7752343B2 (en) Method and apparatus for auto-protocol discrimination between fibre channel, SAS and SATA devices
JP4690202B2 (en) High availability mass storage device shelf
US6961813B2 (en) System and method for providing multi-initiator capability to an ATA drive
US7080190B2 (en) Apparatus and method for providing transparent sharing of channel resources by multiple host machines
US7624324B2 (en) File control system and file control device
US20060242312A1 (en) Tunneling SATA targets through fibre channel
US20140047441A1 (en) Information processing apparatus, virtual machine control method, and program
US20220174133A1 (en) Reliable communications using a point to point protocol
US7421520B2 (en) High-speed I/O controller having separate control and data paths
WO2006019770A2 (en) System and method for transmitting data in storage controllers
US7711793B1 (en) No single point of failure RAID box using SATA drives
US8095862B2 (en) End-to-end cyclic redundancy check protection for high integrity fiber transfers
US20070076685A1 (en) Programmable routing for frame-packet based frame processing
US20050169170A1 (en) Space-efficient storage command and data routing system and method

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: SILICON GRAPHICS INTERNATIONAL CORP., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC.;REEL/FRAME:035269/0167

Effective date: 20150325

AS Assignment

Owner name: RPX CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SILICON GRAPHICS INTERNATIONAL CORP.;REEL/FRAME:035409/0615

Effective date: 20150327