Remote memory filling

By implementing remote memory setting instructions in a network adapter and using multiple copies to fill the memory address range, the burden problem during memory setting in existing RDMA technology is solved, and efficient memory filling is achieved.

CN119884009APending Publication Date: 2025-04-25MELLANOX TECHNOLOGIES LTD(IL)
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202411485597.3
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-23
Filing Date
2024-10-23
Publication Date
2025-04-25

AI Technical Summary

Technical Problem

When implementing memory settings, existing RDMA technologies require multiple RDMA write instructions, resulting in a greater burden on the initiator host, network and channel adapters.

Method used

By implementing remote memory setting instructions in a network adapter, the address range in memory is allowed to be filled with multiple copies of one or more fill data values, reducing network transmission and processor load.

Benefits of technology

The remote filling of the address range in remote memory is achieved using multiple copies of preset data, reducing processor load on the initiator and target hosts, and reducing redundant traffic on the network.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119884009A_ABST
    Figure CN119884009A_ABST
Patent Text Reader

Abstract

The invention relates to remote memory padding. A network adapter includes a port and a circuit. The port is used for connecting to a communication network. The circuitry is to send a remote memory setup instruction to the remote network adapter via the communication network, the instruction instructing the remote network adapter to fill one or more address ranges in the memory with a plurality of copies of one or more fill data values.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates generally to computer networks and, more particularly, to remote direct memory access (RDMA) over computer networks. Background Art

[0002] Remote Direct Memory Access (RDMA) is a technology that allows direct memory access from the memory of one computer to the memory of another computer without intervention from an operating system on either side. RDMA is described, for example, in the "Mellanox RDMA Aware Networks Programming User Manual," Revision 1.7 (2015).

[0003] Another background reference is US Pat. No. 6,122,659, which discloses a shared memory parallel processing system interconnected by a multi-level network, which combines new system configuration techniques with dedicated hardware to provide remote memory access across the network while efficiently controlling cache coherence across the network.

[0004] Finally, U.S. Patent 8,374,175 discloses a system and method for remote direct memory access via a network switching structure, comprising a system including a first system node, a direct memory access (DMA) controller, a second system node, and a network switching structure coupling the first system node and the second system node together, wherein the DMA controller is configured to perform DMA transfer of data between the first system node and the second system node via the network switching structure. Summary of the invention

[0005] Embodiments of the invention described herein provide a network adapter, including a port and circuitry. The port is used to connect to a communication network. The circuitry is used to send a remote memory setup instruction to a remote network adapter via the communication network, the instruction commanding the remote network adapter to fill one or more address ranges in a memory with multiple copies of one or more fill data values.

[0006] In some embodiments, the remote memory setup instruction includes an address range indicator indicating one or more address ranges. Additionally or alternatively, the remote memory setup instruction may include a fill data indicator indicating one or more fill data values. In an embodiment, the circuit is used to receive a command from a host specifying one or more address ranges and one or more fill data values, and send the remote memory setup instruction in response to the command.

[0007] According to embodiments described herein, a network adapter including a port and a circuit is also provided. The port is used to connect to a communication network. The circuit is used to receive a remote memory setup instruction from a remote network adapter via the communication network, the instruction instructing the network adapter to: fill one or more address ranges in a memory with multiple copies of one or more fill data values; and execute the remote memory setup instruction by writing the one or more fill data values ​​to the one or more address ranges multiple times.

[0008] In some embodiments, the remote memory setup instruction includes an address range indicator indicating one or more address ranges. Additionally or alternatively, the remote memory setup instruction may include a fill data indicator indicating one or more fill data values.

[0009] According to an embodiment described herein, a method is also provided, including: connecting to a communication network in a network adapter. A remote memory setup instruction is sent from the network adapter to a remote network adapter via the communication network. The remote memory setup instruction instructs the remote network adapter to fill one or more address ranges in a memory with multiple copies of one or more fill data values.

[0010] According to embodiments described herein, a method is also provided, including: connecting to a communication network in a network adapter. A remote memory setup instruction is received in the network adapter from a remote network adapter via the communication network. The remote memory setup instruction commands the network adapter to fill one or more address ranges in a memory with multiple copies of one or more fill data values. The remote memory setup instruction is executed using the network adapter by writing the one or more fill data values ​​multiple times to the one or more address ranges.

[0011] According to the embodiments described herein, a storage controller is also provided, comprising a host interface, a memory interface and a processor. The host interface is used to communicate with a host. The memory interface is used to access a memory. The processor is used to: receive a command specifying one or more address ranges and one or more fill data values ​​from the host via the host interface; and in response to the command, fill one or more address ranges in the memory with multiple copies of the one or more fill data values ​​by writing the one or more fill data values ​​to the one or more address ranges multiple times.

[0012] In some embodiments, the command includes an address range indicator indicating one or more address ranges. In some embodiments, the command includes a fill data indicator indicating one or more fill data values. BRIEF DESCRIPTION OF THE DRAWINGS

[0013] The present invention will be more fully understood through the following detailed description of the embodiments of the present invention in conjunction with the accompanying drawings, in which:

[0014] Figure 1 is a block diagram schematically illustrating a distributed computing system according to an embodiment of the present invention, the distributed computing system including a pair of computing nodes executing remote memory setup instructions over a communication network;

[0015] Figure 2 is a block diagram schematically illustrating an initiator network adapter according to an embodiment of the present invention;

[0016] Figure 3 is a block diagram schematically illustrating a target network adapter according to an embodiment of the present invention;

[0017] Figure 4 is a diagram schematically describing various remote storage setup request formats according to an embodiment of the present invention; and

[0018] Figure 5 FIG. 4 is a flow chart schematically illustrating a method for performing remote storage setting via a communication network according to an embodiment of the present invention. DETAILED DESCRIPTION

[0019] Overview

[0020] Remote Direct Memory Access (RDMA) allows direct memory access from the memory of one host to the memory of another host over a communications network without involving an operating system or requiring computing power, thereby enabling high-throughput, low-latency networking. RDMA in InfiniBand TM and Ethernet networks, and is usually performed at the network adapter level (host channel adapter (HCA) in InfiniBand or network interface card (NIC) in Ethernet).

[0021] A typical RDMA implementation allows writing to and reading from a specified address and includes features such as virtual addressing, multicast transmission, etc.

[0022] Computer programs sometimes need to write multiple copies of the same data to a range of addresses in memory. A common example is to initialize a range in memory with the value zero, but other fill values ​​are possible. Memory setup (sometimes called memory fill) can be implemented with multiple RDMA write instructions, but this places a burden on the initiator host, the network, and the channel adapters of both hosts.

[0023] Embodiments of the invention described herein provide methods and systems for remotely populating an address range in a remote memory with multiple copies of specified data. We refer to computers that exchange data over a network as compute nodes. In the case of an RDMA transaction, we refer to the initiator compute node that initiates the RDMA transfer and the target compute node where the remote memory is located.

[0024] In some embodiments, a network adapter of an initiator computing node receives a remote memory setup request from a host and sends a corresponding remote memory setup instruction to a target computing node; the network adapter of the target computing node receives the instruction and fills an address range in the memory with the specified fill data, which is transparent to any host that the target computing node may include. In an embodiment, the remote memory setup request may include a starting address and an ending address for specifying an address range; in other embodiments, the request includes a starting address and a size.

[0025] In the request (from the host to the initiator's network adapter) and / or in the instruction (from the initiator's network adapter to the target's network adapter), the fill data may be implicit (i.e., the opcode indicates the data to be filled, such as "remote memory set -0") or explicit (in the sense that the instruction / request includes one or more attributes specifying the data to be filled). Similarly, in some embodiments, the data type of the fill data (e.g., byte, word, double word, etc.) may be implicit or explicit.

[0026] In an embodiment, the network adapter of the target computing node sends a response to the initiator computing node after performing the remote memory setup, indicating success or failure, and the initiator network adapter presents the response to the initiator host.

[0027] In some embodiments, the fill data comprises a single data value that is specified once in the instruction and is to be written multiple times by the target. In other embodiments, the fill data comprises some periodic pattern of data values, where the instruction specifies a single period.

[0028] Therefore, in an embodiment, the computing node can populate the remote memory in the target computing node with multiple copies of the preset data, which is transparent to the hosts of the initiator and the target, thereby reducing the load on the initiator processor and the target processor.

[0029] Further details and configurations are described below in conjunction with example embodiments.

[0030] System Description

[0031] RDMA can be used on InfiniBand, Ethernet, or any other suitable communication network. The embodiments to be disclosed below refer to computers connected to a public communication network as computing nodes. We further refer to the node that initiates the remote memory setup instruction as the initiator node, and the node containing the target memory as the target node (however, in an embodiment, the initiator node and the target node may occasionally switch tasks, that is, a computing node may act as an initiator in one RDMA transaction and as a target in another RDMA transaction). For simplicity, we further refer to the host and network adapter of the initiator node (respectively) as the initiator host and the initiator network adapter, and the host and network adapter of the target node as the target host and the target network adapter, respectively. We refer to the memory of the target node as the target memory.

[0032] Figure 1 is a block diagram schematically illustrating a distributed computing system 100 including a pair of computing nodes executing remote memory setup instructions over a communication network according to an embodiment of the present invention.

[0033] The distributed computing system includes an initiator node 102, a communication network 104 (e.g., InfiniBand or Ethernet), and a target node 106. The initiator node 102 fills a range of addresses in a remote target memory 108 (e.g., random access memory, RAM) in the target computing node 106 over the network.

[0034] Initiator node 102 includes a host 110 and a network adapter 112 (e.g., a host channel adapter (HCA) or a network interface card (NIC). Target node 106 similarly includes a network adapter 114 (e.g., an HCA or a NIC) and a host 116, which includes target memory 108 and typically a processor 118 (or multiple processors).

[0035] In an embodiment, prior to an RDMA session, an initiator node and a target node establish an RDMA connection over a network; this may include handshake negotiation, endpoint setup, queue pair (QP) initialization, and the like.

[0036] To fill a range in the target memory 108 with multiple copies of constant data, the initiator host 110 sends a remote memory setup command and indicates the address range and fill data values ​​to the initiator network adapter 112. In response, the initiator network adapter 112 assembles the remote memory setup command and sends it to the target node over the network using the pre-established RDMA connection.

[0037] When the remote memory setup instruction arrives at the target node 106, the target network adapter 114 decodes the instruction and fills the requested range in the target memory 108 with multiple copies of the fill data. When the memory fill is completed (successfully or unsuccessfully), the target network adapter sends a response to the initiator node. The initiator network adapter receives the response and sends it to the initiator host.

[0038] Therefore, the initiator host can use remote memory setup requests to fill the address range in the target memory with multiple copies of the preset data, thereby reducing the burden on the host and operating system and reducing redundant traffic on the network.

[0039] Figure 1 The configuration of the distributed computing system 100 shown in and described above is a simplified example, which is chosen purely for conceptual clarity. Other configurations can be used in alternative embodiments. For example, in some embodiments, requests and responses are posted in a buffer (e.g., a queue) and executed according to a preset policy.

[0040] Figure 2 2 is a block diagram schematically showing an initiator network adapter 200 (eg, HCA or NIC) according to an embodiment of the present invention. The network adapter 200 includes a transmit queue 204, a control circuit 206, a port circuit 208, and a response queue 210.

[0041] The host of the initiator node (not shown) sends an RDMA request to the network adapter, including a remote memory setup request. The instruction assembler 202 receives the request, assembles the corresponding RDMA instruction (e.g., adds a header and footer, and sets the operand field according to the parameters of the request) and sends the RDMA instruction to the transmission queue 204. The transmission queue typically includes a first-in-first-out (FIFO) memory for temporarily storing RDMA instructions before execution.

[0042] The control circuit 206 is configured to control network adapter operations, including queue management and outbound and inbound of network packets. The control circuit sends packets to the port circuit 208 in response to the RDMA instruction, and the port circuit 208 includes firmware (FW) and / or hardware (HW) to communicate packets with the network. In an embodiment, the port circuit 208 includes L1 (physical) and L2 (MAC) layer circuits.

[0043] In response to the RDMA instruction, the target node may send a response message (in the form of a network data packet) to the initiator node. For remote memory set instructions, the response is typically an acknowledgment (ACK) or a negative acknowledgment (NACK) (e.g., the instruction was executed successfully, or the instruction failed to execute). For other RDMA instructions (e.g., memory reads), the response may include the requested data. The port circuit receives the response message packet from the network and forwards the response to the control circuit 206. The control circuit posts the response message in the response queue 210 (which queues the response in a FIFO buffer) and then sends the response to the initiator host. In some embodiments, the control circuit 206 is configured to track the RDMA instructions and, for example, retry failed instructions.

[0044] Figure 2 The configuration of the initiator network adapter 200 shown in and described above is cited only as an example. In alternative embodiments, other configurations may be used. For example, in one embodiment, the instruction assembler circuit 202 is not used; requests are stored in a queue, and the control circuit 206 assembles the requests into instructions. In another example, multiple remote memory setup instructions (and other types of instructions) are combined to form fewer instructions, thereby reducing the load on the network.

[0045] Figure 3 3 is a block diagram schematically illustrating a target network adapter 300 (e.g., HCA or NIC) according to an embodiment of the present invention. We assume that the target node includes a peripheral component interconnect express (PCIe) bus (other suitable buses may be used in alternative embodiments), and the target memory is typically connected to the PCIe bus through a PCIe adapter. We will hereinafter refer to the target memory and its PCIe adapter circuit collectively as a RAM module.

[0046] The network adapter includes: port circuitry 306 configured to communicate data packets with a communications network (e.g., InfiniBand or Ethernet); an instruction queue 308 configured to queue instructions (including remote memory setup instructions) to a target node; control circuitry 310 configured to control the network adapter; optional address translation circuitry 312 for translating virtual memory addresses into physical memory locations; and a PCIe interface 314 for interfacing between the network adapter and the RAM module.

[0047] A communication packet containing a remote memory setup instruction sent by the initiator node arrives at the port circuit 306 (usually including L1 (physical) and L2 (MAC) layer circuits); the port circuit sends the instruction to the instruction queue 308. When ready, the control circuit 310 reads the instruction and decodes the instruction and generates a corresponding set of memory write transactions to fill the requested address range with the requested data values.

[0048] In some embodiments, the address sent by the initiator computing node is virtual; in this case, the control circuit obtains the corresponding physical address from the address translation circuit 312 .

[0049] The PCIe interface 314 receives the memory write transaction sent by the control circuit and generates a corresponding write cycle on the PCIe bus to the RAM module. Therefore, the remote memory setup instruction will result in a series of PCIe write cycles to fill the address range of the remote memory with the requested data.

[0050] The RAM module may send a confirmation signal to the control circuit indicating a successful write or a write failure. After receiving a successful confirmation of all write cycles corresponding to the remote memory write instruction, the control circuit may publish a successful response in the response queue 316, and the response queue 316 will forward the response to the initiator node through the network. If any write cycle fails, the control circuit will publish a failure response in the response queue; in some embodiments, the control circuit will attempt to rewrite the failed write cycle and will only send a failure response after a preset number of repeated write attempts have failed.

[0051] The following example demonstrates the operation of the target network adapter 300. The initiator node sends a remote memory setup instruction to fill the address range 0x1200000 to 0x12000FF of the remote memory (e.g., RAM) with 0xFF. RAM can be accessed in byte (8-bit), word (16-bit), or double word (32-bit) widths. The virtual address range is mapped to the RAM in the target computing node at locations 0x32000 to 0x320FF. The address translation circuit 312 is preloaded with a virtual to physical translation table. The control circuit 310 receives the remote memory setup instruction and generates 64 double word write cycles (to fill four byte locations in each cycle) from address 0x320000 to address 0x320FC, data = 0xFFFFFF. If the address range is not an integer multiple of a double word, the control circuit may issue a combination of double word, word, and byte write operations to optimally cover the required address range.

[0052] Figure 3 The configuration of the target network adapter 300 shown in and described above is cited as an example. Other configurations can be used in alternative embodiments. For example, in one embodiment, responses from multiple instructions (remote memory settings and others) are merged to reduce the load on the network.

[0053] Remote memory setup request / instruction changes.

[0054] In an embodiment, various configurations and formats of remote memory setup requests (sent by an initiator host) and subsequent remote memory setup instructions (sent by a network adapter) may be used (the following list refers to remote memory setup requests sent by an initiator host, but may also apply to remote memory instructions sent by a network adapter).

[0055] 1. Implicit vs. Explicit Padding Data - In some embodiments, the padding data is implicit (e.g., a remote memory set 0 request, where the padding data is always 0). In other embodiments, the padding data is specified in the remote memory set request.

[0056] 2. In some embodiments, the address range set by the remote memory to be filled is set by a start address and an end address; in other embodiments, the range is set by a start address and a size.

[0057] 3. Padding data type. In some embodiments, the padding data type is a constant (e.g., 32 bits); in other embodiments, several data types may be used (e.g., 8 bits (byte), 16 bits (word), 32 bits (double word), or 64 bits (quad word)), where the type is implicitly defined by the remote memory set request (e.g., an embodiment may support remote memory set b request, remote memory set w request, and remote memory set dw request for byte, word, and double word data types, respectively. In other embodiments, the data type is explicit.

[0058] 4. Gap Fill. In some embodiments, a single remote memory setup request may be used to fill multiple gaps in memory with fixed data. For example, a remote memory fill gap request may include a first address parameter, a number of gap parameters, a gap size parameter, and then a number of fill values; wherein multiple copies of the first fill value are written to the first gap, multiple copies of the second fill value are written to the second gap, and so on.

[0059] 5. Mixed remote memory setup requests: In one embodiment, one or more request types may be combined; for example: fill the first range with 0s and then fill multiple 4K byte intervals with preset fill data.

[0060] Other variations may be used, such as a remote memory block setup where the padding size is constant (eg, 1K Byte) or preset.

[0061] In an embodiment, a network adapter may support some or all of the remote memory setup variations described above.

[0062] Figure 44 is a diagram schematically illustrating various remote memory setup request (and remote memory setup instruction) formats 400 according to an embodiment of the present invention. The implicit data start address and size format 410 includes a start address field 412 and a size field 414. The fill data is implicit; for example, a remote memory set 0 instruction may be used to fill an address range with data = 0, and a remote memory set FF may be used to fill an address range with data = 0xFF.

[0063] The implicit data start and end address format 420 includes a start address field 422 that specifies the first address and an end address field 424 that specifies the last address of the fill range; the data value is also implicit.

[0064] Other formats explicitly indicate data values. Explicit data start address and size format 430 includes start address field 432, size field 434, and data value field 436; similarly, explicit data start address and end address format 440 includes start address field 442, size field 444, and data value field 446.

[0065] The data value units in the above formats are implicit - for example, in one embodiment, the data unit is always a byte (thus, fields 436 and 446 contain 8 bits). In other embodiments, other implicit data units may be used, such as words or double words.

[0066] In some other embodiments, the data unit is an explicit field in the remote memory setup request. For example, the explicit data starting address size and data unit format 450 includes a starting address field 452, a size field 454, a data value field 456, and a data unit field 458. The data unit field may include two bits to indicate a byte, word, double word, or quad word (64-bit) data type. Similarly, the explicit data starting address ending address and data unit format 460 includes a starting address field 462, an ending address field 464, a data value field 466, and a data unit field 468.

[0067] In some embodiments, more complex memory fill requests are used. For example, the multi-fill format 470 includes an N field 472 that specifies the number of segments in the memory, a first start address field 474 and a first end address field 476 that specify the start address and end address of the first memory segment, and a first fill data field 478 that specifies the fill data of the first segment; a second start address field 480 and a second end address field 482 that specify the start address and end address of the second memory segment, and a second fill data field 484 that specifies the fill data of the second segment.

[0068] Next are more sets of start address—end address—fill data fields; the last three fields—Nth start address field 486, Nth end address field 488, and Nth field 490 specify the start address, end address, and fill data of the last memory segment.

[0069] Figure 5 1 is a flow chart schematically illustrating a method 500 for performing remote memory setup via a communication network according to an embodiment of the present invention. The flow chart is executed by an initiator node including an initiator host and an initiator network adapter and a target node including a target network adapter and a target memory. It is assumed that before the flow chart, a connection is established between the initiator node and the target node.

[0070] The flowchart begins with a "Send-Remote-Set-From-Host" operation 502, in which the initiator host sends a "Remote-Memory-Set" request to the initiator network adapter. In a "Send-Remote-Set-From-Network-Adapter" operation 504, the initiator network adapter constructs a corresponding remote-set memory instruction and sends the instruction to the target node in the form of a suitable communication data packet over the network.

[0071] Next, in a Receive-Remote-Memory-Set operation 506, the target network adapter receives and decodes the remote memory set instruction, and in a Fill-Memory operation 508, fills the address range of the target memory with the required data.

[0072] The target network adapter then sends an acknowledgment packet (e.g., which may indicate success or failure) to the initiator node in a send response operation 510. Finally, in an Indicate Response to Host operation 512, the initiator network adapter sends a response to the initiator host (e.g., sends a completion indication with a success or failure flag).

[0073] Figure 5 The flowchart shown in and described above is cited as an example. In alternative embodiments, other flowcharts may be used. For example, in one embodiment, the target network adapter will retry the failed remote memory setup instruction and send a failure response to the initiator only if the fill operation continues to fail. In other embodiments, the initiator network adapter will retry the instruction and notify the initiator host of the failure only if the remote memory setup instruction fails repeatedly.

[0074] Figures 1 to 5 The configurations of the initiator node 102, the target node 106, the initiator network adapter 200, the target network adapter 300, the remote memory setup request format 500, and the method of the flowchart 500 are purely exemplary configurations and flowcharts depicted for conceptual clarity. In alternative embodiments, any other suitable configurations and flowcharts may be used. The network adapter and its components may be implemented using suitable hardware (e.g., in one or more application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs)), using software, using hardware, or using a combination of hardware and software elements.

[0075] In some embodiments, the initiator node 102 and / or the target node 106 (including its components) may be implemented using one or more general-purpose programmable processors that are programmed with software to perform the functions described herein. For example, the software may be downloaded to any processor in electronic form over a network, or, alternatively or additionally, the software may be provided and / or stored on a non-transitory tangible medium (e.g., magnetic, optical, or electronic memory).

[0076] Although the embodiments described herein primarily address remote memory setup operations over a communication network, the methods and systems described herein may also be used in other applications, such as a storage controller (e.g., a hard disk or non-volatile memory), which can fill a certain range in a controlled storage in response to a CPU command. An example of a storage controller is a non-volatile memory express (NVMe) controller. Such a storage controller typically includes a host interface, a memory interface, and a processor. The host interface communicates with the host. The memory interface accesses the memory (volatile or non-volatile). The processor typically receives a command specifying one or more address ranges and one or more fill data values ​​from the host via the host interface. In response to the command, the processor fills the specified address range in the memory with multiple copies of the specified fill data value by writing the fill data value to the address range multiple times. In some embodiments, the command includes an address range indicator indicating the address range. In some embodiments, the command includes a fill data indicator indicating the fill data value.

[0077] It should be understood that the above embodiments are cited only as examples, and the present invention is not limited to the above specific display and description. On the contrary, the scope of the present invention includes the combination and sub-combination of the above various features, as well as variations and modifications that those skilled in the art will think of after reading the above description and are not disclosed in the prior art.

Claims

1. A network adapter, comprising: A port for connecting to a communication network; as well as Circuitry is configured to send a remote memory setup instruction to a remote network adapter via the communications network, the remote memory setup instruction instructing the remote network adapter to fill one or more address ranges in a memory with multiple copies of one or more fill data values.

2. The network adapter according to claim 1, wherein: The remote memory setup instruction includes an address range indicator indicating the one or more address ranges.

3. The network adapter according to claim 1, wherein: The remote memory setup instruction includes a fill data indicator indicative of the one or more fill data values.

4. The network adapter according to claim 1, wherein: The circuit is configured to receive a command from a host specifying the one or more address ranges and the one or more fill data values, and to send the remote memory setup instruction in response to the command.

5. A network adapter, comprising: A port for connecting to a communication network; as well as Circuit for: receiving a remote memory setup instruction from a remote network adapter via the communications network, the remote memory setup instruction instructing the network adapter to populate one or more address ranges in a memory with multiple copies of one or more fill data values; as well as The remote memory setup instruction is executed by writing the one or more fill data values ​​to the one or more address ranges a plurality of times.

6. The network adapter according to claim 5, wherein: The remote memory setup instruction includes an address range indicator indicating the one or more address ranges.

7. The network adapter according to claim 5, wherein: The remote memory setup instruction includes a fill data indicator indicative of the one or more fill data values.

8. A method comprising: In a network adapter, connecting to a communications network; as well as A remote memory setup instruction is sent from the network adapter to a remote network adapter via the communications network, the remote memory setup instruction instructing the remote network adapter to populate one or more address ranges in memory with multiple copies of one or more fill data values.

9. The method according to claim 8, wherein: Sending the remote memory setup instruction includes indicating an address range indicator in the remote memory setup instruction, the address range indicator indicating the one or more address ranges.

10. The method according to claim 8, wherein: Sending the remote memory setup instruction includes indicating a fill data indicator in the remote memory setup instruction, the fill data indicator indicating the one or more fill data values.

11. The method according to claim 8, wherein: Sending the remote memory setup instruction includes: receiving a command from a host specifying the one or more address ranges and the one or more fill data values; and sending the remote memory setup instruction in response to the command.

12. A method comprising: In a network adapter, connecting to a communications network; receiving, in the network adapter from a remote network adapter via the communications network, a remote memory setup instruction instructing the network adapter to fill one or more address ranges in a memory with multiple copies of one or more fill data values; as well as The remote memory setup instruction is executed using the network adapter by writing the one or more fill data values ​​multiple times to the one or more address ranges.

13. The method according to claim 12, wherein: Receiving the remote memory setup instruction includes receiving an address range indicator in the remote memory setup instruction indicating the one or more address ranges.

14. The method according to claim 12, wherein: Receiving the remote memory setup instruction includes receiving a fill data indicator in the remote memory setup instruction indicating the one or more fill data values.

15. A storage controller comprising: A host interface, used for communicating with a host; A memory interface for accessing the memory; as well as Processor for: receiving, from the host via the host interface, a command specifying one or more address ranges and one or more fill data values; as well as In response to the command, the one or more address ranges in the memory are populated with multiple copies of the one or more fill data values ​​by writing the one or more fill data values ​​to the one or more address ranges multiple times.

16. The storage controller according to claim 15, wherein: The command includes an address range indicator indicating the one or more address ranges.

17. The storage controller according to claim 15, wherein: The command includes a fill data indicator indicating the one or more fill data values.

Citation Information

Patent Citations

  • Memory controller for controlling memory accesses across networks in distributed shared memory processing systems

    US6122659A

  • System and method for remote direct memory access over a network switch fabric

    US8374175B2