# US 10,372,519 B2 · Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management

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

- Number: US 10,372,519 B2
- Document ID: US10372519B2
- Status: Granted
- Kind: B2
- Application number: 15/374,662
- Filed: 2016-12-09
- Published: 2017-03-30
- Granted: 2019-08-06
- Earliest claimed: 2014-10-21
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Charles J. Camp; Timothy J. Fisher; Aaron D. Fry; Nikolas Ioannou; Roman Pletka; Sasa Tomic
- Web page: https://patentgrep.com/patent/US10372519B2

## CPC

- G06F 11/076: {by exceeding a count or rate limit, e.g. word- or bit count limit}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 11/073: {in a memory management context, e.g. virtual memory or cache management (memory management G06F12/00; testing of static memory units G11C29/00)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/1072: {in multilevel memories}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

Non-volatile memory block management. A method according to one embodiment includes calculating an error count margin threshold for each of the at least some non-volatile memory blocks of a plurality of non-volatile memory blocks. A determination is made as to whether the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded. A memory block management function is triggered upon determining that the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded.

## Claims

### Claim 1

A system, comprising:
a plurality of non-volatile memory blocks configured to store data; and
a controller and logic integrated with and/or executable by the controller, the logic being configured to:
calculate an error count margin threshold for each of at least some of the non-volatile memory blocks;
determine whether the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded; and
trigger a memory block management function upon determining that the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded,
wherein the calculating and the determining for each of the at least some of the non-volatile memory blocks improves performance of the system by preventing any of the at least some of the non-volatile memory blocks from being skipped over during the calculating and the determining.

### Claim 2 (depends on 1)

The system as recited in claim 1, wherein the memory block management function includes setting an indicator.

### Claim 3 (depends on 1)

The system as recited in claim 1, wherein the memory block management function includes performing an immediate calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold.

### Claim 4 (depends on 1)

The system as recited in claim 1, wherein the memory block management function includes scheduling a calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold, wherein the calibration is scheduled to be performed during a subsequent background health check.

### Claim 5 (depends on 1)

The system as recited in claim 1, wherein the memory block management function includes scheduling a calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold, wherein the calibration is performed during a currently ongoing background health check iteration.

### Claim 6 (depends on 1)

The system as recited in claim 1, wherein the logic is configured to:
reduce a block health of the non-volatile memory blocks having the exceeded error count margin threshold, thereby extending a life span of the plurality of non-volatile memory blocks.

### Claim 7 (depends on 1)

The system as recited in claim 1, wherein a non-volatile memory block is retired when the error count margin threshold of the non-volatile memory block reaches a block retirement error count limit.

### Claim 8 (depends on 1)

The system as recited in claim 1, wherein the non-volatile memory is a NAND Flash memory, wherein the error count margin threshold of each non-volatile memory block is individually updated over time, with a proviso that Flash memory block index tables are not maintained and/or monitored.

### Claim 9 (depends on 1)

The system as recited in claim 1, the logic being configured to:
determine a block health of each of the at least some of the non-volatile memory blocks,
wherein the block health of each of the at least some of the non-volatile memory blocks corresponds to a highest number of errors associated with a single error correction code codeword in the respective block.

### Claim 10

A method, comprising:
calculating an individual error count margin threshold for each of more than one non-volatile memory blocks of a plurality of non-volatile memory blocks;
for each of the more than one non-volatile memory blocks, determining whether the respective error count margin threshold has been exceeded; and
triggering a memory block management function upon determining that the error count margin threshold of any of the more than one non-volatile memory blocks has been exceeded,
wherein the calculating and the determining for each of the more than one non-volatile memory blocks improves performance of the plurality of non-volatile memory blocks by preventing any of the more than one non-volatile memory blocks from being skipped over during the calculating and the determining.

### Claim 11 (depends on 10)

The method as recited in claim 10, wherein the memory block management function includes setting an indicator.

### Claim 12 (depends on 10)

The method as recited in claim 10, wherein the memory block management function includes performing an immediate calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold.

### Claim 13 (depends on 10)

The method as recited in claim 10, wherein the memory block management function includes scheduling a calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold, wherein the calibration is scheduled to be performed during a subsequent background health check.

### Claim 14 (depends on 10)

The method as recited in claim 10, wherein the memory block management function includes scheduling a calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold, wherein the calibration is performed during a currently ongoing background health check iteration.

### Claim 15 (depends on 10)

The method as recited in claim 10, comprising: reducing a block health of the non-volatile memory blocks having the exceeded error count margin threshold, thereby extending a life span of the plurality of non-volatile memory blocks.

### Claim 16 (depends on 10)

The method as recited in claim 10, wherein a non-volatile memory block is retired when the error count margin threshold of the non-volatile memory block reaches a block retirement error count limit.

### Claim 17 (depends on 10)

The method as recited in claim 10, wherein the error count margin threshold of each non-volatile memory block is individually updated over time.

### Claim 18 (depends on 10)

The method as recited in claim 10, wherein the non-volatile memory is a NAND Flash memory in a storage apparatus, wherein the memory block management function includes scheduling a calibration of at least the non-volatile memory blocks having the exceeded error count margin threshold, wherein the calibration is based on a priority level associated with each of the respective non-volatile memory blocks having the exceeded error count margin threshold, wherein the calculating and the determining is performed for every non-volatile memory block in the storage apparatus.

### Claim 19

A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions readable and/or executable by a controller to cause the controller to:
calculate, by the controller, an error count margin threshold for each of at least some non-volatile memory blocks of a plurality of the non-volatile memory blocks;
determine, by the controller, whether the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded; and
trigger, by the controller, a memory block management function upon determining that the error count margin threshold of any of the at least some of the non-volatile memory blocks has been exceeded,
wherein the memory block management function includes setting an indicator,
wherein the calculating and the determining for each of the at least some of the non-volatile memory blocks improves performance of the plurality of non-volatile memory blocks by preventing any of the at least some of the non-volatile memory blocks from being skipped over during the calculating and the determining.

### Claim 20 (depends on 19)

The computer program product as recited in claim 19, wherein the error count margin threshold of each of the at least some non-volatile memory blocks is individually updated over time.
