IP Library Granted Patent US 10,996,886
Granted Patent B2
US 10,996,886 · App. 16/249,407 · Granted May 4, 2021

Method and system for facilitating atomicity and latency assurance on variable sized I/O

Inventor: Shu Li (Bothell, WA)
Assignee: Alibaba Group Holding Limited
G06F3/0655G06F3/0604G06F3/0679G06F12/0253
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,996,886
App. No.
16/249,407
Granted
May 4, 2021
Kind
B2
Abstract

One embodiment facilitates data storage. During operation, the system selects a first page of a non-volatile storage to be recycled in a garbage collection process. The system determines that the first page is a first partial page which includes valid data and invalid data. The system combines the valid data from the first partial page with valid data from a second partial page to form a first full page, wherein a full page is aligned with a physical page in the non-volatile storage. The system writes the first full page to a first newly assigned physical page of the non-volatile storage.

Claims (123)

1. A computer-implemented method for facilitating data storage, the method comprising:

selecting a first page of a non-volatile storage to be recycled in a garbage collection process, wherein the first page is a first partial page which includes valid data, invalid data, and a noisy parity corresponding to the valid data and the invalid data;

detecting a setting which allows noise in the garbage collection process;

determining a second partial page which includes valid data corresponding to a second partial parity;

combining the valid data from the first partial page with the valid data from the second partial page to form a first full page, wherein a full page is aligned with a physical page in the non-volatile storage;

accumulating the second partial parity with the noisy parity; and

writing the first full page to a first newly assigned physical page of the non-volatile storage.

2. The method of claim 1 , further comprising:

prior to combining the valid data from the first partial page with the valid data from the second partial page:

reading the valid data from the first partial page; and

reading the valid data from the second partial page.

3. The method of claim 2 , further comprising:

sending the read valid data and the noisy parity from the first partial page to a parity accumulation module;

aligning the valid data from the second partial page by padding with zeros; and

encoding the valid data from the second partial page to obtain the second partial parity,

wherein the second partial parity and the noisy parity are accumulated by the parity accumulation module.

4. The method of claim 1 , wherein the valid data from the second partial page is associated with a host write operation, a background write process, or a garbage collection process.

5. The method of claim 1 , further comprising:

in response to determining that the first page is a second full page which is filled with valid data:

reading the valid data from the second full page;

transferring the read data to a page buffer of a NAND plane of a second newly assigned physical page; and

writing the transferred data to the second newly assigned physical page.

6. The method of claim 1 , further comprising:

in response to detecting a setting which does not allow noise in the garbage collection process:

reading all data from a second page to be recycled; and

performing, on the second page, a decoding and an encoding based on an error correction code (ECC).

7. The method of claim 6 , further comprising:

in response to determining that the second page is a second full page which is filled with valid data:

reading raw data from the second full page;

decoding the read raw data based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data;

transferring the ECC-encoded data to a page buffer of a NAND plane of a second newly assigned physical page; and

writing the transferred data to the second newly assigned page.

8. The method of claim 6 , further comprising:

in response to determining that the second page is a third partial page which includes valid data, empty space, and a third partial parity corresponding to the valid data in the third partial page:

reading raw data from the third partial page;

aligning the read data from the third partial page by padding with zeros;

decoding the read data from the third partial page based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data, which includes an updated third partial parity;

sending the ECC-encoded data of the third partial page to a parity accumulation module;

combining valid data from the third partial page with valid data from a fourth partial page to form a third full page, wherein the valid data from the fourth partial page corresponds to a fourth partial parity;

accumulating, by the parity accumulation module, the fourth partial parity with the updated third partial parity;

transferring data in the third full page to a page buffer of a NAND plane of a second newly assigned page of the non-volatile memory; and

writing the transferred data to the second newly assigned physical page.

9. A computer system for facilitating data storage, the system comprising:

a processor; and

a memory coupled to the processor and storing instructions, which when executed by the processor cause the processor to perform a method, wherein the computer system is the storage device, the method comprising:

selecting a first page of a non-volatile storage to be recycled in a garbage collection process, wherein the first page is a first partial page which includes valid data, invalid data, and a noisy parity corresponding to the valid data and the invalid data;

detecting a setting which allows noise in the garbage collection process;

determining a second partial page which includes valid data corresponding to a second partial parity;

combining the valid data from the first partial page with the valid data from the second partial page to form a first full page, wherein a full page is aligned with a physical page in the non-volatile storage;

accumulating the second partial parity with the noisy parity; and

writing the first full page to a first newly assigned physical page of the non-volatile storage.

10. The computer system of claim 9 , wherein the method further comprises:

prior to combining the valid data from the first partial page with the valid data from the second partial page:

reading the valid data from the first partial page; and

reading the valid data from the second partial page.

11. The computer system of claim 10 , wherein the method further comprises:

sending the read valid data and the noisy parity from the first partial page to a parity accumulation module;

aligning the valid data from the second partial page by padding with zeros; and

encoding the valid data from the second partial page to obtain the second partial parity,

wherein the second partial parity and the noisy parity are accumulated by the parity accumulation module.

12. The computer system of claim 9 , wherein the valid data from the second partial page is associated with a host write operation, a background write process, or a garbage collection process.

13. The computer system of claim 9 , wherein the method further comprises:

in response to determining that the first page is a second full page which is filled with valid data:

reading the valid data from the second full page;

transferring the read data to a page buffer of a NAND plane of a second newly assigned physical page; and

writing the transferred data to the second newly assigned physical page.

14. The computer system of claim 9 , wherein the method further comprises:

in response to detecting a setting which does not allow noise in the garbage collection process:

reading all data from a second page to be recycled; and

performing, on the second page, a decoding and an encoding based on an error correction code (ECC).

15. The computer system of claim 14 , wherein the method further comprises:

in response to determining that the second page is a second full page which is filled with valid data:

reading raw data from the second full page;

decoding the read raw data based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data;

transferring the ECC-encoded data to a page buffer of a NAND plane of a second newly assigned physical page; and

writing the transferred data to the second newly assigned page.

16. The computer system of claim 14 , wherein the method further comprises:

in response to determining that the second page is a third partial page which includes valid data, empty space, and a third partial parity corresponding to the valid data in the third partial page:

reading raw data from the third partial page;

aligning the read data from the third partial page by padding with zeros;

decoding the read data from the third partial page based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data, which includes an updated third partial parity;

sending the ECC-encoded data of the third partial page to a parity accumulation module;

combining valid data from the third partial page with valid data from a fourth partial page to form a third full page, wherein the valid data from the fourth partial page corresponds to a fourth partial parity;

accumulating, by the parity accumulation module, the fourth partial parity with the updated third partial parity;

transferring data in the third full page to a page buffer of a NAND plane of a second newly assigned page of the non-volatile memory; and

writing the transferred data to the second newly assigned physical page.

17. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:

selecting a first page of a non-volatile storage to be recycled in a garbage collection process, wherein the first page is a first partial page which includes valid data, invalid data, and a noisy parity corresponding to the valid data and the invalid data;

detecting a setting which allows noise in the garbage collection process;

determining a second partial page which includes valid data corresponding to a second partial parity;

combining the valid data from the first partial page with the valid data from the second partial page to form a first full page, wherein a full page is aligned with a physical page in the non-volatile storage;

accumulating the second partial parity with the noisy parity; and

writing the first full page to a first newly assigned physical page of the non-volatile storage.

18. The storage medium of claim 17 , wherein the method further comprises:

prior to combining the valid data from the first partial page with the valid data from the second partial page:

reading the valid data from the first partial page; and

reading the valid data from the second partial page.

19. The storage medium of claim 18 , wherein the method further comprises:

sending the read valid data and the noisy parity from the first partial page to a parity accumulation module;

aligning the valid data from the second partial page by padding with zeros; and

encoding the valid data from the second partial page to obtain the second partial parity,

wherein the second partial parity and the noisy parity are accumulated by the parity accumulation module.

20. The storage medium of claim 17 , wherein in response to detecting a setting which does not allow noise in the garbage collection process, the method further comprises:

in response to determining that the second page is a second full page which is filled with valid data:

reading raw data from the second full page;

decoding the read raw data based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data;

transferring the ECC-encoded data to a page buffer of a NAND plane of a second newly assigned physical page; and

writing the transferred data to the second newly assigned page; and

in response to determining that the second page is a third partial page which includes valid data, empty space, and a third partial parity corresponding to the valid data in the third partial page:

reading raw data from the third partial page;

aligning the read data from the third partial page by padding with zeros;

decoding the read data from the third partial page based on the ECC to obtain ECC-decoded data;

encoding the ECC-decoded data based on the ECC to obtain ECC-encoded data, which includes an updated third partial parity;

sending the ECC-encoded data of the third partial page to a parity accumulation module;

combining valid data from the third partial page with valid data from a fourth partial page to form a third full page, wherein the valid data from the fourth partial page corresponds to a fourth partial parity;

accumulating, by the parity accumulation module, the fourth partial parity with the updated third partial parity;

transferring data in the third full page to a page buffer of a NAND plane of a second newly assigned page of the non-volatile memory; and

writing the transferred data to the second newly assigned physical page.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075499/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2019
From: LI, SHU
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 048046/0203 →
Continuity (2)
Provisional Application 62713921 · Aug 2, 2018
Related Publication 20200042230A1 · Feb 6, 2020