IP Library Granted Patent US 8,533,569
Granted Patent B2
US 8,533,569 · App. 13/600,077 · Granted Sep 10, 2013

Apparatus, system, and method for managing data using a data pipeline

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,533,569
App. No.
13/600,077
Granted
Sep 10, 2013
Kind
B2
Abstract

An apparatus, system, and method are disclosed for managing data in a solid-state storage device. A solid-state storage and solid-state controller are included. The solid-state storage controller includes a write data pipeline and a read data pipeline The write data pipeline includes a packetizer and an ECC generator. The packetizer receives a data segment and creates one or more data packets sized for the solid-state storage. The ECC generator generates one or more error-correcting codes (“ECC”) for the data packets received from the packetizer. The read data pipeline includes an ECC correction module, a depacketizer, and an alignment module. The ECC correction module reads a data packet from solid-state storage, determines if a data error exists using corresponding ECC and corrects errors. The depacketizer checks and removes one or more packet headers. The alignment module removes unwanted data, and re-formats the data as data segments of an object.

Claims (49)

1. A method of reading data, the method comprising:

receiving a read request for data stored on a solid-state storage device comprising two or more solid-state storage elements;

reading, through a read data pipeline, an error-correcting code (ECC) block, a first portion of the ECC block read from a page of a first one of the solid-state storage elements and a second portion of the ECC block read from a page of a second one of the solid-state storage elements; and

detecting an error in the ECC block;

in response to detecting the error, determining whether the error is correctable.

2. The method of claim 1 , further comprising:

correcting the error in response to determining that the error is correctable; and

providing the requested data to a requesting device, the requested data comprising at least a portion of the ECC block.

3. The method of claim 2 , wherein providing the requested data further comprises:

depacketizing one or more packets of the ECC block by checking and removing one or more packet headers, the one or more packets of the ECC block comprising the requested data; and

re-formatting the requested data in a form compatible with the requesting device; and

transmitting the requested data to the requesting device.

4. The method of claim 1 , wherein the first portion of the ECC block comprises the requested data and the second portion of the ECC block comprises the error-correcting code capable of correcting an error in the requested data.

5. The method of claim 1 , wherein a length of the error-correcting code is predetermined to correct a particular number of bit errors in the ECC block and the length of the error-correcting code is predetermined independent of a block size of the requested data.

6. The method of claim 1 , wherein a length of the error-correcting code is predetermined to correct a particular number of bit errors in the ECC block and the length of the error-correcting code is predetermined independent of a physical page size of the solid-state storage elements.

7. The method of claim 1 , wherein a length of the error-correcting code is predetermined based on one of a performance metric, an efficiency metric, and a data integrity metric.

8. The method of claim 1 , wherein each solid-state storage element comprises a plurality of erase blocks and wherein the ECC block is one of a plurality of ECC blocks, wherein the ECC blocks divide evenly within the erase blocks.

9. An apparatus for reading data, the apparatus comprising:

a first and a second solid-state storage element; and

a read data pipeline configured to read an error-correcting code (ECC) block from the solid-state storage elements, the ECC block comprising at least a portion of data requested by a requesting device and an error-correcting code capable of correcting an error in the ECC block, wherein reading the ECC block comprises reading a first portion of the ECC block from a page of the first solid-state storage element and a second portion from a page of the second solid-state storage element, the read data pipeline comprising, an ECC correction module configured to detect an error in the ECC block read from the solid-state storage elements; and

an alignment module configured to format the portion of the requested data in the ECC block for transmittal to the requesting device.

10. The apparatus of claim 9 , wherein the read data pipeline comprises a depacketizer configured to depacketize one or more packets of the ECC block by checking and removing one or more packet headers, the one or more packets of the ECC block comprising the portion of the requested data, the ECC block having no fixed relationship between a size of the one or more packets and a size of the ECC block;

wherein the ECC correction module is configured to correct the error.

11. The apparatus of claim 9 , wherein the read data pipeline further comprises a decryption module configured to decrypt the portion of the requested data using an encryption key received from the requesting device in conjunction with a read request.

12. The apparatus of claim 9 , further comprising a read synchronization buffer configured to buffer the ECC block read from the solid-state storage elements prior to processing by the read data pipeline, the read synchronization buffer disposed at a boundary between a solid-state storage clock domain and a local bus clock domain.

13. The apparatus of claim 9 , wherein the first portion and the second portion are stored on the first and the second solid-state storage elements responsive to a single solid-state storage element page programming command.

14. The apparatus of claim 9 , wherein the read data pipeline accesses the first and the second solid-state storage elements in parallel via a bi-directional storage input/output bus.

15. The apparatus of claim 9 , wherein the first portion of the ECC block comprises a portion of the received data and the second portion of the ECC block comprises the error-correcting code capable of correcting an error in the portion of the received data.

16. The apparatus of claim 9 , wherein each solid-state storage element comprises a plurality of erase blocks, and wherein the ECC block is one of a plurality of ECC blocks configured to divide evenly within the erase blocks.

17. A non-transitory computer readable medium having program instructions stored thereon, wherein the program instructions are executable by a computer system to cause the computer system to perform operations comprising:

receiving a read request from a requesting device for data stored on a solid-state storage device comprising two or more solid-state storage elements and a read data pipeline;

reading, with the read data pipeline, an error-correcting code (ECC) block comprising at least a portion of the requested data and an error-correcting code capable of correcting an error in the ECC block, wherein reading the ECC block comprises reading a first portion of the ECC block from a page of a first one of the solid-state storage elements and a second portion from a page of a second one of the solid-state storage elements; and

providing at least the portion of the requested data to the requesting device.

18. The non-transitory computer readable medium of claim 17 , wherein the first portion of the ECC block comprises the portion of the requested data and the second portion of the ECC block comprises the error-correcting code capable of correcting an error in the portion of the requested data.

19. The non-transitory computer readable medium of claim 17 , wherein a length of the error-correcting code is predetermined to correct a particular number of bit errors in the ECC block and the length of the error-correcting code is predetermined independent of a physical page size of the solid-state storage elements.

20. The non-transitory computer readable medium of claim 17 , wherein each solid-state storage element comprises a plurality of erase blocks and wherein the ECC block is one of a plurality of ECC blocks, wherein the ECC blocks divide evenly within the erase blocks.

21. A system for reading data, the system comprising:

a solid-state storage device comprising two or more solid-state storage elements; and

a solid-state storage controller communicatively coupled to the two or more solid-state storage elements, the solid-state storage device comprising, a read data pipeline configured to read an error-correcting code (ECC) block from the solid-state storage elements, the ECC block comprising at least a portion of data requested by a requesting device and an error-correcting code capable of correcting an error in the ECC block, wherein reading the ECC block comprises reading a first portion of the ECC block from a first one of the solid-state storage elements and reading a second portion from a second one of the solid-state storage elements, the read data pipeline comprising, an ECC correction module configured to correct an error in the ECC block read from the solid-state storage elements;

a depacketizer configured to access the portion of the requested data in the ECC block; and

an alignment module configured to reformat the portion of the requested data in the ECC block to a form compatible with the requesting device.

22. The system of claim 21 , further comprising a computer and a system bus, the solid-state storage device coupled to the computer through the system bus.

23. The system of claim 21 , wherein a length of the error-correcting code is predetermined to correct a particular number of bit errors in the ECC block and the length of the error-correcting code is predetermined independent of a physical page size of the solid-state storage elements.

24. The system of claim 21 , wherein the read data pipeline is configured to read a plurality of ECC blocks comprising the requested data from the solid-state storage elements, wherein the ECC correction module is configured to resolve correct errors of each of the plurality of ECC blocks, and wherein the depacketizer is configured to access the portion of the requested data within each of the plurality of ECC blocks and is configured to reconstruct the requested data.

25. An apparatus for reading data, the apparatus comprising:

means for receiving a read request from a requesting device for data stored on a solid-state storage device comprising two or more solid-state storage elements;

means for reading one or more error-correcting code (ECC) blocks comprising the requested data, each ECC block comprising at least a portion of the requested data and an error-correcting code capable of correcting an error in the portion of the requested data, wherein reading the one or more ECC blocks comprises reading, for a particular ECC block of the one or more ECC blocks, a first portion of the particular ECC block from a page of a first one of the solid-state storage elements and a second portion from a page of a second one of the solid-state storage elements;

means for correcting errors in the one or more ECC blocks in response to detecting the error; and

means for providing the requested data to the requesting device.

Assignments (14)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Nov 15, 2021
From: UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 058223/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 053654 FRAME: 0254. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 15, 2021
From: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 058134/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT DOCUMENT FILED PREVIOUSLY RECORDED ON REEL 047702 FRAME 0413. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 16, 2019
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
Reel/Frame 048918/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2018
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES LIMITED
Reel/Frame 047702/0413 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →