IP Library Granted Patent US 9,141,302
Granted Patent B2
US 9,141,302 · App. 13/865,666 · Granted Sep 22, 2015

Snapshots in a flash memory storage system

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,141,302
App. No.
13/865,666
Granted
Sep 22, 2015
Kind
B2
Abstract

A system and method of managing the storage of data in flash memory performs snapshots of the data by maintaining the data at the epoch that the snapshot is performed in the same physical memory location. Data that is modified after the snapshot is then stored to a new physical memory location and referenced to the snapshot location. When a user read operation is performed, the data is read from the original location if the read operation is for the snapshot data. The read operation for dynamic data is performed from the original location if the data has not change since the snapshot epoch, or from the referenced data location if the data has changed since the snapshot epoch. Snapshots are released by dereferencing the original location if the data has been changed since the snapshot epoch.

Claims (25)

1. A memory system comprising:

a memory module, the memory module further comprising:

a memory controller;

a buffer memory;

a plurality of non-volatile memory circuits;

wherein the memory controller is configured to store data having a logical address in the plurality of the non-volatile memory circuits and for which a snapshot is performed at a first epoch such that a change to the data having a same logical address occurring after the first epoch, is stored in a memory circuit of the non-volatile memory circuit such that a read request for data at the same logical address for snapshot data is to the physical address where the data as of the first epoch is stored and a read request for dynamic data at the same logical address is to one of the physical address at which the data of the first epoch is stored if the data stored at the same logical address has not changed since the first epoch, or to a physical address at which the data is stored if the data stored at the same logical address has changed since the first epoch;

wherein a change to dynamic data at a logical address that occurs subsequent to the first epoch creates a link to a data structure pointing to the physical location at which the changed dynamic data is stored, while maintaining an association of the physical address of the dynamic data at the first epoch for the same logical block address, and the link is created when the dynamic data is changed.

2. A method of creating a snapshot of data, the method comprising:

providing a memory module, the memory module further comprising:

a memory controller;

a buffer memory;

a plurality of non-volatile memory circuits;

configuring the memory controller for:

storing data having a logical address, in the plurality of the non-volatile memory circuits at a first epoch, the logical address corresponding to a physical address in the non-volatile memory circuits;

determining that the data stored at the logical address has changed since the first epoch;

storing the changed data at another physical address from that associated with the data stored at the logical address at the first epoch;

maintaining an association between the data of the first epoch and the changed data such that a read request for data at the logical address for snapshot data is to the physical address where the data as of the first epoch is stored and a read request for dynamic data at the logical address is to one of the physical address at which the data of the first epoch is stored if the data stored at the logical address has not changed since the first epoch, or to a physical address at which the data is stored if the data stored at the logical address has changed since the first epoch,

wherein a change to dynamic data at a logical address that occurs subsequent to the first epoch creates a link to a data structure pointing to the physical location at which the changed dynamic data is stored, while maintaining an association of the physical address of the dynamic data at the first epoch for the same logical block address, and the link is created when the dynamic data is changed.

3. A computer program product, stored on a non-volatile memory, comprising:

configuring a controller to perform the steps of:

storing data having a logical address in a plurality of non-volatile memory circuits at a first epoch, the logical address corresponding to a physical address in the memory circuits;

determining that a change to the data stored at the logical address has change since the first epoch;

storing the changed data at another physical address from that associated with the data stored at the logical address at the first epoch;

maintaining an association between the physical locations of the data of the first epoch and the changed data such that a read request for data at the logical address for snapshot data is to the physical address where the data as of the first epoch is stored, and a read request for dynamic data at the logical address is to one of the physical address at which the data of the first epoch is stored if the data stored at the logical address has not changed since the first epoch, or to a physical address at which the data is stored if the data stored at the logical address has changed since the first epoch,

wherein a change to dynamic data at a logical address that occurs subsequent to the first epoch creates a link to a data structure pointing to the physical location at which the changed dynamic data is stored, while maintaining an association of the physical address of the dynamic data at the first epoch for the same logical block address and the link is created when the dynamic data is changed.

Assignments (6)
CORRECTIVE ASSIGNMENT TO REMOVE US PATENT NO. 9013874 PREVIOUSLY RECORDED UNDER REEL AND FRAME 064272/0249. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 17, 2024
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 068998/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2023
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 064272/0249 →
RELEASE OF SECURITY INTEREST Recorded Jun 16, 2021
From: SILICON VALLEY BANK
To: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC (F/K/A VIOLIN MEMORY, INC.))
Reel/Frame 056600/0186 →
CHANGE OF NAME Recorded May 25, 2021
From: VIOLIN SYSTEMS LLC
To: VSIP HOLDINGS LLC
Reel/Frame 056366/0849 →
RELEASE OF SECURITY INTEREST Recorded Feb 26, 2018
From: SILICON VALLEY BANK
To: VIOLIN SYSTEMS LLC
Reel/Frame 045040/0213 →
CHANGE OF NAME Recorded Dec 19, 2017
From: VIOLIN MEMORY, INC.
To: VIOLIN SYSTEMS LLC
Reel/Frame 044908/0680 →