# US 11,029,857 B2 · Offloading device maintenance to an external processor in low-latency, non-volatile memory

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

- Number: US 11,029,857 B2
- Document ID: US11029857B2
- Status: Granted
- Kind: B2
- Application number: 16/839,873
- Filed: 2020-04-03
- Published: 2020-07-23
- Granted: 2021-06-08
- Earliest claimed: 2016-03-31
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Michael Nishimoto
- Web page: https://patentgrep.com/patent/US11029857B2

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0683: {Plurality of storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 13/4068: {Electrical coupling}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 2213/0026: PCI express
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A set of device maintenance related data is received from each of a plurality of non-volatile memory modules. Each of the plurality of non-volatile memory modules comprise a plurality of non-volatile memory devices. Based at least in part on said set of device maintenance related data a maintenance operation to be performed is determined. The determined device maintenance related operation is performed.

## Claims

### Claim 1

A data storage system, comprising:
a control module connected to each non-volatile memory module in a plurality of non-volatile memory modules each comprising a plurality of non-volatile memory devices, the control module comprising a processor external to said non-volatile memory modules, the processor being configured to: receive from each of said non-volatile memory modules a set of device maintenance related data, wherein the set of device maintenance related data includes a read disturb count of a cell of a plurality of cells of a non-volatile memory device; determine based at least in part on said set of device maintenance related data a maintenance operation to be performed; select a count limit based on a first neighboring cell or a second neighboring cell, wherein the count limit is updated based on a location of a neighboring cell on the non-volatile memory device, a temperature of the non-volatile memory device, and a version of 3D media; and perform the determined device maintenance related operation.

### Claim 2 (depends on 1)

The system recited in claim 1, further comprising the plurality of non-volatile memory modules.

### Claim 3 (depends on 1)

The system recited in claim 1, wherein the external processor is connected by a PCIe bus to said non-volatile memory modules.

### Claim 4 (depends on 1)

The system recited in claim 1, wherein each non-volatile memory device has data which are overwritten in place.

### Claim 5 (depends on 1)

The system recited in claim 1, wherein each non-volatile memory module further comprises a module microprocessor, and wherein the module microprocessor is configured to send the maintenance related data.

### Claim 6 (depends on 5)

The system recited in claim 5, wherein the external processor is further configured to send to each module microprocessor associated with each non-volatile memory module persistence training.

### Claim 7 (depends on 6)

The system recited in claim 6, wherein the persistence training includes a persistence algorithm in the event non-volatile memory module power is lost.

### Claim 8 (depends on 7)

The system recited in claim 7, wherein a persistence algorithm includes redundancy instructions.

### Claim 9 (depends on 1)

The system recited in claim 1, wherein the maintenance operation comprises scrubbing.

### Claim 10 (depends on 9)

The system recited in claim 9, wherein said set of device maintenance related data comprises scrubbing data.

### Claim 11 (depends on 10)

The system recited in claim 10, wherein scrubbing data comprises an indication related to how much error correction has been exercised.

### Claim 12 (depends on 1)

The system recited in claim 1, wherein the control module runs software on an external processor.

### Claim 13 (depends on 1)

The system recited in claim 1, wherein the maintenance operation is determined across two or more non-volatile memory modules.

### Claim 14 (depends on 1)

The system recited in claim 1, wherein said set of device maintenance related data comprises wear data.

### Claim 15 (depends on 14)

The system recited in claim 14, wherein the maintenance operation comprises determining based at least in part on the wear data a migration from a first non-volatile memory module to a first non-volatile memory module, possibly overwriting in place.

### Claim 16 (depends on 14)

The system recited in claim 14, wherein the maintenance operation comprises determining based at least in part on the wear data a migration from a first non-volatile memory module to a second non-volatile memory module, possibly overwriting in place.

### Claim 17 (depends on 1)

The system recited in claim 1, wherein said set of device maintenance related data comprises location data of objects across two or more non-volatile memory modules.

### Claim 18 (depends on 17)

The system recited in claim 17, wherein the location data of objects includes physical layout data and disturb tracking.

### Claim 19

A method of storing data, comprising:
receiving from each of a plurality of non-volatile memory modules a set of device maintenance related data, wherein each of the plurality of non-volatile memory modules comprise a plurality of non-volatile memory devices, and wherein the set of device maintenance related data includes a read disturb count of a cell of a plurality of cells of a non-volatile memory device; determining based at least in part on said set of device maintenance related data a maintenance operation to be performed; selecting a count limit based on a first neighboring cell or a second neighboring cell, wherein the count limit is updated based on a location of a neighboring cell on the non-volatile memory device, a temperature of the non-volatile memory device, and a version of 3D media; and performing the determined device maintenance related operation.

### Claim 20

A computer program product for data storage, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving from each of a plurality of non-volatile memory modules a set of device maintenance related data, wherein each of the plurality of non-volatile memory modules comprise a plurality of non-volatile memory devices, and wherein the set of device maintenance related data includes a read disturb count of a cell of a plurality of cells of a non-volatile memory device; determining based at least in part on said set of device maintenance related data a maintenance operation to be performed; selecting a count limit based on a first neighboring cell or a second neighboring cell, wherein the count limit is updated based on a location of a neighboring cell on the non-volatile memory device, a temperature of the non-volatile memory device, and a version of 3D media; and performing the determined device maintenance related operation.
