IP Library Granted Patent US 8,473,672
Granted Patent B2
US 8,473,672 · App. 13/719,184 · Granted Jun 25, 2013

System and method for storing data using a flexible data format

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 8,473,672
App. No.
13/719,184
Granted
Jun 25, 2013
Kind
B2
Abstract

A flash storage device includes a flash storage for storing data and a controller for receiving a command in connection with user data and selecting a sector size associated with storing the user data. The controller allocates the user data among data sectors having the sector size and writes the data sectors to the flash storage. In some embodiments, the controller generates system data and stores the system data in the data sectors or a system sector, or both.

Claims (54)

1. A method for writing data to a flash storage device, the method comprising:

receiving a command in connection with user data;

selecting, in response to the command, a first sector size for an allocation of the user data;

allocating, by a storage controller, the user data among a plurality of data sectors of the first sector size; and

writing one or more pages of data comprising the plurality of data sectors to the flash storage device.

2. The method of claim 1 , further comprising:

generating system data based on the user data,

wherein the system data comprises an error correction code associated with user data allocated to one or more of the data sectors, a logical block address associated with storing the user data, or a time stamp associated with the user data.

3. The method of claim 2 , wherein a data sector of the first sector size includes at least a portion of the allocated user data and at least a portion of the system data.

4. The method of claim 2 , further comprising:

selecting a second sector size for an allocation of the system data;

allocating the system data to at least one system sector of the second sector size; and

writing the at least one system sector to the storage block with the data sectors.

5. The method of claim 2 , wherein the first sector size is selected so that a page size of the one or more pages of data is greater than an integer multiple of the first sector size, the method further comprising:

allocating the system data to a remaining portion of a page not containing any data sector.

6. The method of claim 2 , wherein the first sector size is selected so that a page size of the one or more pages of data is greater than an integer multiple of the first sector size, the method further comprising:

allocating a portion of the system data among the data sectors of the first sector size and a remaining portion of the system data to a remaining portion of a page not containing any data sector.

7. The method of claim 2 , wherein the first sector size associated with storing user data and a sector size associated with storing system data are selected so that an associated page size is equal to a block size of the flash storage device.

8. The method of claim 2 , wherein the system data is written to an out-of-bounds area of the flash storage device.

9. The method of claim 1 , wherein the first sector size is selected so that a page size of a respective page is an integer multiple of the first sector size.

10. The method of claim 1 , further comprising:

writing a first portion of a data sector to a first storage block of the flash storage device and a remaining portion of the data sector to a second storage block of the flash storage device.

11. The method of claim 1 , further comprising:

identifying a storage block in the flash storage device in response to the command; and

writing the one or more pages of data to the storage block.

12. The method of claim 1 , wherein the sector size is selected based on a command, a user input, or an application program.

13. A system for storing data in a flash storage device, comprising:

a flash storage; and

a controller configured to:

receive a command in connection with user data;

select a sector size;

allocate the user data among a plurality of data sectors of the sector size; and

write one or more pages of data comprising the data sectors to the flash storage.

14. The system of claim 13 , wherein the controller is further configured to select the sector size based on an input to the flash storage device.

15. The system of claim 13 , wherein the controller is further configured to select the sector size based on the command.

16. The system of claim 13 , wherein the flash storage comprises a plurality of storage blocks and the controller is further configured to write the one or more pages of data to more than one storage block of the flash storage.

17. The system of claim 16 , wherein each storage block has a block size being an integer multiple of the sector size.

18. The system of claim 16 , wherein the controller is further configured to write a first portion of a first data sector to a first storage block and a second portion of the first data sector to a second storage block.

19. The system of claim 18 , wherein the system data is allocated to one or more of the data sectors.

20. The system of claim 19 , wherein the system data comprises a time stamp, an error correction code, or a logical block address.

21. The system of claim 13 , wherein the plurality of data sectors comprises a sector of system data.

22. The system of claim 13 , wherein the controller is further configured to:

read data from the flash storage;

allocate the data among one or more data sectors of the sector size; and

provide the data sectors to a host system.

23. A system for storing data in a flash storage device, comprising:

a flash storage; and

a controller configured to:

receive a command comprising data;

select a sector size;

allocate the data among one or more sectors of the sector size;

generate system data for the one or more sectors, wherein the system data is allocated among the one or more sectors of the sector size; and

write the one or more sectors to one or more storage blocks of the flash storage.

24. The system of claim 23 , wherein the controller is further configured to write a first portion of a first data sector to a first storage block and a second portion of the first data sector to a second storage block.

Assignments (11)
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
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 May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 23, 2016
From: MOSHAYEDI, MARK
To: STEC, INC.
Reel/Frame 039513/0065 →
CHANGE OF NAME Recorded Jul 1, 2015
From: STEC, INC.
To: HGST TECHNOLOGIES SANTA ANA, INC.
Reel/Frame 036042/0390 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2013
From: SADR, SEYED JALAL
To: STEC, INC.
Reel/Frame 029809/0157 →