IP Library Granted Patent US 9,830,084
Granted Patent B2
US 9,830,084 · App. 15/176,070 · Granted Nov 28, 2017

Writing logical groups of data to physical locations in memory using headers

Inventors: Umang Thakkar (Cupertino, CA); Gary Lin (San Jose, CA); Robert Gugel (Longmont, CO)
Assignee: SanDisk Technologies LLC
G06F3/061G06F3/0655G06F3/0688G06F12/0238G06F12/10
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 9,830,084
App. No.
15/176,070
Granted
Nov 28, 2017
Kind
B2
Abstract

The various implementations described herein include systems, methods and/or devices for storing data in a storage device. In one aspect, commands are executed, each command for storing in a storage device a logical group of data comprising one or more logical portions and having a logical address. For each command, in accordance with a determination that a remaining capacity of a first physical memory portion is less than a threshold capacity, data is stored for a head logical portion in a first physical location corresponding to the first physical memory portion. Furthermore, data is stored for a tail logical portion in a second physical location corresponding to a second physical memory portion. Mapping entries are stored in a mapping table, where the mapping entries map the corresponding logical address to at least the first physical location in the storage device.

Claims (44)

1. A method for storing data in a non-volatile storage device having a plurality of physical memory portions having a predefined sequence of physical locations in one or more non-volatile memory (NVM) devices of the storage device, the method comprising:

executing a plurality of commands, each command of the plurality of commands for storing in the storage device a logical group of data comprising one or more logical portions, the logical group of data having a logical address, the executing including, for each command of the plurality of commands:

in accordance with a determination that a remaining capacity of a first physical memory portion of the plurality of physical memory portions is less than a threshold capacity:

storing data for a head logical portion of the one or more logical portions in a first physical location in the storage device, the first physical location corresponding to the first physical memory portion; and

storing data for a tail logical portion of the one or more logical portions in a second physical location in the storage device, the second physical location corresponding to a second physical memory portion of the plurality of physical memory portions; and

storing, in a mapping table, one or more mapping entries that map the corresponding logical address to at least the first physical location in the storage device.

2. The method of claim 1 , wherein the mapping table includes one or more mapping entries for the first and second physical locations that specify respective physical memory portions and respective offsets within the respective physical memory portions in which data for the head logical portion and the tail logical portion are stored.

3. The method of claim 1 , wherein the first and second physical memory portions are distinct physical pages of the storage device, or are distinct first and second physical memory portions in distinct first and second non-volatile memory die of the storage device.

4. The method of claim 1 , further comprising:

in accordance with a determination that the remaining capacity of the first physical memory portion is greater than or equal to the threshold capacity:

storing all of the data for the one or more logical portions in the first physical memory portion, wherein the one or more logical portions comprise a single logical portion for the entire logical group of data.

5. The method of claim 1 , wherein the second physical location at which the data for the tail logical portion is stored corresponds to a determined offset from the beginning of the second physical memory portion.

6. The method of claim 5 , wherein the determined offset is determined based on a size of the data for the tail logical portion.

7. The method of claim 6 , wherein the size of the data for the tail logical portion is determined based on a total size of data for a maximum number of complete logical groups of data that can be stored within the first physical memory portion.

8. The method of claim 7 , wherein the total size of the data for the maximum number of complete logical groups of data is based on a corresponding error correction format for the first physical memory portion.

9. The method of claim 1 , further comprising buffering data for the tail logical portion until a maximum number of complete logical groups is stored in the second physical memory portion.

10. The method of claim 1 , wherein a size of a subsequent head logical portion of a subsequent logical group of data is based on a remaining data capacity of the second physical memory portion, the remaining data capacity determined based on a total size of data for a maximum number of complete logical groups that can be stored within the second physical memory portion and a size of the data for the tail logical portion.

11. The method of claim 1 , further comprising:

storing, separate from the mapping table, information specifying the second physical location corresponding to the data for the tail logical portion.

12. The method of claim 11 , wherein the information specifying the second physical location is stored in a header segment that specifies:

the first physical location for the head logical portion and the second physical location for the tail logical portion;

a check value for the logical group of data for verifying the first and/or second physical location for the tail logical portion; and/or

additional parity bits for error correcting decoded data for the logical group of data.

13. The method of claim 11 , wherein the information specifying the second physical location is stored at an adjacent physical location in the first physical memory portion next to the first physical location at which data for the head logical portion is stored.

14. The method of claim 13 , wherein the adjacent physical location is also next to a different physical location at which data for a previous tail logical portion is stored, the previous tail logical portion corresponding to a logical portion for a different logical group of data.

15. The method of claim 11 , wherein storing the information specifying the second physical location includes encoding at least the information specifying the second physical location together with the data for the head logical portion into a set of one or more codewords.

16. The method of claim 11 , wherein the information specifying the second physical location is associated with the head logical portion and the corresponding tail logical portion.

17. The method of claim 11 , further comprising storing, in the mapping table, an indication of a physical location at which the information specifying the second physical location is stored.

18. A storage device, comprising:

one or more NVM devices, wherein a plurality of physical memory portions of the storage device has a predefined sequence of physical locations in the one or more NVM devices;

a memory controller that includes a management module;

an interface to receive a plurality of commands, each command of the plurality of commands for storing in the storage device a logical group of data comprising one or more logical portions, the logical group of data having a logical address;

wherein the management module is configured to:

determine whether a remaining capacity of a first physical memory portion of the plurality of physical memory portions is less than a threshold capacity;

in accordance with a determination that the remaining capacity is less than the threshold capacity:

store data for a head logical portion of the one or more logical portions in a first physical location in the storage device, the first physical location corresponding to the first physical memory portion; and

store data for a tail logical portion of the one or more logical portions in a second physical location in the storage device, the second physical location corresponding to a second physical memory portion of the plurality of physical memory portions; and

store, in a mapping table, one or more mapping entries that map the corresponding logical address to at least the first physical location in the storage device.

19. A non-transitory computer readable storage medium, storing one or more programs for execution by one or more processors of a non-volatile storage device, the storage device comprising a plurality of physical memory portions having a predefined sequence of physical locations in one or more NVM devices of the storage device, and the one or more programs including instructions for performing operations comprising:

executing a plurality of commands, each command of the plurality of commands for storing in the storage device a logical group of data comprising one or more logical portions, the logical group of data having a logical address, the executing including, for each command of the plurality of commands:

in accordance with a determination that a remaining capacity of a first physical memory portion of the plurality of physical memory portions is less than a threshold capacity:

storing data for a head logical portion of the one or more logical portions in a first physical location in the storage device, the first physical location corresponding to the first physical memory portion; and

storing data for a tail logical portion of the one or more logical portions in a second physical location in the storage device, the second physical location corresponding to a second physical memory portion of the plurality of physical memory portions; and

storing, in a mapping table, one or more mapping entries that map the corresponding logical address to at least the first physical location in the storage device.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2025
From: SANDISK TECHNOLOGIES, LLC.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 070776/0025 →
CHANGE OF NAME Recorded Aug 3, 2017
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 043428/0198 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2016
From: THAKKAR, UMANG; LIN, GARY; GUGEL, ROBERT
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 039030/0613 →
Continuity (2)
Provisional Application 62262748 · Dec 3, 2015
Related Publication 20170160931A1 · Jun 8, 2017