# US 10,120,605 B2 · Data allocating method and electric system using the same

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

- Number: US 10,120,605 B2
- Document ID: US10120605B2
- Status: Granted
- Kind: B2
- Application number: 15/093,841
- Filed: 2016-04-08
- Published: 2017-05-25
- Granted: 2018-11-06
- Earliest claimed: 2015-11-25
- Assignees: Macronix International Co., Ltd.
- Applicants: Macronix International Co., Ltd.
- Inventors: Hung-Sheng Chang; Yu-Ming Chang; Hsiang-Pang Li; Yuan-Hao Chang; Tei-Wei Kuo
- Web page: https://patentgrep.com/patent/US10120605B2

## CPC

- G06F 3/064: {Management of blocks}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G11C 11/5628: {Programming or writing circuits; Data input circuits}
- G11C 16/10: Programming or data input circuits
- G11C 16/3427: {Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written}
- G11C 2211/5641: Multilevel memory having cells with different number of storage levels
- G11C 2211/5648: Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A data allocating method includes steps of: determining whether data to be written into a physical memory block is hot data or cold data; when the data is hot data, according to a hot data allocating order, searching at least one first empty sub-block from the physical memory block to allocate the data; when the data is cold data, according to a cold data allocating order, searching at least one second empty sub-block from the physical memory block to allocate the data.

## Claims

### Claim 1

A data allocating method, comprising:
determining whether data to be written into a physical memory block is hot data or cold data;
when the data is hot data, according to a hot data allocating order, searching at least one first empty sub-block from the physical memory block to allocate the data;
when the data is cold data, according to a cold data allocating order, searching at least one second empty sub-block from the physical memory block to allocate the data; and
when the data is hot data, and programming the at least one first empty sub-block will cause program disturb to a sub-block with lowest program disturb durability in the physical memory block, skipping the at least one first empty sub-block, and turning to select another empty sub-block to allocate the data;
wherein the at least one first empty sub-block has higher program priority and narrower tolerable margin than the at least one second empty sub-block;
the tolerable margin is a minimum tolerable spacing between two adjacent data states, each of the data states corresponding to a threshold voltage distribution of a memory cell and representing a data value; and
the sub-block with the lowest program disturb durability is with the highest program priority in the physical memory block and with the narrowest tolerable margin.

### Claim 2 (depends on 1)

The data allocating method according to claim 1, further comprising:
when the data is cold data, and programming the at least one second empty sub-block will cause program disturb to a sub-block with lowest program disturb durability in the physical memory block, skipping the at least one second empty sub-block, and turning to select another empty sub-block to allocate the data;
wherein the sub-block with the lowest program disturb durability is with the highest program priority in the physical memory block and with the narrowest tolerable margin.

### Claim 3 (depends on 1)

The data allocating method according to claim 1, wherein the physical memory block includes a plurality of data units, a set of the data units that are not physically adjacent to each other are partitioned into a first sub-block and a second sub-block, the first sub-block is used for storing high bit data of the set of the data units, and the second sub-block is used for storing low bit data of the set of the data units;
another set of the data units that are not physically adjacent to each other are partitioned into a third sub-block and a fourth sub-block, the third sub-block is used for storing high bit data of the other set of the data units, and the fourth sub-block is used for storing low bit data of the other set of the data units;
program order for the first to fourth sub-blocks in the physical memory block from the first to the last is: the first sub-block, the third sub-block, the second sub-block, and the fourth sub-block;
the data allocating method further comprises:
when the data is hot data, prioritizing looking for, in the physical memory block, the second sub-block that is empty to be written the data; and
when the data is cold data, prioritizing looking for, in the physical memory block, the third sub-block that is empty to allocate the data.

### Claim 4 (depends on 3)

The data allocating method according to claim 3, further comprising:
when the data is hot data, and the second sub-block that is empty is not found, turning to find the first sub-block that is empty to allocate the data.

### Claim 5 (depends on 3)

The data allocating method according to claim 3, wherein, based on the hot data allocation order, the second sub-block has the highest priority to be chosen to allocate the data, the first sub-block has the second highest priority to be chosen to allocate the data, the third sub-block has the third highest priority to be chosen to allocate the data, and the fourth sub-block has the lowest priority to be chosen to allocate the data.

### Claim 6 (depends on 3)

The data allocating method according to claim 3, further comprising:
when the data is cold data, and the third sub-block that is empty is not found, turning to find the first sub-block that is empty to allocate the data.

### Claim 7 (depends on 3)

The data allocating method according to claim 3, wherein, based on the cold data allocation order, the third sub-block has the highest priority to be chosen to allocate the data, the first sub-block has the second highest priority to be chosen to allocate the data, the second sub-block has the third highest priority to be chosen to allocate the data, and the fourth sub-block has the lowest priority to be chosen to allocate the data.

### Claim 8 (depends on 1)

The data allocating method according to claim 1, wherein the quantity of the at least one first empty sub-block is plural, and the data allocating method further comprises:
when the data is hot data, comparing the quantity of invalid data in each sub-block neighboring each of the first empty sub-blocks, and writing the data into one of the first empty sub-blocks neighboring the most invalid data.

### Claim 9 (depends on 1)

The data allocating method according to claim 1, wherein the quantity of the at least one second empty sub-block is plural, and the data allocating method further comprises:
when the data is cold data, comparing the quantity of invalid data in each sub-block neighboring each of the second empty sub-blocks, and writing the data into one of the second empty sub-blocks neighboring the most invalid data.

### Claim 10

An electric system, comprising:
a memory including a physical memory block; and
a controller, coupled to the memory, being configured to:
determine whether data to be written into the physical memory block is hot data or cold data;
when the data is hot data, according to a hot data allocating order, search at least one first empty sub-block from the physical memory block to allocate the data; and
when the data is cold data, according to a cold data allocating order, search at least one second empty sub-block from the physical memory block to allocate the data;
wherein the at least one first empty sub-block has higher program priority and narrower tolerable margin than the at least one second empty sub-block;
the tolerable margin is a minimum tolerable spacing between two adjacent data states, each of the data states corresponding to a threshold voltage distribution of a memory cell and representing a data value;
when the data is hot data, and programming the at least one first empty sub-block will cause program disturb to a sub-block with lowest program disturb durability in the physical memory block, the controller skips the at least one first empty sub-block, and turns to select another empty sub-block to allocate the data; and
the sub-block with the lowest program disturb durability is with the highest program priority in the physical memory block and with the narrowest tolerable margin.

### Claim 11 (depends on 10)

The electric system according to claim 10, wherein when the data is cold data, and programming the at least one second empty sub-block will cause program disturb to a sub-block with lowest program disturb durability in the physical memory block, the controller skips the at least one second empty sub-block, and turns to select another empty sub-block to allocate the data;
wherein the sub-block with the lowest program disturb durability is with the highest program priority in the physical memory block and with the narrowest tolerable margin.

### Claim 12 (depends on 10)

The electric system according to claim 10, wherein the physical memory block includes a plurality of data units, a set of the data units that are not physically adjacent to each other are partitioned into a first sub-block and a second sub-block, the first sub-block is used for storing high bit data of the set of the data units, and the second sub-block is used for storing low bit data of the set of the data units;
another set of the data units that are not physically adjacent to each other are partitioned into a third sub-block and a fourth sub-block, the third sub-block is used for storing high bit data of the other set of the data units, and the fourth sub-block is used for storing low bit data of the other set of the data units;
program order for the first to fourth sub-blocks in the physical memory block from the first to the last is: the first sub-block, the third sub-block, the second sub-block, and the fourth sub-block;
the controller is further configured to:
when the data is hot data, prioritize looking for, in the physical memory block, the second sub-block that is empty to allocate the data; and
when the data is cold data, prioritize looking for, in the physical memory block, the third sub-block that is empty to allocate the data.

### Claim 13 (depends on 12)

The electric system according to claim 12, wherein when the data is hot data, and the controller does not find the second sub-block that is empty, the controller turns to find the first sub-block that is empty to allocate the data.

### Claim 14 (depends on 12)

The electric system according to claim 12, wherein, based on the hot data allocation order, the second sub-block has the highest priority to be chosen to allocate the data, the first sub-block has the second highest priority to be chosen to allocate the data, the third sub-block has the third highest priority to be chosen to allocate the data, and the fourth sub-block has the lowest priority to be chosen to allocate the data.

### Claim 15 (depends on 12)

The electric system according to claim 12, wherein when the data is cold data, and the controller does not find the third sub-block that is empty, the controller turns to find the first sub-block that is empty to allocate the data.

### Claim 16 (depends on 15)

The electric system according to claim 15, wherein, based on the cold data allocation order, the third sub-block has the highest priority to be chosen to allocate the data, the first sub-block has the second highest priority to be chosen to allocate the data, the second sub-block has the third highest priority to be chosen to allocate the data, and the fourth sub-block has the lowest priority to be chosen to allocate the data.

### Claim 17 (depends on 10)

The electric system according to claim 10, wherein the quantity of the at least one first empty sub-block is plural, when the data is hot data, the controller compares the quantity of invalid data in each sub-block neighboring each of the first empty sub-blocks, and writes the data into one of the first empty sub-blocks neighboring the most invalid data.

### Claim 18 (depends on 10)

The electric system according to claim 10, wherein the quantity of the at least one second empty sub-block is plural, when the data is cold data, the controller compares the quantity of invalid data in each sub-block neighboring each of the second empty sub-blocks, and writes the data into one of the second empty sub-blocks neighboring the most invalid data.
