# US 10,769,098 B2 · Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,769,098 B2
- Document ID: US10769098B2
- Status: Granted
- Kind: B2
- Application number: 15/479,005
- Filed: 2017-04-04
- Published: 2017-10-05
- Granted: 2020-09-08
- Earliest claimed: 2016-04-04
- Assignees: Marvell Asia Pte Ltd
- Applicants: Marvell World Trade Ltd.
- Inventors: Eitan Joshua; Scott Furey; Dimitry Melts; Noam Mizrahi
- Web page: https://patentgrep.com/patent/US10769098B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Embodiments described herein provide a method for accessing a host memory through non-volatile memory over fabric bridging with direct target access. A first memory access command encapsulated in a first network packet is received at a memory interface unit and from a remote direct memory access (RDMA) interface and via a network fabric. The first memory access command is compliant with a first non-volatile memory interface protocol and the first network packet is compliant with a second non-volatile memory interface protocol. The first network packet is unwrapped to obtain the first memory access command. The first memory access command is stored in a work queue using address bits of the work queue as a pre-set index of the first memory access command. The first memory access command is sent from the work queue based on the pre-set index to activate a first target storage device.

## Claims

### Claim 1

A method for accessing a host memory through non-volatile memory over fabric bridging with direct target access, the method comprising:
receiving, at a memory interface unit, from a remote direct memory access (RDMA) interface and via a network fabric, a first memory access command compliant with a first non-volatile memory interface protocol that was encapsulated at the RDMA interface, without modifying the first memory access command, in a first network packet
compliant with a second non-volatile memory interface protocol different from the first non-volatile memory interface protocol;
unwrapping, by the memory interface unit, the first network packet to obtain the encapsulated first memory access command compliant with the first non-volatile memory interface protocol;
storing the first memory access command, as obtained from the first network packet, in a work queue using address bits of the work queue as a pre-determined index of the first memory access command; and
sending the first memory access command, as obtained from the first network packet, from the work queue based on the pre-set index to a first target storage device.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
in response to sending the first memory access command, receiving, at the memory interface unit and from the first target storage device, memory transaction data compliant with the first non-volatile memory interface protocol;
encapsulating, by the memory interface unit, the memory transaction data in a second network packet compliant with the second non-volatile memory interface protocol;
identifying the pre-determined index associated with the memory transaction data; and
sending the second network packet to the RDMA interface based on the pre-determined index via the network fabric.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
passing, from the first target storage device to the RDMA interface and through the memory interface unit, the memory transaction data at a size substantially similar to a size of the second network packet without buffering the transaction data.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
sending the second network packet to the RDMA interface as a notification that a memory transaction is initiated at the first storage device,
wherein the RDMA interface is activated to serve the memory transaction.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
connecting a second target memory device operable under the second memory access protocol to the memory interface unit.

### Claim 6 (depends on 5)

The method of claim 5, further comprising:
receiving, at a memory interface unit, from the RDMA interface and via a network fabric, a second memory access command compliant with the first non-volatile memory interface protocol that was encapsulated at the RDMA interface, without modifying the second memory access command, in a second network packet
compliant with the second non-volatile memory interface protocol;
unwrapping the second network packet to obtain the encapsulated second memory access command compliant with the first non-volatile memory interface protocol;
storing the second memory access command, as obtained from the second network packet, in a second work queue using address bits of the second work queue as a pre-determined index of the second memory access command; and
sending the second memory access command, as obtained from the second network packet, from the second work queue based on the pre-set index to activate the second target storage device.

### Claim 7 (depends on 1)

The method of claim 1, wherein the RDMA interface is activated by:
storing the memory transaction data into a response queue designated to the RDMA interface, and wherein the work queue is designated to the first storage device.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
when the first memory access command indicates a read operation,
receiving, at the memory interface unit and from the first target storage device, memory data compliant with the first non-volatile memory interface protocol;
encapsulating, by the memory interface unit, the memory data in a second network packet compliant with the second nonvolatile memory interface protocol; and
sending the second network packet to the RDMA interface via the network fabric.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
when the first memory access command capsule includes a write command,
receiving, at the memory interface unit and from the RDMA interface, data encapsulated in a second network packet compliant with the second non-volatile memory interface protocol;
unwrapping, by the memory interface unit, the second network packet to obtain the data compliant with the first non-volatile memory interface protocol; and
sending the data at a size of the second network packet to the first target storage device.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
maintaining the work queue storing the first memory access command and an RDMA response queue storing memory transactions, wherein the work queue is paired with the RDMA response queue.

### Claim 11

A system for accessing a host memory through non-volatile memory over fabric bridging with direct target access, the system comprising:
a memory interface unit configured to:
receive, from a remote direct memory access (RDMA) interface and via a network fabric, a first memory access command that was encapsulated at the RDMA interface, without modifying the first memory access command, in a first network packet
compliant with a second non-volatile memory interface protocol different from the first non-volatile memory interface protocol; and
unwrap the first network packet to obtain the encapsulated first memory access command compliant with the first non-volatile memory interface protocol; and
a memory unit configured to:
store the first memory access command, as obtained from the first network packet, in a work queue using address bits of the work queue as a pre-determined index of the first memory access command; and
send the first memory access command, as obtained from the first network packet, from the work queue based on the predetermined index to activate a first target storage device.

### Claim 12 (depends on 11)

The system of claim 11, wherein the memory interface unit is further configured to:
in response to sending the first memory access command, receive, from the first target storage device, memory transaction data compliant with the first non-volatile memory interface protocol;
encapsulate, by the memory interface unit, the memory transaction data in a second network packet compliant with the second non-volatile memory interface protocol;
identify the pre-determined index associated with the memory transaction data; and
send the second network packet to the RDMA interface based on the pre-determined index via the network fabric.

### Claim 13 (depends on 12)

The system of claim 12, wherein the memory interface unit is further configured to:
pass, from the first target storage device to the RDMA interface, the memory transaction data at a size substantially similar to a size of the second network packet without buffering the memory transaction data at the memory interface unit.

### Claim 14 (depends on 12)

The system of claim 12, wherein the memory interface unit is further configured to:
send the second network packet to the RDMA interface as a notification that a memory transaction is initiated at the first storage device,
wherein the RDMA interface is activated to serve the memory transaction.

### Claim 15 (depends on 11)

The system of claim 11, further comprising:
a second target memory device operable under the second memory access protocol to the memory interface unit.

### Claim 16 (depends on 15)

The system of claim 15, wherein the memory interface unit is further configured to:
receive, from the RDMA interface and via a network fabric, a second memory access command compliant with the first non-volatile memory interface protocol that was encapsulated at the RDMA interface, without modifying the second memory access command, in a second network packet
compliant with the second non-volatile memory interface protocol;
unwrap the second network packet to obtain the encapsulated second memory access command compliant with the first non-volatile memory interface protocol;
store the second memory access command, as obtained from the second network packet, in a second work queue using address bits of the second work queue as a pre-set index of the second memory access command; and
send the second memory access command, as obtained from the second network packet, from the second work queue based on the pre-set index to activate the second target storage device.

### Claim 17 (depends on 11)

The system of claim 11, wherein the RDMA interface is activated by:
storing the memory transaction data into a response queue designated to the RDMA interface, and wherein the work queue is designated to the first storage device.

### Claim 18 (depends on 11)

The system of claim 11, wherein the memory interface unit is further configured to:
when the first memory access command indicates a read operation,
receive, from the first target storage device, memory data compliant with the first non-volatile memory interface protocol;
encapsulate the memory data in a second network packet compliant with the second non-volatile memory interface protocol; and
send the second network packet to the RDMA interface via the network fabric.

### Claim 19 (depends on 11)

The system of claim 11, wherein the memory interface unit is further configured to:
when the first memory access command capsule includes a write command,
receive, from the RDMA interface, data encapsulated in a second network packet compliant with the second non-volatile memory interface protocol;
unwrap the second network packet to obtain the data compliant with the first non-volatile memory interface protocol; and
send the data at a size of the second network packet to the first target storage device.

### Claim 20 (depends on 11)

The system of claim 11, wherein the memory unit is further configured to:
maintain the work queue storing the first memory access command and an RDMA response queue storing memory transactions, wherein the work queue is paired with the RDMA response queue.
