# US 11,029,847 B2 · Method and system for shared direct access storage

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

- Number: US 11,029,847 B2
- Document ID: US11029847B2
- Status: Granted
- Kind: B2
- Application number: 15/353,413
- Filed: 2016-11-16
- Published: 2017-05-18
- Granted: 2021-06-08
- Earliest claimed: 2015-11-16
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Kirill Malkin; Steve Dean; Michael Woodacre; Eng Lim Goh
- Web page: https://patentgrep.com/patent/US11029847B2

## CPC

- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 2209/509: Offload
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

In high performance computing, the potential compute power in a data center will scale to and beyond a billion-billion calculations per second (“Exascale” computing levels). Limitations caused by hierarchical memory architectures where data is temporarily stored in slower or less available memories will increasingly limit high performance computing systems from approaching their maximum potential processing capabilities. Furthermore, time spent and power consumed copying data into and out of a slower tier memory will increase costs associated with high performance computing at an accelerating rate. New technologies, such as the novel Zero Copy Architecture disclosed herein, where each compute node writes locally for performance, yet can quickly access data globally with low latency will be required. The result is the ability to perform burst buffer operations and in situ analytics, visualization and computational steering without the need for a data copy or movement.

## Claims

### Claim 1

A method comprising:
receiving information relating to processing a function;
allocating a first processor of a first node to perform a first task associated with the function, wherein the first node is separated from a non-volatile memory by a switch included in a first fabric, the switch being directly connected to the non-volatile memory by a local bus interface of the non-volatile memory;
when performing the first task, transferring, by the first processor through the first fabric using the switch, data from a node memory of the first node through a local bus interface of the first node to the non-volatile memory via direct memory access (DMA) of the non-volatile memory by the first processor; allocating a second processor of a second node to perform a second task associated with the function, wherein the second node is separated from the non-volatile memory by the switch or by another switch included in the first fabric, the another switch being directly connected to the non-volatile memory;
when performing the second task, receiving, by the second processor through a local bus interface of the second node and through the first fabric using the switch or the another switch, data into a node memory of the second node from the non-volatile memory via DMA of the non-volatile memory by the second processor; communicating, between the second node and the first node, through a second fabric of a type different from the first fabric, wherein the communicating through the second fabric is between a fabric interface of the first node and a fabric interface of the second node; and
generating an output of the function, wherein the output of the function is accessible by an external computing device after the output is generated,
wherein the allocating of the first processor to perform the first task and the allocating of the second processor to perform the second task are by a data node,
sending, by the data node to the first node and the second node, a device driver for accessing the non-volatile memory;
executing the device driver at the first node and the second node when accessing the non-volatile memory in performing the first task and the second task, respectively;
executing, by the data node, a further device driver, wherein the device driver sent to the first node and the second node has less functionality than the further device driver; and
configuring, by the further device driver executed by the data node, the non-volatile memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein the non-volatile memory is a flash memory.

### Claim 3 (depends on 1)

The method of claim 1, wherein the method is performed in a system that includes a plurality of switches including the switch and the another switch, the plurality of switches directly connecting a plurality of compute nodes and one or more data nodes to the non-volatile memory.

### Claim 4 (depends on 1)

The method of claim 1, wherein each of the local bus interface of the first node, the local bus interface of the second node, and the local bus interface of the non-volatile memory is a Peripheral Component Interconnect Express (PCIe) interface.

### Claim 5 (depends on 3)

The method of claim 3, wherein the one or more data nodes receive the information relating to the processing of the function.

### Claim 6 (depends on 3)

The method of claim 3, wherein the one or more data nodes communicate the output of the function.

### Claim 7 (depends on 1)

The method of claim 1, wherein the device driver sent to the first node and the second node is without a functionality of configuring the non-volatile memory.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
receiving, by the data node, a request from the first node regarding allocating memory for accessing the non-volatile memory; and
receiving, by the data node, a request from the second node regarding allocating memory for accessing the non-volatile memory.

### Claim 9 (depends on 1)

The method of claim 1, wherein the local bus interface of the first node and the local bus interface of the second node are connected to the first fabric, and the fabric interface of the first node and the fabric interface of the second node are connected to the second fabric.

### Claim 10

A non-transitory computer readable storage medium comprising instructions that upon execution cause a coordinator node to:
receive information relating to processing a function;
allocate a first processor of a first node to perform a first task associated with the function, wherein the first node is separated from a non-volatile memory by a switch included in a first fabric, the switch being directly connected to the non-volatile memory by a local bus interface of the non-volatile memory, and the first processor when performing the first task transfers, through the first fabric using the switch, data from a node memory of the first node through a local bus interface of the first node to the non-volatile memory via direct memory access (DMA) of the non-volatile memory by the first processor; allocate a second processor of a second node to perform a second task associated with the function, the second node separated from the non-volatile memory by the switch or by another switch included in the first fabric, the another switch being directly connected to the non-volatile memory, wherein the second processor when performing the second task receives, through a local bus interface of the second node and through the first fabric using the switch or the another switch, data into a node memory of the second node from the non-volatile memory via DMA of the non-volatile memory by the second processor, and wherein the second node and the first node are to communicate with each other through a second fabric of a different type from the first fabric, the communicating through the second fabric being between a fabric interface of the first node and a fabric interface of the second node;
send, from the coordinator node to the first node and the second node, a device driver for accessing the non-volatile memory, to cause execution of the device driver at the first node and the second node when accessing the non-volatile memory in performing the first task and the second task, respectively;
execute, at the coordinator node, a further device driver, wherein the device driver sent to the first node and the second node has less functionality than the further device driver; and
configure, by the further device driver executed by the coordinator node, the non-volatile memory.

### Claim 11 (depends on 10)

The non-transitory computer readable storage medium of claim 10, wherein the non-volatile memory is a flash memory.

### Claim 12 (depends on 10)

The non-transitory computer readable storage medium of claim 10, wherein the device driver sent to the first node and the second node is without a functionality of configuring the non-volatile memory.
