[go: up one dir, main page]

CN105683934A - Destination port handling for data transfers - Google Patents

Destination port handling for data transfers Download PDF

Info

Publication number
CN105683934A
CN105683934A CN201380080585.6A CN201380080585A CN105683934A CN 105683934 A CN105683934 A CN 105683934A CN 201380080585 A CN201380080585 A CN 201380080585A CN 105683934 A CN105683934 A CN 105683934A
Authority
CN
China
Prior art keywords
port
data
memory
storage array
command
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
Application number
CN201380080585.6A
Other languages
Chinese (zh)
Other versions
CN105683934B (en
Inventor
R·K·塔马
S·纳扎里
阿吉特库马尔·A·纳塔拉詹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN105683934A publication Critical patent/CN105683934A/en
Application granted granted Critical
Publication of CN105683934B publication Critical patent/CN105683934B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories

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)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

A method includes receiving a command in a target port, where the command is provided by an initiator and is associated with a write operation. The method comprises the following steps: the target is used to process a data transfer of the initiator associated with the write operation in response to the command. The processing comprises the following steps: based on the characteristics of the command, selectively using memory pre-allocated by the storage array controller before the command is received at the target port for the transfer or requesting allocation of memory from the storage array controller for the transfer.

Description

数据传输的目标端口处理Destination port handling for data transfers

背景方法background method

计算机可以访问存储区域网络(SAN),以存储和检索大量数据。典型的SAN包括整合的大容量存储设备(磁带驱动器、硬盘驱动器、光盘驱动器等)的池,并且该SAN典型地提供相对高速的块级存储,这对于备份应用、归档应用、数据库应用和其它此类目的可以是有利的。Computers can access storage area networks (SANs) to store and retrieve large amounts of data. A typical SAN includes pools of consolidated mass storage devices (tape drives, hard drives, optical drives, etc.), and typically provides relatively high-speed block-level storage, which is useful for backup, archiving, database Category purposes can be beneficial.

附图说明Description of drawings

图1是根据示例实现方式的计算机系统的示意图。1 is a schematic diagram of a computer system according to an example implementation.

图2是根据示例实现方式的图1的物理机器的示意图,该物理机器包含主适配器和存储阵列控制器。2 is a schematic diagram of the physical machine of FIG. 1 including a host adapter and a storage array controller, according to an example implementation.

图3和图4是根据示例实现方式的描述命令的目标端口处理的流程图。3 and 4 are flowcharts describing target port processing of commands, according to example implementations.

具体实施方式detailed description

参考图1,根据示例实现方式,计算机系统100包括存储区域网络(SAN)110,存储区域网络110包括整合的物理介质存储设备130(磁带驱动器、光盘驱动器、硬盘驱动器、这些设备的组合等)的池,该物理介质存储设备的池可以由客户端102(台式计算机、便携式计算机、平板计算机、智能手机等)用于数据存储和检索目的。Referring to FIG. 1 , according to an example implementation, a computer system 100 includes a storage area network (SAN) 110 that includes a collection of consolidated physical media storage devices 130 (tape drives, optical drives, hard drives, combinations of these, etc.). Pool, the pool of physical media storage devices may be used by clients 102 (desktops, laptops, tablets, smartphones, etc.) for data storage and retrieval purposes.

作为示例,客户端102可以与计算机系统100的各服务器170(数据库、电子邮件服务器、文件服务器等)通信,并且作为这些通信的结果,服务器170可以生成块级访问请求,以向SAN110存储数据并且从SAN110检索数据。对于图1的示例而言,客户端102可以使用网络结构106(如基于局域网(LAN)的结构、基于广域网(WAN)的结构、基于因特网的结构等)与服务器170通信。As an example, client 102 may communicate with various servers 170 (database, email server, file server, etc.) Retrieve data from SAN110. For the example of FIG. 1 , client 102 may communicate with server 170 using network fabric 106 (eg, a local area network (LAN)-based fabric, a wide area network (WAN)-based fabric, an Internet-based fabric, etc.).

一般来说,由服务器170生成的块级读取和写入被SAN110的存储阵列120(图1中示出的N个存储阵列120-1…120-N)的存储阵列控制器134处理,以便在阵列120的物理存储设备130中存储数据和从阵列120的物理存储设备130中检索数据。In general, block-level reads and writes generated by servers 170 are processed by storage array controllers 134 of storage arrays 120 (N storage arrays 120-1 . . . 120-N shown in FIG. 1 ) of SAN 110 in order to Data is stored in and retrieved from physical storage devices 130 of array 120 .

如图1所示,服务器170通过SAN结构180耦接至存储阵列120,如技术人员能够理解的,SAN结构180可以包括(作为示例)光纤通道(FC)结构、基于因特网协议(IP)的结构、交换机、网关、FC至SCSI桥等。As shown in FIG. 1, the server 170 is coupled to the storage array 120 through a SAN structure 180. As the skilled person can understand, the SAN structure 180 may include (as an example) a Fiber Channel (FC) structure, a structure based on the Internet Protocol (IP) , switches, gateways, FC to SCSI bridges, etc.

根据本文公开的示例实现方式,服务器170使用符合光纤通道协议(FCP)或因特网小型计算机系统接口(iSCSI)协议的消息传输协议来与存储阵列120通信;并且更具体地,服务器170可以通过提供以特定主适配器端口为目标的消息来发起特定的读取或写入操作。According to example implementations disclosed herein, server 170 communicates with storage array 120 using a messaging protocol compliant with Fiber Channel Protocol (FCP) or Internet Small Computer System Interface (iSCSI) protocol; and more specifically, server 170 may communicate with storage array 120 by providing A message targeted to a specific host adapter port to initiate a specific read or write operation.

一般来说,根据示例实现方式,特定存储阵列120包括一个或多个主适配器136。主适配器136提供前端接口,该前端接口被构造为与服务器170通信并且将存储阵列120的驱动器130上的存储呈现为逻辑单元。存储阵列120进一步包括存储阵列控制器134,存储阵列控制器134(在它的其它功能中)执行逻辑存储单元至物理存储单元的转换,并且提供后端接口来与存储阵列120的关联驱动器130通信。In general, a particular storage array 120 includes one or more host adapters 136, according to an example implementation. Host adapter 136 provides a front-end interface configured to communicate with server 170 and present storage on drives 130 of storage array 120 as a logical unit. Storage array 120 further includes storage array controller 134 which (among its other functions) performs the conversion of logical storage units to physical storage units and provides a backend interface to communicate with associated drives 130 of storage array 120 .

在下面的详述的上下文中,针对在服务器170和存储阵列120之间传输数据的特定写入或读取,“发起器”(例如服务器170的主端口)通过提供消息来发起对特定“目标”端口(例如,主适配器136的端口)的写入或读取操作,该消识别该目标端口、包括写入/读取命令并且指定该关联的写入/读取操作的一个或多个特性。该消息可以是(FCP的)信息单位(IU)或者(iSCSI协议的)协议数据单元(PDU)。In the context detailed below, for a particular write or read of data transfer between server 170 and storage array 120, an "initiator" (eg, the master port of server 170) initiates a call to a particular "target" by providing a message. For a write or read operation on a port (e.g., a port of host adapter 136), the cancel identifies the target port, includes a write/read command, and specifies one or more characteristics of the associated write/read operation . The message may be an Information Unit (IU) (of the FCP) or a Protocol Data Unit (PDU) (of the iSCSI protocol).

特定的目标和发起器可以经历登录过程,该登录过程设置如何在这两个实体之间发生数据传输。例如,作为登录过程的结果,特定目标端口可以被指定为能够接收非请求数据(或“直接”数据),该非请求数据伴随来自该发起器的消息中的写入命令。Certain targets and initiators can go through a login process that sets how data transfers take place between these two entities. For example, as a result of a login process, a particular target port may be designated as capable of receiving unsolicited data (or "direct" data) accompanying a write command in a message from the initiator.

作为替代,该登录过程可以导致将目标端口指定为不接收具有写入命令的非请求数据。对于后面这种配置,目标端口控制发起器提供与该写入关联的数据的时机,因为直到目标端口用指示该目标端口准备好接收写入数据的消息作出响应,发起器才提供该写入数据。这可以另外被称为目标端口提供(FCP的)XFR_RDY或者(iSCSI协议的)R2T信号。Alternatively, the login process may result in the target port being designated not to receive unsolicited data with write commands. For the latter configuration, the target port controls when the initiator provides the data associated with the write, since the initiator does not provide the write data until the target port responds with a message indicating that the target port is ready to receive the write data . This may alternatively be referred to as the target port providing an XFR_RDY (for FCP) or R2T (for iSCSI protocol) signal.

现在转向更具体的示例,发起器可以生成包括以主适配器136的特定端口为目标的写入命令的消息。对于该示例以及本文描述的其它示例,目标端口被配置为不接收具有写入命令的非请求数据。作为替代,对于写入操作,在发起器向目标端口提供数据之前,发起器等待目标端口提供准备好接收该写入数据的指示。Turning now to a more specific example, an initiator may generate a message including a write command targeting a specific port of host adapter 136 . For this example, as well as other examples described herein, the target port is configured not to receive unsolicited data with write commands. Alternatively, for a write operation, the initiator waits for the target port to provide an indication that it is ready to receive the write data before the initiator provides the data to the target port.

当目标端口接收数据作为写入操作的一部分时,目标端口将数据传输至存储阵列控制器134的主内存的区域中,该区域是存储阵列控制器134为此目的而分配的。在任何时候,可以分配存储阵列控制器134的主内存来从多个正在进行的写入操作接收数据。When a target port receives data as part of a write operation, the target port transfers the data into an area of main memory of storage array controller 134 that storage array controller 134 has allocated for this purpose. At any time, the main memory of storage array controller 134 may be allocated to receive data from multiple ongoing write operations.

处置在目标端口处接收的写入命令的处理的一种方式是存储阵列控制器直接参与该写入操作的数据传输阶段。在该方法中,存储阵列控制器控制目标端口何时断言(向发起器)其准备好接收写入数据。此外,当接收到写入命令以及内存变得可用时,存储阵列控制器在目标端口之间分配用于接收写入数据的其主内存的区域。One way to handle the processing of write commands received at the target port is for the storage array controller to directly participate in the data transfer phase of the write operation. In this approach, the storage array controller controls when the target port asserts (to the initiator) that it is ready to receive write data. In addition, when a write command is received and memory becomes available, the storage array controller allocates an area of its main memory among the target ports for receiving the write data.

更具体地,在该直接方法中,响应于接收到写入命令,目标端口首先向存储阵列控制器(例如经由中断)通知该命令。存储阵列控制器然后分配其主内存的一部分来接收关联的写入数据,并且向目标端口通知该分配。在接收到该内存分配以后,目标端口用准备就绪的指示(即,目标端口提供具有XFR_RDY或R2T信号的消息)向该发起器做出响应,并且发起器通过将数据传输至目标端口来做出响应。More specifically, in the direct method, in response to receiving a write command, the target port first notifies the storage array controller (eg, via an interrupt) of the command. The storage array controller then allocates a portion of its main memory to receive the associated write data and notifies the target port of the allocation. After receiving the memory allocation, the target port responds to the initiator with a ready indication (i.e., the target port provides a message with an XFR_RDY or R2T signal), and the initiator responds by transferring data to the target port. response.

可以以减少该目标上每个事务的中断数以及改善CPU利用率和延迟的方式处置SCSI写入事务。减少该目标上每个事务的中断数(并且减少SCSI写入请求的延迟)的一种方法是基于SCSI标准的“首次突发”方法,其中目标接收具有写入命令的非请求数据的突发。首次突发特征由在登录过程中协商该首次突发特征的发起器和目标设置,使得当该目标被配置为接收首次突发时,目标使用预先分配的缓冲区。因此,当发起器发送写入命令时,该写入命令伴有写入数据,并且在中断该阵列控制器之前,该目标使用预先分配的缓冲区来存储该数据。然而,发起器可以不被构建或被配置为实现首次突发。SCSI write transactions can be handled in a manner that reduces the number of interrupts per transaction on that target and improves CPU utilization and latency. One way to reduce the number of interrupts per transaction on that target (and reduce latency for SCSI write requests) is based on the SCSI standard's "first burst" approach, where the target receives a burst of unsolicited data with a write command . The first burst characteristic is set by the initiator and target which negotiate the first burst characteristic during the login process, so that when the target is configured to receive the first burst, the target uses a pre-allocated buffer. Thus, when the initiator sends a write command, the write command is accompanied by write data, and the target uses a pre-allocated buffer to store the data before interrupting the array controller. However, the initiator may not be built or configured to achieve the first burst.

根据本文公开的示例方法,针对非首次突发写入事务预先分配目标主机总线适配器上的缓冲区,这还允许在没有发起器参与情况下中断数量的减少,并且不依赖发起器支持首次突发的能力。According to the example method disclosed herein, buffers on the target host bus adapter are pre-allocated for non-first burst write transactions, which also allows for a reduced number of interrupts without the involvement of the initiator and does not rely on the initiator to support the first burst Ability.

以此方式,本文公开的系统和方法用于通过为发起器和目标端口之间的关联写入数据的传输预先分配内存来优化写入(例如优化SCSI写入)。在此上下文中,“预先分配的”内存指由存储阵列控制器分配的供特定端口针对今后的写入操作专门使用的存储阵列控制器的内存的一个或多个区域。该预先分配指存储阵列控制器134不直接参与在特定写入操作的数据阶段。以此方式,根据本文公开的示例实现方式,特定目标端口被构造为针对特定写入操作而与发起器通信,以将写入数据传输至该目标端口并且将该数据存储在存储阵列控制器134的预先分配的内存区域中,所有这些都无需存储阵列控制器134的参与。因此,在可能的益处中,开销可以从存储阵列控制器134卸给目标端口,并且可以减少与写入数据的传输关联的时间。In this manner, the systems and methods disclosed herein serve to optimize writes (eg, optimize SCSI writes) by pre-allocating memory for transmission of associated write data between initiator and target ports. In this context, "pre-allocated" memory refers to one or more regions of the storage array controller's memory allocated by the storage array controller for the exclusive use of a particular port for future write operations. This pre-allocation means that storage array controller 134 is not directly involved in the data phase of a particular write operation. In this manner, a particular target port is configured to communicate with an initiator for a particular write operation to transmit write data to that target port and store that data in storage array controller 134, according to example implementations disclosed herein. All of this without the involvement of the storage array controller 134. Thus, overhead can be offloaded from storage array controller 134 to the target ports, and the time associated with the transfer of write data can be reduced, among possible benefits.

更具体地,根据示例实现方式,存储阵列控制器134用一个或多个参数来规划主适配器136的特定端口,该一个或多个参数以由该端口使用预先分配的内存处置其数据传输的一类写入操作为特征。为了由该端口用来胜任写入操作,阵列控制器134向特定端口预先分配一个或多个内存缓冲区。More specifically, according to an example implementation, storage array controller 134 programs a particular port of host adapter 136 with one or more parameters that allow the port to handle its data transfers using pre-allocated memory. Write-like operations are characterized. To be used by that port for write operations, array controller 134 pre-allocates one or more memory buffers to a particular port.

根据示例实现方式,特定端口对其被分配的用于指定的那类写入的一个或多个内存缓冲区具有独占访问权,直到该端口将被分配的内存缓冲区释放回存储阵列控制器134为止。如果特定写入命令不落入该指定的类内,那么存储阵列控制器134直接参与该数据阶段:该目标端口提醒存储阵列控制器134接收该命令;并且,在该目标端口向发起器发送指示准备好接收写入数据的消息之前,目标端口等待存储阵列控制器134分配用于传输关联写入数据的内存。According to an example implementation, a particular port has exclusive access to one or more memory buffers it has allocated for a specified type of write until the port releases the allocated memory buffers back to the storage array controller 134. until. If a particular write command does not fall within the specified class, then the storage array controller 134 directly participates in the data phase: the target port alerts the storage array controller 134 to accept the command; and, at the target port, sends an indication to the initiator Before being ready to receive a message to write data, the target port waits for memory array controller 134 to allocate memory for transferring the associated write data.

因此,参见图3,根据示例实现方式,一种方法300包括:在端口中接收(框304)来自发起器的写入命令。依照方法300的框308,基于写入操作的一个或多个特性(由写入命令描述的),通过选择性地针对数据传输使用预先分配的内存或者针对与写入操作关联的数据传输从存储阵列控制器请求内存的分配,该端口处理该与写入操作关联的数据传输。Thus, referring to FIG. 3 , according to an example implementation, a method 300 includes receiving (block 304 ) a write command from an initiator in a port. Pursuant to block 308 of method 300, based on one or more characteristics of the write operation (described by the write command), the The array controller requests the allocation of memory, and the port handles the data transfer associated with the write operation.

结合图1参见图2,根据示例实现方式,主适配器136和存储阵列控制器134可以是相同物理机器200的一部分。在该上下文中,物理机器200是由真实的硬件(中央处理单元(CPU)、内存设备、总线接口等)和真实的机器可执行指令或“软件”(操作系统指令、驱动指令、应用指令等)形成的真正的机器。Referring to FIG. 2 in conjunction with FIG. 1 , according to an example implementation, host adapter 136 and storage array controller 134 may be part of the same physical machine 200 . In this context, a physical machine 200 is composed of real hardware (central processing unit (CPU), memory devices, bus interfaces, etc.) and real machine-executable instructions or "software" (operating system instructions, driver instructions, application instructions, etc. ) to form a real machine.

作为示例,存储阵列控制器134可以由物理机器200的主系统板形成,并且主适配器136可以由被插入主板上的相应总线插槽内的主适配器卡形成。在进一步的实现方式中,存储阵列控制器134和主适配器136可以进一步在相同的主板上形成。因此,预期很多变化,这些变化在所附的权利要求的范围内。As an example, storage array controller 134 may be formed from a main system board of physical machine 200, and main adapter 136 may be formed from a main adapter card that is inserted into a corresponding bus slot on the mainboard. In a further implementation, storage array controller 134 and host adapter 136 may further be formed on the same motherboard. Accordingly, many variations are contemplated which are within the scope of the appended claims.

如图2所示,主适配器136通常可以包含一个或多个端口处理器(图2中示出Q个端口处理器210-1…210-Q),该一个或多个端口处理器形成各自的目标端口204(例如图2中示出的Q个目标端口204-1…204-Q)。在一些示例实现方式中,特定端口处理器210被配置为处理针对指定的目标端口204的读取和写入操作;并且在进一步的示例实现方式中,特定端口处理器210可以处理针对多个指定的目标端口204的读取和写入操作。如本文描述的,作为该处理的一部分,端口处理器210使用预先分配的内存缓冲区来处置与预先限定的类内的写入命令关联的数据传输。As shown in FIG. 2 , host adapter 136 may generally include one or more port processors (Q port processors 210-1 . . . 210-Q shown in FIG. 2 ) that form respective Target ports 204 (eg, Q target ports 204-1 . . . 204-Q shown in FIG. 2). In some example implementations, a specific port handler 210 is configured to process read and write operations for a specified target port 204; and in further example implementations, a specific port handler 210 may process target port 204 for read and write operations. As part of this processing, port handler 210 uses pre-allocated memory buffers to handle data transfers associated with write commands within predefined classes, as described herein.

更具体地,根据示例实现方式,存储阵列控制器134包括一个或多个中央处理单元(CPU)214,该一个或多个中央处理单元(CPU)214通过桥218耦接至存储阵列控制器134的主内存220。More specifically, according to an example implementation, storage array controller 134 includes one or more central processing units (CPUs) 214 coupled to storage array controller 134 via bridge 218 220 of the main memory.

一般来说,主内存220可以暂时性地存储与机器可执行指令的执行关联的指令,以及在与该处理关联的初步结果、中间结果和最终结果中涉及的数据。根据一些实现方式,主内存220可以存储如下机器可执行指令:该机器可执行指令在由一个或多个CPU214执行时使该一个或多个CPU214执行本文公开的方法中的全部或一部分,如方法300和方法400(下面描述)。In general, main memory 220 may temporarily store instructions associated with the execution of machine-executable instructions, as well as data involved in preliminary, intermediate, and final results associated with the process. According to some implementations, main memory 220 may store machine-executable instructions that, when executed by one or more CPUs 214, cause the one or more CPUs 214 to perform all or a portion of the methods disclosed herein, such as the method 300 and method 400 (described below).

一般来说,根据具体实现方式,主内存220是可以由半导体存储设备、光存储设备、基于磁性介质的存储设备、可移除的介质设备等形成的非暂时性存储介质。In general, the main memory 220 is a non-transitory storage medium that may be formed from a semiconductor storage device, an optical storage device, a magnetic media-based storage device, a removable media device, etc., depending on the specific implementation.

根据示例实现方式,分配主内存220的区域以接收到来的写入数据。更具体地,根据示例实现方式,内存220包含接收到来的写入数据的缓冲区221。缓冲区221是主内存220的指定区域。缓冲区221可以各自具有相同的长度或大小;或者根据特定实现方式,缓冲区221可以具有不同的大小。According to an example implementation, a region of main memory 220 is allocated to receive incoming write data. More specifically, according to an example implementation, memory 220 includes a buffer 221 for receiving incoming write data. The buffer 221 is a designated area of the main memory 220 . Buffers 221 may each have the same length or size; or, depending on the particular implementation, buffers 221 may have different sizes.

当端口处理器210接收关联的写入操作的写入数据时,端口处理器210对主内存220执行直接内存访问(DMA),以将写入数据存储在被分配的一个或多个缓冲区221中。在已经传输数据后,一个或多个CPU214可以执行像逻辑至物理数据单元转换这样的功能,并且经由一个或多个输入/输出(I/O)处理器230将数据存储在存储设备130中的一个或多个中。根据关联的写入是否落入有资格的或指定的类内,针对特定写入命令分配的一个或多个缓冲区221可以是在接收写入命令之前预先分配的,或者可以是在接收写入命令之后分配的。When the port processor 210 receives write data for an associated write operation, the port processor 210 performs a direct memory access (DMA) to the main memory 220 to store the write data in one or more allocated buffers 221 middle. After the data has been transferred, one or more CPUs 214 may perform functions such as logical-to-physical data unit conversion and store the data in memory devices 130 via one or more input/output (I/O) processors 230 in one or more. The one or more buffers 221 allocated for a particular write command may be pre-allocated prior to receiving the write command, or may be allocated after receiving the write command, depending on whether the associated write falls within an eligible or specified class. assigned after the command.

根据示例实现方式,一个或多个CPU214识别要由特定端口204的特定端口处理器210处置的写入操作的有资格的或指定的一类写入操作,并且相应地规划端口处理器210。就这一点而言,一个或多个CPU214可以用描述该类写入操作的一个或多个参数来规划该特定端口处理器210,并且用要在向主内存220传输写入数据时使用的预先分配的一个或多个缓冲区221池规划该端口处理器210。根据示例实现方式,由指定的端口204独占性地使用预先分配的一个或多个缓冲区221。According to an example implementation, the one or more CPUs 214 identify the eligible or designated class of write operations to be handled by a particular port processor 210 of a particular port 204 and schedule the port processor 210 accordingly. In this regard, one or more CPUs 214 may program that particular port processor 210 with one or more parameters describing the type of write operation, and with the pre-defined port processor 210 to be used when transferring the write data to main memory 220. The port processor 210 is allocated a pool of one or more buffers 221 . According to an example implementation, the pre-allocated one or more buffers 221 are used exclusively by the designated port 204 .

通过对要涵盖的写入操作的一个或多个特性进行描述的一个或多个参数,限定待由特定端口204处置的指定的一类写入操作。例如,根据一些实现方式,特定写入操作类包括与特定块长或大小的写入数据关联的写入命令。以此方式,块大小可以与存储阵列控制器134的缓存内存222的缓存行大小相关。例如,特定缓存大小可以是32千字节(kB)。A given class of write operations to be handled by a particular port 204 is defined by one or more parameters describing one or more characteristics of the write operation to be covered. For example, according to some implementations, a particular write operation class includes a write command associated with a particular block length or size of write data. In this way, the block size may be related to the cache line size of the cache memory 222 of the storage array controller 134 . For example, the particular cache size may be 32 kilobytes (kB).

根据进一步的示例实现方式,端口处理器210可以考虑除写入数据的块大小以外的考虑。例如,根据一些示例实现方式,特定写入操作可以与数据偏移量关联。该类写入操作可以是如下写入操作:在该写入操作中,偏移量不导致将写入数据存储在一个以上缓存行中。According to a further example implementation, the port handler 210 may consider considerations other than the block size of the written data. For example, according to some example implementations, a particular write operation may be associated with a data offset. Such a write operation may be a write operation in which the offset does not cause the write data to be stored in more than one cache line.

例如,特定写入操作的块大小可以等于缓存行大小。因此,根据示例实现方式,10的偏移量可以导致要使用两个缓存行,因此可以不认为是该写入类的一部分。同样地,存储阵列控制器134通过首先将一个或多个缓冲区221分配给端口处理器210来处置这种写入操作的初始阶段,然后端口处理器210向发起器通知其准备就绪。For example, the block size for a particular write operation can be equal to the cache line size. Thus, according to an example implementation, an offset of 10 may result in two cache lines being used and thus may not be considered part of this write class. Likewise, storage array controller 134 handles the initial phase of such a write operation by first allocating one or more buffers 221 to port processor 210, which then notifies the initiator that it is ready.

参考图4,作为更特定的示例,根据示例实现方式,写入命令可以依据方法400而由存储阵列120处理。方法400包括目标端口从发起器接收(框404)命令。如果目标端口确定(决策框408)该命令是写入命令,那么目标端口确定(决策框412)该写入命令是否有资格使端口处置与发起器的通信,以使用预先分配的内存传输数据。如果是这样,那么目标端口使用(框416)来自其预先分配的池的缓冲区来处置该传输,并且根据框416,向发起器指示其准备就绪。然而,如果写入命令没有资格(决策框412),则该端口将该请求转发(框420)至存储阵列控制器,等待来自该控制器的内存缓冲区的识别,然后表示该端口准备好接收数据。如图4所示,在向发起器表示其准备就绪以后,目标端口等待(框424)写入数据。Referring to FIG. 4 , as a more specific example, a write command may be processed by storage array 120 in accordance with method 400 , according to an example implementation. Method 400 includes the target port receiving (block 404) a command from the initiator. If the target port determines (decision block 408) that the command is a write command, then the target port determines (decision block 412) whether the write command qualifies the port to handle communication with the initiator to transfer data using pre-allocated memory. If so, the target port handles the transfer using (block 416) a buffer from its pre-allocated pool and, according to block 416, indicates to the initiator that it is ready. However, if the write command is not eligible (decision block 412), the port forwards (block 420) the request to the storage array controller, waits for recognition from the controller's memory buffer, and then indicates that the port is ready to receive data. As shown in FIG. 4, after signaling its readiness to the initiator, the target port waits (block 424) to write data.

如决策框428所示,向存储阵列控制器的内存的数据传输取决于写入是否在要使用预先分配的内存处置的类中。以此方式,如果写入是有资格的写入,那么根据框432,目标端口使用DMA来将数据传输至位于适当偏移量的存储阵列控制器的预先分配的内存。否则,根据框436,该目标端口使用DMA传输来将该数据传输至在接收到写入命令以后分配的存储阵列缓冲区。As indicated by decision block 428, the transfer of data to memory of the storage array controller depends on whether the write is in a class to be handled using pre-allocated memory. In this way, if the write is a qualifying write, then according to block 432, the target port uses DMA to transfer the data to the storage array controller's pre-allocated memory at the appropriate offset. Otherwise, per block 436, the target port uses a DMA transfer to transfer the data to a memory array buffer allocated after receiving the write command.

当数据传输完成时,目标端口向存储阵列控制器通知(框440)数据阶段结束。然后,目标端口等待(框444)来自存储阵列控制器的状态,并且根据框450,将该状态送往(框450)发起器。When the data transfer is complete, the target port notifies (block 440) the storage array controller that the data phase is over. The target port then waits (block 444 ) for status from the storage array controller and, per block 450 , sends (block 450 ) the status to the initiator.

如图4所示,如果该命令不是写入命令(决策框408),则根据框446该端口使用存储阵列控制器来调节对发起器的附加处理阶段;并且控制进行至框444。As shown in FIG. 4 , if the command is not a write command (decision block 408 ), the port uses the storage array controller to condition additional processing stages to the initiator per block 446 ; and control passes to block 444 .

在本文公开的方法和系统的潜在优势中,可以在无需发起器修改其标准行为的情况下提升写入操作性能。配置处于存储阵列的完全控制之下。存储阵列控制器可以经历中断处理的显著减少,并且存储阵列控制器可以经历其CPU负载的显著降低。本文公开的系统和方法可以特别有益于具有相对高目标端口密度的存储阵列。预料到在所附权利要求的范围内的其它的和不同的优势。Among potential advantages of the methods and systems disclosed herein, write operation performance can be improved without requiring the initiator to modify its standard behavior. Configuration is under full control of the storage array. The storage array controller can experience a significant reduction in interrupt handling, and the storage array controller can experience a significant reduction in its CPU load. The systems and methods disclosed herein may be particularly beneficial for storage arrays with relatively high target port densities. Other and different advantages are contemplated within the scope of the appended claims.

虽然本文已经公开了有限多个示例,但是得益于本公开,本领域技术人员将理解从中获得的多种修改和变化。期望所附权利要求覆盖所有这些修改和变化。Although a limited number of examples have been disclosed herein, various modifications and changes therein will be apparent to those skilled in the art having the benefit of this disclosure. It is intended in the appended claims to cover all such modifications and changes.

Claims (15)

1.一种方法,包括:1. A method comprising: 在目标端口中接收命令,所述命令由发起器提供并且与写入操作关联;以及receiving a command in the target port, the command provided by the initiator and associated with the write operation; and 响应于接收到所述命令,使用所述目标来处理与所述写入操作关联的用于所述发起器的数据传输,其中该处理包括:基于所述命令的特性,选择性地针对该传输使用在由所述目标端口接收到所述命令之前由存储阵列控制器预先分配的内存,或者针对该传输从所述存储阵列控制器请求内存的分配。processing, using the target, a data transfer for the initiator associated with the write operation in response to receiving the command, wherein the processing includes selectively targeting the transfer based on a characteristic of the command Using memory pre-allocated by the storage array controller prior to receipt of the command by the target port, or requesting an allocation of memory from the storage array controller for the transfer. 2.根据权利要求1所述的方法,其中使用所述目标端口包括:选择性地在针对该传输不从所述存储阵列控制器请求内存的分配的情况下,使用所述目标端口来向所述发起器提供准备好传输信号。2. The method of claim 1 , wherein using the target port comprises: selectively using the target port to communicate with the target port without requesting an allocation of memory from the storage array controller for the transfer. The initiator provides a ready-to-transmit signal. 3.根据权利要求1所述的方法,其中所述命令包括写入命令,并且使用所述目标端口包括:至少部分地基于与所述数据关联的块大小,选择性地在不首先请求内存的分配的情况下表示所述目标端口准备好接收所述数据。3. The method of claim 1 , wherein the command comprises a write command, and using the target port comprises: selectively, based at least in part on a block size associated with the data, without first requesting memory The case of allocation indicates that the target port is ready to receive the data. 4.根据权利要求3所述的方法,其中使用所述目标端口包括:至少部分地基于所述块大小是否超过由所述存储阵列控制器使用的缓存内存的行大小,选择性地在不首先请求内存的分配的情况下表示所述目标端口准备好接收所述数据。4. The method of claim 3 , wherein using the target port comprises: selectively, based at least in part on whether the block size exceeds a line size of cache memory used by the storage array controller, without first Requesting memory allocation indicates that the target port is ready to receive the data. 5.根据权利要求1所述的方法,其中使用所述目标端口包括:至少部分地基于与所述数据关联的偏移量是否与由所述存储阵列控制器使用的缓存内存的一个以上的行关联,选择性地在不首先从所述存储阵列控制器请求内存的分配的情况下表示所述目标端口准备好接收所述数据。5. The method of claim 1 , wherein using the target port comprises: based at least in part on whether the offset associated with the data matches more than one line of cache memory used by the storage array controller an association, optionally indicating that the target port is ready to receive the data without first requesting an allocation of memory from the storage array controller. 6.根据权利要求1所述的方法,进一步包括:6. The method of claim 1, further comprising: 使用所述存储阵列控制器来用指示所述特性的至少一个参数来规划所述目标端口。The storage array controller is used to program the target port with at least one parameter indicative of the characteristic. 7.根据权利要求1所述的方法,进一步包括:7. The method of claim 1, further comprising: 针对所述传输使用所述存储阵列控制器来向所述目标端口预先分配内存。Memory is preallocated to the target port for the transfer using the storage array controller. 8.一种装置,包括:8. A device comprising: 存储阵列控制器,用于响应于端口指示接收到来自发起器的与写入操作关联的命令,分配内存来接收与所述写入操作关联的数据;以及a storage array controller configured to allocate memory to receive data associated with a write operation in response to the port indicating receipt of a command associated with the write operation from the initiator; and 端口处理器,用于处理所述写入操作,所述端口处理器基于所述写入操作的特性而选择性地:a port handler for processing the write operation, the port handler selectively based on characteristics of the write operation: 向所述发起器提供所述端口准备好接收所述数据的指示;以及providing an indication to the initiator that the port is ready to receive the data; and 将所述数据传输至在所述端口接收到所述命令之前由所述存储阵列控制器预先分配的内存区域。The data is transferred to a memory region pre-allocated by the storage array controller prior to the port receiving the command. 9.根据权利要求8所述的装置,其中所述端口处理器用所预先分配的内存区域来规划,所预先分配的内存区域与由所述存储阵列控制器预留的供所述端口处理器使用的至少一个内存缓冲区关联。9. The apparatus according to claim 8, wherein the port processor is planned with a pre-allocated memory area that is the same as that reserved by the storage array controller for use by the port processor At least one memory buffer association for . 10.根据权利要求8所述的装置,其中所述端口处理器执行所述数据向所述内存区域的直接内存访问(DMA)传输。10. The apparatus of claim 8, wherein the port processor performs a direct memory access (DMA) transfer of the data to the memory region. 11.根据权利要求8所述的装置,其中基于所述写入操作的特性,在所述端口处理器接收到所述命令之后,所述端口处理器选择性地等待来自所述存储阵列控制器的内存的关联。11. The apparatus of claim 8, wherein the port processor selectively waits for a command from the storage array controller after the port processor receives the command based on the nature of the write operation. memory association. 12.根据权利要求8所述的装置,进一步包括:12. The apparatus of claim 8, further comprising: 介质存储驱动器,所述介质存储驱动器耦接至所述存储阵列控制器,其中所述存储阵列控制器将所述数据存储在所述驱动器中的至少一个内。a media storage drive coupled to the storage array controller, wherein the storage array controller stores the data in at least one of the drives. 13.一种物品,所述物品包括存储指令的非暂时性计算机可读存储介质,该指令在由计算机执行时使所述计算机:13. An article comprising a non-transitory computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to: 用至少一个参数规划端口处理器,所述至少一个参数描述来自发起器的写入命令的至少一个特性,所述端口处理器通过向所述发起器表示准备好接收与所述写入命令关联的数据来处理写入操作,并且将所述数据传输至在所述端口处理器接收到所述写入命令之前分配的内存区域;以及programming a port processor with at least one parameter describing at least one characteristic of a write command from an initiator, said port processor indicating to said initiator that it is ready to receive a data to process a write operation, and transfer said data to a memory region allocated before said write command was received by said port handler; and 在所述端口处理器接收到未由所述至少一个参数描述的另一写入命令之后,为所述端口处理器分配内存以传输与所述另一写入命令关联的数据。After the port processor receives another write command not described by the at least one parameter, memory is allocated for the port processor to transfer data associated with the another write command. 14.根据权利要求13所述的物品,其中所述特性包括与所述数据关联的块大小。14. The article of claim 13, wherein the characteristic includes a chunk size associated with the data. 15.根据权利要求13所述的物品,其中所述至少一个参数表示所述数据将与一个缓存行关联还是与多个缓存行关联。15. The article of claim 13, wherein the at least one parameter indicates whether the data is to be associated with one cache line or with multiple cache lines.
CN201380080585.6A 2013-10-31 2013-10-31 Target port processing method and device for data transmission Active CN105683934B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/067787 WO2015065436A1 (en) 2013-10-31 2013-10-31 Target port processing of a data transfer

Publications (2)

Publication Number Publication Date
CN105683934A true CN105683934A (en) 2016-06-15
CN105683934B CN105683934B (en) 2019-04-05

Family

ID=53004842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380080585.6A Active CN105683934B (en) 2013-10-31 2013-10-31 Target port processing method and device for data transmission

Country Status (4)

Country Link
US (1) US10209906B2 (en)
EP (1) EP3063641A4 (en)
CN (1) CN105683934B (en)
WO (1) WO2015065436A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119415038A (en) * 2024-11-06 2025-02-11 天津中科曙光存储科技有限公司 Data writing method, system, device and computer equipment

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015065436A1 (en) 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Target port processing of a data transfer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010812A1 (en) * 1997-12-31 2002-01-24 Hoese Geoffrey B. Storage router and method for providing virtual local storage
US20070208821A1 (en) * 2003-12-29 2007-09-06 Pittman Joseph C System and method for zero copy block protocol write operations
CN101923443A (en) * 2008-10-17 2010-12-22 Lsi公司 Embedded scale-out aggregator for storage array controllers
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US20120089854A1 (en) * 2010-10-10 2012-04-12 pureSilicon Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353874B1 (en) 2000-03-17 2002-03-05 Ati International Srl Method and apparatus for controlling and caching memory read operations in a processing system
US7864758B1 (en) 2001-09-28 2011-01-04 Emc Corporation Virtualization in a storage system
US7809693B2 (en) 2003-02-10 2010-10-05 Netapp, Inc. System and method for restoring data on demand for instant volume restoration
US7330862B1 (en) 2003-04-25 2008-02-12 Network Appliance, Inc. Zero copy write datapath
US7613785B2 (en) 2003-11-20 2009-11-03 International Business Machines Corporation Decreased response time for peer-to-peer remote copy write operation
US7934023B2 (en) 2003-12-01 2011-04-26 Cisco Technology, Inc. Apparatus and method for performing fast fibre channel write operations over relatively high latency networks
US7631148B2 (en) 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7843906B1 (en) * 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US7752386B1 (en) 2005-12-29 2010-07-06 Datacore Software Corporation Application performance acceleration
US7836220B2 (en) 2006-08-17 2010-11-16 Apple Inc. Network direct memory access
WO2008091575A2 (en) 2007-01-22 2008-07-31 Vast Systems Technology Corporation Method and system for modeling a bus for a system design incorporating one or more programmable processors
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US8145848B2 (en) 2009-11-30 2012-03-27 Oracle America, Inc. Processor and method for writeback buffer reuse
US8243511B2 (en) 2010-09-27 2012-08-14 Seagate Technology Llc Reuse of information from memory read operations
US8732357B2 (en) 2010-10-28 2014-05-20 International Business Machines Corporation Apparatus and method for dynamically enabling and disabling write XFR—RDY
WO2014045391A1 (en) * 2012-09-21 2014-03-27 株式会社 東芝 Disk array device, disk array controller, and method for copying data between physical blocks
US8924619B2 (en) 2013-03-15 2014-12-30 Seagate Technology Llc Unified message-based communications
WO2015065436A1 (en) 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Target port processing of a data transfer
US9977730B2 (en) * 2015-05-08 2018-05-22 Dell Products, Lp System and method for optimizing system memory and input/output operations memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010812A1 (en) * 1997-12-31 2002-01-24 Hoese Geoffrey B. Storage router and method for providing virtual local storage
US20070208821A1 (en) * 2003-12-29 2007-09-06 Pittman Joseph C System and method for zero copy block protocol write operations
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
CN101923443A (en) * 2008-10-17 2010-12-22 Lsi公司 Embedded scale-out aggregator for storage array controllers
US20120089854A1 (en) * 2010-10-10 2012-04-12 pureSilicon Inc. Systems and methods for optimizing data storage among a plurality of solid state memory subsystems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119415038A (en) * 2024-11-06 2025-02-11 天津中科曙光存储科技有限公司 Data writing method, system, device and computer equipment
CN119415038B (en) * 2024-11-06 2025-10-03 天津中科曙光存储科技有限公司 Data writing method, system, device and computer equipment

Also Published As

Publication number Publication date
WO2015065436A1 (en) 2015-05-07
US20160253115A1 (en) 2016-09-01
EP3063641A1 (en) 2016-09-07
EP3063641A4 (en) 2017-07-05
CN105683934B (en) 2019-04-05
US10209906B2 (en) 2019-02-19

Similar Documents

Publication Publication Date Title
US10838665B2 (en) Method, device, and system for buffering data for read/write commands in NVME over fabric architecture
US10120586B1 (en) Memory transaction with reduced latency
US11675540B2 (en) In-line data flow for computational storage
CN106020731B (en) Storage devices, storage device arrays, and network adapters
WO2016008338A1 (en) I/o request processing method and storage system
WO2015167435A1 (en) Cache management
US20210132858A1 (en) Quality of Service (QOS) System and Method for Non-Volatile Memory Express Devices
CN107577733B (en) A method and system for accelerating data replication
JP5893028B2 (en) System and method for efficient sequential logging on a storage device that supports caching
CN105511964A (en) I/O request processing method and device
WO2025152506A1 (en) Data processing system and method, device and nonvolatile readable storage medium
CN107908365A (en) The method, apparatus and equipment of User space memory system data interaction
US12204755B2 (en) Elastic request handling technique for optimizing workload performance
CN114327903B (en) NVMe-oF management system, resource configuration method and IO reading and writing method
US10776033B2 (en) Repurposable buffers for target port processing of a data transfer
US10209906B2 (en) Target port processing of a data transfer
CN109840217B (en) Cache resource allocation and device
US20160283134A1 (en) Data replication across host systems via storage controller
Sungyong Implementation of light-weight i/o stack for nvme-over-fabrics
US10289550B1 (en) Method and system for dynamic write-back cache sizing in solid state memory storage
CN107229424B (en) A method for writing data in a distributed storage system and a distributed storage system
US11733917B2 (en) High bandwidth controller memory buffer (CMB) for peer to peer data transfer
US20220229711A1 (en) Asymmetric fulfillment of remote procedure calls by multi-core systems
GB2509505A (en) Issuing a write to a secondary storage device, when a write to a primary storage device takes too long
WO2017126097A1 (en) Computer system and computer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant