IP Library Granted Patent US 11,169,873
Granted Patent B2
US 11,169,873 · App. 16/418,602 · Granted Nov 9, 2021

Method and system for extending lifespan and enhancing throughput in a high-density solid state drive

Inventor: Shu Li (Bothell, WA)
Assignee: Alibaba Group Holding Limited
G06F11/1068G11C29/52H03M13/154H03M13/2906
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 11,169,873
App. No.
16/418,602
Granted
Nov 9, 2021
Kind
B2
Abstract

One embodiment facilitates data placement in a storage device. During operation, the system receives a request indicating first data to be written to a non-volatile memory which includes a plurality of dies, wherein a plurality of error correction code (ECC) codec modules reside on the non-volatile memory. The system receives, by a first codec module residing on a first die, the first data. The system encodes, by the first codec module operating on the first die, the first data based on an error correction code (ECC) to obtain first ECC-encoded data which includes a first set of ECC parity bits. The system writes the first ECC-encoded data to the first die.

Claims (94)

1. A computer-implemented method for facilitating data placement in a storage device, the method comprising:

receiving, by a controller of the storage device from a host which performs wear-leveling, garbage collection, address-mapping, and bad block management, a request indicating first data to be written to a non-volatile memory which includes a plurality of dies and a plurality of error correction code (ECC) encoding and decoding modules residing on the plurality of dies of the storage device,

wherein the controller includes an erasure code (EC) encoding and decoding module, and

wherein the storage device is distinct from the host;

receiving, by a first ECC module residing on a first die via a first interface of the controller, the first data;

encoding, by the first ECC module operating on the first die, the first data based on an error correction code (ECC) to obtain first ECC-encoded data which includes a first set of ECC parity bits; and

writing the first ECC-encoded data to the first die;

encoding, by the EC module of the controller of the storage device, the first data and other data to be written to the non-volatile memory based on an erasure code (EC) to obtain second data which comprises EC parity bits;

receiving, by a second ECC module residing on a second die via the first interface, the second data;

encoding, by the second ECC module operating on the second die, the second data based on the error correction code (ECC) to obtain second ECC-encoded data which includes a second set of ECC parity bits; and

writing the second ECC-encoded data to the second die.

2. The method of claim 1 , wherein the first data and the other data comprise a superblock of the non-volatile memory.

3. The method of claim 1 , further comprising:

receiving a request to read the first data from the non-volatile memory;

retrieving, from the first die, the first ECC-encoded data;

decoding, by the first codec module, the retrieved first ECC-encoded data based on the error correction code (ECC) to obtain first ECC-decoded data which includes the first set of ECC parity bits;

dropping the first set of ECC parity bits to obtain the first data; and

returning the first data.

4. The method of claim 3 , wherein in response to detecting an error in decoding the retrieved first ECC-encoded data, the method further comprises:

retrieving, from the second die, the second ECC-encoded data;

decoding, by the second codec module, the retrieved second ECC-encoded data based on the error correction code (ECC) to obtain second ECC-decoded data which includes the second set of ECC parity bits;

dropping the second set of ECC parity bits to obtain the second data which comprises the EC parity bits; and

decoding, by the erasure coding module of the controller, the EC parity bits based on the erasure code (EC) to obtain the first data and the other data.

5. The method of claim 1 ,

wherein the storage device comprises a plurality of channels,

wherein a respective channel is associated with a respective die, and

wherein the first codec module receives the first data via a first channel associated with the first die.

6. The method of claim 1 , wherein a respective die comprises a NAND flash memory element and further comprises:

a plurality of layers, including a peripheral layer stacked above a remainder of the plurality of layers,

wherein a respective codec module resides on the peripheral layer, and

wherein the remainder layers form a staircase-shape which routes wordlines to the peripheral layer and the respective codec module.

7. The method of claim 1 , wherein a respective ECC encoding and decoding module resides on a respective die or dies.

8. A computer system for facilitating error recovery, 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 comprises a storage device, the method comprising:

receiving, by a controller of the storage device from a host which performs wear-leveling, garbage collection, address-mapping, and bad block management, a request indicating first data to be written to a non-volatile memory which includes a plurality of dies and a plurality of error correction code (ECC) encoding and decoding modules residing on the plurality of dies of the storage device,

wherein the controller includes an erasure code (EC) encoding and decoding module, and

wherein the storage device is distinct from the host;

receiving, by a first ECC module residing on a first die via a first interface of the controller, the first data;

encoding, by the first ECC module operating on the first die, the first data based on an error correction code (ECC) to obtain first ECC-encoded data which includes a first set of ECC parity bits; and

writing the first ECC-encoded data to the first die;

encoding, by the EC module of the controller of the storage device, the first data and other data to be written to the non-volatile memory based on an erasure code (EC) to obtain second data which comprises EC parity bits;

receiving, by a second ECC module residing on a second die via the first interface, the second data;

encoding, by the second ECC module operating on the second die, the second data based on the error correction code (ECC) to obtain second ECC-encoded data which includes a second set of ECC parity bits; and

writing the second ECC-encoded data to the second die.

9. The computer system of claim 8 , wherein the first data and the other data comprise a superblock of the non-volatile memory.

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

receiving a request to read the first data from the non-volatile memory;

retrieving, from the first die, the first ECC-encoded data;

decoding, by the first codec module, the retrieved first ECC-encoded data based on the error correction code (ECC) to obtain first ECC-decoded data which includes the first set of ECC parity bits;

dropping the first set of ECC parity bits to obtain the first data; and

returning the first data.

11. The computer system of claim 10 , wherein in response to detecting an error in decoding the retrieved first ECC-encoded data, the method further comprises:

retrieving, from the second die, the second ECC-encoded data;

decoding, by the second codec module, the retrieved second ECC-encoded data based on the error correction code (ECC) to obtain second ECC-decoded data which includes the second set of ECC parity bits;

dropping the second set of ECC parity bits to obtain the second data which comprises the EC parity bits; and

decoding, by the erasure coding module of the controller, the EC parity bits based on the erasure code (EC) to obtain the first data and the other data.

12. The computer system of claim 8 ,

wherein the storage device comprises a plurality of channels,

wherein a respective channel is associated with a respective die, and

wherein the first codec module receives the first data via a first channel associated with the first die.

13. The computer system of claim 8 , wherein a respective die comprises a NAND flash memory element and further comprises:

a plurality of layers, including a peripheral layer stacked above a remainder of the plurality of layers,

wherein a respective codec module resides on the peripheral layer, and

wherein the remainder layers form a staircase-shape which routes wordlines to the peripheral layer and the respective codec module.

14. The computer system of claim 8 , wherein a respective ECC encoding and decoding module resides on a respective die or dies.

15. 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:

receiving, by a controller of a storage device from a host which performs wear-leveling, garbage collection, address-mapping, and bad block management, a request indicating first data to be written to a non-volatile memory which includes a plurality of dies and a plurality of error correction code (ECC) encoding and decoding modules residing on the plurality of dies of the storage device,

wherein the controller includes an erasure code (EC) encoding and decoding module, and

wherein the storage device is distinct from the host;

receiving, by a first ECC module residing on a first die via a first interface of the controller, the first data;

encoding, by the first ECC module operating on the first die, the first data based on an error correction code (ECC) to obtain first ECC-encoded data which includes a first set of ECC parity bits; and

writing the first ECC-encoded data to the first die;

encoding, by the EC module of the controller of the storage device, the first data and other data to be written to the non-volatile memory based on an erasure code (EC) to obtain second data which comprises EC parity bits;

receiving, by a second ECC module residing on a second die via the first interface, the second data;

encoding, by the second ECC module operating on the second die, the second data based on the error correction code (ECC) to obtain second ECC-encoded data which includes a second set of ECC parity bits; and

writing the second ECC-encoded data to the second die.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the first data and the other data comprise a superblock of the non-volatile memory.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the method further comprises:

receiving a request to read the first data from the non-volatile memory;

retrieving, from the first die, the first ECC-encoded data;

decoding, by the first codec module, the retrieved first ECC-encoded data based on the error correction code (ECC) to obtain first ECC-decoded data which includes the first set of ECC parity bits;

dropping the first set of ECC parity bits to obtain the first data; and

returning the first data.

18. The non-transitory computer-readable storage medium of claim 17 , wherein in response to detecting an error in decoding the retrieved first ECC-encoded data, the method further comprises:

retrieving, from the second die, the second ECC-encoded data;

decoding, by the second codec module, the retrieved second ECC-encoded data based on the error correction code (ECC) to obtain second ECC-decoded data which includes the second set of ECC parity bits;

dropping the second set of ECC parity bits to obtain the second data which comprises the EC parity bits; and

decoding, by the erasure coding module of the controller, the EC parity bits based on the erasure code (EC) to obtain the first data and the other data.

19. The non-transitory computer-readable storage medium of claim 15 ,

wherein the storage device comprises a plurality of channels,

wherein a respective channel is associated with a respective die, and

wherein the first codec module receives the first data via a first channel associated with the first die.

20. The non-transitory computer-readable storage medium of claim 15 , wherein a respective ECC encoding and decoding module resides on a respective die or dies.

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 May 22, 2019
From: LI, SHU
To: ALIBABA GROUP HOLDING LIMITED
Reel/Frame 049257/0124 →
Continuity (1)
Related Publication 20200371871A1 · Nov 26, 2020