# US 9,997,240 B2 · Lifetime mixed level non-volatile memory system

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

- Number: US 9,997,240 B2
- Document ID: US9997240B2
- Status: Granted
- Kind: B2
- Application number: 14/950,553
- Filed: 2015-11-24
- Published: 2016-06-02
- Granted: 2018-06-12
- Earliest claimed: 2011-07-19
- Assignees: Greenthread, LLC
- Applicants: Greenthread, LLC
- Inventors: G. R. Mohan Rao
- Web page: https://patentgrep.com/patent/US9997240B2

## CPC

- G11C 11/5635: {Erasing circuits}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/1072: {in multilevel memories}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G11C 11/5621: {using charge storage in a floating gate}
- G11C 11/5678: {using amorphous/crystalline phase transition storage elements}
- G11C 16/16: for erasing blocks, e.g. arrays, words, groups
- G11C 16/3495: {Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 29/76: {using address translation or modifications}
- G06F 2212/7202: Allocation control and policies
- G11C 2211/5641: Multilevel memory having cells with different number of storage levels
- G11C: STATIC STORES (semiconductor memory devices H10B)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A controller for managing at least one MLC non-volatile memory module and at least one SLC non-volatile memory module. The flash controller is adapted to determine if a range of addresses listed by an entry and mapped to said at least one MLC non-volatile memory module fails a data integrity test. In the event of such a failure, the controller remaps said entry to an equivalent range of addresses of said at least one SLC non-volatile memory module. The flash controller is further adapted to determine which of the blocks in the MLC and SLC non-volatile memory modules are accessed most frequently and allocating those blocks that receive frequent writes to the SLC non-volatile memory module and those blocks that receive infrequent writes to the MLC non-volatile memory module.

## Claims

### Claim 1

A system for storing data comprising:
at least one MLC non-volatile memory module comprising a plurality of individually erasable blocks;
at least one SLC non-volatile memory module comprising a plurality of individually erasable blocks; and
a controller coupled to the at least one MLC non-volatile memory module and the at least one SLC non-volatile memory module, the controller maintaining an address map of at least one of the MLC and SLC non-volatile memory modules, the address map comprising a list of logical address ranges accessible by a computer system, the list of logical address ranges having a minimum quanta of addresses, wherein each entry in the list of logical address ranges maps to a similar range of physical addresses within either the at least one SLC non-volatile memory module or within the at least one MLC non-volatile memory module;
wherein the controller is adapted to determine if a range of addresses listed by an entry and mapped to a similar range of physical addresses within the at least one MLC non-volatile memory module, fails a data integrity test, and, in the event of such a failure, the controller remaps the entry to the next available equivalent range of physical addresses within the at least one SLC non-volatile memory module; and
wherein the controller is further adapted to determine which of the blocks of the plurality of the blocks in the MLC and SLC non-volatile memory modules are accessed most frequently and wherein the controller segregates those blocks that receive frequent writes into the at least one SLC non-volatile memory module and those blocks that receive infrequent writes into the at least one MLC nonvolatile module, and maintain a count value of the blocks in the MLC non-volatile memory module determined to have received frequent writes and that are accessed most frequently on a periodic basis when the count value is a predetermined count value, transfer the contents of the counted blocks in the MLC non-volatile memory module determined to have received frequent writes after reaching the predetermined count value to the SLC non-volatile memory module and which determined blocks in the SLC are determined in accordance with the next equivalent range of physical addresses determined by the controller.

### Claim 2 (depends on 1)

The system of claim 1, wherein the MLC and SLC each comprise flash memories.

### Claim 3 (depends on 1)

The system of claim 1 wherein the MLC comprises a flash memory and the SLC comprises a resistive RAM (RRAM).

### Claim 4 (depends on 1)

The system of claim 1, wherein the MLC comprises a flash memory and SLC comprises a phase change memory (PCM).

### Claim 5 (depends on 1)

The system of claim 1, wherein the MLC comprises a flash memory and the SLC comprises a magnetic random-access memory (MAGRAM).

### Claim 6

A system for storing data comprising:
at least one MLC non-volatile memory module comprising a plurality of individually erasable blocks;
at least one SLC non-volatile memory module comprising a plurality of individually erasable blocks; and
a controller coupled to the at least one MLC non-volatile memory module and the at least one SLC non-volatile memory module, the controller maintaining an address map of at least one of the MLC and SLC non-volatile memory modules, the address map comprising a list of logical address ranges accessible by a computer system, the list of logical address ranges having a minimum quanta of addresses, wherein each entry in the list of logical address ranges maps to a similar range of physical addresses within either the at least one SLC non-volatile memory module or within the at least one MLC non-volatile memory module;
wherein the controller allocates those blocks that receive frequent writes into the SLC non-volatile memory module as hot blocks and those blocks that only receive infrequent writes into the MLC non-volatile memory module as cold blocks; and
wherein the controller is adapted to determine if a range of addresses listed by an entry and mapped to a similar range of physical addresses within the at least one MLC non-volatile memory module, fails a data integrity test, and, in the event of such a failure, the controller remaps the entry to the next available equivalent range of physical addresses within the at least one SLC non-volatile memory module;
wherein the controller is further adapted to maintain a count value of those blocks that are accessed most frequently and, on a periodic basis when the count value is a predetermined count value, transfer the contents of those counted blocks into the SLC non-volatile memory module, wherein the counted blocks transferred to after reaching the predetermined count value are determined in accordance with the next equivalent range of physical addresses determined by the controller.

### Claim 7 (depends on 6)

The system of claim 6, wherein the MLC and SLC each comprise flash memories.

### Claim 8 (depends on 6)

The system of claim 6 wherein the MLC comprises a flash memory and the SLC comprises a resistive RAM (RRAM).

### Claim 9 (depends on 6)

The system of claim 6, wherein the MLC comprises a flash memory and SLC comprises a phase change memory (PCM).

### Claim 10 (depends on 6)

The system of claim 6, wherein the MLC comprises a flash memory and the SLC comprises a magnetic random-access memory (MAGRAM).
