IP Library › Granted Patent US 11,886,741
Granted Patent B2
US 11,886,741 · App. 17/459,539 · Granted Jan 30, 2024

Method and storage device for improving NAND flash memory performance for intensive read workloads

Inventors: Tushar Tukaram Patil (Suwon-si, KR); Anantha Sharma (Suwon-si, KR); Sharath Kumar Kodase (Suwon-si, KR)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F3/0659G06F3/0611G06F3/0631G06F3/0656G06F3/0679G06F11/1004G06F12/10G06F2212/657
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,886,741
App. No.
17/459,539
Granted
Jan 30, 2024
Kind
B2
Abstract

A method for reading data in a storage device is provided. The method includes receiving a read command from a host device, wherein the read command indicates stored data in the storage device and a Logical Block Address (LBA) of the stored data; obtaining a Physical Block Number (PBN) based on the LBA and a Logical to Physical (L2P) mapping; determining whether the PBN corresponds to a volatile memory of the storage device; reading the stored data directly from the volatile memory based on the PBN corresponding to the volatile memory; incrementing a read counter associated with the PBN based on the stored data being read directly from the volatile memory; and reading the stored data from a non-volatile memory of the storage device based on the PBN not corresponding to the volatile memory.

Claims (92)

1. A method for reading data in a storage device, the method comprising:

receiving, by the storage device, a read command from a host device, wherein the read command comprises a Logical Block Address (LBA) of stored data to be read;

obtaining, by the storage device, a Physical Block Number (PBN) based on the LBA and a Logical to Physical (L2P) mapping;

determining, by the storage device, whether the PBN is a block of a volatile memory of the storage device;

reading, by the storage device, the stored data directly from the volatile memory based on the PBN being a block of the volatile memory;

incrementing, by the storage device, a read counter associated with the PBN based on the stored data being read directly from the volatile memory;

reading, by the storage device, the stored data from a non-volatile memory of the storage device based on the PBN not being a block of the volatile memory; and

determining, by the storage device, whether a read disturbance exceeds a threshold limit and whether the read counter exceeds a maximum read limit while the stored data is read from the non-volatile memory.

2. The method as claimed in claim 1 , further comprising:

reading, by the storage device, the stored data from the non-volatile memory based on the read disturbance not exceeding the threshold limit while the stored data is read from the non-volatile memory; and

allocating, by the storage device, a buffer in the volatile memory based on the read disturbance exceeding the threshold limit while the stored data is read from the non-volatile memory.

3. The method as claimed in claim 2 , wherein the stored data comprises parity bits, and

wherein the threshold limit is a maximum number of bits for correction using the parity bits.

4. The method as claimed in claim 2 , wherein the allocating the buffer in the volatile memory further comprises:

determining, by the storage device, whether the buffer in the volatile memory has been successfully allocated;

relocating, by the storage device, the stored data from the non-volatile memory to the volatile memory based on the allocating of the buffer in the volatile memory being successful;

updating the L2P mapping based on the stored data being relocated to the volatile memory;

reading the stored data from the volatile memory; and

relocating data from the volatile memory to the non-volatile memory based on the allocating of the buffer in the volatile memory not being successful, wherein the relocated data comprises a lowest read counter among a plurality of read counters of the volatile memory.

5. The method as claimed in claim 4 , wherein the relocating the data from the volatile memory to the non-volatile memory comprises:

identifying, by the storage device, the buffer based on the buffer corresponding to the lowest read counter in the volatile memory;

allocating, by the storage device, a block of a Single-level cell (SLC) NAND flash memory in the non-volatile memory to store the data;

relocating, by the storage device, the data in the SLC NAND flash memory; and

updating the PBN associated with the data to indicate the block of the SLC NAND flash memory.

6. The method as claimed in claim 1 , further comprising:

reading, by the storage device, the stored data from the non-volatile memory based on the read counter not exceeding the maximum read limit while the stored data is read from the non-volatile memory; and

allocating, by the storage device, a buffer in the volatile memory based on the read counter exceeding the maximum read limit while the stored data is read from the non-volatile memory.

7. The method as claimed in claim 1 , wherein the L2P mapping indicates an actual physical location for each LBA in the storage device.

8. A storage device comprising:

a volatile memory;

a non-volatile memory; and

a storage device controller, operably connected to the volatile memory and the non-volatile memory, configured to:

receive a read command from a host device, wherein the read command comprises a Logical Block Address (LBA) of stored data to be read;

obtain a Physical Block Number (PBN) based on the LBA and a Logical to Physical (L2P) mapping;

determine whether the PBN is a block of the volatile memory;

read the stored data directly from the volatile memory based on the PBN being a block of the volatile memory;

increment a read counter associated with the PBN based on the stored data being read directly from the volatile memory;

read the stored data from the non-volatile memory based on the PBN not being a block of the volatile memory; and

determine whether a read disturbance exceeds a threshold limit and whether the read counter exceeds a maximum read limit while the stored data is read from the non-volatile memory.

9. The storage device as claimed in claim 8 , wherein the storage device controller is further configured to:

read the stored data from the non-volatile memory based on the read disturbance not exceeding the threshold limit while the stored data is read from the non-volatile memory; and

allocate a buffer in the volatile memory based on the read disturbance exceeding the threshold limit while the stored data is read from the non-volatile memory.

10. The storage device as claimed in claim 9 , wherein the stored data comprises parity bits, and

wherein the threshold limit is a maximum number of bits for correction using the parity bits.

11. The storage device as claimed in claim 9 , wherein the storage device controller is further configured to:

determine whether the buffer in the volatile memory has been successfully allocated;

relocate the stored data from the non-volatile memory to the volatile memory based on allocation of the buffer in the volatile memory being successful;

update the L2P mapping based on the stored data being relocated to the volatile memory;

read the stored data from the volatile memory;

relocate data from the volatile memory to the non-volatile memory based on allocation of the buffer in the volatile memory not being successful, wherein the relocated data comprises a lowest read counter from among a plurality of read counters of the volatile memory;

read the stored data from the non-volatile memory based on the read counter not exceeding the maximum read limit while the stored data is read from the non-volatile memory; and

allocate the buffer in the volatile memory based on the read counter exceeding the maximum read limit while the stored data is read from the non-volatile memory.

12. The storage device as claimed in claim 11 , wherein the storage device controller is further configured to:

identify the buffer based on the buffer corresponding to the lowest read counter in the volatile memory;

allocate a block of a Single-level cell (SLC) NAND flash memory in the non-volatile memory to store the data;

relocate the data in the SLC NAND flash memory; and

update the PBN associated with the data to indicate the block of the SLC NAND flash memory.

13. The storage device as claimed in claim 8 , wherein the storage device controller is further configured to:

read the stored data from the non-volatile memory based on the read counter not exceeding the maximum read limit while the stored data is read from the non-volatile memory; and

allocate a buffer in the volatile memory based on the read counter exceeding the maximum read limit while the stored data is read from the non-volatile memory.

14. The storage device as claimed in claim 8 , wherein the L2P mapping indicates an actual physical location for each LBA in the storage device.

15. A storage device controller comprising:

at least one processor configured to:

receive a read command from a host device, wherein the read command comprises a Logical Block Address (LBA) of stored data to be read;

obtain a Physical Block Number (PBN) based on the LBA and a Logical to Physical (L2P) mapping;

determine whether the PBN is a block of a volatile memory of a storage device;

read the stored data directly from the volatile memory based on the PBN being a block of the volatile memory;

increment a read counter associated with the PBN based on the stored data being read directly from the volatile memory;

read the stored data from a non-volatile memory of the storage device based on the PBN not being a block of the volatile memory; and

determine whether a read disturbance exceeds a threshold limit and whether the read counter exceeds a maximum read limit while the stored data is read from the non-volatile memory.

16. The storage device controller as claimed in claim 15 , wherein the at least one processor is further configured to:

read the stored data from the non-volatile memory based on the read disturbance not exceeding the threshold limit while the stored data is read from the non-volatile memory;

allocate a buffer in the volatile memory based on the read disturbance exceeding the threshold limit while the stored data is read from the non-volatile memory;

read the stored data from the non-volatile memory based on the read counter not exceeding the maximum read limit while the stored data is read from the non-volatile memory; and

allocate the buffer in the volatile memory based on the read counter exceeding the maximum read limit while the stored data is read from the non-volatile memory.

17. The storage device controller as claimed in claim 16 , wherein the stored data comprises parity bits, and

wherein the threshold limit is a maximum number of bits for correction using the parity bits.

18. The storage device controller as claimed in claim 15 , wherein the at least one processor is further configured to:

read the stored data from the non-volatile memory based on the read disturbance not exceeding the threshold limit while the stored data is read from the non-volatile memory;

determine whether a buffer in the volatile memory has been successfully allocated;

relocate the stored data from the non-volatile memory to the volatile memory based on allocation of the buffer in the volatile memory being successful;

update the L2P mapping based on the stored data being relocated to the volatile memory;

read the stored data from the volatile memory; and

relocate data from the volatile memory to the non-volatile memory based on allocation of the buffer in the volatile memory not being successful, wherein the relocated data comprises a lowest read counter from among a plurality of read counters of the volatile memory.

19. The storage device controller as claimed in claim 18 , wherein the at least one processor is further configured to:

identify the buffer based on the buffer corresponding to the lowest read counter in the volatile memory;

allocate a block of a Single-level cell (SLC) NAND flash memory in the non-volatile memory to store the data;

relocate the data in the SLC NAND flash memory; and

update the PBN associated with the data to indicate the block of the SLC NAND flash memory.

20. The storage device controller as claimed in claim 15 , wherein the storage device controller is further configured to:

read the stored data from the non-volatile memory based on the read counter not exceeding the maximum read limit while the stored data is read from the non-volatile memory; and

allocate a buffer in the volatile memory based on the read counter exceeding the maximum read limit while the stored data is read from the non-volatile memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2021
From: PATIL, TUSHAR TUKARAM; SHARMA, ANANTHA; KODASE, SHARATH KUMAR
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 057314/0008 →
Priority Claims (1)
IN 202141017782 · Apr 16, 2021 · national
Continuity (1)
Related Publication 20220334768A1 · Oct 20, 2022
Cited By (1)
US 12,243,591