US20080140881A1 - Method and apparatus for storage command and data router - Google Patents
Method and apparatus for storage command and data router Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2002—Error 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/2007—Error 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/201—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Systems (AREA)
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
- 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.
- 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.
- 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.
- 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. - 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. Adata storage system 100 comprises an interconnectingunit 104 coupling a plurality ofhosts 102 to a plurality ofstorage devices 106. The coupling comprises the exchange of serial I/O structures between plurality ofhosts 102 and plurality ofstorage devices 106.Host 102 generates at least one command for coupling to at least one of plurality ofstorage 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. Interconnectingunit 104 is capable of processing the serial I/O structures for plurality ofstorage devices 106 and hosts 102 and establishing communication between one ofstorage 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 interconnectingunit 104 processesstorage devices 106 is the order in which the commands are received fromhost 102. Another example is that interconnectingunit 104 processes the commands in the order in which plurality ofstorage devices 106 are ready to process them. - Interconnecting
unit 104 comprises a plurality ofhost interface units 107, a plurality ofdevice control units 108, aninterconnect routing unit 110 and a plurality ofdevice interface units 112. There is onedevice control unit 108 for eachhost 102. Eachdevice control unit 108 communicates withhost 102 and selectsstorage device 106 to which the received command is to be routed. Eachdevice control unit 108 also controlsinterconnect routing unit 110 to route the serial I/O structure todevice interface unit 112. In an embodiment of the present invention,interconnect routing unit 110 comprises a plurality of multiplexers, each multiplexer enabling connection betweendevice control unit 108 anddevice interface unit 112 corresponding to selectedstorage device 106. There is adevice interface unit 112 for eachstorage device 106.Device interface unit 112 establishes a point-to-point connection withstorage device 106 untildevice control unit 108 selectsdevice interface unit 112. After the selection,device control unit 108 handles the communication withstorage device 106. - Please note that
interconnect routing unit 110, using a plurality of multiplexers, ensures that input to eachdevice control unit 108 can be received from anydevice interface unit 112, and output of each device control unit can go to anydevice 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, interconnectingunit 104 can be implemented as an Application Specific Integrated Circuit (ASIC). -
Host interface unit 107 anddevice interface unit 112 synchronize the serial data received from their respective connection to the running internal clock ofdevice control unit 108 via an elasticity buffer. Synchronization is essential sincedevice control unit 108, hosts 102 andstorage devices 106 need not operate on the same clock, i.e., the clock rate need not be the same fordevice control unit 108, hosts 102 andstorage 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 ahost 102 and interconnectingunit 104 as well as astorage device 106 and interconnecting unit 104) and the running internal clock ofdevice control unit 108. Additionally,host interface unit 107 anddevice interface unit 112 extract the bits from the serial bit stream directed fromhost 102 andstorage 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 fromhosts 102 to more than onestorage devices 106. Therefore, interconnectingunit 104 enables coupling between plurality ofhosts 102 and plurality ofstorage devices 106. - The point-to-point connection between each
host 102 and interconnectingunit 104 is over a single serial link usinghost interface unit 107. Similarly, the point-to-connection betweenstorage devices 106 and interconnectingunit 104, throughdevice 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 ofdevice control unit 108 in accordance with an embodiment of the present invention.Device control unit 108 comprises a target transmit and receiveblock 204, adevice selector 206, and an initiator transmit and receiveblock 208. Further,device control unit 108 comprises anerror register 210 and a plurality of dataprocessing logic unit 212. - Target transmit and receive
block 204 monitors the processed command/data (in the form of serial I/O structure) fromhost 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 receiveblock 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 receiveblock 204 will be further described by means ofFIG. 3 . -
Device selector 206 monitors the received element of the serial I/O structure from target transmit and receiveblock 204, to identify the presence of a command. In case the received element of the serial I/O structure is a command, one ofstorage devices 106, to which the command is directed, is selected. This selection is based on a tag for the command that stores the identity ofstorage device 106 to which the command is directed. After this selection, the command is modified according to the type ofstorage device 106 that is selected. For example, a queued read or write command fromhost 102 destined to a non-queuecapable storage device 106 is modified to relocate the tag and the command opcode before it is forwarded to initiator transmit and receiveblock 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-queuecapable storage device 106, higher bits of the address are used as the tag to representstorage device 106. In case the command is directed to queuecapable 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-queuecapable storage devices 106 can be wrapped into a queue command received by interconnectingunit 104, which in turn unwraps the command into a regular SATA command tostorage 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 receiveblock 208. Initiator transmit and receiveblock 208 is responsible for delivering the command to selectedstorage device 106. The elements of initiator transmit and receiveblock 208 are further described usingFIG. 4 . Once the command is forwarded to selectedstorage device 106, target transmit and receiveblock 204 starts monitoring hosts 102 for more commands and initiator transmit and receiveblock 208 monitorsstorage 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. Selectedstorage 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 inhost 102 anddevice selector 206 and multiple commands are not issued to that storage device. Ifhost 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 anerror register 210 that stores the status of various connections betweenhost 102,device control unit 108, andstorage devices 106. This can be used to locate an error, if any, encountered while the coupling is established betweenhosts 102 andstorage devices 106. Errors tracked byerror register 210 include bit errors and Cyclic Redundancy Code (CRC) errors and the port at which they occurred. Please note that there is aunique error register 210 connected to eachdevice control unit 108. For example, if there is a plurality ofdevice control units 108, each device control unit is connected to errorregister 210. - In an embodiment of the present invention, each
device control unit 108 also includes a dataprocessing logic unit 212 to process data before it is stored instorage devices 106. In an embodiment of the invention, dataprocessing logic unit 212 is connected between target transmit and receiveblock 204 and initiator transmit and receiveblock 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, usingFIG. 3 . Target transmit and receive block 202 comprises alink unit 301, a target transport transmitunit 302 and a target transport receiveunit 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. Thelink 301 receives an element of the serial I/O structure fromhost 102 and converts to 32 bit data for target transport receiveunit 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 oflink unit 301 will be apparent to a person skilled in the art. Target transport receiveunit 304 receives an element of the serial I/O structure fromlink 301. Further, it has an adequate buffer to hold data received fromhost 102 incase storage device 106 is not ready. Target transport receiveunit 304 interprets the incoming serial I/O structure andsignals device selector 206 as to what element of the serial I/O structure is being exchanged. It further communicates with thedata 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 transmitunit 502 or further process it prior to passing it. Target transport transmitunit 302 forwards the request received from any ofstorage devices 106 to host 102, allowinglink unit 301 to add the link functions to the data. It further communicates withdata processing unit 212 via a finite state machine to receive the received I/O structure from initiator receiveunit 504. Depending on the type of the I/O structure,data processing engine 212 may pass the I/O structure directly to target transport transmitunit 302 or further process it prior to passing it. - The elements of
device selector 206 are described, hereinafter, usingFIG. 4 .Device selector 206 comprises acommand queue block 404, a readselect logic unit 406, a writeselect logic unit 408 and a flowselect 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 selectedstorage 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 select storage device 106 to which the I/O structure is directed. Writeselect logic 408 selects a routing path fromhost 102 throughinterconnect routing unit 110 to selectedstorage device 106. Readselect logic 406 selects a routing path from selectedstorage device 106 throughinterconnect routing unit 110 to host 102. Readselect logic unit 406 and writeselect logic unit 408 generate the control signals for the multiplexer used ininterconnect routing unit 110 to enable the routing path. Readselect logic unit 406 and writeselect logic unit 408 ensures that the commands of the I/O structure can be delivered whilestorage devices 106 are monitored for communication. - Flow
select logic unit 410 arbitrates the order of processing of the device requests as well as negotiations withhost 102 in case of non-queuecapable storage devices 106 and non-queue commands. Flowselect logic unit 410 receives signals from target transport receiveblock 304 and initiator transmit and receiveblock 208 as to a serial I/O structure element that is being exchanged. Flowselect logic 410 is implemented by using a finite state machine whose operational flow is defined inFIG. 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 interconnectingunit 104. In case astorage device 106 is queue enabled, multiple commands can be delivered bydevice control unit 108 to a storage device. Queue-capable storage device 106 completes the I/O structure by executing the command andinterconnecting unit 104 merely acts as a router of the FIS betweenhost 102 andstorage device 106. - If
storage device 106 is non-queue capable, interconnectingunit 104 modifies the tag and the command opcode and forwards the modified command FIS to non-queuecapable storage device 106. When non-queuecapable storage device 106 is ready to communicate withhost 102, flowselect logic unit 410 negotiates withhost 102 before couplingstorage device 106 and host 102 for communication. In particular, ifhost 102 sends a command to a non-queuecapable storage device 106 that has previously received a command, interconnectingunit 104 retries that command untilstorage device 106 is no longer busy. - The elements of initiator transmit and receive
block 208 is described, hereinafter, usingFIG. 5 . Initiator transmit and receiveblock 208 comprises a pair oflinks unit 502 and an initiator receiveunit 504. -
Links unit 502 andinterconnect routing unit 110.Link 501 b is connected to initiator receiveunit 504 andinterconnect routing unit 110.Links unit 301. Additionally, link 501 a has special states that resolve the collision of a serial I/O structure received fromhost 102 with that of one received fromstorage device 106. This case of a deadly embrace is resolved in the following way. - If
host 102 is transmitting a software reset instruction tostorage device 106, serial I/O structure received fromstorage device 106 is aborted by interconnectingunit 104, throughlink 501 a, and the software reset instruction is forwarded tostorage device 106. If the transmitted serial I/O structure is other than software reset instruction tostorage device 106, then interconnectingunit 104 aborts both operations and allows the host software to resolve the anomaly. - In an embodiment of the present invention,
links 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 receiveunit 304, by communicating via a finite state machine. The I/O structure may be further modified bydata processing unit 212 or passed through directly. If selected by writeselect logic 406,storage device 106 receives the I/O structure from initiator transmitunit 502 and signals the successful receipt of the I/O structure. This receipt is forwarded back through initiator transmitunit 502 and target receiveunit 304 to host 102. At this point, an I/O structure is delivered tostorage device 106 and if the I/O structure was a command, deviceselect unit 206 has a signature of the pending command in itscommand queue 404. Flowselect logic unit 410 instructs initiator receiveunit 504 to monitorstorage devices 106 for activity. The activity comprises a signal from selectedstorage device 106 indicating that it is ready to communicate. Initiator receiveunit 504 interprets the incoming serial I/O structure (corresponding to an activity signal) and signals flowselect logic unit 410 indevice selector 206 as what serial I/O structure element is being exchanged. Initiator receiveunit 504 further communicates withdata 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 betweenhost 102 and interconnectingunit 104, as well asstorage device 106 andhost 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 inFIG. 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. Flowselect logic unit 410 can transmit a command to the same (selected) or a different storage device while initiator receiveunit 504 is monitoring allstorage 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 tomultiple storage devices 106. Each of theseactive storage devices 106 is then serviced according to the pre-specified fairness algorithm. -
Host interface unit 107 is, hereinafter, described usingFIG. 6 a.Host interface unit 107 comprises a targetphysical interface 602, and acontroller connection 604 a. Targetphysical interface 602 connectshost 102 todevice control unit 108 in accordance with point-to-point storage serial protocol such as SATA.Controller connection 604 a synchronizes the serial data received fromhost 102 to the running internal clock via the elasticity buffer. - Similarly, the connection between
storage device 106 anddevice control unit 108 is established usingdevice interface unit 112. The elements ofdevice interface unit 112 are described, hereinafter, usingFIG. 6 b.Device interface unit 112 comprises acontroller connection 604 b, alink control unit 608 and an initiatorphysical interface 610. -
Controller connection 604 b synchronizes the serial data received fromstorage device 106 to the running internal clock via the elasticity buffer.Link control unit 608 generates primitives when either of initiator transmitunit 502 or initiator receiveunits 504 is not connected todevice control unit 108. Please note that a givenstorage device 106 is not connected to the initiator receive and transmitunit 208 at all times. However, serial storage devices need to actively send and receive valid primitives. The valid primitives are generated bylink control unit 608 while initiator transmitunit 502 or initiator receiveunit 504 are not in communication with a particular storage device. - The connection between interconnecting
unit 104 andstorage device 106 is established over initiatorphysical interface 610. Initiatorphysical interface 610 is enabled for SATA/SAS-STP protocol. Please note that the implementation of targetphysical interface 602 and initiatorphysical 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 andFIG. 7 b. Instep 702, target receiveblock 304 receives a command fromhost 102. In response to this, target transport receiveblock 304 notifiesdevice selector 206 and also forwards the command to initiator transmitunit 502. Based on the received tag,device selector 206 selects astorage device 106 instep 704. Further,device selector 206 selects a proper routing throughinterconnect routing unit 110 to create a connection between initiator transmitunit 502 anddevice interface unit 112. Once the connection is created, initiator transmitunit 502 delivers the command to selectedstorage device 106 instep 706.Device interface unit 112 serializes the data to be transmitted to selectedstorage device 106. Initiator transmitunit 502 and target transport receiveunit 304 remain engaged till an acknowledgement of proper receipt of the command is received fromstorage device 106. Subsequently, initiator transmitunit 502,device selector 206 and target transport receiveunit 304 each, in turn, forward the receipt until it is received byhost 102. - Meanwhile, in
step 708, initiator receiveunit 504 monitors plurality ofstorage devices 106 for a response. The order in which plurality ofstorage 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 respondingstorage device 106 is queue or non-queue capable. At the same time, instep 710, target transport receiveunit 304 monitors host 102 for another command. - In
step 711, when respondingstorage device 106 is selected throughdevice selector 206, it is determined if respondingstorage device 106 is queue capable or not. - If responding
storage device 106 is queue capable, then instep 712, readselect logic 406 routes the response from respondingstorage device 106 to initiator receiveunit 504, which then forwards the response to host 102, through target transport transmitunit 302. There are several serial I/O structures that are related to negotiation betweenhost 102 and respondingstorage device 106 as to which tag is being processed. In particular, if respondingstorage device 106 is not queue capable, then instep 714, flowselect logic 410 negotiates withhost 102. The negotiation is done to ensure that a tag with which respondingstorage device 106 was initially selected byhost 102 is presented back tohost 102 during the negotiations. - Subsequently, in
step 716,flow control logic 410 locks host 102 and respondingstorage device 106. Locking is done to ensure thathost 102 and respondingstorage device 106 exchange serial I/O structures until the user data is exchanged to completion. Instep 718, it is determined if the operation is a read operation or a write operation. If the operation is a read operation, respondingstorage device 106 sends read data to host 102, atstep 720, in a single or multiple serial I/O structures followed by a completion status atstep 724. If the operation is a write operation,storage device 106 sends a DMA activated serial I/O structure, atstep 722, to enablehost 102 to send the write data for every serial I/O structure that needs to be transmitted fromhost 102 to respondingstorage device 106. Oncehost 102 receives the DMA activated serial I/O structure, it sends the write data to respondingstorage device 106. Responding storage device then sends a completion status to host 102 atstep 724. Subsequently, atstep 726, flowselect logic unit 410 monitors to see if there is any command in the queue. It thensamples storage devices 106 with the command in queue to see if they are ready for communication. If there is anystorage 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 tostorage device 106, the FIS travels fromhost interface unit 107, target transport receiveunit 304 to writeselect logic 408 that selects a routing path throughinterconnect routing unit 110 to astorage device 106, The routing is through initiator transmitunit 502,interconnect routing 110, anddevice interface unit 112. For every serial I/O structure that is fromstorage device 106 to host 102, the serial I/O structure travelsdevice interface unit 112, readselect logic 406 that selects the proper routing throughinterconnect routing unit 110. The routing path is through initiator receiveunit 504, target transport transmitunit 302 and finally to hostinterface 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 andstorage 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 betweenhost 102 andstorage 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 receiveunit 304,device selector 206, initiator transmitunit 502, and initiator receiveunit 504 is implemented as a finite state machine on an FPGA. For example, in an embodiment of the invention, target transport transmitunit 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 ofdevice 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 receiveblock 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 implementingdevice 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 ofstorage devices 106. This is advantageous becausestorage devices 106 operate at a data rate, which is lesser thanhosts 102. Consequently, each ofhosts 102 can overlap multiple commands across plurality ofstorage 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 eachdevice control unit 108 allows more than one host to access each ofstorage 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 forstorage 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.
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)
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 |
JP4337783B2 (en) * | 2005-06-30 | 2009-09-30 | セイコーエプソン株式会社 | Data transfer control device and electronic device |
JP4442523B2 (en) * | 2005-06-30 | 2010-03-31 | セイコーエプソン株式会社 | 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 |
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 |
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 |
US8904108B2 (en) | 2012-10-31 | 2014-12-02 | Lsi Corporation | Methods and structure establishing nested Redundant Array of Independent Disks volumes with an expander |
US8756345B2 (en) | 2012-10-31 | 2014-06-17 | Lsi Corporation | Methods and structure for managing protection information with a serial attached SCSI expander |
EP2951963B1 (en) | 2013-01-30 | 2019-04-24 | Hewlett-Packard Enterprise Development LP | 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)
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)
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 |
US7539797B2 (en) * | 2003-06-11 | 2009-05-26 | Lsi Corporation | Route aware Serial Advanced Technology Attachment (SATA) Switch |
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 |
-
2004
- 2004-04-12 US US10/822,971 patent/US7360010B2/en active Active
-
2008
- 2008-02-20 US US12/034,561 patent/US20080140881A1/en not_active Abandoned
Patent Citations (11)
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 |
---|---|
US20040205288A1 (en) | 2004-10-14 |
US7360010B2 (en) | 2008-04-15 |
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 | |
JP5828966B2 (en) | Method, apparatus, system, and storage medium for realizing packet transmission in a 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 | |
US20030236953A1 (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 | |
US20140047441A1 (en) | Information processing apparatus, virtual machine control method, and program | |
US11722585B2 (en) | Reliable communications using a point to point protocol | |
US7421520B2 (en) | High-speed I/O controller having separate control and data paths | |
US7624324B2 (en) | File control system and file control device | |
US8095862B2 (en) | End-to-end cyclic redundancy check protection for high integrity fiber transfers | |
US7711793B1 (en) | No single point of failure RAID box using SATA drives | |
US9201599B2 (en) | System and method for transmitting data in storage controllers | |
US20050169170A1 (en) | Space-efficient storage command and data routing system and method | |
US7925758B1 (en) | Fibre accelerated pipe data transport |
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 |