IP Library Granted Patent US 7,529,905
Granted Patent B2
US 7,529,905 · App. 11/250,299 · Granted May 5, 2009

Method of storing transformed units of data in a memory system having fixed sized storage blocks

Assignee: Sandisk Corporation
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 7,529,905
App. No.
11/250,299
Granted
May 5, 2009
Kind
B2
Abstract

A change in the amount of data to be stored that results from various encoding, compression, encryption or other data transformation algorithms, is handled by individually identifying distinct units of the transformed data and storing such units in physical succession within storage blocks of a memory system such as flash memory. The data being stored may come from a host system external to the memory system or from an application running on a processor within the memory system.

Claims (31)

1. A method of operating a re-programmable non-volatile memory system to store data received by the memory system with logical addresses within a logical address range, wherein the memory system includes memory cells organized into distinct operating blocks of cells, the individual blocks containing a minimum number of memory cells that are erased together prior to writing data therein, comprising:

dividing the data received by the memory system into equal sized units of data that individually contain an amount of data equal to or less than a storage capacity of the individual memory cell blocks, the data within individual units having contiguous logical addresses within the logical address range,

transforming the individual units of received data by at least one of encoding, compressing or encrypting the received data into corresponding groups of data that individually contain a different amount of data than existed in their corresponding units of data prior to transformation,

writing the groups of data into contiguous locations within one or more of the memory cell blocks with boundaries coincident with at least boundaries of the groups of data and physical boundaries of the memory cell blocks, including splitting into two sub-groups an individual group that spans across two memory cell blocks with one of the sub-groups located in each of the two memory cell blocks, and

maintaining a central table of locations of the individual groups and sub-groups of data within the memory cell blocks that includes maintaining boundaries defined for the individual groups and sub-groups of data that are within the boundaries of the memory cell blocks.

2. The method of claim 1 , additionally comprising within the memory system, in response to receiving data that updates data within at least one individual unit of previously received data that has been transformed and written to the memory:

reading one or more groups of transformed data that form said at least one transformed individual unit of data,

reverse transforming the read groups of transformed data by at least one of decoding, decompressing or decrypting the read data, thereby reconstructing said at least one individual unit of data,

thereafter modifying the reconstructed at least one individual unit of data with the received update data,

thereafter transforming the at least one modified unit of data into corresponding groups of data by at least one of encoding, compressing or encrypting the modified reconstructed data,

rewriting the groups of data into contiguous locations within one or more of the memory cell blocks, including splitting into two sub-groups an individual group that spans across two memory cell blocks with one of the sub-groups located in each of the two memory cell blocks, and

revising the central table of locations of the individual rewritten groups and sub-groups within the memory cell blocks that includes maintaining boundaries defined for the individual groups and sub-groups of data that are within the physical boundaries of the memory blocks.

3. The method of claim 1 , wherein transforming the data results in at least some of the transformed units of data including units that individually contain a lesser amount of data than existed prior to the transformation.

4. The method of claim 1 , wherein transforming the data results in at least some of the transformed units of data including units that individually contain a greater amount of data than existed prior to the transformation.

5. The method of claim 1 , wherein defining groups of the transformed data includes linking together sub-groups of a data group that reside in different blocks of cells.

6. The method of claim 1 , which further comprises:

storing additional units of data received by the memory system without transformation in at least one additional of the memory cell blocks, and

identifying the storage locations of the additional data units by additional data groups within the memory cell blocks.

7. The method of claim 1 , wherein the method is carried out in a memory system module that is removably connectable to a host device by a memory connector through which the data are received.

8. The method of claim 1 , wherein the data received by the memory system originates from an application program executed by a processor within the memory system.

9. The method of claim 1 , wherein the logical address range is that of the memory system.

10. The method of claim 1 , wherein the logical address range is that of a file object of the data being stored.

11. A method of operating a re-programmable non-volatile memory system to compress data received by the memory system with logical addresses within a logical address range and store the compressed data, wherein the memory system includes memory cells organized into distinct operating blocks of cells, the individual blocks containing a minimum number of memory cells that are erased together prior to writing data therein, comprising:

dividing the data received by the memory system into equal sized units of data that individually contain an amount of data equal to or less than a storage capacity of the individual memory cell blocks, the data within individual groups having contiguous logical addresses within the logical address range,

compressing the individual units of received data, thereby generating corresponding groups of data that are individually smaller than their corresponding units of data prior to compression,

writing the groups of data into contiguous locations within one or more of the memory cell blocks with boundaries coincident with at least boundaries of the groups of data and physical boundaries of the memory cell blocks, including splitting into two sub-groups an individual group that spans across two memory cell blocks with one of the sub-groups located in each of the two memory cell blocks, and

maintaining a central table of locations of the individual groups and sub-groups of data within the memory cell blocks that includes maintaining boundaries defined for the individual groups and sub-groups of data that are within the boundaries of the memory cell blocks.

12. The method of claim 11 , wherein the logical address range is that of the memory system.

13. The method of claim 11 , wherein the logical address range is that of a file object of the data being stored.

14. The method of claim 11 , wherein the memory system in which the method is carried out is within a module that is removably connectable to a host device by a memory connector through which the data are received.

15. The method of claim 11 , which additionally comprises operating the memory cells in a manner that stores more than one bit of the received data in at least some of the individual cells.

Assignments (6)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0472 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2011
From: SANDISK CORPORATION
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 026349/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2006
From: SINCLAIR, ALAN W.
To: SANDISK CORPORATION
Reel/Frame 017183/0568 →
Continuity (1)
Related Publication 20070086260A1 · Apr 19, 2007