US20140289437A1 - Expander interrupt processing - Google Patents
Expander interrupt processing Download PDFInfo
- Publication number
- US20140289437A1 US20140289437A1 US13/849,616 US201313849616A US2014289437A1 US 20140289437 A1 US20140289437 A1 US 20140289437A1 US 201313849616 A US201313849616 A US 201313849616A US 2014289437 A1 US2014289437 A1 US 2014289437A1
- Authority
- US
- United States
- Prior art keywords
- mode
- expander
- sas expander
- during
- smp
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims description 49
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000008569 process Effects 0.000 claims abstract description 58
- 238000004891 communication Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 21
- 238000012544 monitoring process Methods 0.000 claims description 11
- 230000007613 environmental effect Effects 0.000 claims description 9
- 239000003999 initiator Substances 0.000 description 28
- 238000007726 management method Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 239000004744 fabric Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000004622 sleep time Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 206010028813 Nausea Diseases 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008693 nausea Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- 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
-
- 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/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0028—Serial attached SCSI [SAS]
Definitions
- SAS Serial attached SCSI
- SATA Serial attached SCSI
- SATA serial ATA
- SSD solid state disk
- JBOD Joint Advanced Technology Attachment
- 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 creating a larger SAS domain.
- FIG. 1 depicts an example system comprising an initiator, an expander, and targets in accordance with an implementation
- FIG. 2 depicts an example flow chart of processes conducted by an expander in accordance with an implementation
- FIG. 3(A) depicts an example timing chart associated with various modes of expander operation in accordance with an implementation
- FIG. 3(B) depicts another example timing chart associated with various modes of expander operation in accordance with an implementation
- FIG. 3(C) depicts yet another example timing chart associated with various modes of expander operation in accordance with an implementation
- FIG. 4 depicts another example flow chart of processes conducted by an expander in accordance with an implementation.
- FIG. 5 depicts a non-transitory processor-readable medium in accordance with an implementation.
- the present disclosure is generally directed to processing interrupts at an expander. More particularly, the present disclosure is generally directed to an intelligent manner for an expander to process interrupts, such as interrupts associated with Serial SCSI Protocol (SSP) and/or Serial Management Protocol (SMP) commands.
- SSP Serial SCSI Protocol
- SMP Serial Management Protocol
- 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 (e.g., Serial SCSI Protocol (SSP) and Serial Management Protocol (SMP) commands) and routing these commands and/or data associated therewith based on the SAS address of the target.
- commands e.g., Serial SCSI Protocol (SSP) and Serial Management Protocol (SMP) commands
- the expander may also conduct lower priority tasks such as monitoring and controlling various environmental subsystem devices (e.g., temperature sensors, fans, and/or power supplies). While the expander may typically handle both the high and low priority tasks without issues, there are instances when the processing of the high priority tasks (e.g., processing interrupts associated with SMP and/or SSP commands) starves out the processing of low priority tasks (e.g., environmental processing). In particular, SMP and SSP commands often require that the corresponding interrupts be processed within a certain time window (e.g., 1 ms), and therefore such commands receive higher priorities than other tasks.
- a certain time window e.g., 1 ms
- I2C Inter-Integrated Circuit
- a SAS expander may enter a first mode of operation where the SAS expander processes interrupts. The SAS expander may then enter a second mode of operation where the SAS expander the processes interrupts for up to a predetermined time period (e.g., 100 mS) before responding to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive) in order to guarantee an execution time slice for lower priority matters.
- a predetermined time period e.g. 100 mS
- RETRY OPEN_REJECT
- a SAS expander may comprise a workload scheduling module to cause the expander to enter a first mode of operation where the expander processes interrupts, and further to enter a second mode of operation where the expander processes interrupts for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message, and where the expander conducts low priority processing functions during the second mode of operation.
- a non-transitory processor readable medium comprises instructions which, when executed, nausea SAS expander to enter a first mode of operation, wherein during the first mode of operation the SAS expander processes at least one of SMP and SSP interrupts, and further cause the SAS expander to enter a second mode of operation, wherein during the second mode of operation the SAS expander processes at least one of SMP and SSP interrupts for up to a predetermined time period before responding to the at least one of SMP and SSP commands with a retry message.
- FIG. 1 depicts an example system 100 in accordance with an implementation.
- the system comprises an initiator 110 , an expander 120 , and a plurality of targets 130 .
- the 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 disclosure.
- the system 100 depicted in FIG. 1 includes only three targets 130 , the system may actually comprise more or less targets or other components.
- the system 100 depicted in FIG. 1 includes only one initiator 110 and one expander 120
- the system 100 may actually comprise a plurality of such components, and only one of each has been shown for brevity.
- the initiator 110 may be, for example, a host bus adapter (HBA). SAS controller, or another type of data storage controller.
- the initiator 110 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).
- the initiator 110 may comprise Serial SCSI Protocol (SSP), Serial ATA Tunneling Protocol (STP), and/or Serial Management Protocol (SMP) initiator ports.
- SSP Serial SCSI Protocol
- STP Serial ATA Tunneling Protocol
- SMP Serial Management Protocol
- the initiator 110 may generally function to originate processing requests for a target 130 and/or to receive responses from the target 130 .
- the initiator 110 may originate device-service and task-management requests for processing by a target 130 , and receive responses for the same requests from the target 130 .
- the initiator 110 may be connected directly to a target 130 or indirectly via an expander 120 .
- Such connection may be made via, e.g., physical links consisting of two wire pairs connecting the transmitter of a PHY in one device (e.g., the initiator 110 ) to the receiver of a PHY in another device (e.g., the expander 120 ).
- the targets 130 may be, for example, end devices such as a SAS hard disk drives, serial ATA (SATA) hard disk drives, solid state disks (SSD). JBODs, or SAS tape drives.
- the targets 130 may include logical units and target ports that receive device service and task management requests for processing and send responses for the same to initiators 110 .
- the target 140 may be connected directly to an initiator 110 or indirectly via an expander 120 .
- the expander 120 may be, for example, a SAS expander.
- the expander 120 may form part of the service delivery subsystem and facilitate communication between initiators 110 , targets 130 , and/or other expanders 120 (not shown). More particularly, the expander 120 may establish connections between initiators 110 , targets 130 , and/or other expanders 120 by receiving commands and data in one port and routing them to another port based on the address (e.g., SAS address) of the target 130 .
- the address e.g., SAS address
- the expander 120 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 the expander 120 .
- the table routing may be used to forward commands and/or data to another expander 120 .
- the subtractive routing may be used to forward commands and/or data which the expander does not recognize to another expander 120 which does recognize the information.
- the expander 120 may monitor and control various environmental subsystem devices such as temperature sensors, fans, and/or power supplies.
- the expander 120 may include a workload scheduling module 140 .
- the workload scheduling module 140 may be implemented in hardware, software, or a combination of both.
- the workload scheduling module 140 may comprise instructions executable by a processing device (e.g., a SEP) to cause the expander 120 to conduct functions discussed herein.
- the workload scheduling module 140 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 workload scheduling module 140 may be configured to, as necessary, hold-off high priority tasks in a SAS expander in order to guarantee execution time slices for lower priority tasks. More particularly, the workload scheduling module 140 may hold off SAS commands such as SSP and/or SMP commands targeting a Storage Enclosure Processor (SEP) in the expander 120 in order to guarantee execution time slices to lower priority tasks such as environmental processing. Among other benefits, this may allow for guaranteed subsystem monitoring and control, which is of course beneficial for enterprise storage environments.
- SAS commands such as SSP and/or SMP commands targeting a Storage Enclosure Processor (SEP) in the expander 120 in order to guarantee execution time slices to lower priority tasks such as environmental processing.
- SEP Storage Enclosure Processor
- FIG. 2 depicts an example flow chart of processes 200 conducted by the expander 120 in accordance with an implementation.
- processes 200 are conducted by the previously-mentioned workload scheduling module 140 .
- FIG. 2 and other flow charts represent 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 present disclosure.
- 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 disclosure, 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.
- the process 200 may begin at block 210 , where the expander enters a first mode of operation.
- the expander freely processes interrupts (e.g., interrupts associated with SSP and SMP commands). Additionally, during the first mode of operation, the expander does not conduct low priority processing functions such as monitoring and controlling temperature sensors, fans, and/or power supplies.
- a task or thread associated with the second mode of operation may be in a sleep state (e.g., “idle task” to be discussed with respect to FIGS. 3(A)-3(C) ).
- the expander enters a second mode of operation where the expander processes interrupts for up to a predetermined time period (e.g., 100 mS) before responding to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive).
- a retry message e.g., an OPEN_REJECT (RETRY) primitive.
- the expander may prevent SMP and/or SSP interrupts from occurring by placing an expander component (e.g., an ASIC) in a RETRY state which causes the expander to respond to SMP and/or SSP commands (e.g., SMP and/or SSP open connection requests) with a retry message.
- an expander component e.g., an ASIC
- SSP commands e.g., SMP and/or SSP open connection requests
- the expander conducts low priority processing functions such as monitoring and controlling temperature sensors, fans, and/or power supplies. Moreover, during the second mode of operation, the expander measures the amount of time utilized processing interrupts, and adjusts the time associated with a subsequent first mode of operation based on the measured time. Furthermore, during the second mode of operation, the expander executes time critical communication protocols (e.g., I2C, SMBUS, and SGPIO), and while executing these time critical communication protocols, responds to SMP and/or SSP commands with a retry message.
- time critical communication protocols e.g., I2C, SMBUS, and SGPIO
- the expander can cycle between the first mode of operation and the second mode of operation based on various timers and predefined and/or configurable settings. For example, the expander can be setup such that the expander enters the second mode of operation every 100 mS. Hence, in situations where there are a large number of interrupts associated with SMP and/or SSP commands that would otherwise prevent or starve out low priority tasks (e.g., during SAS fabric failure mode scenarios), the low priority tasks are still be guaranteed periodic processing time.
- FIG. 3(A) depicts an example timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation.
- the timing chart shows two tasks/threads “running in parallel.”
- the first task is the “SMP/SSP task” 330 , and it depicts whether a SMP/SSP interrupt is being processed (“ISR”) or not being processed (“IDLE).
- the second task is the “idle task” and depicts whether this task is asleep (“SLEEP”), being processed (“PROCESS”), or being interrupted (“INT”).
- SLEEP SMP/SSP interrupt is being processed
- PROCESS being processed
- INT interrupted
- the idle task 340 is in a sleep state and the SMP/SSP task 330 freely processes interrupts, and monitoring and controlling of environmental subsystem devices does not occur.
- monitoring and controlling of environmental subsystem devices may occur, but this processing may be interrupted to process interrupts. If an interrupt does occur, however, the amount of time required to process the interrupt is determined, and this amount of time is subtracted from a subsequent sleep time.
- the expander for the first 100 mS, the expander is in the first mode of operation 310 and the idle task 340 is in the SLEEP state. During this time, interrupts associated with SMP and/or SSP commands are freely processed. Thereafter, for the next 110 mS, the expander is in the second mode of operation 320 , where the idle task is in the PROCESS state and may be interrupted for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message. Moreover, during this second mode of operation, the amount of time spent processing interrupts is recorded, and that amount of time is subtracted from a subsequent idle task sleep buffer. For instance, looking at FIG.
- the idle task 340 processing is interrupted for 10 mS to process an interrupt. This amount of time is recorded, and the subsequent sleep time of idle task would be 10 mS shorter. So, if the idle task sleep buffer is 100 mS as shown in FIG. 3(A) , the subsequent idle task sleep buffer would be 90 mS to compensate for the 10 mS spent processing the interrupt.
- FIG. 3(B) depicts another example timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation.
- FIG. 3(B) is similar to FIG. 3(A) , but depicts an example when the amount of time spent processing interrupts during the second mode of operation 320 exceeds the idle task sleep buffer time (i.e., 100 mS), and therefore the SMP/SSP task 330 enters a RETRY state such that the expander responds to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive) in order to guarantee execution time for low priority tasks.
- RETRY OPEN_REJECT
- the idle task 340 is in a SLEEP state and the SMP/SSP task 330 freely processes interrupts.
- the idle task 340 is in a PROCESS state but may be interrupted for up to the idle task sleep buffer time 100 mS) before SMP and/or SSP commands are responded to with retry messages.
- the idle task is interrupted for 10 mS, 60 mS, and 30 mS to process interrupts.
- the expander transitions the SMP/SSP task 330 to the RETRY state on that further SMP and/or SSP commands are responded to with retry messages, and the expander can conduct low priority processing functions without being interrupted.
- the expander may prevent SMP and/or SSP interrupts from occurring by placing an expander component (e.g., an ASIC) in a RETRY state which causes the expander to respond to SMP and/or SSP commands (e.g., SMP and/or SSP open connection requests) with a retry message.
- an expander component e.g., an ASIC
- SMP and/or SSP commands e.g., SMP and/or SSP open connection requests
- FIG. 3(C) depicts yet another example timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation.
- FIG. 3(C) is similar to FIG. 3(A) , but includes an I2C state for the idle task 340 .
- the I2C state is generally time spent executing a time critical communication protocol with another device which cannot be interrupted and therefore the SMP/SSP task 330 is placed in the RETRY state.
- SMBUS system management bus
- SGPIO serial general purpose input/output
- the idle task 340 is in a SLEEP state and the SMP/SSP task 330 freely processes interrupts.
- the idle task 340 is in a PROCESS state but may be interrupted to process interrupts for up to a certain time period, or to execute a time critical communication protocol (e.g., I2C, SMBUS, SGPIO, etc.).
- a time critical communication protocol e.g., I2C, SMBUS, SGPIO, etc.
- the idle task processes for 20 mS before being interrupted for 10 mS to process a SMP/SSP interrupt. Thereafter the idle task processes for 20 mS before being interrupted to execute a time critical communication protocol for 10 mS.
- the SMP/SSP task 330 enters RETRY mode to keep SMP and/or SSP commands from potentially interrupting the execution of the time critical communication protocol
- the idle task enters the PROCESS state again for 60 mS before entering the SLEEP state.
- FIG. 4 depicts another example flow chart in accordance with an implementation.
- FIG. 4 provides a detailed description of processes 400 conducted with respect to the modes of operation in accordance with an implementation. Similar to FIG. 2 , it should be readily apparent that the processes represent 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 present disclosure.
- the processes may represent instructions stored on machine-readable storage medium that 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 an analog circuit, a digital signal processing circuit, an ASIC, and/or a logic device associated with an expander.
- the process may begin at block 405 , when the expander enters the first mode of operation.
- interrupts associated with SMP/SSP commands may be processed freely, as shown in block 410 .
- the expander may determine if the idle task sleep buffer is complete. If the sleep buffer is not complete, the expander may continue to process SMP/SSP interrupts. If the sleep buffer is complete, the expander may enter the second mode of operation at block 420 , As mentioned above and as shown in block 425 , during the second mode of operation, the expander may conduct low priority processing functions like monitoring and controlling at least one of temperature sensors, fans, and power supplies.
- the expander may processes interrupts for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message.
- the expander may execute time critical communication protocols (e.g., I2C, SMBUS, and SGPIO), and while executing these time critical communication protocols, responds to SMP/SSP commands with a retry message.
- time critical communication protocols e.g., I2C, SMBUS, and SGPIO
- the expander may determine if there is a time critical communication. If the answer is YES, at block 435 , the expander may respond to SMP/SSP commands with a retry message while the time critical communication is being completed. If, on the other hand, the answer is NO, the expander may determine if a SSP/SMP command has been received. If the answer is YES, the expander may process the interrupt for up to a predetermined time (e.g., the amount of time associated with the idle task sleep buffer) before responding to such commands with a retry message. If, on the other hand, the answer is NO, the expander may determine if the idle task process time is complete at block 450 . If the answer is NO, the expander may continue to conduct low priority processing functions. By contrast, if the answer is YES, the expander may re-enter the first mode of operation.
- a predetermined time e.g., the amount of time associated with the idle task sleep buffer
- FIG. 5 depicts an example expander 500 in accordance with an implementation.
- the expander 500 comprises a workload scheduling module 510 among other components such as ports. PHYS, and the like (not shown).
- the workload scheduling module 510 comprises a processing device 520 and a non-transitory processor-readable medium 530 connected via a bus 550 .
- the non-transitory processor-readable medium 530 may comprise workload scheduling instructions 540 , and may correspond to any typical storage device that stores instructions, such as programming code or the like.
- the non-transitory processor-readable medium 530 may include one or more of a non-volatile memory, a volatile memory, and/or a storage device.
- non-volatile memory examples include, but are not limited to, electronically 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).
- storage devices include, but are not limited to, hard disk drives, compact disc drives, digital versatile disc drives, optical devices, and flash memory devices.
- the instructions may be part of an installation package that may be executed by the processing device 520 .
- the non-transitory processor-readable medium 530 may be a portable medium such as a CO ' DVD, or flash drive or a memory maintained by a server from which the installation package can be downloaded and installed.
- the instructions may be part of an application or application already installed.
- the processing device 520 may be at least one of a processor, a central processing unit (CPU), a semiconductor-based microprocessor, a storage enclosure processor (SEP), or the like. It may retrieve and execute instructions such as fetching, decoding, and the like to cause the expander 500 to operate in accordance with the foregoing description. In one example implementation, the processing device 520 may access the workload scheduling instructions 540 on the processor-readable medium 530 via the bus 530 , and execute the instructions 540 to cause the expander 500 to enter a first mode of operation, wherein during the first mode of operation the expander 500 processes at least one of SMP and SSP interrupts.
- the instructions may further cause the expander 500 to enter a second mode of operation, wherein during the second mode of operation the expander 500 processes at least one of SMP and SSP interrupts for up to a predetermined time period before responding to the at least one of SMP and SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive).
- a retry message e.g., an OPEN_REJECT (RETRY) primitive.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
- 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: 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 host bus adapter (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, serial ATA (SATA) hard disk drive, solid state disk (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 creating a larger SAS domain.
- Examples are described in the following detailed description and in reference to the drawings, in which:
-
FIG. 1 depicts an example system comprising an initiator, an expander, and targets in accordance with an implementation; -
FIG. 2 depicts an example flow chart of processes conducted by an expander in accordance with an implementation; -
FIG. 3(A) depicts an example timing chart associated with various modes of expander operation in accordance with an implementation; -
FIG. 3(B) depicts another example timing chart associated with various modes of expander operation in accordance with an implementation; -
FIG. 3(C) depicts yet another example timing chart associated with various modes of expander operation in accordance with an implementation; -
FIG. 4 depicts another example flow chart of processes conducted by an expander in accordance with an implementation; and -
FIG. 5 depicts a non-transitory processor-readable medium in accordance with an implementation. - The present disclosure is generally directed to processing interrupts at an expander. More particularly, the present disclosure is generally directed to an intelligent manner for an expander to process interrupts, such as interrupts associated with Serial SCSI Protocol (SSP) and/or Serial Management Protocol (SMP) commands.
- 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 (e.g., Serial SCSI Protocol (SSP) and Serial Management Protocol (SMP) commands) and routing these commands and/or data associated therewith based on the SAS address of the target.
- In addition to high priority tasks such as routing commands and processing interrupts associated therewith, the expander may also conduct lower priority tasks such as monitoring and controlling various environmental subsystem devices (e.g., temperature sensors, fans, and/or power supplies). While the expander may typically handle both the high and low priority tasks without issues, there are instances when the processing of the high priority tasks (e.g., processing interrupts associated with SMP and/or SSP commands) starves out the processing of low priority tasks (e.g., environmental processing). In particular, SMP and SSP commands often require that the corresponding interrupts be processed within a certain time window (e.g., 1 ms), and therefore such commands receive higher priorities than other tasks. In some situations, when there are a large number of initiators sending SMP and/or SSP commands to the expander at the same time, low priority tasks may be starved out. This often results in Inter-Integrated Circuit (I2C) protocol issues, intermittent false reporting of data issues, and heartbeat timeout issues. These issues are especially common in SAS fabric failure mode scenarios, such as when SMP discovery of an initiator in the fabric becomes trapped in an infinite loop, or when all initiators boot at the same time and flood the expander with commands.
- Various aspects of the present disclosure may address the above-mentioned problems by implementing an intelligent protocol to hold off SAS commands targeting a storage enclosure processor (SEP) in a SAS expander in certain circumstances in order to guarantee execution time slices for lower priority tasks. For instance, in one aspect of the present disclosure, a SAS expander may enter a first mode of operation where the SAS expander processes interrupts. The SAS expander may then enter a second mode of operation where the SAS expander the processes interrupts for up to a predetermined time period (e.g., 100 mS) before responding to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive) in order to guarantee an execution time slice for lower priority matters.
- In another aspect of the present disclosure, a SAS expander may comprise a workload scheduling module to cause the expander to enter a first mode of operation where the expander processes interrupts, and further to enter a second mode of operation where the expander processes interrupts for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message, and where the expander conducts low priority processing functions during the second mode of operation.
- In still another aspect of the present disclosure, a non-transitory processor readable medium comprises instructions which, when executed, nausea SAS expander to enter a first mode of operation, wherein during the first mode of operation the SAS expander processes at least one of SMP and SSP interrupts, and further cause the SAS expander to enter a second mode of operation, wherein during the second mode of operation the SAS expander processes at least one of SMP and SSP interrupts for up to a predetermined time period before responding to the at least one of SMP and SSP commands with a retry message.
-
FIG. 1 depicts anexample system 100 in accordance with an implementation. The system comprises aninitiator 110, anexpander 120, and a plurality oftargets 130. It should be readily apparent that thesystem 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 disclosure. For example, while thesystem 100 depicted inFIG. 1 includes only threetargets 130, the system may actually comprise more or less targets or other components. Similarly, while thesystem 100 depicted inFIG. 1 includes only oneinitiator 110 and one expander 120, thesystem 100 may actually comprise a plurality of such components, and only one of each has been shown for brevity. - The
initiator 110 may be, for example, a host bus adapter (HBA). SAS controller, or another type of data storage controller. Theinitiator 110 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, theinitiator 110 may comprise Serial SCSI Protocol (SSP), Serial ATA Tunneling Protocol (STP), and/or Serial Management Protocol (SMP) initiator ports. Theinitiator 110 may generally function to originate processing requests for atarget 130 and/or to receive responses from thetarget 130. More specifically, theinitiator 110 may originate device-service and task-management requests for processing by atarget 130, and receive responses for the same requests from thetarget 130. Depending on the implementation, theinitiator 110 may be connected directly to atarget 130 or indirectly via anexpander 120. Such connection may be made via, e.g., physical links consisting of two wire pairs connecting the transmitter of a PHY in one device (e.g., the initiator 110) to the receiver of a PHY in another device (e.g., the expander 120). - The
targets 130 may be, for example, end devices such as a SAS hard disk drives, serial ATA (SATA) hard disk drives, solid state disks (SSD). JBODs, or SAS tape drives. Thetargets 130 may include logical units and target ports that receive device service and task management requests for processing and send responses for the same toinitiators 110. As mentioned, depending on the implementation, thetarget 140 may be connected directly to aninitiator 110 or indirectly via anexpander 120. - The
expander 120 may be, for example, a SAS expander. Theexpander 120 may form part of the service delivery subsystem and facilitate communication betweeninitiators 110,targets 130, and/or other expanders 120 (not shown). More particularly, theexpander 120 may establish connections betweeninitiators 110, targets 130, and/orother expanders 120 by receiving commands and data in one port and routing them to another port based on the address (e.g., SAS address) of thetarget 130. - The
expander 120 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 theexpander 120. The table routing may be used to forward commands and/or data to another expander 120. The subtractive routing may be used to forward commands and/or data which the expander does not recognize to anotherexpander 120 which does recognize the information. In addition to routing, theexpander 120 may monitor and control various environmental subsystem devices such as temperature sensors, fans, and/or power supplies. - The
expander 120 may include aworkload scheduling module 140. Depending on the implementation, theworkload scheduling module 140 may be implemented in hardware, software, or a combination of both. For example, theworkload scheduling module 140 may comprise instructions executable by a processing device (e.g., a SEP) to cause theexpander 120 to conduct functions discussed herein. Alternatively or in addition, theworkload scheduling module 140 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
workload scheduling module 140 may be configured to, as necessary, hold-off high priority tasks in a SAS expander in order to guarantee execution time slices for lower priority tasks. More particularly, theworkload scheduling module 140 may hold off SAS commands such as SSP and/or SMP commands targeting a Storage Enclosure Processor (SEP) in theexpander 120 in order to guarantee execution time slices to lower priority tasks such as environmental processing. Among other benefits, this may allow for guaranteed subsystem monitoring and control, which is of course beneficial for enterprise storage environments. -
FIG. 2 depicts an example flow chart ofprocesses 200 conducted by theexpander 120 in accordance with an implementation. In some implementations,such processes 200 are conducted by the previously-mentionedworkload scheduling module 140. It should be readily apparent that the processes depicted inFIG. 2 and other flow charts (e.g.,FIG. 4 ) represent 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 present disclosure. In addition, it 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 disclosure, 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. - The
process 200 may begin atblock 210, where the expander enters a first mode of operation. During this first mode of operation, the expander freely processes interrupts (e.g., interrupts associated with SSP and SMP commands). Additionally, during the first mode of operation, the expander does not conduct low priority processing functions such as monitoring and controlling temperature sensors, fans, and/or power supplies. Furthermore, during this first mode of operation, a task or thread associated with the second mode of operation may be in a sleep state (e.g., “idle task” to be discussed with respect toFIGS. 3(A)-3(C) ). - Thereafter, at
block 220, the expander enters a second mode of operation where the expander processes interrupts for up to a predetermined time period (e.g., 100 mS) before responding to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive). In particular, once the threshold for processing interrupts in the second mode of operation has been met or exceeded, the expander may prevent SMP and/or SSP interrupts from occurring by placing an expander component (e.g., an ASIC) in a RETRY state which causes the expander to respond to SMP and/or SSP commands (e.g., SMP and/or SSP open connection requests) with a retry message. In addition, during the second mode of operation, the expander conducts low priority processing functions such as monitoring and controlling temperature sensors, fans, and/or power supplies. Moreover, during the second mode of operation, the expander measures the amount of time utilized processing interrupts, and adjusts the time associated with a subsequent first mode of operation based on the measured time. Furthermore, during the second mode of operation, the expander executes time critical communication protocols (e.g., I2C, SMBUS, and SGPIO), and while executing these time critical communication protocols, responds to SMP and/or SSP commands with a retry message. - As described in greater detail below, the expander can cycle between the first mode of operation and the second mode of operation based on various timers and predefined and/or configurable settings. For example, the expander can be setup such that the expander enters the second mode of operation every 100 mS. Hence, in situations where there are a large number of interrupts associated with SMP and/or SSP commands that would otherwise prevent or starve out low priority tasks (e.g., during SAS fabric failure mode scenarios), the low priority tasks are still be guaranteed periodic processing time.
-
FIG. 3(A) depicts anexample timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation. In particular, the timing chart shows two tasks/threads “running in parallel.” The first task is the “SMP/SSP task” 330, and it depicts whether a SMP/SSP interrupt is being processed (“ISR”) or not being processed (“IDLE). The second task is the “idle task” and depicts whether this task is asleep (“SLEEP”), being processed (“PROCESS”), or being interrupted (“INT”). As mentioned, when theidle task 340 is executing, low priority tasks are conducted and interrupts are processed for up to a certain amount of time. - As shown in
FIG. 3(A) , during the first mode ofoperation 310, theidle task 340 is in a sleep state and the SMP/SSP task 330 freely processes interrupts, and monitoring and controlling of environmental subsystem devices does not occur. By contrast, during the second mode ofoperation 320, monitoring and controlling of environmental subsystem devices may occur, but this processing may be interrupted to process interrupts. If an interrupt does occur, however, the amount of time required to process the interrupt is determined, and this amount of time is subtracted from a subsequent sleep time. - For example, referring to
FIG. 3(A) , for the first 100 mS, the expander is in the first mode ofoperation 310 and theidle task 340 is in the SLEEP state. During this time, interrupts associated with SMP and/or SSP commands are freely processed. Thereafter, for the next 110 mS, the expander is in the second mode ofoperation 320, where the idle task is in the PROCESS state and may be interrupted for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message. Moreover, during this second mode of operation, the amount of time spent processing interrupts is recorded, and that amount of time is subtracted from a subsequent idle task sleep buffer. For instance, looking atFIG. 3(A) theidle task 340 processing is interrupted for 10 mS to process an interrupt. This amount of time is recorded, and the subsequent sleep time of idle task would be 10 mS shorter. So, if the idle task sleep buffer is 100 mS as shown inFIG. 3(A) , the subsequent idle task sleep buffer would be 90 mS to compensate for the 10 mS spent processing the interrupt. -
FIG. 3(B) depicts anotherexample timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation. In particular,FIG. 3(B) is similar toFIG. 3(A) , but depicts an example when the amount of time spent processing interrupts during the second mode ofoperation 320 exceeds the idle task sleep buffer time (i.e., 100 mS), and therefore the SMP/SSP task 330 enters a RETRY state such that the expander responds to SMP and/or SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive) in order to guarantee execution time for low priority tasks. - More particularly, during the first mode of
operation 310, theidle task 340 is in a SLEEP state and the SMP/SSP task 330 freely processes interrupts. By contrast, during the second mode ofoperation 320, theidle task 340 is in a PROCESS state but may be interrupted for up to the idle tasksleep buffer time 100 mS) before SMP and/or SSP commands are responded to with retry messages. InFIG. 3(B) , the idle task is interrupted for 10 mS, 60 mS, and 30 mS to process interrupts. Because the total time spent processing interrupts (i.e., 100 mS) equals the idle task sleep buffer time (i.e., 100 mS), the expander transitions the SMP/SSP task 330 to the RETRY state on that further SMP and/or SSP commands are responded to with retry messages, and the expander can conduct low priority processing functions without being interrupted. As mentioned above, once the threshold for processing interrupts in the second mode of operation has been met or exceeded, the expander may prevent SMP and/or SSP interrupts from occurring by placing an expander component (e.g., an ASIC) in a RETRY state which causes the expander to respond to SMP and/or SSP commands (e.g., SMP and/or SSP open connection requests) with a retry message. -
FIG. 3(C) depicts yet anotherexample timing chart 300 associated with the above-mentioned first 310 and second 320 mode of operation in accordance with an implementation. In particular,FIG. 3(C) is similar toFIG. 3(A) , but includes an I2C state for theidle task 340. The I2C state is generally time spent executing a time critical communication protocol with another device which cannot be interrupted and therefore the SMP/SSP task 330 is placed in the RETRY state. It should be understood that while the I2C communication protocol is shown inFIG. 3(C) , other time critical communication protocols may be included such as system management bus (SMBUS) and serial general purpose input/output (SGPIO). - More particularly, during the first mode of
operation 310, theidle task 340 is in a SLEEP state and the SMP/SSP task 330 freely processes interrupts. By contrast, during the second mode ofoperation 320, theidle task 340 is in a PROCESS state but may be interrupted to process interrupts for up to a certain time period, or to execute a time critical communication protocol (e.g., I2C, SMBUS, SGPIO, etc.). For example and as shown, the idle task processes for 20 mS before being interrupted for 10 mS to process a SMP/SSP interrupt. Thereafter the idle task processes for 20 mS before being interrupted to execute a time critical communication protocol for 10 mS. During this 10 mS the SMP/SSP task 330 enters RETRY mode to keep SMP and/or SSP commands from potentially interrupting the execution of the time critical communication protocol Once complete, the idle task enters the PROCESS state again for 60 mS before entering the SLEEP state. -
FIG. 4 depicts another example flow chart in accordance with an implementation. In particular,FIG. 4 provides a detailed description of processes 400 conducted with respect to the modes of operation in accordance with an implementation. Similar toFIG. 2 , it should be readily apparent that the processes represent 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 present disclosure. In addition, it should be understood that the processes may represent instructions stored on machine-readable storage medium that may cause a processor to respond, to perform actions, to change states, and/or to make decisions. Alternatively or in addition, the processes may represent functions and/or actions performed by functionally equivalent circuits like an analog circuit, a digital signal processing circuit, an ASIC, and/or a logic device associated with an expander. - The process may begin at
block 405, when the expander enters the first mode of operation. As mentioned above, during the first mode of operation, interrupts associated with SMP/SSP commands may be processed freely, as shown inblock 410. Atblock 415, the expander may determine if the idle task sleep buffer is complete. If the sleep buffer is not complete, the expander may continue to process SMP/SSP interrupts. If the sleep buffer is complete, the expander may enter the second mode of operation atblock 420, As mentioned above and as shown inblock 425, during the second mode of operation, the expander may conduct low priority processing functions like monitoring and controlling at least one of temperature sensors, fans, and power supplies. In addition, during the second mode of operation, the expander may processes interrupts for up to a predetermined time period before responding to SMP and/or SSP commands with a retry message. Moreover, the expander may execute time critical communication protocols (e.g., I2C, SMBUS, and SGPIO), and while executing these time critical communication protocols, responds to SMP/SSP commands with a retry message. - For example, at
block 430, the expander may determine if there is a time critical communication. If the answer is YES, atblock 435, the expander may respond to SMP/SSP commands with a retry message while the time critical communication is being completed. If, on the other hand, the answer is NO, the expander may determine if a SSP/SMP command has been received. If the answer is YES, the expander may process the interrupt for up to a predetermined time (e.g., the amount of time associated with the idle task sleep buffer) before responding to such commands with a retry message. If, on the other hand, the answer is NO, the expander may determine if the idle task process time is complete atblock 450. If the answer is NO, the expander may continue to conduct low priority processing functions. By contrast, if the answer is YES, the expander may re-enter the first mode of operation. -
FIG. 5 depicts anexample expander 500 in accordance with an implementation. Theexpander 500 comprises aworkload scheduling module 510 among other components such as ports. PHYS, and the like (not shown). Theworkload scheduling module 510 comprises aprocessing device 520 and a non-transitory processor-readable medium 530 connected via abus 550. The non-transitory processor-readable medium 530 may comprise workload scheduling instructions 540, and may correspond to any typical storage device that stores instructions, such as programming code or the like. For example, the non-transitory processor-readable medium 530 may include one or more of a non-volatile memory, a volatile memory, and/or a storage device. Examples of non-volatile memory include, but are not limited to, electronically 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 devices, and flash memory devices. In some implementations, the instructions may be part of an installation package that may be executed by theprocessing device 520. In this case, the non-transitory processor-readable medium 530 may be a portable medium such as a CO' DVD, or flash drive or a memory maintained by a server from which the installation package can be downloaded and installed. In another implementation, the instructions may be part of an application or application already installed. - The
processing device 520 may be at least one of a processor, a central processing unit (CPU), a semiconductor-based microprocessor, a storage enclosure processor (SEP), or the like. It may retrieve and execute instructions such as fetching, decoding, and the like to cause theexpander 500 to operate in accordance with the foregoing description. In one example implementation, theprocessing device 520 may access the workload scheduling instructions 540 on the processor-readable medium 530 via the bus 530, and execute the instructions 540 to cause theexpander 500 to enter a first mode of operation, wherein during the first mode of operation theexpander 500 processes at least one of SMP and SSP interrupts. The instructions may further cause theexpander 500 to enter a second mode of operation, wherein during the second mode of operation theexpander 500 processes at least one of SMP and SSP interrupts for up to a predetermined time period before responding to the at least one of SMP and SSP commands with a retry message (e.g., an OPEN_REJECT (RETRY) primitive). - The foregoing describes a novel and previously unforeseen approach to guarantee processing time at an expander for low priority tasks such as monitoring and controlling environmental subsystem devices. While the above disclosure 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 disclosure that is defined in the following claims.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/849,616 US9135193B2 (en) | 2013-03-25 | 2013-03-25 | Expander interrupt processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/849,616 US9135193B2 (en) | 2013-03-25 | 2013-03-25 | Expander interrupt processing |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140289437A1 true US20140289437A1 (en) | 2014-09-25 |
US9135193B2 US9135193B2 (en) | 2015-09-15 |
Family
ID=51570000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/849,616 Expired - Fee Related US9135193B2 (en) | 2013-03-25 | 2013-03-25 | Expander interrupt processing |
Country Status (1)
Country | Link |
---|---|
US (1) | US9135193B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150032928A1 (en) * | 2013-07-23 | 2015-01-29 | International Business Machines Corporation | Optimized redundant high availability sas topology |
US20150370739A1 (en) * | 2014-06-23 | 2015-12-24 | Lsi Corporation | Local reconnection attempts for serial attached small computer system interface expanders |
CN109828938A (en) * | 2018-12-13 | 2019-05-31 | 山东亚华电子股份有限公司 | A kind of communication means and device based on chip |
US20220161744A1 (en) * | 2019-04-12 | 2022-05-26 | Harman International Industries, Incorporated | Elastic computing for in-vehicle computing systems |
US20240095019A1 (en) * | 2019-11-29 | 2024-03-21 | Inspur Electronic Information Industry Co., Ltd. | Out-of-band updating method and system of expander |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10210114B2 (en) * | 2014-08-01 | 2019-02-19 | Universiti Teknologi Malaysia | Interrupt-driven I/O arbiter for a microcomputer system |
CN107179896A (en) * | 2016-03-09 | 2017-09-19 | 阿里巴巴集团控股有限公司 | Task processing method and device |
US10614012B2 (en) * | 2018-01-09 | 2020-04-07 | Microsemi Storage Solutions, Inc. | System and method for controlling the performance of serial attached SCSI (SAS) target devices |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393508B2 (en) * | 1997-09-30 | 2002-05-21 | Texas Instruments Incorporated | Method and apparatus for multiple tier intelligent bus arbitration on a PCI to PCI bridge |
US20050010706A1 (en) * | 2003-06-26 | 2005-01-13 | Samsung Electronics Co., Ltd. | Dynamic bus arbitration method and bus arbiter |
US20060200607A1 (en) * | 2005-03-01 | 2006-09-07 | Subramaniam Ganasan Jaya P | Bus access arbitration scheme |
US20060235937A1 (en) * | 2005-04-18 | 2006-10-19 | Dell Products L.P. | System and method for processing commands in a storage enclosure |
US20070143515A1 (en) * | 2005-12-21 | 2007-06-21 | Arm Limited | Interrupt controller utilising programmable priority values |
US20080077721A1 (en) * | 2006-09-26 | 2008-03-27 | Sony Computer Entertainment Inc. | Methods And Apparatus For Dynamic Grouping Of Requestors Of Resources In A Multi-Processor System |
US20120317324A1 (en) * | 2011-06-10 | 2012-12-13 | Lsi Corporation | Firmware-driven multiple virtual sas expanders on a single expander hardware component |
US20140143464A1 (en) * | 2011-09-21 | 2014-05-22 | Hewlett-Packard Development Company, L.P. | Sas expander |
US20140164670A1 (en) * | 2012-12-10 | 2014-06-12 | Lsi Corporation | Structure for non-blocking serial attached scsi infrastructure utilizing virtual pathways |
US20140244875A1 (en) * | 2013-02-25 | 2014-08-28 | Lsi Corporation | Priority Based Connection Arbitration in a SAS Topology to Facilitate Quality of Service (QoS) in SAS Transport |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7778960B1 (en) | 2005-10-20 | 2010-08-17 | American Megatrends, Inc. | Background movement of data between nodes in a storage cluster |
US7536508B2 (en) | 2006-06-30 | 2009-05-19 | Dot Hill Systems Corporation | System and method for sharing SATA drives in active-active RAID controller system |
US8239655B2 (en) | 2010-01-18 | 2012-08-07 | Vmware, Inc. | Virtual target addressing during direct data access via VF of IO storage adapter |
-
2013
- 2013-03-25 US US13/849,616 patent/US9135193B2/en not_active Expired - Fee Related
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393508B2 (en) * | 1997-09-30 | 2002-05-21 | Texas Instruments Incorporated | Method and apparatus for multiple tier intelligent bus arbitration on a PCI to PCI bridge |
US20050010706A1 (en) * | 2003-06-26 | 2005-01-13 | Samsung Electronics Co., Ltd. | Dynamic bus arbitration method and bus arbiter |
US7096293B2 (en) * | 2003-06-26 | 2006-08-22 | Samsung Electronics Co., Ltd. | Dynamic bus arbitration method and bus arbiter |
US7249210B2 (en) * | 2005-03-01 | 2007-07-24 | Qualcomm Incorporated | Bus access arbitration scheme |
US20060200607A1 (en) * | 2005-03-01 | 2006-09-07 | Subramaniam Ganasan Jaya P | Bus access arbitration scheme |
US20060235937A1 (en) * | 2005-04-18 | 2006-10-19 | Dell Products L.P. | System and method for processing commands in a storage enclosure |
US7797394B2 (en) * | 2005-04-18 | 2010-09-14 | Dell Products L.P. | System and method for processing commands in a storage enclosure |
US20070143515A1 (en) * | 2005-12-21 | 2007-06-21 | Arm Limited | Interrupt controller utilising programmable priority values |
US20080077721A1 (en) * | 2006-09-26 | 2008-03-27 | Sony Computer Entertainment Inc. | Methods And Apparatus For Dynamic Grouping Of Requestors Of Resources In A Multi-Processor System |
US20120317324A1 (en) * | 2011-06-10 | 2012-12-13 | Lsi Corporation | Firmware-driven multiple virtual sas expanders on a single expander hardware component |
US8527685B2 (en) * | 2011-06-10 | 2013-09-03 | Lsi Corporation | Firmware-driven multiple virtual SAS expanders on a single expander hardware component |
US20140143464A1 (en) * | 2011-09-21 | 2014-05-22 | Hewlett-Packard Development Company, L.P. | Sas expander |
US20140164670A1 (en) * | 2012-12-10 | 2014-06-12 | Lsi Corporation | Structure for non-blocking serial attached scsi infrastructure utilizing virtual pathways |
US20140244875A1 (en) * | 2013-02-25 | 2014-08-28 | Lsi Corporation | Priority Based Connection Arbitration in a SAS Topology to Facilitate Quality of Service (QoS) in SAS Transport |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150032928A1 (en) * | 2013-07-23 | 2015-01-29 | International Business Machines Corporation | Optimized redundant high availability sas topology |
US9411764B2 (en) * | 2013-07-23 | 2016-08-09 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimized redundant high availability SAS topology |
US20150370739A1 (en) * | 2014-06-23 | 2015-12-24 | Lsi Corporation | Local reconnection attempts for serial attached small computer system interface expanders |
CN109828938A (en) * | 2018-12-13 | 2019-05-31 | 山东亚华电子股份有限公司 | A kind of communication means and device based on chip |
US20220161744A1 (en) * | 2019-04-12 | 2022-05-26 | Harman International Industries, Incorporated | Elastic computing for in-vehicle computing systems |
US20240095019A1 (en) * | 2019-11-29 | 2024-03-21 | Inspur Electronic Information Industry Co., Ltd. | Out-of-band updating method and system of expander |
US11995436B2 (en) * | 2019-11-29 | 2024-05-28 | Inspur Electronic Information Industry Co., Ltd. | Out-of-band updating method and system of expander |
Also Published As
Publication number | Publication date |
---|---|
US9135193B2 (en) | 2015-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9135193B2 (en) | Expander interrupt processing | |
TWI567540B (en) | Method and system for dynamically managing power supply | |
US10296223B2 (en) | Methods and apparatus for controlling data reading from a storage system | |
US9146797B2 (en) | Method for ensuring remediation of hung multiplexer bus channels | |
TWI595760B (en) | Management systems for managing resources of servers and management methods thereof | |
US11210172B2 (en) | System and method for information handling system boot status and error data capture and analysis | |
US20140379104A1 (en) | Electronic device and method for controlling baseboard management controllers | |
US8295290B2 (en) | Energy efficient control of data link groups | |
US20180164795A1 (en) | Fan monitoring system | |
US8843666B2 (en) | Method for optimizing wide port power management in a SAS topology | |
US10691185B2 (en) | Cooling behavior in computer systems | |
US10705901B2 (en) | System and method to control memory failure handling on double-data rate dual in-line memory modules via suspension of the collection of correctable read errors | |
US20120047404A1 (en) | Electronic device and method for detecting power failure type | |
US20140032978A1 (en) | Server and method of monitoring baseboard management controller | |
JP2012521042A (en) | Web front end throttling | |
US20160098336A1 (en) | Methods and systems for dynamic retimer programming | |
US11307624B2 (en) | System and method of remote power/power over Ethernet (POE) device controls | |
US20160117461A1 (en) | Electronic system with health monitoring mechanism and method of operation thereof | |
CN109240836B (en) | Method and device for configuring messages of message queue | |
JP2020053017A (en) | System and method for hybrid power source | |
US8555118B2 (en) | System and method for processing network data of a server | |
US20150234768A1 (en) | Hot removing an i/o module with multiple hot plug slots | |
CN105279037A (en) | Watchdog monitoring method and system | |
JP2016224883A (en) | Fault detection method, information processing apparatus, and fault detection program | |
US11243592B2 (en) | System and method for controlling a power-on sequence and power throttling using power brake |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MYRAH, MICHAEL G.;NATRAJAN, BALAJI;MARTINS MACHADO, RODRIGO STOLL;SIGNING DATES FROM 20130321 TO 20130322;REEL/FRAME:030509/0902 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230915 |