IP Library Granted Patent US 8,572,308
Granted Patent B2
US 8,572,308 · App. 12/492,103 · Granted Oct 29, 2013

Supporting variable sector sizes in flash storage devices

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,572,308
App. No.
12/492,103
Granted
Oct 29, 2013
Kind
B2
Abstract

A flash storage device comprises a plurality of data blocks, each data block comprising a plurality of data segments, a system memory, and a controller. The controller is configured to cache in the system memory a plurality of data sectors to be written, to write to a first one of the plurality of data segments a first one of the plurality of data sectors, to write to the first one of the plurality of data segments a first portion of a second one of the plurality of data sectors, and to write to a second one of the plurality of data segments a second portion of the second one of the plurality of data sectors.

Claims (56)

1. A flash storage device, comprising:

a plurality of data blocks, each data block comprising a plurality of data segments;

a system memory, and

a controller configured to:

cache in the system memory a plurality of data sectors to be written;

write to a first one of the plurality of data segments a first one of the plurality of data sectors;

write to the first one of the plurality of data segments a first portion of a second one of the plurality of data sectors; and

write to a second one of the plurality of data segments a second portion of the second one of the plurality of data sectors.

2. The flash storage device according to claim 1 , wherein the controller is further configured to:

calculate error correction information corresponding to the first portion of the second one of the plurality of data sectors before writing the first portion to the first one of the plurality of data segments;

calculate error correction information corresponding to the second portion of the second one of the plurality of data sectors before writing the second portion to the second one of the plurality of data segments; and

write the error correction information corresponding to the first and second portions of the second one of the plurality of data sectors to the second one of the plurality of data segments.

3. The flash storage device according to claim 1 , wherein the first and second ones of the plurality of data segments are data segments of a same one of the plurality of data blocks.

4. The flash storage device according to claim 1 , wherein the first and second ones of the plurality of data segments are adjacent data segments.

5. The flash storage device according to claim 1 , wherein the plurality of data sectors to be written each have a same size of 2 n bits, where n is a positive integer.

6. The flash storage device according to claim 1 , wherein the plurality of data sectors to be written each have a same size of other than 2 n bits, where n is a positive integer.

7. The flash storage device according to claim 1 , wherein the system memory includes an addressing table correlating, for each of the plurality of data sectors, a logical address thereof with a physical location thereof in the corresponding one of the plurality of data blocks.

8. The flash storage device according to claim 7 , wherein the physical location for each of the plurality of data sectors comprises an offset from a first position in the corresponding one of the plurality of data blocks.

9. The flash storage device according to claim 1 , wherein the system memory comprises a random access memory in the controller.

10. The flash storage device according to claim 1 , wherein the system memory comprises one or more buffers provided on one or more flash memory chips in which the plurality of data blocks are disposed.

11. A method of writing data to a flash storage device comprising a plurality of data blocks, each data block comprising a plurality of data segments, the method comprising the steps of:

caching in a system memory a plurality of data sectors to be written;

writing a first one of the plurality of data sectors to a first data segment;

writing a first portion of a second one of the plurality of data sectors to the first data segment; and

writing a second portion of the second one of the plurality of data sectors to a second data segment.

12. The method according to claim 11 , further comprising the steps of:

calculating error correction information corresponding to the first portion of the second one of the plurality of data sectors before writing the first portion to the first data segment;

calculating error correction information corresponding to the second portion of the second one of the plurality of data sectors before writing the second portion to the second data segment; and

writing the error correction information corresponding to the first and second portions of the second one of the plurality of data sectors to the second data segment.

13. The method according to claim 11 , wherein the first and second ones of the plurality of data segments are data segments of a same data block.

14. The method according to claim 11 , wherein the first and second ones of the plurality of data segments are adjacent data segments.

15. The method according to claim 11 , wherein the plurality of data sectors to be written each have a same size of 2 n bits, where n is a positive integer.

16. The method according to claim 11 , wherein the plurality of data sectors to be written each have a same size of other than 2 n bits, where n is a positive integer.

17. The method according to claim 11 , further comprising the step of:

updating an addressing table correlating, for each of the first and second data sectors, a logical address thereof with a physical location thereof in a corresponding one of a plurality of data blocks.

18. The method according to claim 17 , wherein the physical location for each of the plurality of data sectors comprises an offset from a first position in the corresponding one of the plurality of data blocks.

19. The method according to claim 17 , wherein the system memory comprises a random access memory.

20. The method according to claim 17 , wherein the system memory comprises one or more buffers provided on one or more flash memory chips.

21. A non-transitory machine readable medium carrying one or more sequences of instructions for writing data to a flash storage device comprising a plurality of data blocks, each data block comprising a plurality of data segments, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:

caching in a system memory of the flash storage device a plurality of data sectors to be written;

writing a first one of the plurality of data sectors to a first data segment of the flash storage device;

writing a first portion of a second one of the plurality of data sectors to the first data segment; and

writing a second portion of the second one of the plurality of data sectors to a second data segment of the flash storage device.

22. The non-transitory machine readable medium according to claim 21 , wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the steps of:

calculating error correction information corresponding to the first portion of the second one of the plurality of data sectors before writing the first portion to the first data segment;

calculating error correction information corresponding to the second portion of the second one of the plurality of data sectors before writing the second portion to the second data segment; and

writing the error correction information corresponding to the first and second portions of the second one of the plurality of data sectors to the second data segment.

23. The non-transitory machine readable medium according to claim 21 , wherein the first and second ones of the plurality of data segments are data segments of a same data block of the flash storage device.

24. The non-transitory machine readable medium according to claim 21 , wherein the first and second ones of the plurality of data segments are adjacent data segments.

25. The non-transitory machine readable medium according to claim 21 , wherein the plurality of data sectors to be written each have a same size of 2 n bits, where n is a positive integer.

26. The non-transitory machine readable medium according to claim 21 , wherein the plurality of data sectors to be written each have a same size of other than 2 n bits, where n is a positive integer.

27. The non-transitory machine readable medium according to claim 21 , wherein execution of the one or more sequences of instructions by the one or more processors causes the one or more processors to further perform the step of:

updating an addressing table correlating, for each of the first and second data sectors, a logical address thereof with a physical location thereof in a corresponding one of a plurality of data blocks.

28. The non-transitory machine readable medium according to claim 27 , wherein the physical location for each of the plurality of data sectors comprises an offset from a first position in the corresponding one of the plurality of data blocks.

29. The non-transitory machine readable medium according to claim 21 , wherein the system memory comprises a random access memory.

30. The non-transitory machine readable medium according to claim 21 , wherein the system memory comprises one or more buffers provided on one or more flash memory chips.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
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 →
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 Oct 29, 2009
From: MOSHAYEDI, MARK; CALVERT, WILLIAM; BOORMAN, STEPHEN RUSSELL; HAYNES, SIMON MARK
To: STEC, INC.
Reel/Frame 023445/0008 →