IP Library Granted Patent US 10,635,346
Granted Patent B2
US 10,635,346 · App. 16/051,366 · Granted Apr 28, 2020

Self-trimming of data stored in non-volatile memory using data storage controller

Inventors: Avichay Haim Hodes (Kfar-Ben Nun, IL); Guy Freikorn (Oranit, IL)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0658G06F3/068G06F3/0608G06F12/0246G08B13/19673
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,635,346
App. No.
16/051,366
Granted
Apr 28, 2020
Kind
B2
Abstract

The present disclosure describes technologies and techniques for use with a data storage controller (such as a non-volatile memory (NVM) controller) to implement self-trimming of media data. In illustrative examples, an NVM controller stores a stream of video data in a NAND storage device, such as video obtained by a security camera. The controller also stores time stamps corresponding to portions of the video data. The controller then periodically (or during idle times) scans the stored information to identify video data that has exceeded a maximum data lifetime, such as data older than one week. Such data is deemed to be old/expired and is trimmed by the controller (by, e.g., marking corresponding entries in an allocation table as deleted or invalid). In this manner, the controller performs self-trimming of older video data to, for example, limit write amplification. NVMe examples are provided.

Claims (47)

1. A method for use by a data storage controller for controlling a non-volatile memory (NVM) device, comprising:

storing a stream of data obtained over a period of time in the NVM device;

storing time-based parameters corresponding to portions of the stream of data;

subsequently scanning the NVM device in accordance with self-trim control parameters to identify portions of the stream of data stored within the NVM device that exceed a time-based threshold based on the corresponding time-based parameters, the self-trim control parameters indicating different operations depending on whether the data storage controller is idle or not; and

performing self-trim operations in accordance with the self-trim control parameters and based on whether the data storage controller is idle or not to selectively trim the portions of the stream of data within the NVM device that exceed the time-based threshold.

2. The method of claim 1 , wherein trimming the portions of the stream of data comprises marking the portions of the stream of data as one or more of deleted, invalid or unwritten in an allocation table, the allocation table within one or more of the data storage controller or the NVM device.

3. The method of claim 1 , wherein the time-based parameters comprise time stamps and wherein the time-based threshold comprises a maximum age threshold.

4. The method of claim 1 , further comprising:

obtaining the stream of data from a host device; and

generating the time-based parameters within the data storage controller.

5. The method of claim 1 , wherein the time-based parameters are stored in the NVM device along with corresponding streams of data within a same block of data, and wherein trimming the portions of the stream of data includes trimming an entire block of data in which the portions of the stream of data are stored.

6. The method of claim 1 , wherein the time-based parameters are stored separately from corresponding portions of the stream of data, and wherein the data storage controller maintains linking information relating the time-based parameters to the corresponding portions of the stream of data.

7. The method of claim 1 , wherein the portions of the stream of data that exceed the time-based threshold are trimmed even if the NVM device is not full.

8. The method of claim 1 , wherein the stream of data comprises one or more of video data and audio data.

9. The method of claim 1 , wherein the self-trim control parameters control the data storage controller to (a) scan the NVM device whenever the data storage controller is idle and (b) scan the NVM device periodically while the data storage controller is not idle.

10. The method of claim 9 , wherein the self-trim control parameters specify a frequency for scanning the NVM device while the data storage controller is not idle.

11. The method of claim 1 , further comprising selecting an amount of memory in the NVM device devoted to over-provisioning based on an amount of self-trimming performed, with the amount selected to reduce write amplification in the NVM device.

12. A data storage controller for controlling a non-volatile memory (NVM) device, comprising:

a data stream storage controller configured to store a stream of data obtained from a host device in the NVM device;

a time-based parameter storage controller configured to store time-based parameters corresponding to portions of the stream of data;

a data expiration controller configured to scan the NVM device in accordance with self-trim control parameters to identify portions of the stream of data stored within the NVM device that have expired, the self-trim control parameters indicating different operations depending on whether the data storage controller is idle or not; and

a trim controller configured to execute self-trim operations in accordance with the self-trim control parameters and based on whether the data storage controller is idle or not to selectively trim the portions of the stream of data within the NVM device that have expired.

13. The data storage controller of claim 12 , further comprising:

a time-based parameter generator configured to generate the time-based parameters.

14. The data storage controller of claim 13 , wherein the trim controller is configured to trim the portions of the stream of data that have expired by deallocating at least some portions of the stream of data from allocation tables associated with the NVM device, the allocation tables within one or more of the data storage controller or the NVM device.

15. The data storage controller of claim 12 , wherein the data storage controller further comprises a data linking controller configured to maintain information relating the time-based parameters to corresponding portions of the stream of data stored in the NVM device.

16. The data storage controller of claim 12 , wherein the host device is one or more of a vehicle video camera, a security camera, and an Internet of Things (IoT) device.

17. The data storage controller of claim 12 , wherein the self-trim control parameters are configured to control the data storage controller to (a) scan the NVM device whenever the data storage controller is idle and (b) scan the NVM device periodically while the data storage controller is not idle.

18. The data storage controller of claim 17 , wherein the self-trim control parameters are configured to specify a frequency for scanning the NVM device while the data storage controller is not idle.

19. The data storage controller of claim 12 , wherein the data stream storage controller is further configured to select an amount of memory in the NVM device devoted to over-provisioning based on an amount of self-trimming performed, with the amount selected to reduce write amplification in the NVM device.

20. A data storage system, comprising:

a non-volatile memory (NVM) device; and

a data storage controller having a processor configured to

store a stream of input data obtained from a host device in the NVM device,

store time-based parameters corresponding to portions of the stream of data,

scan the NVM device in accordance with self-trim control parameters to identify portions of the stream of data stored within the NVM device that are older than a maximum permissible age, the self-trim control parameters indicating different operations depending on whether the data storage controller is idle or not, and

perform self-trim operations in accordance with the self-trim control parameters and based on whether the data storage controller is idle or not to selectively trim the portions of the stream of data stored in the NVM device identified as older than the maximum permissible age.

21. The data storage system of claim 20 , wherein the self-trim control parameters are configured to control the data storage system (a) scan the NVM device whenever the data storage controller is idle and (b) scan the NVM device periodically while the data storage controller is not idle.

22. An apparatus for controlling a non-volatile memory (NVM) device, comprising:

means for storing an input stream of data in the NVM device, the means for storing being a component of a data storage controller;

means for storing data expiration parameters corresponding to portions of the input stream of data;

means for scanning the NVM device in accordance with self-trim control parameters to identify portions of the input stream of data stored within the NVM device that have expired based on the data expiration parameters, the self-trim control parameters indicating different operations depending on whether the data storage controller is idle or not; and

means for performing self-trim operations in accordance with the self-trim control parameters and based on whether the data storage controller is idle or not to selectively trim the portions of the stream of data stored in the NVM device that have expired.

23. The apparatus of claim 22 , further comprising:

means for generating the data expiration parameters as the input stream of data is obtained from a host device.

24. The apparatus of claim 23 , wherein the means for trimming includes means for logically deleting the portions of the stream of data from the NVM device.

25. The apparatus of claim 22 , wherein the self-trim control parameters are configured to control the means for scanning to (a) scan the NVM device whenever the data storage controller is idle and (b) scan the NVM device periodically while the data storage controller is not idle.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2018
From: HODES, AVICHAY HAIM; FREIKORN, GUY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046519/0667 →
Continuity (2)
Provisional Application 62683472 · Jun 11, 2018
Related Publication 20190377512A1 · Dec 12, 2019
Cited By (1)
US 12,481,430