Method for transferring and receiving frames across PCI express bus for SSD device

Information

  • Patent Grant
  • 10042792
  • Patent Number
    10,042,792
  • Date Filed
    Thursday, April 16, 2015
    9 years ago
  • Date Issued
    Tuesday, August 7, 2018
    6 years ago
  • Inventors
    • Ricaborda; Amor Leo Saing
    • Abitria; Alain Vincent Villaranda
    • Orcullo; Rose Fay M.
  • Original Assignees
  • Examiners
    • Tseng; Cheng-Yuan
Abstract
In an embodiment of the invention, a method comprises: transmitting, by a host side, an exchange message protocol (EMP) command frame to a memory device side; informing, by the host side, the memory device side to process the command frame; executing, by the memory device side, the command frame; and transmitting, by the memory device side, an EMP response frame to the host side, in response to the command frame. In another embodiment of the invention, an apparatus comprises: a host side configured to transmit an exchange message protocol (EMP) command frame to a memory device side; wherein the host side is configured to inform the memory device side to process the command frame; wherein the memory device side is configured to execute the command frame; and wherein the memory device side is configured to transmit an EMP response frame to the host side, in response to the command frame.
Description
FIELD

Embodiments of the invention relate generally to data storage systems. Embodiments of the invention also relate to transmissions of frames of an SSD across a transmission path.


DESCRIPTION OF RELATED ART

The background description provided herein is for the purpose of generally presenting the context of the disclosure of the invention. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against this present disclosure of the invention.


In a computer system, a data bus transfers data among and between components of the computer system. For example, data is transferred between a Central Processing Unit (CPU) of the computer and a memory or data storage.


Storage devices such as, for example, Solid State Drives (SSDs), can connect to an input/output (I/O) bus of a computer host. One example of such an I/O bus is a Peripheral Component Interconnect Express (PCIe) computer expansion bus or a similar type of computer bus. However, there is a continuing need to overcome the constraints or disadvantages of current conventional systems.


SUMMARY

Embodiments of the invention relate generally to data storage systems. Embodiments of the invention also relate to transmissions of frames of an SSD (solid state drive) across a transmission path.


Embodiments of the invention provide an apparatus and method on how to send SCSI-compliant (Small Computer System Interface compliant) frames of an SSD across a PCIe (Peripheral Component Interconnect Express) bus, when there is no standard protocol yet in PCIe buses for SSD communications.


An embodiment of the invention also provides an exchange message protocol (EMP) that is used to transfer data frames between a host-side and a memory device side (e.g., non-volatile memory device(s)).


In an embodiment of the invention, a method comprises: transmitting, by a host side, an exchange message protocol (EMP) command frame to a memory device side; informing, by the host side, the memory device side to process the command frame; executing, by the memory device side, the command frame; and transmitting, by the memory device side, an EMP response frame to the host side, in response to the command frame.


In another embodiment of the invention, an apparatus comprises: a host side configured to transmit an exchange message protocol (EMP) command frame to a memory device side; wherein the host side is configured to inform the memory device side to process the command frame; wherein the memory device side is configured to execute the command frame; and wherein the memory device side is configured to transmit an EMP response frame to the host side, in response to the command frame.


In yet another embodiment of the invention, an article of manufacture, comprises: a non-transient computer-readable medium having stored thereon instructions that permit a method comprising: transmitting, by a host side, an exchange message protocol (EMP) command frame to a memory device side; informing, by the host side, the memory device side to process the command frame; executing, by the memory device side, the command frame; and transmitting, by the memory device side, an EMP response frame to the host side, in response to the command frame.


It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.


The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one (several) embodiment(s) of the invention and together with the description, serve to explain the principles of the invention.





BRIEF DESCRIPTION OF DRAWINGS

Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.


It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the present invention may admit to other equally effective embodiments.



FIG. 1 is a block diagram of an example data storage system (or data storage apparatus) that can include an embodiment of the invention.



FIG. 2 is block diagram of an Exchange Message Protocol (EMP) command frame format, in accordance with an embodiment of the invention.



FIG. 3 is block diagram of an Exchange Message Protocol (EMP) response frame format, in accordance with an embodiment of the invention.



FIG. 4 is a block diagram that illustrates the usage of base address registers by a host and an endpoint PCI device such as, for example, an embedded disk card (EDC), in accordance with an embodiment of the invention.



FIG. 5 is a block diagram of command ring and a response ring, in accordance with an embodiment of the invention, wherein both rings are currently empty.



FIG. 6 is a block diagram of command ring and a response ring, in accordance with an embodiment of the invention, wherein both rings are currently full.



FIG. 7 is block diagram of a system that shows the interaction between an EMP Host and an EMP Port for EMP frame passing using rings, in accordance with an embodiment of the invention.



FIG. 8 is a flow diagram of a method in accordance with an embodiment of the invention.





DETAILED DESCRIPTION

In the following detailed description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of the various embodiments of the present invention. Those of ordinary skill in the art will realize that these various embodiments of the present invention are illustrative only and are not intended to be limiting in any way. Other embodiments of the present invention will readily suggest themselves to such skilled persons having the benefit of this disclosure.


In addition, for clarity purposes, not all of the routine features of the embodiments described herein are shown or described. One of ordinary skill in the art would readily appreciate that in the development of any such actual implementation, numerous implementation-specific decisions may be required to achieve specific design objectives. These design objectives will vary from one implementation to another and from one developer to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming, but would nevertheless be a routine engineering undertaking for those of ordinary skill in the art having the benefit of this disclosure. The various embodiments disclosed herein are not intended to limit the scope and spirit of the herein disclosure.


Exemplary embodiments for carrying out the principles of the present invention are described herein with reference to the drawings. However, the present invention is not limited to the specifically described and illustrated embodiments. A person skilled in the art will appreciate that many other embodiments are possible without deviating from the basic concept of the invention. Therefore, the principles of the present invention extend to any work that falls within the scope of the appended claims.


As used herein, the terms “a” and “an” herein do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced items.


In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” (or “coupled”) is intended to mean either an indirect or direct electrical connection (or an indirect or direct optical connection). Accordingly, if one device is coupled to another device, then that connection may be through a direct electrical (or optical) connection, or through an indirect electrical (or optical) connection via other devices and/or other connections.



FIG. 1 is a block diagram of an example data storage system 100 (or data storage apparatus 100) that can include an embodiment of the invention. Those skilled in the art with the benefit of this disclosure will realize that an embodiment of the invention can be included in other suitable types of computing systems or data storage systems.


When the system 100 has initialized and is under normal operation, a software/program 101 (run by the processor requests for the SSD access), for example, will do a read transaction to read data from one or more non-volatile memory devices 102 in the flash storage module 103 or do a write transaction to write data to one or more non-volatile memory devices 102 in the flash storage module 103. Typically, the one or more memory devices 102 form a memory device array 104 in the flash module 103. The memory device array 104 is coupled via a flash interface 105 to a flash memory controller 106.


The flash storage module 103 is coupled via a flash bus 107 (or memory bus 107) to a Direct Memory Access (DMA) controller 108. The DMA controller 108 is coupled via a DMA bus interface 114 to a system bus 109.


A processor 110, system memory 111, and a software/program 101 (run by processor) are all coupled to the system bus 109. The system 100 can include more than one a software/program 101, more than one processor 110, and/or more than one system memory 111. Additionally or alternatively, the system 100 can include more than one DMA controller 108 and more than one flash storage module 103. In an embodiment of the invention that includes a plurality of flash storage modules 103 and a plurality of DMA controllers 108, wherein each flash storage module 103 is coupled via a respective flash bus 107 to a respective DMA controller 108, the plurality of flash storage modules 103 will form an array (not shown) of flash storage modules 103.


System bus 109 is a conduit or data path for transferring data between DMA controller 108, processor 110, system memory 111, and software/program 101. Processor 110, DMA controller 108, and software/program 101 may access system memory 111 via system bus 109 as needed. System memory 111 may be implemented using any form of memory, such as, for example, various types of DRAM (dynamic random access memory), non-volatile memory, or other types of memory devices.


A request 115 for a memory transaction (e.g., read or write transaction) from software/program 101, typically in the form of an input-output descriptor command, is destined for the processor 110. Descriptor commands are detailed instructions to be executed by an engine or a module. The processor 110 interprets that the input-output descriptor command intends to read from memory devices 102 in the flash storage module 103 or intends to write to memory devices 102 in the flash storage module 103. The processor 110 is in-charge of issuing all the needed descriptors to one or more Direct Memory Access (DMA) controllers 108 to execute a read memory transaction or write memory transaction in response to the request 115. Therefore, the DMA controller 108, flash memory controller 106, and processor 110 allow at least one device, such as a software/program 101, to communicate with memory devices 102 within the data storage apparatus 100. Operating under a program control (such as a control by software or firmware), the processor 110 analyzes and responds to a memory transaction request 115 by generating DMA instructions that will cause the DMA controller 108 to read data from or write data to the flash devices 102 in a flash storage module 103 through the flash memory controller 106. If this data is available, the flash memory controller 106 retrieves this data, which is transferred to system memory 111 by the DMA controller 108. Data obtained during this memory read transaction request is hereinafter named “read data”. Similarly, write data provided by software/program 101 will cause the DMA controller 108 to write data to the flash devices 102 through the flash memory controller 106.


A non-volatile memory device 102 in the flash storage module 103 may be, for example, a flash device. This flash device may be implemented by using a flash memory device that complies with the Open NAND Flash Interface Specification, commonly referred to as ONFI Specification. The term “ONFI Specification” is a known device interface standard created by a consortium of technology companies known as the “ONFI Workgroup”. The ONFI Workgroup develops open standards for NAND Flash memory devices and for devices that communicate with these NAND flash memory devices. The ONFI Workgroup is headquartered in Hillsboro, Oreg. Using a flash device that complies with the ONFI Specification is not intended to limit the embodiment(s) disclosed herein. One of ordinary skill in the art having the benefit of this disclosure would readily recognize that other types of flash devices employing different device interface protocols may be used, such as protocols that are compatible with the standards created through the Non-Volatile Memory Host Controller Interface (NVMHCI) working group. Members of the NVMHCI working group include Intel Corporation of Santa Clara, Calif., Dell Inc. of Round Rock, Tex., and Microsoft Corporation of Redmond, Wash.


Those skilled in the art with the benefit of this disclosure will realize that there can be multiple components in the system 100 such as, for example, multiple processors, multiple memory arrays, multiple DMA controllers, and/or multiple flash controllers.



FIG. 2 is block diagram of an Exchange Message Protocol (EMP) command frame format, in accordance with an embodiment of the invention. Exchange Message Protocol is a communication protocol used to transmit messages between two PCI devices. The EMP Host acts as the Root Complex PCI device while the EMP Port functions as the Endpoint PCI device. An EMP frame is defined exclusively to convey the message from the EMP Host to the EMP Port or vice versa. The message contains information of the SCSI command issued by the EMP Host and the command status posted by the EMP Port. The EMP frame (command frame and response frame) encapsulates all the necessary command information into one entity. For example, the EMP command frame 205 includes address information 210 of the EMP host which is the root complex PCI device that transmits an EMP command frame to the EMP port. The EMP command frame 205 also includes an SCSI command information 215 issued by the EMP host. This SCSI command information 215 includes the operation code which is executed by the EMP port to permit the EMP port to perform an operation according to the operation code.


As known to those skilled in the art, in a PCIe system, a root complex PCI device connects the processor and memory subsystem to the PCI Express switch fabric that comprises one or more switch devices, and similar to a host bridge in a PCI system, the root complex generates transaction requests on behalf of the processor which is interconnected through a local bus. Root complex functionality may be implemented as a discrete device, or may be it grated with the processor. A root complex may contain more than one PCI Express port and multiple switch devices can be connected to ports on the root complex or cascaded.



FIG. 3 is block diagram of an Exchange Message Protocol (EMP) response frame format, in accordance with an embodiment of the invention. The EMP response frame 305 includes the command status 310 posted by the EMP port which is the endpoint PCI device. An endpoint PCI device (e.g., device 410 in FIG. 4) transmits the response frame 305 in response to receiving a command frame 205 from a host (e.g., host 405 in FIG. 4).



FIG. 4 is a block diagram of a system 400 that illustrates the usage of base address registers by a host 405 and an endpoint PCI device 410 such as, for example, an embedded disk card (EDC), in accordance with an embodiment of the invention. Therefore, the host 405 can also be defined as a host side 405 in the system 400. As an example, a host side 405 can be defined as (or can include) any suitable device. As another example, the host 405 can be, for example, a host computer such as a host personal computer. Another example of the host 405 can be, e.g., the I/O device 101 in FIG. 1.


The endpoint PCI device 410 can be an EMP port 410 such as, for example, an embedded disk card (EDC). An EDC can include the flash storage module 103 in FIG. 1. Therefore, the EMP port 410 can also be defined as a memory device side 410 in the system 400.


As known to those skilled in the art, PCIe BAR mapping involves mapping a PCIe device into the memory-mapped address space (or other I/O address space) of the computer system. This mapping enables the computer system to address PCIe devices. As also known to those skilled in the art, drivers or an operating system can program the Base Address Registers (BARs). During system startup, PCIe devices are usually identified, numbered, and then addressed. The Peripheral Component Interconnect Special Interest Group (PCI-SIG) provides specifications for PCIe and other computer bus technologies.


In FIG. 4, BAR 0415 is used as a memory window for the EMP Host 405 to access a first memory region 420 in the EMP Port 410, wherein the first memory region 420 contains the configuration settings 425 of the EMP port 410. Typically, the EMP Host 405 accesses the mailbox memory 450 through BAR 0415.


The EMP Port 410 exposes the sets of registers 430. The EMP Port 410 includes a second memory region 435 that contains the sets of registers 430. The EMP Host 405 can control the behavior and can determine the current status of EMP Port 420 by accessing the memory-mapped view of the EMP registers 430 as viewed by Bar 1440.


BAR 0415 AND BAR 1440 are mapping of the of the EMP port 410 in the memory-mapped address space (or other I/O address space) of the EMP host 405.


The mailbox 450 is a region of memory that the EMP Host 405 uses to pass synchronous commands 455 to the EMP Port 420.


The mailbox 450 is a mailbox memory that resides in the memory of the EDC 420. The memory area used for the mailbox 450 is typically only big enough to hold a single command 455. As discussed above, typically, the EMP Host 405 accesses the mailbox memory 450 through BAR 0415.


The EMP Host 405 places a mailbox command 455 in the mailbox 450 and this placement of the mailbox command 455 signals (and informs) the EMP Port 420 when there is a command frame 205 (FIG. 2) to process by the EMP Port 410. When the EMP Port 410 has completed processing of the command frame 205, the EMP Port 410 places the mailbox response 465 in the mailbox 450 and this placement of the mailbox response 465 signals (and informs) the EMP Host 405 that there is a response frame 305 (FIG. 3) to process by the EMP Host 405.


This method disclosed in FIG. 4 imposes a serial communication nature to the commands. The EMP Port 410 will only process one mailbox command 455 at a time and will process a command frame 205 until the EMP Port 410 completes processing of the command frame 205.


Mailbox commands 455 are defined to aid in the communication between the EMP Host 405 and EMP Port 410 during initialization and configuration.


Reference is now made to FIG. 5 and FIG. 6.



FIG. 5 is a block diagram of command ring and a response ring, in accordance with an embodiment of the invention, wherein both rings are currently empty. FIG. 6 is a block diagram of command ring and a response ring, in accordance with an embodiment of the invention, wherein both rings are currently full.


In an embodiment of the invention, a ring is a feature that implements asynchronous communication between the EMP Host 405 and the EMP Port 410. The ring allows multiple outstanding commands and responses to be processed.


The actual structure of each ring is composed of two memory arrays, a Command Ring 505 and Response Ring 510. The Command Ring 505 has a set comprising a Command Get pointer 515 and a Command Put pointer 520. Similarly, the Response Ring 510 has a set comprising a Response Get pointer 525 and a Response Put pointer 530. A Command Ring 505 has a plurality of memory areas 540 for receiving ring values (entries) and a Response Ring 510 has a plurality of memory areas 540 for receiving ring values (entries).


The rings 505 and 510 are allocated in a memory area of the EMP Port 410 (EDC or memory device side 410) in FIG. 4. The memory arrays that form the rings 505 and 510 are treated as circular rings so that when the last element (last ring entry) in the memory array is reached, the next element (next ring entry) to be used (accessed and executed) will be the first element (first ring entry) in the memory array.


The get and put pointers allow the insertion and removal of ring entries. When the get and put pointers contain the same value, the ring is considered empty. In FIG. 5, the Command Ring 505 is considered as empty since the Command get pointer 515 and Command put pointer 520 contain the same value in a given memory area 540 in the Command Ring 505. Similarly, the Response Ring 510 is considered as empty since the Response get pointer 525 and Response put pointer 530 contain the same value in a given memory area 545 in the Response Ring 510.


When the put pointer contains a value immediately before the get pointer, the ring is full. In FIG. 6, since the Command put pointer 520 contains a value in the given memory area 540a of Command Ring 505 and the Command get pointer 515 contains a value in the other given memory area 540b of Command Ring 505, and since the memory area 540a is immediately before the memory area 540b, the Command Ring 505 is full.


Similarly, in FIG. 6, since the Response put pointer 530 contains a value in the given memory area 545a of Response Ring 510 and the Response get pointer 525 contains a value in the other given memory area 545b of Response Ring 510, and since the memory area 545a is immediately before the memory area 545b, the Response Ring 510 is full.


One or more commands 550 are placed in the Command Ring 505 by EMP Host 405 and the EMP Port 410 is signaled that work is available for the EMP Port 410 to process at least one of the commands 550. The EMP Port 410 will process each command 550 and as the EMP Port 410 completes the processing of each command 550, the EMP Port 410 will put a respective response 555 (corresponding to the processed command 550) in the Response Ring 510 and notify the EMP Host 405 that one or more responses 555 are available. A format of a frame 205 of a command 550 is shown in FIG. 2, while a format of a frame 305 of a response 555 is shown in FIG. 3.



FIG. 7 is block diagram of a system 700 that shows the interaction between an EMP Host 405 and an EMP Port 410 for EMP frame passing using rings, in accordance with an embodiment of the invention. The host 405 includes a host memory 705 while the EMP Port 410 includes an EDC memory 710. The host 405 is coupled via PCIe bus 715 to the EMP Port 410. As noted above, the host 405 can also be defined as a host side 405 and the EMP Port 410 can also be defined as a memory device side 410.


The host 405 posts EMP command frames 715(0) through 715(N), where N is an integer, to the Command Ring 505, where the host 405 will posts the command frames starting from the Command Ring Base Address 720(0) through Command Ring Address 720(N). Therefore, the EMP host 405 posts the command frames 715(0), 715(1), 715(2), 715(3), up to 715(N) to the Command Ring Addresses 720(0), 720(1), 720(2), 720(3), up to 720(N), respectively. The posted command frames are shown as command ring entries in the command ring addresses. For example, the posted command frames are Command Ring Entry0, Command Ring Entry1, Command Ring Entry2, Command Ring Entry3, and up to Command Ring EntryN in command ring addresses 720(0), 720(1), 720(2), 720(3), up to 720(N), respectively.


The host 405 tracks EMP response frames 730(0) through 730(N), where N is an integer, from the Response Ring 510, where the EMP Port 410 will posts the response frames starting from the Response Ring Base Address 735(0) through Response Ring Address 735(N). Therefore, the EMP Port 410 posts the response frames 730(0), 730(1), 730(2), 73o(3), up to 730(N) to the Respond Ring Addresses 735(0), 735(1), 735(2), 730(3), up to 730(N), respectively, prior to the EMP Port 410 transmitting the response frames 730(0) to 730(N) to the host 405. The posted response frames are shown as response ring entries in the response ring addresses. For example, the posted response frames are Response Ring Entry0, Response Ring Entry1, Response Ring Entry2, Response Ring Entry3, and up to Response Ring EntryN in response ring addresses 735(0), 735(1), 735(2), 735(3), up to 735(N), respectively.


The EMP host 405 includes a Command Send Module(s) 740 that sends the commands 550 to the EMP Port 410 via PCIe bus 715 and the EMP Port 410 posts these commands 550 in the command ring 505. In an embodiment of the invention, the module(s) 740 can also increment the command put pointer 520 and response get pointer 525. As discussed above with reference to FIG. 3, the EMP host 405 can control the behavior and can determine the current status of the EMP Port 410 by accessing the sets of EMP registers 430. Therefore, the modules(s) 740 in the EMP host 405 can increment the pointers 520 and 525. In another embodiment of the invention, the EMP Port 410 will instead increment the command put pointer 520 and response get pointer 525.


The EMP host 405 includes a Response Receive Module(s) 745 that reads the Command Get pointer 515 and Response Put pointer 530 which have been updated by the EMP Port 410 prior to the EMP Port 410 posting and releasing a ring entry (response 555) via PCIe bus 715. As similarly discussed above, the EMP Port 410 posts the responses 555 in the response ring 510. In an embodiment of the invention, the EMP Port 410 will increment the command get pointer 515 and response put pointer 530 prior to posting and releasing an entry (response) 555 in the response ring 510. In an embodiment of the invention, the EMP Port 410 will post and release a response 555.



FIG. 8 is a flow diagram of a method 800 in accordance with an embodiment of the invention. At 805, a host side 405 transmits an exchange message protocol (EMP) command frame 205 to a memory device side 410.


At 810, the host side 405 informs the memory device side 410 to process the command frame 205. For example, the host side 405 transmit a mailbox message 455 to the memory device side 410 to inform the memory device side 410 to process the command frame 205. In an embodiment of the invention the operations at 805 occurs prior to the operations at 810. In another embodiment of the invention, the operations at 805 occurs after the operations at 810. In another embodiment of the invention, the operations at 805 and 810 can occur concurrently or can occur in a substantially concurrent manner.


At 815, the memory device side 410 executes the command frame 205.


At 820, the memory device side 410 transmits an EMP response frame 305 to the host side 405, in response to the command frame 205.


Foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, it is contemplated that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks, and that networks may be wired, wireless, or a combination of wired and wireless.


It is also within the scope of the present invention to implement a program or code that can be stored in a non-transient machine-readable (or non-transient computer-readable medium) having stored thereon instructions that permit a method (or that permit a computer) to perform any of the inventive techniques described above, or a program or code that can be stored in an article of manufacture that includes a non-transient computer readable medium on which computer-readable instructions for carrying out embodiments of the inventive techniques are stored. Other variations and modifications of the above-described embodiments and methods are possible in light of the teaching discussed herein.


The above description of illustrated embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize.


These modifications can be made to the invention in light of the above detailed description. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims. Rather, the scope of the invention is to be determined entirely by the following claims, which are to be construed in accordance with established doctrines of claim interpretation.

Claims
  • 1. A method, comprising: transmitting, by a host side, an exchange message protocol (EMP) command frame to a memory device side, wherein said transmitting further comprises posting, by the host side, the EMP command frame into a first memory array in the memory device side, wherein the host side is coupled by a bus to the memory device side;informing, by the host side, the memory device side to process the EMP command frame;executing, by the memory device side, the EMP command frame in response to the EMP command frame being posted into the first memory array;posting, by the memory device side, an EMP response frame into a second memory array in the memory device side in response to the EMP command frame being executed by the memory device side; andtransmitting, by the memory device side, the EMP response frame to the host side, in response to the EMP response frame being posted into the second memory array;wherein the memory device side comprises a command ring comprising the first memory array and wherein the memory device side further comprises a response ring comprising the second memory array, and wherein the rings allow processing of multiple outstanding command frames and of multiple outstanding response frames;wherein the command ring comprises a command get pointer and a command put pointer;wherein the response ring comprises a response get pointer and a response put pointer;wherein the host side increments the command put pointer in order to post the EMP command frame in the command ring and increments the response get pointer in order to release an entry in the response ring;wherein the host side reads the command get pointer and response put pointer with both the command get pointer and the response put pointer having been updated by the memory device side prior to the memory device side posting the EMP response frame in the response ring and releasing an entry in the command ring; andwherein the memory device side increments the command get pointer and the response put pointer prior to the memory device side posting the EMP response frame in the response ring and releasing the entry in the command ring.
  • 2. The method of claim 1, wherein the memory device side comprises at least one solid state drive (SSD).
  • 3. The method of claim 1, wherein the EMP command frame and the EMP response frame comprise are SCSI-compliant (Small Computer System Interface compliant) frames.
  • 4. The method of claim 1, wherein the EMP command frame and the EMP response frame are transmitted across the bus which comprises a PCIe (Peripheral Component Interconnect Express) bus.
  • 5. The method of claim 1, further comprising: exposing, to the host side, a first memory region in the memory device side, wherein the first memory region comprises configuration settings of the memory device side.
  • 6. The method of claim 1, further comprising: exposing, to the host side, a second memory region in the memory device side, wherein the second memory region comprises at least a set of registers of the memory device side.
  • 7. The method of claim 1, further comprising: placing, by the host side, a mailbox command in a mailbox memory of the memory device side, in order to inform the memory device side of the EMP command frame for processing by the memory device side;wherein the mailbox memory is sized to hold the mailbox command.
  • 8. The method of claim 7, further comprising: placing, by the memory device side, a mailbox response in the mailbox memory after the memory device side has processed the EMP command frame.
  • 9. An apparatus, comprising: a host side configured to transmit an exchange message protocol (EMP) command frame to a memory device side, wherein the host side is configured to post the EMP command frame into a first memory array in the memory device side, wherein the host side is coupled by a bus to the memory device side;wherein the host side is configured to inform the memory device side to process the EMP command frame;wherein the memory device side is configured to execute the EMP command frame in response to the EMP command frame being posted into the first memory array;wherein the memory device side is configured to post an EMP response frame into a second memory array in the memory device side in response to the EMP command frame being executed by the memory device side; andwherein the memory device side is configured to transmit the EMP response frame to the host side, in response to the EMP response frame being posted into the second memory array;wherein the memory device side comprises a command ring comprising the first memory array and wherein the memory device side further comprises a response ring comprising the second memory array, and wherein the rings allow processing of multiple outstanding command frames and of multiple outstanding response frames;wherein the command ring comprises a command get pointer and a command put pointer;wherein the response ring comprises a response get pointer and a response put pointer;wherein the host side increments the command put pointer in order to post the EMP command frame in the command ring and increments the response get pointer in order to release an entry in the response ring;wherein the host side reads the command get pointer and response put pointer with both the command get pointer and the response put pointer having been updated by the memory device side prior to the memory device side posting the EMP response frame in the response ring and releasing an entry in the command ring; andwherein the memory device side increments the command get pointer and the response put pointer prior to the memory device side posting the EMP response frame in the response ring and releasing the entry in the command ring.
  • 10. The apparatus of claim 9, wherein the memory device side comprises at least one solid state drive (SSD).
  • 11. The apparatus of claim 9, wherein the EMP command frame and the EMP response frame comprise are SCSI-compliant (Small Computer System Interface compliant) frames.
  • 12. The apparatus of claim 9, wherein the EMP command frame and the EMP response frame are transmitted across the bus which comprises a PCIe (Peripheral Component Interconnect Express) bus.
  • 13. The apparatus of claim 9, wherein the host side is exposed to a first memory region in the memory device side, wherein the first memory region comprises configuration settings of the memory device side.
  • 14. The apparatus of claim 9, wherein the host side is exposed to a second memory region in the memory device side, wherein the second memory region comprises at least a set of registers of the memory device side.
  • 15. The apparatus of claim 9, wherein the host side is configured to place a mailbox command in a mailbox memory of the memory device side, in order to inform the memory device side of the EMP command frame for processing by the memory device side wherein the mailbox memory is sized to hold the mailbox command.
  • 16. The apparatus of claim 15, wherein the memory device side is configured to place a mailbox response in the mailbox memory after the memory device side has processed the EMP command frame.
  • 17. An article of manufacture, comprising: a non-transitory computer-readable medium having stored thereon instructions operable to permit an apparatus to perform a method comprising:transmitting, by a host side, an exchange message protocol (EMP) command frame to a memory device side, wherein said transmitting further comprises posting, by the host side, the EMP command frame into a first memory array in the memory device side, wherein the host side is coupled by a bus to the memory device side;informing, by the host side, the memory device side to process the EMP command frame;executing, by the memory device side, the EMP command frame in response to the EMP command frame being posted into the first memory array;posting, by the memory device side, an EMP response frame into a second memory array in the memory device side in response to the EMP command frame being executed by the memory device side; andtransmitting, by the memory device side, the EMP response frame to the host side, in response to the EMP response frame being posted into the second memory array;wherein the memory device side comprises a command ring comprising the first memory array and wherein the memory device side further comprises a response ring comprising the second memory array, and wherein the rings allow processing of multiple outstanding command frames and of multiple outstanding response frames;wherein the command ring comprises a command get pointer and a command put pointer;wherein the response ring comprises a response get pointer and a response put pointer;wherein the host side increments the command put pointer in order to post the EMP command frame in the command ring and increments the response get pointer in order to release an entry in the response ring;wherein the host side reads the command get pointer and response put pointer with both the command get pointer and the response put pointer having been updated by the memory device side prior to the memory device side posting the EMP response frame in the response ring and releasing an entry in the command ring; andwherein the memory device side increments the command get pointer and the response put pointer prior to the memory device side posting the EMP response frame in the response ring and releasing the entry in the command ring.
  • 18. The article of manufacture of claim 17, wherein the EMP command frame and the EMP response frame are transmitted across the bus which comprises a PCIe (Peripheral Component Interconnect Express) bus.
  • 19. The article of manufacture of claim 17, wherein the method further comprises: placing, by the host side, a mailbox command in a mailbox memory of the memory device side, in order to inform the memory device side of the command frame for processing by the memory device side;wherein the mailbox memory is sized to hold the mailbox command.
CROSS-REFERENCE(S) TO RELATED APPLICATIONS

This application claims the benefit of and priority to U.S. Provisional Application 61/980,597, filed 17 Apr. 2014. This U.S. Provisional Application 61/980,597 is hereby fully incorporated herein by reference.

US Referenced Citations (364)
Number Name Date Kind
4402040 Evett Aug 1983 A
4403283 Myntii et al. Sep 1983 A
4752871 Sparks Jun 1988 A
4967344 Scavezze et al. Oct 1990 A
5111058 Martin May 1992 A
RE34100 Hartness Oct 1992 E
5222046 Kreifels et al. Jun 1993 A
5297148 Harari et al. Mar 1994 A
5339404 Vandling, III Aug 1994 A
5341339 Wells Aug 1994 A
5371709 Fisher et al. Dec 1994 A
5379401 Robinson et al. Jan 1995 A
5388083 Assar et al. Feb 1995 A
5396468 Harari et al. Mar 1995 A
5406529 Asano Apr 1995 A
5432748 Hsu et al. Jul 1995 A
5448577 Wells et al. Sep 1995 A
5459850 Clay et al. Oct 1995 A
5479638 Assar et al. Dec 1995 A
5485595 Assar et al. Jan 1996 A
5488711 Hewitt et al. Jan 1996 A
5500826 Hsu et al. Mar 1996 A
5509134 Fandrich et al. Apr 1996 A
5513138 Manabe et al. Apr 1996 A
5524231 Brown Jun 1996 A
5530828 Kaki et al. Jun 1996 A
5535328 Harari et al. Jul 1996 A
5535356 Kim et al. Jul 1996 A
5542042 Manson Jul 1996 A
5542082 Solhjell Jul 1996 A
5548741 Watanabe Aug 1996 A
5559956 Sukegawa Sep 1996 A
5568423 Jou et al. Oct 1996 A
5568439 Harari Oct 1996 A
5572466 Sukegawa Nov 1996 A
5594883 Pricer Jan 1997 A
5602987 Harari et al. Feb 1997 A
5603001 Sukegawa et al. Feb 1997 A
5606529 Honma et al. Feb 1997 A
5606532 Lambrache et al. Feb 1997 A
5619470 Fukumoto Apr 1997 A
5627783 Miyauchi May 1997 A
5640349 Kakinuma et al. Jun 1997 A
5644784 Peek Jul 1997 A
5682509 Kabenjian Oct 1997 A
5737742 Achiwa et al. Apr 1998 A
5765023 Leger et al. Jun 1998 A
5787466 Berliner Jul 1998 A
5796182 Martin Aug 1998 A
5799200 Brant et al. Aug 1998 A
5802554 Caceres et al. Sep 1998 A
5818029 Thomson Oct 1998 A
5819307 Iwamoto et al. Oct 1998 A
5822251 Bruce et al. Oct 1998 A
5864653 Tavallaei et al. Jan 1999 A
5870627 O'Toole et al. Feb 1999 A
5875351 Riley Feb 1999 A
5881264 Kurosawa Mar 1999 A
5913215 Rubinstein et al. Jun 1999 A
5918033 Heeb et al. Jun 1999 A
5930481 Benhase Jul 1999 A
5933849 Sinisa Srbljic et al. Aug 1999 A
5943421 Grabon Aug 1999 A
5956743 Bruce et al. Sep 1999 A
5978866 Nain Nov 1999 A
5987621 Duso Nov 1999 A
6000006 Bruce et al. Dec 1999 A
6014709 Gulick et al. Jan 2000 A
6076137 Asnaashari Jun 2000 A
6098119 Surugucchi et al. Aug 2000 A
6128303 Bergantino Oct 2000 A
6138200 Ogilvie Oct 2000 A
6138247 Brent Mckay et al. Oct 2000 A
6151641 Herbert Nov 2000 A
6215875 Nohda Apr 2001 B1
6230269 Spies et al. May 2001 B1
6282587 Priem Aug 2001 B1
6298071 Taylor et al. Oct 2001 B1
6341342 Thompson et al. Jan 2002 B1
6363441 Beniz et al. Mar 2002 B1
6363444 Platko et al. Mar 2002 B1
6397267 Chong, Jr. May 2002 B1
6404772 Beach et al. Jun 2002 B1
6452602 Morein Sep 2002 B1
6496939 Portman et al. Dec 2002 B2
6526506 Lewis Feb 2003 B1
6529416 Bruce et al. Mar 2003 B2
6557095 Henstrom Apr 2003 B1
6574142 Gelke Jun 2003 B2
6601126 Zaidi et al. Jul 2003 B1
6678754 Soulier Jan 2004 B1
6691180 Priem Feb 2004 B2
6728840 Shatil Apr 2004 B1
6744635 Portman et al. Jun 2004 B2
6785746 Mahmoud et al. Aug 2004 B1
6757845 Bruce Dec 2004 B2
6857076 Klein Feb 2005 B1
6901499 Aasheim et al. May 2005 B2
6922391 King et al. Jul 2005 B1
6961805 Lakhani et al. Nov 2005 B2
6970446 Krischar et al. Nov 2005 B2
6970890 Bruce et al. Nov 2005 B1
6973546 Johnson Dec 2005 B2
6980795 Hermann et al. Dec 2005 B1
7103684 Chen et al. Sep 2006 B2
7174438 Homma et al. Feb 2007 B2
7194766 Noehring et al. Mar 2007 B2
7263006 Aritome Aug 2007 B2
7283629 Kaler et al. Oct 2007 B2
7305548 Pierce et al. Dec 2007 B2
7330954 Nangle Feb 2008 B2
7372962 Fujimoto et al. Jun 2008 B2
7386662 Kekre et al. Jun 2008 B1
7412631 Uddenberg et al. Aug 2008 B2
7415549 Vemula et al. Aug 2008 B2
7424553 Borrelli et al. Sep 2008 B1
7430650 Ross Sep 2008 B1
7474926 Carr et al. Jan 2009 B1
7478186 Onufryk et al. Jan 2009 B1
7490177 Kao Feb 2009 B2
7496699 Pope et al. Feb 2009 B2
7500063 Zohar et al. Mar 2009 B2
7506098 Arcedera et al. Mar 2009 B2
7613876 Bruce et al. Nov 2009 B2
7620748 Bruce et al. Nov 2009 B1
7620749 Biran et al. Nov 2009 B2
7624239 Bennett et al. Nov 2009 B2
7636801 Kekre et al. Dec 2009 B1
7660941 Lee et al. Feb 2010 B2
7668925 Liao et al. Feb 2010 B1
7676640 Chow Mar 2010 B2
7681188 Tirumalai et al. Mar 2010 B1
7716389 Bruce et al. May 2010 B1
7719287 Marks et al. May 2010 B2
7729370 Orcine et al. Jun 2010 B1
7743202 Tsai et al. Jun 2010 B2
7765359 Kang et al. Jul 2010 B2
7877639 Hoang Jan 2011 B2
7913073 Choi Mar 2011 B2
7921237 Holland et al. Apr 2011 B1
7934052 Prins et al. Apr 2011 B2
7958295 Liao et al. Jun 2011 B1
7979614 Yang Jul 2011 B1
7996581 Bond et al. Aug 2011 B2
8010740 Arcedera et al. Oct 2011 B2
8032700 Bruce et al. Oct 2011 B2
8149242 Langyel Apr 2012 B2
8156279 Tanaka et al. Apr 2012 B2
8156320 Borras Apr 2012 B2
8161223 Chamseddine et al. Apr 2012 B1
8165301 Bruce et al. Apr 2012 B1
8200879 Falik et al. Jun 2012 B1
8219719 Parry et al. Jul 2012 B1
8225022 Caulkins Jul 2012 B2
8341300 Karamcheti Dec 2012 B1
8341311 Szewerenko et al. Dec 2012 B1
8375257 Hong et al. Feb 2013 B2
8447908 Bruce et al. Apr 2013 B2
8489914 Cagno Jul 2013 B2
8510631 Wu et al. Aug 2013 B2
8560804 Bruce et al. Oct 2013 B2
8583868 Belluomini et al. Nov 2013 B2
8677042 Gupta et al. Mar 2014 B2
8707134 Takahashi et al. Apr 2014 B2
8713417 Jo Apr 2014 B2
8762609 Lam et al. Jun 2014 B1
8788725 Bruce et al. Jul 2014 B2
8832371 Uehara et al. Sep 2014 B2
8856392 Myrah et al. Oct 2014 B2
8959307 Bruce et al. Feb 2015 B1
8990462 Shim Mar 2015 B2
9043669 Bruce et al. May 2015 B1
9087050 Shim Jul 2015 B2
9099187 Bruce et al. Aug 2015 B2
9135190 Bruce et al. Sep 2015 B1
9147500 Kim et al. Sep 2015 B2
9158661 Blaine et al. Oct 2015 B2
9201790 Keeler Dec 2015 B2
9317204 Hahn Apr 2016 B2
9400617 Ponce et al. Jul 2016 B2
20010010066 Chin et al. Jul 2001 A1
20020011607 Gelke et al. Jan 2002 A1
20020013880 Gappisch et al. Jan 2002 A1
20020044486 Chan et al. Apr 2002 A1
20020073324 Hsu et al. Jun 2002 A1
20020083262 Fukuzumi Jun 2002 A1
20020083264 Coulson Jun 2002 A1
20020141244 Bruce et al. Oct 2002 A1
20030023817 Rowlands et al. Jan 2003 A1
20030065836 Pecone Apr 2003 A1
20030097248 Terashima et al. May 2003 A1
20030120864 Lee et al. Jun 2003 A1
20030126451 Gorobets Jul 2003 A1
20030131201 Khare et al. Jul 2003 A1
20030161355 Falcomato et al. Aug 2003 A1
20030163624 Matsui et al. Aug 2003 A1
20030163647 Cameron et al. Aug 2003 A1
20030163649 Kapur et al. Aug 2003 A1
20030182576 Morlang et al. Sep 2003 A1
20030188100 Solomon et al. Oct 2003 A1
20030204675 Dover et al. Oct 2003 A1
20030217202 Zilberman et al. Nov 2003 A1
20030223585 Tardo et al. Dec 2003 A1
20040073721 Goff et al. Apr 2004 A1
20040078632 Infante et al. Apr 2004 A1
20040128553 Buer et al. Jul 2004 A1
20040215868 Solomon et al. Oct 2004 A1
20050050245 Miller et al. Mar 2005 A1
20050055481 Chou et al. Mar 2005 A1
20050078016 Neff Apr 2005 A1
20050097368 Peinado et al. May 2005 A1
20050120146 Chen et al. Jun 2005 A1
20050210149 Kimball Sep 2005 A1
20050210159 Voorhees et al. Sep 2005 A1
20050226407 Kasuya et al. Oct 2005 A1
20050240707 Hayashi et al. Oct 2005 A1
20050243610 Guha et al. Nov 2005 A1
20050289361 Sutardja Dec 2005 A1
20060004957 Hand, III et al. Jan 2006 A1
20060026329 Yu Feb 2006 A1
20060031450 Unrau et al. Feb 2006 A1
20060039406 Day et al. Feb 2006 A1
20060064520 Anand et al. Mar 2006 A1
20060095709 Achiwa May 2006 A1
20060112251 Karr et al. May 2006 A1
20060129876 Uemura Jun 2006 A1
20060173970 Pope et al. Aug 2006 A1
20060184723 Sinclair et al. Aug 2006 A1
20070019573 Nishimura Jan 2007 A1
20070028040 Sinclair Feb 2007 A1
20070058478 Murayama Mar 2007 A1
20070073922 Go et al. Mar 2007 A1
20070079017 Brink et al. Apr 2007 A1
20070083680 King et al. Apr 2007 A1
20070088864 Foster Apr 2007 A1
20070093124 Varney et al. Apr 2007 A1
20070094450 VanderWiel Apr 2007 A1
20070096785 Maeda May 2007 A1
20070121499 Pal et al. May 2007 A1
20070130439 Andersson et al. Jun 2007 A1
20070159885 Gorobets Jul 2007 A1
20070168754 Zohar et al. Jul 2007 A1
20070174493 Irish et al. Jul 2007 A1
20070174506 Tsuruta Jul 2007 A1
20070195957 Arulambalam et al. Aug 2007 A1
20070288686 Arcedera et al. Dec 2007 A1
20070288692 Bruce et al. Dec 2007 A1
20070294572 Kalwitz et al. Dec 2007 A1
20080005481 Walker Jan 2008 A1
20080052456 Ash et al. Feb 2008 A1
20080052585 LaBerge et al. Feb 2008 A1
20080072031 Choi Mar 2008 A1
20080104264 Duerk et al. May 2008 A1
20080140724 Flynn et al. Jun 2008 A1
20080147963 Tsai et al. Jun 2008 A1
20080189466 Hemmi Aug 2008 A1
20080195800 Lee et al. Aug 2008 A1
20080218230 Shim Sep 2008 A1
20080228959 Wang Sep 2008 A1
20080276037 Chang et al. Nov 2008 A1
20080301256 McWilliams et al. Dec 2008 A1
20090028229 Cagno et al. Jan 2009 A1
20090037565 Andresen et al. Feb 2009 A1
20090055573 Ito Feb 2009 A1
20090077306 Arcedera et al. Mar 2009 A1
20090083022 Bin Mohd Nordin et al. Mar 2009 A1
20090094411 Que Apr 2009 A1
20090132620 Arakawa May 2009 A1
20090132752 Poo et al. May 2009 A1
20090150643 Jones et al. Jun 2009 A1
20090158085 Kern et al. Jun 2009 A1
20090172250 Allen et al. Jul 2009 A1
20090172261 Prins et al. Jul 2009 A1
20090172466 Royer et al. Jul 2009 A1
20090240873 Yu et al. Sep 2009 A1
20100058045 Borras et al. Mar 2010 A1
20100095053 Bruce et al. Apr 2010 A1
20100125695 Wu et al. May 2010 A1
20100250806 Devilla et al. Sep 2010 A1
20100268904 Sheffield et al. Oct 2010 A1
20100299538 Miller Nov 2010 A1
20100318706 Kobayashi Dec 2010 A1
20110022778 Schibilla et al. Jan 2011 A1
20110022783 Moshayedi Jan 2011 A1
20110022801 Flynn Jan 2011 A1
20110087833 Jones Apr 2011 A1
20110093648 Belluomini et al. Apr 2011 A1
20110113186 Bruce et al. May 2011 A1
20110133826 Jones et al. Jun 2011 A1
20110145479 Talagala et al. Jun 2011 A1
20110161568 Bruce et al. Jun 2011 A1
20110167204 Estakhri et al. Jul 2011 A1
20110173383 Gorobets Jul 2011 A1
20110197011 Suzuki et al. Aug 2011 A1
20110202709 Rychlik Aug 2011 A1
20110208901 Kim et al. Aug 2011 A1
20110208914 Winokur et al. Aug 2011 A1
20110219150 Piccirillo et al. Sep 2011 A1
20110258405 Asaki et al. Oct 2011 A1
20110264884 Kim Oct 2011 A1
20110264949 Ikeuchi et al. Oct 2011 A1
20110270979 Schlansker et al. Nov 2011 A1
20120005405 Wu et al. Jan 2012 A1
20120005410 Ikeuchi Jan 2012 A1
20120017037 Riddle et al. Jan 2012 A1
20120079352 Frost et al. Mar 2012 A1
20120102263 Aswadhati Apr 2012 A1
20120102268 Smith et al. Apr 2012 A1
20120137050 Wang et al. May 2012 A1
20120159029 Krishnan et al. Jun 2012 A1
20120161568 Umemoto et al. Jun 2012 A1
20120173795 Schuette et al. Jul 2012 A1
20120215973 Cagno et al. Aug 2012 A1
20120249302 Szu Oct 2012 A1
20120260102 Zaks et al. Oct 2012 A1
20120271967 Hirschman Oct 2012 A1
20120303924 Ross Nov 2012 A1
20120311197 Larson et al. Dec 2012 A1
20120324277 Weston-Lewis et al. Dec 2012 A1
20130010058 Pmeroy Jan 2013 A1
20130019053 Somanache et al. Jan 2013 A1
20130073821 Flynn et al. Mar 2013 A1
20130094312 Jang et al. Apr 2013 A1
20130099838 Kim et al. Apr 2013 A1
20130111135 Bell, Jr. et al. May 2013 A1
20130206837 Szu Aug 2013 A1
20130208546 Kim et al. Aug 2013 A1
20130212337 Maruyama Aug 2013 A1
20130212349 Maruyama Aug 2013 A1
20130212425 Blaine et al. Aug 2013 A1
20130246694 Bruce et al. Sep 2013 A1
20130254435 Shapiro et al. Sep 2013 A1
20130262750 Yamasaki et al. Oct 2013 A1
20130282933 Jokinen et al. Oct 2013 A1
20130304775 Davis et al. Nov 2013 A1
20130339578 Ohya et al. Dec 2013 A1
20130339582 Olbrich et al. Dec 2013 A1
20130346672 Sengupta et al. Dec 2013 A1
20140068177 Raghavan Mar 2014 A1
20140095803 Kim et al. Apr 2014 A1
20140104949 Bruce et al. Apr 2014 A1
20140108869 Brewerton et al. Apr 2014 A1
20140189203 Suzuki et al. Jul 2014 A1
20140258788 Maruyama Sep 2014 A1
20140285211 Raffinan Sep 2014 A1
20140331034 Ponce et al. Nov 2014 A1
20150006766 Ponce et al. Jan 2015 A1
20150012690 Bruce et al. Jan 2015 A1
20150032937 Salessi Jan 2015 A1
20150032938 Salessi Jan 2015 A1
20150067243 Salessi et al. Mar 2015 A1
20150149697 Salessi et al. May 2015 A1
20150149706 Salessi et al. May 2015 A1
20150153962 Salessi et al. Jun 2015 A1
20150169021 Salessi et al. Jun 2015 A1
20150261456 Alcantara et al. Sep 2015 A1
20150261475 Alcantara et al. Sep 2015 A1
20150261797 Alcantara et al. Sep 2015 A1
20150370670 Lu Dec 2015 A1
20150371684 Mataya Dec 2015 A1
20150378932 Souri et al. Dec 2015 A1
20160026402 Alcantara et al. Jan 2016 A1
20160027521 Lu Jan 2016 A1
20160041596 Alcantara et al. Feb 2016 A1
Foreign Referenced Citations (8)
Number Date Country
2005142859 Jun 2005 JP
2005-309847 Nov 2005 JP
489308 Jun 2002 TW
200428219 Dec 2004 TW
436689 Dec 2005 TW
I420316 Dec 2013 TW
WO 9406210 Mar 1994 WO
WO 9838568 Sep 1998 WO
Non-Patent Literature Citations (140)
Entry
Office Action for U.S. Appl. No. 13/475,878, dated Jun. 23, 2014.
Office Action for U.S. Appl. No. 13/253,912 dated Jul. 16, 2014.
Office Action for U.S. Appl. No. 12/876,113 dated Jul. 11, 2014.
Office Action for U.S. Appl. No. 12/270,626 dated Feb. 3, 2012.
Office Action for U.S. Appl. No. 12/270,626 dated Apr. 4, 2011.
Office Action for U.S. Appl. No. 12/270,626 dated Mar. 15, 2013.
Notice of Allowance/Allowability for U.S. Appl. No. 12/270,626 dated Oct. 3, 2014.
Advisory Action for U.S. Appl. No. 12/876,113 dated Oct. 16, 2014.
Office Action for U.S. Appl. No. 14/297,628 dated Jul. 17, 2015.
Office Action for U.S. Appl. No. 13/475,878 dated Dec. 4, 2014.
USPTO Notice of Allowability & attachment(s) dated Jan. 7, 2013 for U.S. Appl. No. 12/876,247.
Office Action dated Sep. 14, 2012 for U.S. Appl. No. 12/876,247.
Office Action dated Feb. 1, 2012 for U.S. Appl. No. 12/876,247.
Notice of Allowance/Allowability dated Mar. 31, 2015 for U.S. Appl. No. 13/475,878.
Office Action dated May 22, 2015 for U.S. Appl. No. 13/253,912.
Office Action for U.S. Appl. No. 12/876,113 dated Mar. 13, 2014.
Advisory Action for U.S. Appl. No. 12/876,113 dated Sep. 6, 2013.
Office Action for U.S. Appl. No. 12/876,113 dated May 14, 2013.
Office Action for U.S. Appl. No. 12/876,113 dated Dec. 21, 2012.
Security Comes to SNMP: The New SNMPv3 Proposed Internet Standard, The Internet Protocol Journal, vol. 1, No. 3, Dec. 1998.
Notice of Allowability for U.S. Appl. No. 12/882,059 dated May 30, 2013.
Notice of Allowability for U.S. Appl. No. 12/882,059 dated Feb. 14, 2013.
Office Action for U.S. Appl. No. 12/882,059 dated May 11, 2012.
Notice of Allowability for U.S. Appl. No. 14/038,684 dated Aug. 1, 2014.
Office Action for U.S. Appl. No. 14/038,684 dated Mar. 17, 2014.
Notice of Allowance/Allowability for U.S. Appl. No. 13/890,229 dated Feb. 20, 2014.
Office Action for U.S. Appl. No. 13/890,229 dated Oct. 8, 2013.
Office Action for U.S. Appl. No. 12/876,113 dated Dec. 5, 2014.
Notice of Allowance/Allowabilty for U.S. Appl. No. 12/876,113 dated Jun. 22, 2015.
Office Action for U.S. Appl. No. 14/217,249 dated Apr. 23, 2015.
Office Action for U.S. Appl. No. 14/217,467 dated Apr. 27, 2015.
Office Action for U.S. Appl. No. 14/616,700 dated Apr. 30, 2015.
Office Action for U.S. Appl. No. 14/217,436 dated Sep. 11, 2015.
Office Action for U.S. Appl. No. 13/475,878 dated Jun. 23, 2014.
Office Action for U.S. Appl. No. 12/876,113 dated Oct. 16, 2014.
Notice of Allowance for U.S. Appl. No. 12/270,626 dated Oct. 3, 2014.
Office Action for U.S. Appl. No. 12/270,626 dated May 23, 2014.
Office Action for U.S. Appl. No. 12/270,626 dated Dec. 18, 2013.
Office Action for U.S. Appl. No. 12/270,626 dated Aug. 23, 2012.
Office Action dated Sep. 11, 2015 for U.S. Appl. No. 14/217,436.
Office Action dated Sep. 24, 2015 for U.S. Appl. No. 14/217,334.
Office Action dated Sep. 18, 2015 for Taiwanese Patent Application No. 102144165.
Office Action dated Sep. 29, 2015 for U.S. Appl. No. 14/217,316.
Office Action dated Sep. 28, 2015 for U.S. Appl. No. 14/689,045.
Office Action dated Dec. 5, 2014 for U.S. Appl. No. 14/038,684.
Office Action dated Oct. 8, 2015 for U.S. Appl. No. 14/217,291.
Final Office Action dated Nov. 19, 2015 for U.S. Appl. No. 14/217,249.
Final Office Action dated Nov. 18, 2015 for U.S. Appl. No. 14/217,467.
Office Action dated Nov. 25, 2015 for U.S. Appl. No. 14/217,041.
Office Action dated Oct. 5, 2015 for Taiwanese Application No. 103105076.
Office Action dated Nov. 19, 2015 for U.S. Appl. No. 14/217,249.
Office Action dated Nov. 18, 2015 for U.S. Appl. No. 14/217,467.
Office Action dated Dec. 4, 2015 for U.S. Appl. No. 14/616,700.
Office Action dated Jun. 4, 2015 for U.S. Appl. No. 14/215,414.
Office Action dated Dec. 15, 2015 for U.S. Appl. No. 13/253,912.
Office Action dated Dec. 17, 2015 for U.S. Appl. No. 14/214,216.
Office Action dated Dec. 17, 2015 for U.S. Appl. No. 14/215,414.
Office Action dated Dec. 17, 2015 for U.S. Appl. No. 14/803,107.
Office Action dated Jan. 15, 2016 for U.S. Appl. No. 14/866,946.
Office Action dated Jan. 11, 2016 for U.S. Appl. No. 14/217,399.
Office Action dated Jan. 15, 2016 for U.S. Appl. No. 14/216,937.
Notice of Allowance and Examiner-Initiated Interview Summary, dated Jan. 29, 2016 for U.S. Appl. No. 14/297,628.
National Science Fountation,Award Abstract #1548968, SBIR Phase I: SSD In-Situ Processing, http://www.nsf.gov/awardsearch/showAward?AWD_ID=1548968 printed on Feb. 13, 2016.
Design-Reuse, NxGn Data Emerges from Stealth Mode to provide a paradigm shift in enterprise storage solution, http://www.design-reuse.com/news/35111/nxgn-data-intelligent-solutions.html, printed on Feb. 13, 2016.
Office Action for U.S. Appl. No. 14/217,365 dated Feb. 18, 2016.
Office Action for U.S. Appl. No. 14/217,365 dated Mar. 2, 2016.
Office Action for U.S. Appl. No. 14/690,305 dated Feb. 25, 2016.
Office Action for U.S. Appl. No. 14/217,436 dated Feb. 25, 2016.
Office Action for U.S. Appl. No. 14/217,316 dated Feb. 26, 2016.
Office Action for U.S. Appl. No. 14/215,414 dated Mar. 1, 2016.
Office Action for U.S. Appl. No. 14/616,700 dated Mar. 8, 2016.
Notice of allowance/allowability for U.S. Appl. No. 13/253,912 dated Mar. 21, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/803,107 dated Mar. 28, 2016.
Office Action for U.S. Appl. No. 14/217,334 dated Apr. 4, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,041 dated Apr. 11, 2016.
Office Action for U.S. Appl. No. 14/217,249 dated Apr. 21, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,467 dated Apr. 20, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/214,216 dated Apr. 27, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,436 dated May 6, 2016.
Office Action for U.S. Appl. No. 14/215,414 dated May 20, 2016.
Office Action for U.S. Appl. No. 14/616,700 dated May 20, 2016.
Office Action for U.S. Appl. No. 14/689,019 dated May 20, 2016.
Advisory Action for U.S. Appl. No. 14/217,316 dated May 19, 2016.
Advisory Action for U.S. Appl. No. 14/217,334 dated Jun. 13, 2016.
Office Action for U.S. Appl. No. 14/217,291 dated Jun. 15, 2016.
Office Action for U.S. Appl. No. 14/217,096 dated Jul. 12, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,399 dated Jul. 20, 2016 (Mailed in this current application).
Office Action for U.S. Appl. No. 14/866,946 dated Jul. 29, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,334 dated Jul. 29, 2016.
Office Action for U.S. Appl. No. 14/690,243 dated Aug. 11, 2016.
Office Action for U.S. Appl. No. 14/690,370 dated Aug. 12, 2016.
Office Action for U.S. Appl. No. 14/216,937 dated Aug. 15, 2016.
Working Draft American National Standard Project T10/1601-D Information Technology Serial Attached SCSI—1.1 (SAS—1.1), Mar. 13, 2004 Revision 4.
Office Action for U.S. Appl. No. 14/217,316 dated Aug. 25, 2016.
Office Action for U.S. Appl. No. 14/690,305 dated Aug. 26, 2016.
Advisory Action for U.S. Appl. No. 14/217,291 dated Sep. 9, 2016.
Advisory Action for U.S. Appl. No. 14/689,045 dated Sep. 16, 2016.
Notice of Allowance for U.S. Appl. No. 14/182,303 dated Sep. 12, 2016.
Advisory Action for U.S. Appl. No. 14/690,114 dated Sep. 12, 2016.
Notice of Allowance for U.S. Appl. No. 14/215,414 dated Sep. 23, 2016.
Advisory Action for U.S. Appl. No. 14/866,946 dated Oct. 13, 2016.
Office Action for U.S. Appl. No. 14/687,700 dated Sep. 26, 2016.
Office Action for U.S. Appl. No. 15/170,768 dated Oct. 6, 2016.
Notice of allowance/allowability for U.S. Appl. No. 14/217,365 dated Oct. 18, 2016.
Office Action for U.S. Appl. No. 14/616,700 dated Oct. 20, 2016.
Office Action for U.S. Appl. No. 14/855,245 dated Oct. 26, 2016.
Office Action for U.S. Appl. No. 14/217,249 dated Oct. 28, 2016.
Office Action for U.S. Appl. No. 14/217,399 dated Nov. 1, 2016.
Office Action for U.S. Appl. No. 14/217,291 dated Nov. 3, 2016.
Office Action for U.S. Appl. No. 14/217,947 dated Nov. 4, 2016.
Office Action for U.S. Appl. No. 14/216,627 dated Nov. 7, 2016.
Office Action for U.S. Appl. No. 14/689,019 dated Nov. 18, 2016.
Office Action for U.S. Appl. No. 14/684,399 dated Nov. 21, 2016.
Notice of Allowance for U.S. Appl. No. 14/689,045 dated Nov. 21, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,334 dated Nov. 23, 2016.
Advisory Action for U.S. Appl. No. 14/690,305 dated Nov. 25, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,096 dated Dec. 5, 2016.
Notice of Allowance for U.S. Appl. No. 14/217,161 dated Dec. 30, 2016.
Office Action for U.S. Appl. No. 14/866,946 dated Jan. 5, 2017.
Office Action for U.S. Appl. No. 14/688,209 dated Jan. 11, 2017.
Amazon Route 53 Developer Guide API Version Apr. 1, 2013, copyright 2017 by Amazon Web Services.
Host Bus Adapters (HBAs): What you need to know about networking workhorse by Alan Earls, Feb. 2003.
Office Action for U.S. Appl. No. 14/690,243 dated Jan. 13, 2017.
Office Action for U.S. Appl. No. 14/232,801 dated Jan. 19, 2017.
Notice of Allowance for U.S. Appl. No. 14/215,414 dated Jan. 20, 2017.
Advisory Action for U.S. Appl. No. 14/217,249 dated Jan. 26, 2017.
Notice of Allowance for U.S. Appl. No. 14/687,700 dated Jan. 27, 2016.
Office Action for U.S. Appl. No. 14/690,339 dated Feb. 3, 2017.
Office Action for U.S. Appl. No. 14/616,700 dated Feb. 9, 2017.
Notice of Allowance for U.S. Appl. No. 14/217,365 dated Feb. 10, 2017.
Office Action for U.S. Appl. No. 14/690,305 dated Feb. 10, 2017.
Office Action for U.S. Appl. No. 14/690,349 dated Feb. 8, 2017.
Advisory Action for U.S. Appl. No. 14/689,019 dated Feb. 17, 2017.
Office Action for U.S. Appl. No. 14/690,349 dated Feb. 27, 2017.
Robert Cooksey et al., A Stateless, Content-Directed Data Prefetching Mechanism, Copyright 2002 ACM.
Office Action for U.S. Appl. No. 14/866,946 dated Jul. 27, 2017.
Office Action for U.S. Appl. No. 14/616,700 dated Jun. 2, 2017.
Office Action for U.S. Appl. No. 15/268,533 dated Jun. 2, 2017.
Office Action for U.S. Appl. No. 15/268,536 dated Apr. 27, 2017.
Office Action for U.S. Appl. No. 15/368,598 dated May 19, 2017.
Provisional Applications (1)
Number Date Country
61980597 Apr 2014 US