APPARATUS, SYSTEM, AND METHOD FOR MANAGING DATA USING A DATA PIPELINE
First Claim
1. An apparatus to manage data in a solid-state storage device, the apparatus comprising:
- a solid-state storage, the solid-state storage comprising an array of non-volatile, solid-state data storage elements accessed using a bi-directional storage input/output (“
I/O”
) bus; and
a solid-state storage controller in communication with the solid-state storage via the storage I/O bus, the solid-state controller comprising a write data pipeline to write data segments to the solid-state storage, the data segment comprising at least a portion of an object, the write data pipeline comprisinga packetizer that receives a data segment to be written to the solid-sate storage and creates one or more data packets sized for the solid-state storage, each data packet comprising a header and data from the data segment; and
an ECC generator that generates one or more error-correcting codes (“
ECC”
) for the one or more data packets received from the packetizer prior to writing the data packets to the solid-state storage; and
a read data pipeline to requested data packets stored in the solid-state storage device in response to on a read request, the read data pipeline comprisingan ECC correction module that receives a requested data packet from the solid-state storage, determines if a data error exists in a requested data packet using ECC stored with the requested data packet, corrects an error in the requested data packet in response to determining that the error exists and the error being correctable by the ECC, and interrupts in response to determining that the detected data error is uncorrectable;
a depacketizer that receives a requested data packet from the ECC correction module and checks and removes one or more packet headers; and
an alignment module that receives data from the depacketizer, removes unwanted data, and re-formats the data as data segments of an object in a form compatible with a device requesting the data segment prior to transmission to the requesting device.
16 Assignments
0 Petitions
Accused Products
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.
-
Citations
24 Claims
-
1. An apparatus to manage data in a solid-state storage device, the apparatus comprising:
-
a solid-state storage, the solid-state storage comprising an array of non-volatile, solid-state data storage elements accessed using a bi-directional storage input/output (“
I/O”
) bus; anda solid-state storage controller in communication with the solid-state storage via the storage I/O bus, the solid-state controller comprising a write data pipeline to write data segments to the solid-state storage, the data segment comprising at least a portion of an object, the write data pipeline comprising a packetizer that receives a data segment to be written to the solid-sate storage and creates one or more data packets sized for the solid-state storage, each data packet comprising a header and data from the data segment; and an ECC generator that generates one or more error-correcting codes (“
ECC”
) for the one or more data packets received from the packetizer prior to writing the data packets to the solid-state storage; and
a read data pipeline to requested data packets stored in the solid-state storage device in response to on a read request, the read data pipeline comprisingan ECC correction module that receives a requested data packet from the solid-state storage, determines if a data error exists in a requested data packet using ECC stored with the requested data packet, corrects an error in the requested data packet in response to determining that the error exists and the error being correctable by the ECC, and interrupts in response to determining that the detected data error is uncorrectable; a depacketizer that receives a requested data packet from the ECC correction module and checks and removes one or more packet headers; and an alignment module that receives data from the depacketizer, removes unwanted data, and re-formats the data as data segments of an object in a form compatible with a device requesting the data segment prior to transmission to the requesting device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A solid-state storage device comprising:
-
a solid-state storage arranged in two or more banks, each bank separately accessible and each bank comprising two or more solid-state storage elements accessed in parallel by a storage input/output (“
I/O”
) bus, the solid-state storage comprising solid-state, non-volatile memory; anda bank interleave controller that directs one or more commands to one or more queues, each bank comprising a queue in the bank interleave controller; and coordinates among the banks execution of the commands stored in the queues, wherein a command of a first type executes on one bank while a command of a second type executes on a second bank.
-
-
18. A system to manage data in a solid-state storage device, the system comprising:
-
a computer; a system bus; and a solid-state storage device coupled to the computer through the system bus, the solid-state storage device comprising a solid-state storage comprising an array of non-volatile, solid-state data storage elements accessed using a bi-directional storage input/output (“
I/O”
) bus and a solid-state storage controller in communication with the solid-state storage via the storage I/O bus, the solid-state controller comprising a write data pipeline to write data segments to the solid-state storage, the data segment comprising at least a portion of an object, the write data pipeline comprisinga packetizer that receives a data segment to be written to the solid-sate storage and creates one or more data packets sized for the solid-state storage, each data packet comprising a header and data from the data segment; and an ECC generator that generates error-correcting code (“
ECC”
) for the one or more data packets received from the packetizer prior to writing the data packets to the solid-state storage; and
a read data pipeline to request data packets stored in the solid-state storage device in response to a read request, the read data pipeline comprisingan ECC correction module that receives a requested data packet from the solid-state storage, determines if a data error exists in a requested data packet using ECC stored with the requested data packet, corrects an error in the requested data packet in response to determining that the error exists and the error being correctable by the ECC, and interrupts in response to determining that the detected data error is uncorrectable; a depacketizer that receives a requested data packet from the ECC correction module and checks and removes one or more packet headers; and an alignment module that receives data from the depacketizer, removes unwanted data, and re-formats the data as data segments of an object in a form compatible with a device requesting the data segment prior to transmission to the requesting device. - View Dependent Claims (19, 20, 21, 22)
-
-
23. A computer program product comprising a computer readable medium having computer usable program code executable to perform operations for managing data in a solid-state storage device, the operations of the computer program product comprising:
-
receiving in an input buffer a data segment to be written to a solid-state storage of a solid-state storage device, the data segment comprising at least a portion of an object, the solid-state storage comprising an array of non-volatile, solid-state data storage elements; receiving the data segment from the input buffer and packetizing the data segments, packetizing the data segments comprising creating one or more data packets sized for the solid-state storage, each data packet comprising a header and data from the data segment; receiving the data packets after packetizing and generating error-correcting code (“
ECC”
) for the data packets;buffering within a write synchronization buffer the data packets and corresponding ECC prior to writing the data packets and ECC to the solid-state storage, the write synch buffer at a boundary between a local clock domain and a solid-state storage clock domain; and writing the data packets from the write synchronization buffer to the solid-state storage over a bi-directional storage input/output (“
I/O”
) bus. - View Dependent Claims (24)
-
Specification