WO2016014063A1 - Expander transmission data rate determination - Google Patents

Expander transmission data rate determination Download PDF

Info

Publication number
WO2016014063A1
WO2016014063A1 PCT/US2014/048026 US2014048026W WO2016014063A1 WO 2016014063 A1 WO2016014063 A1 WO 2016014063A1 US 2014048026 W US2014048026 W US 2014048026W WO 2016014063 A1 WO2016014063 A1 WO 2016014063A1
Authority
WO
WIPO (PCT)
Prior art keywords
expander
target
initiator
transmission data
data rate
Prior art date
Application number
PCT/US2014/048026
Other languages
French (fr)
Inventor
Sohail Hameed
Balaji Natrajan
Pruthviraj Herur Puttaiah
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2014/048026 priority Critical patent/WO2016014063A1/en
Publication of WO2016014063A1 publication Critical patent/WO2016014063A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4045Coupling between buses using bus bridges where the bus bridge performs an extender function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Definitions

  • SAS Serial attached SCSI
  • HBA host bus adapter
  • SCSI Small Computer System interface
  • target is generally a device that receives processing requests from initiators and sends responses to the respective initiators.
  • the target may be, for example, an end device such as a SAS hard disk drive, serial ATA (SAT A) hard disk drive, solid state disk (SSD), just a bunch of disks (JBOD), and/or SAS tape drive.
  • the expander is generally an intermediate device that forms part of a service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders, among other functions.
  • FIG. 1 depicts an example system comprising an expander in accordance with an example of the techniques of the present application.
  • FIG. 2 depicts an example flow chart of a process conducted by an expander in accordance with an example of the techniques of the present application.
  • FIG. 3 depicts an example block diagram showing a non-transitory, computer- readable medium that stores instructions for operating an expander in accordance with an example of the techniques of the present application.
  • the SAS technology is generally a point-to-point architecture that transfers data to and from SCSI storage devices by using serial communication.
  • the initiator is generally a device that originates processing requests for a target and receives responses from the target.
  • the initiator may be, for example, a HBA, SAS controller, or other data storage controllers.
  • the target is generally a device that receives processing requests from initiators and sends responses to the respective initiators.
  • the target may be, for example, an end device such as a SAS hard disk drive, SATA hard disk drive, SSD, JBOD, and/or SAS tape drive.
  • the expander is generally an intermediate device that forms part of the service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders, among other functions. Stated differently, the expander is a device that functions as a switch and scales the number of targets attached to an initiator, thereby generating a larger SAS domain or fabric.
  • a SAS domain or fabric refers to a data or storage network for interconnecting SAS devices such as targets, expanders and initiators in accordance with SAS protocol or specification.
  • an expander is generally an intermediate device that forms part of the service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders. More specifically, the expander may establish connections between initiators, targets, and/or other expanders by receiving commands and routing these commands and/or data associated therewith based on the SAS address of the target.
  • the expanders may include buffers to provide buffering for commands and data received from other devices such as initiators, other expanders and targets. These buffering techniques may help manage or optimize bandwidth usage between initiators with high transmission data rates and targets with low transmission data rates. Transmission data rates may refer to the transmission speed of data transmitted between two end device points such as between expanders and targets.
  • This buffering technique is sometimes referred to as edge buffering techniques in accordance with SAS protocol or specification.
  • an end expander may be configured or required to support higher speed processing compared to the target that is connected to the expander.
  • some expanders may be embedded or integrated in an end storage product and hence the target and expander may all be configured to transmit or run at the same transmission data rate or speed.
  • a JBOD may include a plurality of expanders which may support disk drives configured to operate with a bandwidth up to a certain maximum transmission data rate or speed.
  • new generation high speed initiators may be connected to old or legacy low speed JBODS which may cause a reduction in the transmission data rate of the high speed initiators.
  • edge buffering techniques may not be applicable because the transmission data rate of the expander in the JBOD may not support the transmission data rate of the initiator side fabric speeds.
  • a SAS fabric may include a high transmission data rate (high speed) expander, such as 12 Gigabit per second (Gbps) speed which is in turn connected to a low transmission data rate expander (low speed) such as 6 Gbps speed.
  • the high speed expander may be connected to a high transmission data rate initiator (high speed) such as 12 Gbps speed.
  • high speed high transmission data rate initiator
  • the high speed initiator attempts to establish a connection with a low transmission data rate target, such as 6 Gbps
  • the overall connection speed or transmission data rate may be reduced resulting in overall speed of 6 Gbps.
  • transactions and transmission of data over the fabric may occur at this lower transmission data rate or speed.
  • the edge buffering techniques may improve the transmission data rate because the 6 Gbps target is attached to the 6 Gbps expander and the speed difference exists between the expanders on the Intermediate" path and not at the "edge".
  • techniques are disclosed to allow connection of higher speed SAS fabric or devices to a lower speed SAS fabric or devices by providing intermediate buffering at the speed boundary, in some examples, techniques are disclosed that allow connection of relatively low speed devices to higher speed devices in a SAS fabric while reducing the need for higher speed devices and expanders to transmit at lower speeds thereby improving bandwidth usage, in other examples, these techniques may allow legacy devices such as JBODs with low- transmission data rates, which may operate or transmit at slower speeds, to be connected and operate with newer generation higher transmission data rate devices (such as expander, switches and controllers) to improve overall bandwidth usage or performance.
  • legacy devices such as JBODs with low- transmission data rates, which may operate or transmit at slower speeds
  • an expander with a buffer to store data includes a management module configured to respond to receipt of a DISCOVER command from an initiator for discovery cause the expander to determine devices connected to the expander. If the management module of the expander determines that transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then it sends a response to the initiator indicating that the target operates at a higher transmission data rate than the transmission data rate indicated by the target. Otherwise, the management module is configured to send a message to the initiator indicating that the target operates at the transmission data rate indicated by the target. The management module is configured to respond to receipt of an OPEN command from the initiator to open a communication connection with the target.
  • the management module of the expander determines that transmission data rate indicated by the initiator is higher than transmission data rate indicated by the target, then it stores in the buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target.
  • the management module is configured to transmit the data stored in the buffer to the target at a transmission data rate indicated by the target.
  • the management module of the expander is to communicate with the target through another expander wherein the transmission data rate of the expander is higher than transmission data of the other expander.
  • the present application provides techniques to allow connection of relatively low speed devices to higher speed devices in a SAS fabric while helping to reduce the need to have higher speed devices and expanders transmit at lower speeds thereby help improve overall bandwidth usage or performance.
  • Fig. 1 depicts an example system 100 comprising an expander in accordance with an example of the techniques of the present application.
  • the system 100 comprises an initiator 104 coupled to a target 1 10 through a first expander 106 and a second expander 108.
  • the system 100 comprises a SAS fabric or network of SAS devices including initiator 104, first expander 106, second expander 108, and target 1 10 all interconnected to communicate using SAS based protocols.
  • system 100 is a generalized illustration and that other elements may be added or existing elements may be removed, modified, or rearranged without departing from the scope of the present application.
  • FIG. 1 includes first expander 106 connected to second expander 108, it should be understood that the system may comprise more or less expanders or other components.
  • system 100 depicted in Fig. 1 includes initiator 104 coupled to target 1 10, it should be understood that the system may comprise more or less such components.
  • the initiator 104 may be or include, for example, HBAs, SAS controllers, or other types of data storage controllers.
  • the initiator 104 may have multiple ports for connection to internal and/or external targets.
  • Each initiator port may have a single physical link (e.g., a narrow port) or two, four, or eight physical links (e.g., a wide port), in a SAS domain, initiator 104 may include Serial SCSI Protocoi (SSP), Serial ATA Tunneling Protocoi (STP), and/or Serial Management Protocol (SMP) initiator ports.
  • SSP Serial SCSI Protocoi
  • STP Serial ATA Tunneling Protocoi
  • SMP Serial Management Protocol
  • the initiator 104 may generally function to originate processing requests for target 1 10 and/or to receive responses from the targets.
  • initiator 104 may originate device-service and task-management requests for processing by target 1 10, and receive responses for the same requests from the targets.
  • initiator 104 may be connected directly to target 1 10 or indirectly via first expander 106 and second expander 108. Such connection may be made or established via, e.g., physical links consisting of two wire pairs connecting the transmitter of a PHY in one device (e.g., the initiator 104) to the receiver of a PHY of other devices (e.g., first expander 106, second expander 108).
  • the initiator 104 may be configured as a SAS initiator that operates in accordance with SAS protocol or specification.
  • the target 1 10 may be or include, for example, end devices such as storage drives such as SAS hard disk drives, SATA hard disk drives, SSD, JBODs, or SAS tape drives.
  • the target 1 10 may include logical units and target ports that receive device service and task management requests for processing and send responses for the same to initiator 104.
  • target 1 10 may be connected directly to initiator 104 or indirectly via expanders 106, 108.
  • the target 1 10 may be configured as a SAS target that operates in accordance with SAS protocol or specification.
  • the first expander 108 (as well as second expander 108) may be, for example, a SAS expander that operates in accordance with SAS protocol or specification.
  • the first expander 106 may form part of the service delivery subsystem and facilitate communication between initiator 104, target 1 10, and/or expander 108. More particularly, first expander 106 may establish connections between initiator 104, target 1 10, and/or second expander 108 by receiving commands and data in one port and routing them to another port based on the address (e.g., SAS address) of target 1 10.
  • address e.g., SAS address
  • the first expander 106 (as well as second expander 108) may use direct, table, and/or subtractive routing processes.
  • the direct routing may be used to forward commands and/or data to targets directly attached to first expander 106.
  • the table routing may be used to forward commands and/or data to another expander such as second expander 108.
  • the subtractive routing may be used to forward commands and/or data which the expander does not recognize to another such as second expander 108 which does recognize the information.
  • the first expander 106 may include a buffer 1 14 to store data and a management module 1 12 to management operation of the first expander.
  • management module 1 12 may be implemented in hardware, software, or a combination of both.
  • management module 1 12 may comprise instructions executable by a processing device (e.g., a SEP) to cause first expander 106 to perform functionality discussed herein.
  • management module 1 12 may comprise a hardware equivalent such as an application specific integrated circuit (ASIC), a logic device (e.g., PLD, CPLD, FPGA. PLA. PAL, GAL, etc.), or combination thereof.
  • ASIC application specific integrated circuit
  • the management module 1 12 may include functionality to control the operation of first expander 106 and to communicate over a 8A8 fabric with other devices such as initiator 104 and target 1 10.
  • management module 1 12 may be implemented in software and may comprise instructions executable by a processing device to cause first expander 106 to perform functionality discussed herein.
  • first expander 106 may be configured to include a management module 1 12 along with a buffer 1 14 to allow connection of relatively low speed devices to high speed devices in a SAS fabric while reducing the need to cause high speed devices and expanders to transmit at low speeds thereby improving bandwidth usage.
  • these techniques may allow legacy JBODs with low transmission data rates, which may operate or transmit at slow speeds, to operate with newer generation higher transmission data rate devices (such as expander, switches and controllers), which may operate at high speeds, to improve overall bandwidth usage.
  • the buffer 1 14 may include any means for storage and retrieval of data.
  • buffer 1 14 may include non-volatile memory, volatile memory or a combination thereof.
  • the management module 1 12 may include functionality configured to manage operation of first expander 106 including communication with initiator 104 and second expander 108 and other devices over a SAS fabric. In one example, management module 1 12 may respond to receipt of a DISCOVER command from an initiator for discovery. In one example, the DISCOVER command is a SAS command in accordance with SAS protocol to cause expander 106 to determine devices connected to the expander and the other expander 108. if expander 106 determines that transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then it sends a response to the initiator indicating that the target operates at a higher transmission data rate than the transmission data rate indicated by the target. Otherwise, management module 1 12 sends a message to initiator 104 indicating that target 1 10 operates at the transmission data rate indicated by the target.
  • the management module 1 12 may include functionality configured to receive and respond to an OPEN command from initiator 104 to open a communication connection with target 1 10. If management module 1 12 determines that transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then it stores in buffer 1 14 data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target. The management module 1 12 is configured to transmit the data stored in buffer 1 14 to target 1 10 at a transmission data rate indicated by the target.
  • management module 1 12 of first expander 106 is to communicate with target 1 10 through another expander, such as second expander 108 wherein the transmission data rate of first expander 106 is higher than transmission data of the other second expander 108.
  • first expander 106 is configured to communicate with target 1 10 and initiator 104 over a SAS fabric in accordance with SAS protocol.
  • the OPEN command is a SAS command in accordance with SAS protocol to cause first expander 106 to communicate with target 1 10 through the other second expander 108.
  • the term communication or communication connection may include the exchange of commands and data between devices such initiator 104 and first expander 106.
  • the present application provides techniques to allow connection of relatively low speed devices to high speed devices in a SAS fabric while reducing the need to have high speed devices and expanders transmit at low speeds thereby help improve overall bandwidth usage.
  • system 100 of Fig. 1 shows an example SAS fabric and it should be understood that other configurations may be employed to practice the techniques of the present application.
  • system 100 may be configured to include a switch- expander device (which itself may include expanders) coupled between initiators and other expanders which in turn are coupled to targets.
  • the components of system 100 may be integrated in one enclosure or a plurality of enclosures located in one location or distributed over remote locations.
  • Fig. 2 depicts an example flow chart 200 of a process conducted by an expander in accordance with an example of the techniques of the present application.
  • process 200 is conducted by management module 1 12.
  • the process depicted in Fig. 2 represents generalized illustrations, and that other processes may be added or existing processes may be removed, modified, or rearranged without departing from the scope and spirit of the techniques of the present application, in addition, if should be understood that the processes may represent instructions stored on a processor-readable storage medium that, when executed, may cause a processor to respond, to perform actions, to change states, and/or to make decisions.
  • the processes may represent functions and/or actions performed by functionally equivalent circuits like analog circuits, digital signal processing circuits, application specific integrated circuits (ASICs), or other hardware components associated with an expander.
  • ASICs application specific integrated circuits
  • the flow charts are not intended to limit the implementation of the present application, but rather the flow charts illustrate functional information that one skilled in the art could use to design/fabricate circuits, generate software, or use a combination of hardware and software to perform the illustrated processes.
  • process 200 of Fig. 1 is implemented with system 100 of Fig. 1 .
  • initiator 104 is configured to communicate with a transmission data rate or speed of 12 Gbps (high speed)
  • first expander 106 is configured to operate or communicate at a transmission or transfer data rate or speed of 12 Gbps (high speed)
  • second expander 108 is configured to operate or communicate at a transmission data rate or speed of 6 Gbps (low speed)
  • target 1 1 0 is configured to operate or communicate at a transmission data rate or speed of 6 Gbps (low speed).
  • first expander 108 is designated as a high speed intermediate expander at a speed boundary and includes buffer 1 14 configured for bandwidth matching with other devices over the fabric.
  • second expander 108 is designated as a low speed intermediate expander at the speed boundary and is configured with regular buffers associated with PHYs of the expander.
  • first expander 106 includes N L number of PHYs and each PHY has bi. bytes of buffer space, which provides total buffer space of N L times bi.. Furthermore, if there are N number of PHYs used to link first expander 106 to second expander 108 over the fabric, then the size of the dedicated buffer required at each of the N PHYs for the high speed intermediate expander 106 is: (N [_*bL.)/N . For example, to illustrate, if there are 10 PHYs associates or included with low speed second expander 108, and each PHY is associated with a 40k buffer, then the low speed expander 108 provides a total of 400 kilobyte (KB) buffer space.
  • process 200 is implemented by management module 1 12 of first high speed expander 106. it should be understood that the techniques of the present application applicable to first expander 106 may be equally applicable to second expander 108.
  • the process 200 may begin at block 202, where management module 1 12 checks whether it has received a DISCOVER command from initiator 104, if management module 1 12 (first high speed expander 106) does not receive the DISCOVER command, then processing proceeds to terminate processing at End block.
  • the DISCOVER command is a SAS command in accordance with SAS protocol to cause first expander 106 to determine devices connected to the expander and the other second expander 108, for example, in another example, processing may proceed back to block 202 to have management module 1 12 continue to check for receipt of the DISCOVER command or other command from initiator 104.
  • management module 1 12 receives the DISCOVER command, then processing proceeds to block 204 as described below. In this case, it may be assumed that management module 1 12 receives the DISCOVER command and processing proceeds to block 204 as described below.
  • management module 1 12 determines whether transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10. if management module 1 12 determines that the transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then processing proceed to block 206 as described below, in this case, it may be assumed that initiator 104 is configured as high speed device (12 Gbps) and target 1 10 is configured as low speed device (6 Gbps) and therefore processing proceeds to block 206 as described below. On the other hand, if management module 1 12 determines that the transmission data rate indicated by initiator 104 is not higher than transmission data rate indicated by target 1 10, then processing proceeds to block 208 as described below.
  • management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at a higher transmission data rate than the transmission data rate indicated by the target, in this case, target 1 10 indicates that it is configured as low speed device (6 Gbps).
  • the management module 1 12 proceeds to send a response to initiator 104 indicating that target 1 10 operates at a higher transmission data rate, such as a high speed device (12 Gbps), than the transmission data rate indicated by the target which is a low speed device (6 Gbps). Processing then proceeds to block 210.
  • management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at the transmission data rate indicated by the target.
  • target 1 10 may indicate that it is configured as a high speed device (12 Gbps).
  • management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at the transmission data rate, such as 12 Gbps which is the transmission data rate indicated by the target, in this manner, initiator 104 may communicate with target 1 10 at a high speed consistent with the high speed of initiator. Processing then proceeds to block 210.
  • management moduie 1 12 checks whether it has received an OPEN command from initiator 104. If management module 1 12 does not receive the OPEN command, then processing terminates and proceeds to the End block, in another example, processing may proceed back to block 210 to have the management module 1 12 continue checking for receipt of the OPEN command or other command. On the other hand, if management module 1 12 receives the OPEN command, then processing proceeds to block 212 as described below. In this case, it may be assumed that management module 1 12 receives the OPEN command and processing proceeds to block 212 as described below, in one example, management module 1 12 of first expander 108 is configured to communicate with target 1 10 and initiator 104 over a SAS fabric in accordance with SAS protocol.
  • the OPEN command is a SAS command in accordance with SAS protocol to cause first expander 106 to communicate with target 1 10 through the other second expander 108.
  • management moduie 1 12 in response receipt of the OPEN command from initiator 104 and after data received from the initiator is stored in buffer 1 14, management moduie 1 12 is configured to further send a CLOSE command to the initiator to close the communication connection between the initiator and the target. In this case, management module 1 12 is configured to then send an OPEN command to target 1 10 to open a communication connection between first expander 106 and the target.
  • management module 1 12 determines whether transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10. If management moduie 1 12 determines that the transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target, then processing proceed to biock 214 as described below. In the example above, it was assumed that initiator 104 indicated a transmission data rate of 12 Gbps and was designated as a high speed device. Furthermore, in the example above, it was assumed that target 1 10 indicated a transmission data rate of 6 Gbps and was designated as a low speed device.
  • management module 1 12 determines that the transmission data rate indicated by initiator 104 is high speed (12 Gbps) and is higher than transmission data rate indicated by target which is low speed (6 Gbps), then processing proceed to block 214 as described below, [00033]
  • management module 1 12 stores in buffer 1 14 data received from initiator 104 that is intended for target 1 10 and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target.
  • the data from initiator 104 is received at a higher transmission data rate (12 Gbps) than the transmission data rate indicated by the target (6 Gbps).
  • the data is stored in buffer 1 14 for subsequent processing at block 216 below.
  • management module 1 12 transmits the data stored in buffer 1 14 to target 1 10 at a transmission data rate indicated by the target, in one example, first expander 106 communicates with target 1 10 through another expander, in this case, second expander 108, wherein the transmission data rate of first expander 106 (12 Gbps) is higher than transmission data of second expander 108 (6 Gbps). in one example, processing then terminates and proceeds to End block, in another example, processing may proceed back to block 202 to process other commands or perform other functions.
  • first speed expander 106 may be configured as a high speed device (12 Gbps) and may receive an OPEN command from high speed initiator 104 (12 Gbps) to communicate with low speed target (6 Gbps). In this case, first expander 106 intercepts the OPEN command and responds to initiator 104 with an ACCEPT message in accordance with SAS protocol. In this case, high speed initiator 104 transmits commands and data at high speed (12 Gbps) speeds which is then buffered in buffer 1 14 of high speed first expander 106 (12 Gbps). The first expander 106 executes a CLOSE function or command in accordance with SAS protocol to close the connection between the first expander 106 and initiator 104 before sending out the response.
  • first expander 106 begins to transmit commands and data to target 1 10 at low transmission data rates of 6 Gbps. This process may make space available at buffer 1 14 to allow the buffer to accumulate more data from high speed initiator 104.
  • the first expander 106 receives a response back from target 1 10.
  • the first high speed expander 106 (12 Gbps) proceeds to generate or execute an OPEN function or command to establish another connection with high speed initiator 104 (12 Gbps) and then the expander proceeds to forward or deliver the response to the initiator.
  • the first high speed expander 108 (12 Gbps) receives a response back from target 1 10 and then the expander delivers or returns the response back to initiator 104.
  • management module 1 12 of first high speed expander 106 may be free or available to generate or execute an OPEN function or command to establish other communication connections with other targets while waiting for a response from low speed target 1 10 (8 Gbps). In this manner, these techniques may allow for improved or optimal use of the bandwidth between high speed initiator 104 (12 Gbps) and high speed expand 106 (12 Gbps).
  • first high speed expander 106 may generate or execute a CLOSE function or command to close the connection between high speed initiator 104 and itself (expander 106) so that the initiator may continue to utilize that connection or link to establish other communication connection or links directed to other targets. Further, first high speed expander 106 (12 Gbps) may not have to wait to receive the entire amount of data from initiator 104 before proceeding to transmit or forward the data to target 1 10.
  • the first expander 106 proceeds to transmit or forward commands and data out to target 1 10 as soon as the expander starts to receive the commands and data from the initiator. These techniques may help to improve the transmission data rate or provide a speed boost and to allow the buffers of the expander to be free or have space available to allow more processing of data.
  • the present application provides techniques to allow connection of relatively low speed devices, such as legacy target devices, to newer generation higher speed devices, such as expanders and initiators, in a SAS fabric while helping to reduce the need to have higher speed devices and expanders transmit at lower speeds thereby help improve overall bandwidth usage.
  • Fig. 3 is an example block diagram showing a non-transitory, computer- readable medium that stores code for operating an expander in accordance with an example of the techniques of the present application.
  • the non-transitory, computer- readable medium is generally referred to by the reference number 300 and may be included in management module 1 12 described in relation to Fig. 1 .
  • the non-transitory, computer-readable medium 300 may correspond to any typical storage device that stores computer-implemented instructions, such as programming code or the iike.
  • the non-transitory, computer-readable medium 300 may include one or more of a non-volatile memory, a volatile memory, and/or one or more storage devices.
  • non-volatile memory examples include, but are not limited to, electrically erasable programmable read only memory (EEPROM) and read only memory (ROM).
  • volatile memory examples include, but are not limited to, static random access memory (SRAM), and dynamic random access memory (DRAM).
  • SRAM static random access memory
  • DRAM dynamic random access memory
  • storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical drives, and flash memory devices.
  • a processor 302 generally retrieves and executes the instructions stored in the non-transitory, computer-readable medium 300 to operate an expander in accordance with an example of the techniques of the present application.
  • the tangible, machine-readable medium 300 may be accessed by a processor 302 over a bus 304.
  • a first region 306 of the non-transitory, computer-readable medium 300 may include management module functionality as described herein.
  • a second region 308 of the non-transitory, computer-readable medium 300 may include buffer for use with management module functionality as described herein.
  • the software components may be stored in any order or configuration.
  • the non-transitory, computer- readable medium 300 is a hard drive
  • the software components may be stored in noncontiguous, or even overlapping, sectors

Abstract

If an expander determines transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then send a message to the initiator indicating that the target operates at a higher transmission rate than the transmission rate indicated by the target, else send a response to the initiator indicating that the target operates at the transmission rate indicated by the target. If the expander determines that transmission rate indicated by the initiator is higher than transmission rate indicated by the target, store in the buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission rate than the transmission data rate indicated by the target, and transmit the data stored in the buffer to the target at a transmission rate indicated by the target.

Description

EXPANDER T ANSMISSION DATA RATE DETERMINATION
BACKGROUND
[0001] Serial attached SCSI (SAS) Is generally a point-to-point architecture that transfers data to and from small computer system interface (SCSI ) storage devices by using serial communication. In a SAS storage environment, there are typically three types of SAS devices: initiator devices, targets, and expanders. The initiator is generally a device that originates processing requests for a target and receives responses from the target. The initiator may be, for example, a host bus adapter (HBA), SAS controller, or other data storage controller. The target is generally a device that receives processing requests from initiators and sends responses to the respective initiators. The target may be, for example, an end device such as a SAS hard disk drive, serial ATA (SAT A) hard disk drive, solid state disk (SSD), just a bunch of disks (JBOD), and/or SAS tape drive. The expander is generally an intermediate device that forms part of a service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders, among other functions.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Examples are described in the following detailed description and in reference to the drawings, in which:
[0003] Fig. 1 depicts an example system comprising an expander in accordance with an example of the techniques of the present application.
[0004] Fig. 2 depicts an example flow chart of a process conducted by an expander in accordance with an example of the techniques of the present application.
[0005] Fig. 3 depicts an example block diagram showing a non-transitory, computer- readable medium that stores instructions for operating an expander in accordance with an example of the techniques of the present application.
DETAILED DESCRIPTION
[0006] The SAS technology is generally a point-to-point architecture that transfers data to and from SCSI storage devices by using serial communication. In a SAS storage environment, there are typically three types of SAS devices: initiators, targets, and expanders. The initiator is generally a device that originates processing requests for a target and receives responses from the target. The initiator may be, for example, a HBA, SAS controller, or other data storage controllers. The target is generally a device that receives processing requests from initiators and sends responses to the respective initiators. The target may be, for example, an end device such as a SAS hard disk drive, SATA hard disk drive, SSD, JBOD, and/or SAS tape drive. The expander is generally an intermediate device that forms part of the service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders, among other functions. Stated differently, the expander is a device that functions as a switch and scales the number of targets attached to an initiator, thereby generating a larger SAS domain or fabric. A SAS domain or fabric refers to a data or storage network for interconnecting SAS devices such as targets, expanders and initiators in accordance with SAS protocol or specification.
[0007] As mentioned in the foregoing, an expander is generally an intermediate device that forms part of the service delivery subsystem and facilitates communication between initiators, targets, and/or other expanders. More specifically, the expander may establish connections between initiators, targets, and/or other expanders by receiving commands and routing these commands and/or data associated therewith based on the SAS address of the target.
[0008] The expanders may include buffers to provide buffering for commands and data received from other devices such as initiators, other expanders and targets. These buffering techniques may help manage or optimize bandwidth usage between initiators with high transmission data rates and targets with low transmission data rates. Transmission data rates may refer to the transmission speed of data transmitted between two end device points such as between expanders and targets. This buffering technique is sometimes referred to as edge buffering techniques in accordance with SAS protocol or specification. For edge buffering techniques to be employed in a SAS fabric, an end expander may be configured or required to support higher speed processing compared to the target that is connected to the expander. However, some expanders may be embedded or integrated in an end storage product and hence the target and expander may all be configured to transmit or run at the same transmission data rate or speed. For example, a JBOD may include a plurality of expanders which may support disk drives configured to operate with a bandwidth up to a certain maximum transmission data rate or speed. However, new generation high speed initiators may be connected to old or legacy low speed JBODS which may cause a reduction in the transmission data rate of the high speed initiators. In this case, edge buffering techniques may not be applicable because the transmission data rate of the expander in the JBOD may not support the transmission data rate of the initiator side fabric speeds. [0009] For example, a SAS fabric may include a high transmission data rate (high speed) expander, such as 12 Gigabit per second (Gbps) speed which is in turn connected to a low transmission data rate expander (low speed) such as 6 Gbps speed. Furthermore, the high speed expander may be connected to a high transmission data rate initiator (high speed) such as 12 Gbps speed. In this case, if the high speed initiator attempts to establish a connection with a low transmission data rate target, such as 6 Gbps, the overall connection speed or transmission data rate may be reduced resulting in overall speed of 6 Gbps. In other words, transactions and transmission of data over the fabric may occur at this lower transmission data rate or speed. The edge buffering techniques may improve the transmission data rate because the 6 Gbps target is attached to the 6 Gbps expander and the speed difference exists between the expanders on the Intermediate" path and not at the "edge".
[00010] In some examples of the present application, techniques are disclosed to allow connection of higher speed SAS fabric or devices to a lower speed SAS fabric or devices by providing intermediate buffering at the speed boundary, in some examples, techniques are disclosed that allow connection of relatively low speed devices to higher speed devices in a SAS fabric while reducing the need for higher speed devices and expanders to transmit at lower speeds thereby improving bandwidth usage, in other examples, these techniques may allow legacy devices such as JBODs with low- transmission data rates, which may operate or transmit at slower speeds, to be connected and operate with newer generation higher transmission data rate devices (such as expander, switches and controllers) to improve overall bandwidth usage or performance.
[00011] In one example of the techniques the present application, disclosed is an expander with a buffer to store data. The expander includes a management module configured to respond to receipt of a DISCOVER command from an initiator for discovery cause the expander to determine devices connected to the expander. If the management module of the expander determines that transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then it sends a response to the initiator indicating that the target operates at a higher transmission data rate than the transmission data rate indicated by the target. Otherwise, the management module is configured to send a message to the initiator indicating that the target operates at the transmission data rate indicated by the target. The management module is configured to respond to receipt of an OPEN command from the initiator to open a communication connection with the target. If the management module of the expander determines that transmission data rate indicated by the initiator is higher than transmission data rate indicated by the target, then it stores in the buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target. The management module is configured to transmit the data stored in the buffer to the target at a transmission data rate indicated by the target. The management module of the expander is to communicate with the target through another expander wherein the transmission data rate of the expander is higher than transmission data of the other expander.
[00012] In this manner, the present application provides techniques to allow connection of relatively low speed devices to higher speed devices in a SAS fabric while helping to reduce the need to have higher speed devices and expanders transmit at lower speeds thereby help improve overall bandwidth usage or performance.
[00013] Fig. 1 depicts an example system 100 comprising an expander in accordance with an example of the techniques of the present application. The system 100 comprises an initiator 104 coupled to a target 1 10 through a first expander 106 and a second expander 108. The system 100 comprises a SAS fabric or network of SAS devices including initiator 104, first expander 106, second expander 108, and target 1 10 all interconnected to communicate using SAS based protocols. It should be understood that system 100 is a generalized illustration and that other elements may be added or existing elements may be removed, modified, or rearranged without departing from the scope of the present application. For example, while system 100 depicted in Fig. 1 includes first expander 106 connected to second expander 108, it should be understood that the system may comprise more or less expanders or other components. Similarly, while system 100 depicted in Fig. 1 includes initiator 104 coupled to target 1 10, it should be understood that the system may comprise more or less such components.
[00014] The initiator 104 may be or include, for example, HBAs, SAS controllers, or other types of data storage controllers. The initiator 104 may have multiple ports for connection to internal and/or external targets. Each initiator port may have a single physical link (e.g., a narrow port) or two, four, or eight physical links (e.g., a wide port), in a SAS domain, initiator 104 may include Serial SCSI Protocoi (SSP), Serial ATA Tunneling Protocoi (STP), and/or Serial Management Protocol (SMP) initiator ports. The initiator 104 may generally function to originate processing requests for target 1 10 and/or to receive responses from the targets. In one example, initiator 104 may originate device-service and task-management requests for processing by target 1 10, and receive responses for the same requests from the targets. Depending on the implementation, initiator 104 may be connected directly to target 1 10 or indirectly via first expander 106 and second expander 108. Such connection may be made or established via, e.g., physical links consisting of two wire pairs connecting the transmitter of a PHY in one device (e.g., the initiator 104) to the receiver of a PHY of other devices (e.g., first expander 106, second expander 108). The initiator 104 may be configured as a SAS initiator that operates in accordance with SAS protocol or specification.
[00015] The target 1 10 may be or include, for example, end devices such as storage drives such as SAS hard disk drives, SATA hard disk drives, SSD, JBODs, or SAS tape drives. The target 1 10 may include logical units and target ports that receive device service and task management requests for processing and send responses for the same to initiator 104. As mentioned above, depending on the implementation, target 1 10 may be connected directly to initiator 104 or indirectly via expanders 106, 108. The target 1 10 may be configured as a SAS target that operates in accordance with SAS protocol or specification.
[00016] The first expander 108 (as well as second expander 108) may be, for example, a SAS expander that operates in accordance with SAS protocol or specification. The first expander 106 may form part of the service delivery subsystem and facilitate communication between initiator 104, target 1 10, and/or expander 108. More particularly, first expander 106 may establish connections between initiator 104, target 1 10, and/or second expander 108 by receiving commands and data in one port and routing them to another port based on the address (e.g., SAS address) of target 1 10.
[00017] The first expander 106 (as well as second expander 108) may use direct, table, and/or subtractive routing processes. The direct routing may be used to forward commands and/or data to targets directly attached to first expander 106. The table routing may be used to forward commands and/or data to another expander such as second expander 108. The subtractive routing may be used to forward commands and/or data which the expander does not recognize to another such as second expander 108 which does recognize the information.
[00018] The first expander 106 (as well as second expander 108) may include a buffer 1 14 to store data and a management module 1 12 to management operation of the first expander. Depending on the implementation, management module 1 12 may be implemented in hardware, software, or a combination of both. For example, management module 1 12 may comprise instructions executable by a processing device (e.g., a SEP) to cause first expander 106 to perform functionality discussed herein. Alternatively or in addition, management module 1 12 may comprise a hardware equivalent such as an application specific integrated circuit (ASIC), a logic device (e.g., PLD, CPLD, FPGA. PLA. PAL, GAL, etc.), or combination thereof. The management module 1 12 may include functionality to control the operation of first expander 106 and to communicate over a 8A8 fabric with other devices such as initiator 104 and target 1 10. For example, management module 1 12 may be implemented in software and may comprise instructions executable by a processing device to cause first expander 106 to perform functionality discussed herein.
[00019] In some examples of the present application, first expander 106 may be configured to include a management module 1 12 along with a buffer 1 14 to allow connection of relatively low speed devices to high speed devices in a SAS fabric while reducing the need to cause high speed devices and expanders to transmit at low speeds thereby improving bandwidth usage. In other examples, these techniques may allow legacy JBODs with low transmission data rates, which may operate or transmit at slow speeds, to operate with newer generation higher transmission data rate devices (such as expander, switches and controllers), which may operate at high speeds, to improve overall bandwidth usage. The buffer 1 14 may include any means for storage and retrieval of data. For example, buffer 1 14 may include non-volatile memory, volatile memory or a combination thereof.
[00020] The management module 1 12 may include functionality configured to manage operation of first expander 106 including communication with initiator 104 and second expander 108 and other devices over a SAS fabric. In one example, management module 1 12 may respond to receipt of a DISCOVER command from an initiator for discovery. In one example, the DISCOVER command is a SAS command in accordance with SAS protocol to cause expander 106 to determine devices connected to the expander and the other expander 108. if expander 106 determines that transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then it sends a response to the initiator indicating that the target operates at a higher transmission data rate than the transmission data rate indicated by the target. Otherwise, management module 1 12 sends a message to initiator 104 indicating that target 1 10 operates at the transmission data rate indicated by the target.
[00021] The management module 1 12 may include functionality configured to receive and respond to an OPEN command from initiator 104 to open a communication connection with target 1 10. If management module 1 12 determines that transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then it stores in buffer 1 14 data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target. The management module 1 12 is configured to transmit the data stored in buffer 1 14 to target 1 10 at a transmission data rate indicated by the target. In one example, management module 1 12 of first expander 106 is to communicate with target 1 10 through another expander, such as second expander 108 wherein the transmission data rate of first expander 106 is higher than transmission data of the other second expander 108. In one example, first expander 106 is configured to communicate with target 1 10 and initiator 104 over a SAS fabric in accordance with SAS protocol. In one example, the OPEN command is a SAS command in accordance with SAS protocol to cause first expander 106 to communicate with target 1 10 through the other second expander 108. The term communication or communication connection may include the exchange of commands and data between devices such initiator 104 and first expander 106.
[00022] In this manner, the present application provides techniques to allow connection of relatively low speed devices to high speed devices in a SAS fabric while reducing the need to have high speed devices and expanders transmit at low speeds thereby help improve overall bandwidth usage.
[00023] The system 100 of Fig. 1 shows an example SAS fabric and it should be understood that other configurations may be employed to practice the techniques of the present application. For example, system 100 may be configured to include a switch- expander device (which itself may include expanders) coupled between initiators and other expanders which in turn are coupled to targets. In another example, the components of system 100 may be integrated in one enclosure or a plurality of enclosures located in one location or distributed over remote locations.
[00024] Fig. 2 depicts an example flow chart 200 of a process conducted by an expander in accordance with an example of the techniques of the present application. In some implementations, such process 200 is conducted by management module 1 12. It should be understood that the process depicted in Fig. 2 represents generalized illustrations, and that other processes may be added or existing processes may be removed, modified, or rearranged without departing from the scope and spirit of the techniques of the present application, in addition, if should be understood that the processes may represent instructions stored on a processor-readable storage medium that, when executed, may cause a processor to respond, to perform actions, to change states, and/or to make decisions. Alternatively, the processes may represent functions and/or actions performed by functionally equivalent circuits like analog circuits, digital signal processing circuits, application specific integrated circuits (ASICs), or other hardware components associated with an expander. Furthermore, the flow charts are not intended to limit the implementation of the present application, but rather the flow charts illustrate functional information that one skilled in the art could use to design/fabricate circuits, generate software, or use a combination of hardware and software to perform the illustrated processes.
[00025] To illustrate operation, in one example, it may be assumed that process 200 of Fig. 1 is implemented with system 100 of Fig. 1 . it may be further assumed that initiator 104 is configured to communicate with a transmission data rate or speed of 12 Gbps (high speed), first expander 106 is configured to operate or communicate at a transmission or transfer data rate or speed of 12 Gbps (high speed), second expander 108 is configured to operate or communicate at a transmission data rate or speed of 6 Gbps (low speed), and target 1 1 0 is configured to operate or communicate at a transmission data rate or speed of 6 Gbps (low speed). It may be further assumed that first expander 108 is designated as a high speed intermediate expander at a speed boundary and includes buffer 1 14 configured for bandwidth matching with other devices over the fabric. It may be further assumed that second expander 108 is designated as a low speed intermediate expander at the speed boundary and is configured with regular buffers associated with PHYs of the expander.
[00026] In one example, first expander 106 includes N L number of PHYs and each PHY has bi. bytes of buffer space, which provides total buffer space of N L times bi.. Furthermore, if there are N number of PHYs used to link first expander 106 to second expander 108 over the fabric, then the size of the dedicated buffer required at each of the N PHYs for the high speed intermediate expander 106 is: (N [_*bL.)/N . For example, to illustrate, if there are 10 PHYs associates or included with low speed second expander 108, and each PHY is associated with a 40k buffer, then the low speed expander 108 provides a total of 400 kilobyte (KB) buffer space. Furthermore, if it is assumed that first high speed expander 106 and second low speed expander 108 are linked or connected together over 4 PHYs, then the high speed expander will have about 400KB/4 = 100KB buffer dedicated to the individual PHYs for this purpose. It may be assumed that process 200 is implemented by management module 1 12 of first high speed expander 106. it should be understood that the techniques of the present application applicable to first expander 106 may be equally applicable to second expander 108. [00027] The process 200 may begin at block 202, where management module 1 12 checks whether it has received a DISCOVER command from initiator 104, if management module 1 12 (first high speed expander 106) does not receive the DISCOVER command, then processing proceeds to terminate processing at End block. In one example, the DISCOVER command is a SAS command in accordance with SAS protocol to cause first expander 106 to determine devices connected to the expander and the other second expander 108, for example, in another example, processing may proceed back to block 202 to have management module 1 12 continue to check for receipt of the DISCOVER command or other command from initiator 104. On the other hand, if management module 1 12 receives the DISCOVER command, then processing proceeds to block 204 as described below. In this case, it may be assumed that management module 1 12 receives the DISCOVER command and processing proceeds to block 204 as described below.
[00028] At block 204, management module 1 12 determines whether transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10. if management module 1 12 determines that the transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10, then processing proceed to block 206 as described below, in this case, it may be assumed that initiator 104 is configured as high speed device (12 Gbps) and target 1 10 is configured as low speed device (6 Gbps) and therefore processing proceeds to block 206 as described below. On the other hand, if management module 1 12 determines that the transmission data rate indicated by initiator 104 is not higher than transmission data rate indicated by target 1 10, then processing proceeds to block 208 as described below.
[00029] At block 208, management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at a higher transmission data rate than the transmission data rate indicated by the target, in this case, target 1 10 indicates that it is configured as low speed device (6 Gbps). The management module 1 12 proceeds to send a response to initiator 104 indicating that target 1 10 operates at a higher transmission data rate, such as a high speed device (12 Gbps), than the transmission data rate indicated by the target which is a low speed device (6 Gbps). Processing then proceeds to block 210.
[00030] At block 208, management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at the transmission data rate indicated by the target. In another example, to illustrate, target 1 10 may indicate that it is configured as a high speed device (12 Gbps). In this case, management module 1 12 sends a response to initiator 104 indicating that target 1 10 operates at the transmission data rate, such as 12 Gbps which is the transmission data rate indicated by the target, in this manner, initiator 104 may communicate with target 1 10 at a high speed consistent with the high speed of initiator. Processing then proceeds to block 210.
[00031] At biock 210, management moduie 1 12 checks whether it has received an OPEN command from initiator 104. If management module 1 12 does not receive the OPEN command, then processing terminates and proceeds to the End block, in another example, processing may proceed back to block 210 to have the management module 1 12 continue checking for receipt of the OPEN command or other command. On the other hand, if management module 1 12 receives the OPEN command, then processing proceeds to block 212 as described below. In this case, it may be assumed that management module 1 12 receives the OPEN command and processing proceeds to block 212 as described below, in one example, management module 1 12 of first expander 108 is configured to communicate with target 1 10 and initiator 104 over a SAS fabric in accordance with SAS protocol. In one example, the OPEN command is a SAS command in accordance with SAS protocol to cause first expander 106 to communicate with target 1 10 through the other second expander 108. In another example, in response receipt of the OPEN command from initiator 104 and after data received from the initiator is stored in buffer 1 14, management moduie 1 12 is configured to further send a CLOSE command to the initiator to close the communication connection between the initiator and the target. In this case, management module 1 12 is configured to then send an OPEN command to target 1 10 to open a communication connection between first expander 106 and the target.
[00032] At block 212, management module 1 12 determines whether transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target 1 10. If management moduie 1 12 determines that the transmission data rate indicated by initiator 104 is higher than transmission data rate indicated by target, then processing proceed to biock 214 as described below. In the example above, it was assumed that initiator 104 indicated a transmission data rate of 12 Gbps and was designated as a high speed device. Furthermore, in the example above, it was assumed that target 1 10 indicated a transmission data rate of 6 Gbps and was designated as a low speed device. Therefore, management module 1 12 determines that the transmission data rate indicated by initiator 104 is high speed (12 Gbps) and is higher than transmission data rate indicated by target which is low speed (6 Gbps), then processing proceed to block 214 as described below, [00033] At block 214, management module 1 12 stores in buffer 1 14 data received from initiator 104 that is intended for target 1 10 and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target. In this case, the data from initiator 104 is received at a higher transmission data rate (12 Gbps) than the transmission data rate indicated by the target (6 Gbps). In this case, the data is stored in buffer 1 14 for subsequent processing at block 216 below.
[00034] At block 216, management module 1 12 transmits the data stored in buffer 1 14 to target 1 10 at a transmission data rate indicated by the target, in one example, first expander 106 communicates with target 1 10 through another expander, in this case, second expander 108, wherein the transmission data rate of first expander 106 (12 Gbps) is higher than transmission data of second expander 108 (6 Gbps). in one example, processing then terminates and proceeds to End block, in another example, processing may proceed back to block 202 to process other commands or perform other functions.
[00035] It should be understood that the above process is one example of the techniques of the present example and that other implementations may be employed to practice the techniques of the present application.
[00036] In another example, first speed expander 106 may be configured as a high speed device (12 Gbps) and may receive an OPEN command from high speed initiator 104 (12 Gbps) to communicate with low speed target (6 Gbps). In this case, first expander 106 intercepts the OPEN command and responds to initiator 104 with an ACCEPT message in accordance with SAS protocol. In this case, high speed initiator 104 transmits commands and data at high speed (12 Gbps) speeds which is then buffered in buffer 1 14 of high speed first expander 106 (12 Gbps). The first expander 106 executes a CLOSE function or command in accordance with SAS protocol to close the connection between the first expander 106 and initiator 104 before sending out the response.
[00037] While management module 1 12 of first high speed expander (12 Gbps) performs the above process, if may generate or execute an OPEN function or command to establish a communication connection with low speed target (6 Gbps) over one of the links of the expander, in one example, first expander 106 begins to transmit commands and data to target 1 10 at low transmission data rates of 6 Gbps. This process may make space available at buffer 1 14 to allow the buffer to accumulate more data from high speed initiator 104. The first expander 106 receives a response back from target 1 10. The first high speed expander 106 (12 Gbps) proceeds to generate or execute an OPEN function or command to establish another connection with high speed initiator 104 (12 Gbps) and then the expander proceeds to forward or deliver the response to the initiator. The first high speed expander 108 (12 Gbps) receives a response back from target 1 10 and then the expander delivers or returns the response back to initiator 104.
[00038] In one example, during the above process, management module 1 12 of first high speed expander 106 (12 Gbps) may be free or available to generate or execute an OPEN function or command to establish other communication connections with other targets while waiting for a response from low speed target 1 10 (8 Gbps). In this manner, these techniques may allow for improved or optimal use of the bandwidth between high speed initiator 104 (12 Gbps) and high speed expand 106 (12 Gbps).
[00039] In some examples, the techniques of the present application implemented in the above process may provide for improved speed or performance as a result of buffering data to buffer 1 14 of first high speed expander 106. For example, first high speed expander 106 (12 Gbps) may generate or execute a CLOSE function or command to close the connection between high speed initiator 104 and itself (expander 106) so that the initiator may continue to utilize that connection or link to establish other communication connection or links directed to other targets. Further, first high speed expander 106 (12 Gbps) may not have to wait to receive the entire amount of data from initiator 104 before proceeding to transmit or forward the data to target 1 10. The first expander 106 proceeds to transmit or forward commands and data out to target 1 10 as soon as the expander starts to receive the commands and data from the initiator. These techniques may help to improve the transmission data rate or provide a speed boost and to allow the buffers of the expander to be free or have space available to allow more processing of data.
[00040] In this manner, the present application provides techniques to allow connection of relatively low speed devices, such as legacy target devices, to newer generation higher speed devices, such as expanders and initiators, in a SAS fabric while helping to reduce the need to have higher speed devices and expanders transmit at lower speeds thereby help improve overall bandwidth usage.
[00041] Fig. 3 is an example block diagram showing a non-transitory, computer- readable medium that stores code for operating an expander in accordance with an example of the techniques of the present application. The non-transitory, computer- readable medium is generally referred to by the reference number 300 and may be included in management module 1 12 described in relation to Fig. 1 . The non-transitory, computer-readable medium 300 may correspond to any typical storage device that stores computer-implemented instructions, such as programming code or the iike. For example, the non-transitory, computer-readable medium 300 may include one or more of a non-volatile memory, a volatile memory, and/or one or more storage devices. Examples of non-volatile memory include, but are not limited to, electrically erasable programmable read only memory (EEPROM) and read only memory (ROM). Examples of volatile memory include, but are not limited to, static random access memory (SRAM), and dynamic random access memory (DRAM). Examples of storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical drives, and flash memory devices.
[00042] A processor 302 generally retrieves and executes the instructions stored in the non-transitory, computer-readable medium 300 to operate an expander in accordance with an example of the techniques of the present application. In an example, the tangible, machine-readable medium 300 may be accessed by a processor 302 over a bus 304. A first region 306 of the non-transitory, computer-readable medium 300 may include management module functionality as described herein. A second region 308 of the non-transitory, computer-readable medium 300 may include buffer for use with management module functionality as described herein.
[00043] Although shown as contiguous blocks, the software components may be stored in any order or configuration. For example, if the non-transitory, computer- readable medium 300 is a hard drive, the software components may be stored in noncontiguous, or even overlapping, sectors
[00044] The foregoing describes a novel and previously unforeseen approach to expander transmission data rate determination. While the above application has been shown and described with reference to the foregoing examples, it should be understood that other forms, details, and implementations may be made without departing from the spirit and scope of the application.

Claims

WHAT IS CLAIMED IS:
1. An expander comprising:
a buffer to store data; and
a management module to:
in response to receipt of a DISCOVER command from an initiator for discovery, if the expander determines that transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then send a response to the initiator indicating that the target operates at a higher
transmission data rate than the transmission data rate indicated by the target, else send a message to the initiator indicating that the target operates at the transmission data rate indicated by the target, and
in response to receipt of an OPEN command from the initiator to open a communication connection with the target, if the expander determines that transmission data rate indicated by the initiator is higher than transmission data rate indicated by the target, store in the buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target, and transmit the data stored in the buffer to the target at a transmission data rate indicated by the target, wherein the expander is to communicate with the target through another expander wherein the transmission data rate of the expander is higher than transmission data of the other expander.
2. The expander of claim 1 , wherein in response to the OPEN command from the initiator and after data received from the initiator is stored in the buffer, the management module further to send a CLOSE command to the initiator to close the communication connection between the initiator and the target, and then send an OPEN command to the target to open a communication connection between the expander and the target.
3. The expander of claim 1 , wherein the expander is to communicate with the target and initiator over a Serial Attached SCSI (SAS) fabric in accordance with SAS protocol.
4. The expander of claim 1 , wherein the OPEN command is a Serial Attached SCSI (SAS) command in accordance with SAS protocol to cause the expander to
communicate with the target through the other expander.
5. The expander of claim 1 , wherein the DISCOVER command is a Serial Attached SCSI (SAS) command in accordance with SAS protocol to cause the expander to determine devices connected to the expander and the other expander.
6. A method for an expander, the method comprising:
in response to receipt of a DISCOVER command from an initiator for discovery, if the expander determines that transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then sending a response to the initiator indicating that the target operates at a higher
transmission data rate than the transmission data rate indicated by the target, else sending a response to the initiator indicating that the target operates at the transmission data rate indicated by the target; and
in response to receipt of an OPEN command from the initiator to open a communication connection with the target, if the expander determines that transmission data rate indicated by the initiator is higher than transmission data rate indicated by the target, then storing in a buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target, and transmitting the data stored in the buffer to the target at a transmission data rate indicated by the target, wherein the expander communicates with the target through another expander wherein the transmission data rate of the expander is higher than transmission data of the other expander.
7. The method of claim 6, wherein in response to the OPEN command from the initiator and after data received from the initiator is stored in the buffer, further sending a CLOSE command to the initiator to close the communication connection between the initiator and the target, and then sending an OPEN command to the target to open a communication connection between the expander and the target.
8. The method of claim 6, wherein the expander communicating with the target and initiator over a Serial Attached SCSI (SAS) fabric in accordance with SAS protocol.
9. The method of claim 6, wherein the OPEN command is a Seriai Attached SCSI (SAS) command in accordance with SAS protocol to cause the expander to communicate with the target through the other expander.
10. The method of claim 6, wherein the DISCOVER command is a Serial Attached SCSI (SAS) command in accordance with SAS protocol to cause the expander to determine devices connected to the expander and the other expander.
1 1 . A non-transitory computer-readable medium having computer executable
instructions stored thereon to operate an expander, the instructions are executable by a processor to:
in response to receipt of a DISCOVER command from an initiator for discovery, if the expander determines that transmission data rate indicated by an initiator is higher than transmission data rate indicated by a target, then send a response to the initiator indicating that the target operates at a higher transmission data rate than the
transmission data rate indicated by the target, else send a response to the initiator indicating that the target operates at the transmission data rate indicated by the target; and
in response to receipt of an OPEN command from the initiator to open a communication connection with the target, if the expander determines that transmission data rate indicated by the initiator is higher than transmission data rate indicated by the target, then store in a buffer data received from the initiator that is intended for the target and that is received from the initiator at a higher transmission data rate than the transmission data rate indicated by the target, and transmit the data stored in the buffer to the target at a transmission data rate indicated by the target, wherein the expander is to communicate with the target through another expander wherein the transmission data rate of the expander is higher than transmission data of the other expander.
12. The non-transitory computer-readable medium of claim 1 1 , further comprising instructions that if executed cause a processor to, in response to the OPEN command from the initiator and after data received from the initiator is stored in the buffer, send a CLOSE command to the initiator to close the communication connection between the initiator and the target, and then send an OPEN command to the target to open a communication connection between the expander and the target.
13. The non-transitory computer-readable medium of claim 1 1 further comprising instructions that if executed cause a processor to cause the expander to communicate with the target and initiator over a Serial Attached SCSI (SAS) fabric in accordance with SAS protocol.
14. The non-transitory computer-readable medium of claim 1 1 further comprising instructions that if executed cause a processor to cause the expander to process the OPEN command which is a Serial Attached SCSI (SAS) command in accordance with SAS protocol and to cause the expander to communicate with the target through the other expander.
15. The non-transitory computer-readable medium of claim 1 1 further comprising instructions that if executed cause a processor to cause the expander to process the DISCOVER command which is a Serial Attached SCSI (SAS) command in accordance with SAS protocol and to cause the expander to determine devices connected to the expander and the other expander.
PCT/US2014/048026 2014-07-24 2014-07-24 Expander transmission data rate determination WO2016014063A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2014/048026 WO2016014063A1 (en) 2014-07-24 2014-07-24 Expander transmission data rate determination

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/048026 WO2016014063A1 (en) 2014-07-24 2014-07-24 Expander transmission data rate determination

Publications (1)

Publication Number Publication Date
WO2016014063A1 true WO2016014063A1 (en) 2016-01-28

Family

ID=55163447

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/048026 WO2016014063A1 (en) 2014-07-24 2014-07-24 Expander transmission data rate determination

Country Status (1)

Country Link
WO (1) WO2016014063A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080155163A1 (en) * 2006-12-22 2008-06-26 Siliconstor, Inc. Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US20110022736A1 (en) * 2009-07-21 2011-01-27 Lsi Corporation Methods and apparatus dynamic management of multiplexed phys in a serial attached scsi domain
US20120054403A1 (en) * 2010-08-25 2012-03-01 Lsi Corporation Methods and apparatus for improved serial advanced technology attachment performance
US20120192038A1 (en) * 2011-01-20 2012-07-26 Byungcheol Cho Sas-based semiconductor storage device memory disk unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080155163A1 (en) * 2006-12-22 2008-06-26 Siliconstor, Inc. Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US20110022736A1 (en) * 2009-07-21 2011-01-27 Lsi Corporation Methods and apparatus dynamic management of multiplexed phys in a serial attached scsi domain
US20120054403A1 (en) * 2010-08-25 2012-03-01 Lsi Corporation Methods and apparatus for improved serial advanced technology attachment performance
US20120192038A1 (en) * 2011-01-20 2012-07-26 Byungcheol Cho Sas-based semiconductor storage device memory disk unit

Similar Documents

Publication Publication Date Title
US10540307B1 (en) Providing an active/active front end by coupled controllers in a storage system
US20230359400A1 (en) Data Access Method, Apparatus, and System
US20160124880A1 (en) Methods and systems for accessing storage using a network interface card
CN103793347B (en) The method and structure of the SAS expander of the routing property of its port of self-configuring
US8924610B1 (en) SAS/SATA store-and-forward buffering for serial-attached-SCSI (SAS) storage network
KR101200998B1 (en) Hybrid raid controller having multi pci bus switching
KR101209920B1 (en) Ssd memory system
JP2011023016A5 (en)
KR101266572B1 (en) Methods and apparatus for improved host/initiator utilization in serial advanced technology attachment communication
US8296487B1 (en) SATA pass through port
KR102171716B1 (en) Chained, scalable storage devices
CN110609659A (en) NVMeoF RAID implementation method for executing read command
JP2014154157A5 (en)
CN105007307A (en) Storage control method and system
US20140297910A1 (en) Sas expander
US8589607B1 (en) Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander
KR101196878B1 (en) Hybrid raid controller
KR101200997B1 (en) Raid controller having multi pci bus switching
CN113767360A (en) Termination of non-volatile memory networking messages at driver level
KR101209924B1 (en) Two-way raid controller with programmable host interface for a semiconductor storage device
WO2016014063A1 (en) Expander transmission data rate determination
KR101209923B1 (en) Two-way raid controller for a semiconductor storage device
US10671549B2 (en) Memory system
US8898506B2 (en) Methods and structure for hardware serial advanced technology attachment (SATA) error recovery in a serial attached SCSI (SAS) expander
US8856404B2 (en) Primitive group data encoding in a data storage fabric

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14898229

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14898229

Country of ref document: EP

Kind code of ref document: A1