# US 12,001,721 B2 · Multiple-pass programming of memory cells using temporary parity generation

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

- Number: US 12,001,721 B2
- Document ID: US12001721B2
- Status: Granted
- Kind: B2
- Application number: 17/882,355
- Filed: 2022-08-05
- Published: 2024-02-08
- Granted: 2024-06-04
- Earliest claimed: 2022-08-05
- Assignees: Micron Technology, Inc.
- Applicants: Micron Technology, Inc.
- Inventors: Kishore Kumar Muchherla; Lakshmi Kalpana Vakati; Dave Scott Ebsen; Peter Feeley; Sanjay Subbarao; Vivek Shivhare; Jiangli Zhu; Fangfang Zhu; Akira Goda
- Web page: https://patentgrep.com/patent/US12001721B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0683: {Plurality of storage devices}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 2029/0409: {Online test}
- G11C 2029/0411: {Online error correction}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

Methods, systems, and apparatuses include receiving a write command including user data. The write command is directed to a portion of memory including a first and second block and a first and second user data portion are directed to the first and second block. Temporary parity data is generated using the first and second user data portions. The temporary parity data and the first and second user data portions are stored in a buffer. Portions of the first and second block are programmed with two programming passes. The first and second user data portions in the buffer are invalidated in response to a completion of the second programming pass of the portions of the first and second blocks. The temporary parity data is maintained in the buffer until a second programming pass of the first and second block.

## Claims

### Claim 1

A method comprising:
receiving one or more write commands including user data, wherein the one or more write commands are directed to a portion of memory including a first block and a second block each comprising a plurality of portions and wherein a first portion of the user data is directed to the first block and a second portion of the user data is directed to the second block;
generating first temporary parity data by performing a parity operation using the first portion of the user data and the second portion of the user data;
storing the first temporary parity data, the first portion of the user data, and the second portion of the user data in a buffer;
programming a first portion of the first block with the first portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming;
programming a first portion of the second block with the second portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming; and
invalidating the first portion and the second portion of the user data in the buffer in response to a completion of the second pass of programming the first portion of the first block and the first portion of the second block, wherein the first temporary parity data is maintained in the buffer until a completion of the second pass of programming the first block and the second block.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first block and the second block are a first type of non-volatile memory element and wherein the buffer is a second type of non-volatile memory element.

### Claim 3 (depends on 1)

The method of claim 1, wherein a third portion of the user data is directed to the first block and a fourth portion of the user data is directed to the second block, the method further comprising:
generating second temporary parity data based on the third portion of the user data and the fourth portion of the user data;
storing the second temporary parity data, the third portion of the user data, and the fourth portion of the user data in the buffer;
programming a second portion of the first block with the third portion of the user data; and
programming a second portion of the second block with the fourth portion of the user data.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first portion of user data is stored in a first top deck and a first bottom deck of the buffer and wherein the second portion of user data is stored in a second top deck and a second bottom deck of the buffer and wherein invalidating the first portion and the second portion of the user data in the buffer comprises invalidating the first top deck and the second top deck in response to a completion of the first pass of programming the first portion of the first block and the first portion of the second block.

### Claim 5 (depends on 3)

The method of claim 3, further comprising:
scanning the first block and the second block in response to the completion of the second pass of programming the first block and the second block;
determining whether the first block and the second block contain defects; and
invalidating the first temporary parity data and the second temporary parity data in response to determining that the first block and the second block do not contain defects.

### Claim 6 (depends on 3)

The method of claim 3, further comprising:
storing transitory pages of the third portion of user data and the fourth portion of user data in a transitory buffer, wherein the transitory pages are pages of the third portion of user data and the fourth portion of user data stored in the transitory buffer before the completion of the second pass of programming the first portion of the first block and the first portion of the second block.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first block and the second block are each a plane, together comprising a zone and wherein the parity operation is an exclusive-or operation.

### Claim 8

A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:
receive one or more write commands including user data, wherein the one or more write commands are directed to a portion of memory including a first block and a second block each comprising a plurality of portions and wherein a first portion of the user data is directed to the first block and a second portion of the user data is directed to the second block;
generate first temporary parity data by performing a parity operation using the first portion of the user data and the second portion of the user data;
store the first temporary parity data, the first portion of the user data, and the second portion of the user data in a buffer;
program a first portion of the first block with the first portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming;
program a first portion of the second block with the second portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming; and
invalidate the first portion and the second portion of the user data in the buffer in response to a completion of the second pass of programming the first portion of the first block and the first portion of the second block, wherein the first temporary parity data is maintained in the buffer until a completion of the second pass of programming the first block and the second block.

### Claim 9 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the first block and the second block are a first type of non-volatile memory element and wherein the buffer is a second type of non-volatile memory element.

### Claim 10 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein a third portion of the user data is directed to the first block and a fourth portion of the user data is directed to the second block and wherein the processing device is further to:
generate second temporary parity data based on the third portion of the user data and the fourth portion of the user data;
store the second temporary parity data, the third portion of the user data, and the fourth portion of the user data in the buffer;
program a second portion of the first block with the third portion of the user data; and
program a second portion of the second block with the fourth portion of the user data.

### Claim 11 (depends on 10)

The non-transitory computer-readable storage medium of claim 10, wherein the first portion of user data is stored in a first top deck and a first bottom deck of the buffer and wherein the second portion of user data is stored in a second top deck and a second bottom deck of the buffer and wherein invalidating the first portion and the second portion of the user data in the buffer comprises invalidating the first top deck and the second top deck in response to a completion of the first pass of programming the first portion of the first block and the first portion of the second block.

### Claim 12 (depends on 10)

The non-transitory computer-readable storage medium of claim 10, wherein the processing device is further to:
scan the first block and the second block in response to the completion of the second pass of programming the first block and the second block;
determine whether the first block and the second block contain defects; and
invalidate the first temporary parity data and the second temporary parity data in response to determining that the first block and the second block do not contain defects.

### Claim 13 (depends on 10)

The non-transitory computer-readable storage medium of claim 10, wherein the processing device is further to:
store transitory pages of the third portion of user data and the fourth portion of user data in a transitory buffer, wherein the transitory pages are pages of the third portion of user data and the fourth portion of user data stored in the transitory buffer before the completion of the second pass of programming the first portion of the first block and the first portion of the second block.

### Claim 14 (depends on 8)

The non-transitory computer-readable storage medium of claim 8, wherein the first block and the second block are each a plane, together comprising a zone and wherein the parity operation is an exclusive-or operation.

### Claim 15

A system comprising:
a plurality of memory devices; and
a processing device, operatively coupled with the plurality of memory devices, to:
receive one or more write commands including user data, wherein the one or more write commands are directed to a portion of memory including a first block and a second block each comprising a plurality of portions and wherein a first portion of the user data is directed to the first block and a second portion of the user data is directed to the second block, and wherein the first block and the second block are a first type of non-volatile memory element;
generate first temporary parity data by performing a parity operation using the first portion of the user data and the second portion of the user data;
store the first temporary parity data, the first portion of the user data, and the second portion of the user data in a buffer, wherein the buffer is a second type of non-volatile memory element;
program a first portion of the first block with the first portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming;
program a first portion of the second block with the second portion of the user data, wherein the programming comprises a first pass of programming and a second pass of programming; and
invalidate the first portion and the second portion of the user data in the buffer in response to a completion of the second pass of programming the first portion of the first block and the first portion of the second block, wherein the first temporary parity data is maintained in the buffer until a completion of the second pass of programming the first block and the second block.

### Claim 16 (depends on 15)

The system of claim 15, wherein a third portion of the user data is directed to the first block and a fourth portion of the user data is directed to the second block and wherein the processing device is further to:
generate second temporary parity data based on the third portion of the user data and the fourth portion of the user data;
store the second temporary parity data, the third portion of the user data, and the fourth portion of the user data in the buffer;
program a second portion of the first block with the third portion of the user data; and
program a second portion of the second block with the fourth portion of the user data.

### Claim 17 (depends on 16)

The system of claim 16, wherein the first portion of user data is stored in a first top deck and a first bottom deck of the buffer and wherein the second portion of user data is stored in a second top deck and a second bottom deck of the buffer and wherein invalidating the first portion and the second portion of the user data in the buffer comprises invalidating the first top deck and the second top deck in response to a completion of the first pass of programming the first portion of the first block and the first portion of the second block.

### Claim 18 (depends on 16)

The system of claim 16, wherein the processing device is further to:
scan the first block and the second block in response to the completion of the second pass of programming the first block and the second block;
determine whether the first block and the second block contain defects; and
invalidate the first temporary parity data and the second temporary parity data in response to determining that the first block and the second block do not contain defects.

### Claim 19 (depends on 16)

The system of claim 16, wherein the processing device is further to:
store transitory pages of the third portion of user data and the fourth portion of user data in a transitory buffer, wherein the transitory pages are pages of the third portion of user data and the fourth portion of user data stored in the transitory buffer before the completion of the second pass of programming the first portion of the first block and the first portion of the second block.

### Claim 20 (depends on 15)

The system of claim 15, wherein the first block and the second block are each a plane, together comprising a zone and wherein the parity operation is an exclusive-or operation.
