IP Library Granted Patent US 8,725,944
Granted Patent B2
US 8,725,944 · App. 13/844,302 · Granted May 13, 2014

Implementing raid in solid state memory

Inventor: Gregory Burd (Santa Jose, CA)
Assignee: Marvell World Trade Ltd.
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,725,944
App. No.
13/844,302
Granted
May 13, 2014
Kind
B2
Abstract

The present disclosure includes systems and techniques relating to implementing fault tolerant data storage in solid state memory. In some implementations, a method includes receiving a request for data stored in a solid state memory, and identifying a logical block grouping for logical data blocks of the requested data, the logical data blocks corresponding to the solid state memory, and the logical block grouping comprising at least one physical data storage block from two or more solid state physical memory devices. The method also includes reading the stored data and a code stored in the identified logical block grouping, and comparing the code to the stored data to assess the requested data.

Claims (47)

1. A method comprising:

receiving, at a storage controller, a request for data stored in a solid state memory;

identifying, by the storage controller, a logical block grouping for logical data blocks of the requested data, the logical data blocks corresponding to the data stored in the solid state memory, and the logical block grouping comprising at least one physical data storage block from two or more solid state physical memory devices;

reading, by the storage controller, stored data and a code stored in the identified logical block grouping; and

comparing, by the storage controller, the code to the stored data to assess the requested data in the solid state memory.

2. The method of claim 1 , wherein the solid state physical memory comprises the two or more solid state memory devices.

3. The method of claim 2 , wherein the two or more solid state memory devices are FLASH memory devices.

4. The method of claim 1 , wherein the comparing the code to the stored data to assess the requested data comprises performing a logical XOR operation.

5. The method of claim 1 , wherein the two or more solid state physical memory devices and the storage controller are part of a single memory storage device, and the logical block grouping corresponds to a logical block grouping used by the storage controller to carry out memory management in the single memory storage device.

6. The method of claim 1 , wherein each of the two or more solid state physical memory devices comprises a single integrated circuit die comprising at least one physical data storage block, wherein a physical data storage block comprises a block of solid state memory formed on the integrated circuit die and is individually addressable along with other blocks of solid state memory formed on the same integrated circuit die.

7. The method of claim 1 , comprising:

identifying, by the storage controller in response to an error resulting from the comparing, each of the logical data blocks of the logical block grouping as one of

a failed logical data block, or

a non-failed logical data block, wherein identifying failed or non-failed logical data blocks comprises identifying one or more failed logical data blocks and one or more non-failed logical data blocks;

reading, by the storage controller, requested data stored in the one or more identified non-failed logical data blocks as non-failed data; and

recovering, by the storage controller, data of the one or more identified failed logical data blocks by comparing the non-failed data and the code.

8. The method of claim 7 , wherein the comparing the non-failed data and the code comprises performing a logical XOR operation.

9. The method of claim 1 , wherein comparing the code to the stored data to assess the requested data comprises:

storing, in a buffer memory, a first logical data block of the logical block grouping as a buffered value;

for each of the remaining logical data blocks in the logical block grouping,

comparing, by the storage controller, a current one of the remaining logical data block to the buffered value to determine a comparison value, and

storing the comparison value as the buffered value in the buffer memory; and

determining, by the storage controller, a value that, when compared to the buffered value, results in a predetermined value.

10. The method of claim 1 , wherein the buffer memory comprises multiple buffer memories, and at least one of the buffer memories comprises a single port memory.

11. A method comprising:

receiving, at a storage controller, data arranged as logical data blocks to be stored in solid state memory comprising multiple solid state physical memory devices, each logical data block being assigned to a logical block grouping comprising at least one physical data storage block from two or more of the multiple solid state physical memory devices;

storing, by the storage controller, the logical data blocks in physical data storage blocks, of the logical block grouping, designated for storage of persisted data within the logical block grouping; and

storing, by the storage controller, a code determined to correspond to the data stored in the logical block grouping, the code being stored in at least one physical data storage block designated for storage of the code that corresponds to the persisted data stored in the logical block grouping.

12. The method of claim 11 , comprising:

recovering, by the storage controller, the persisted data stored in a selected physical data storage block by identifying the logical block grouping to which the logical data block corresponding to the selected physical data storage block is assigned, reading the persisted data and the code stored in the identified logical block grouping, and comparing the code to the read persisted data other than the persisted data stored in the selected physical data storage block.

13. The method of claim 11 , wherein the code is determined by:

storing, in a buffer memory, a first logical data block of the logical block grouping as a buffered value;

for each of the remaining logical data blocks in the logical block grouping,

comparing the remaining logical data block to the buffered value to determine a comparison value, and

storing the comparison value as the buffered value in the buffer memory; and

determining a value that, when compared to the buffered value, results in a predetermined value.

14. The method of claim 11 , wherein the buffer memory comprises multiple buffer memories, and at least one of the buffer memories comprises a single port memory.

15. An electronic device comprising:

an input port configured to connect with a solid state memory;

a buffer; and

circuitry coupled with the buffer and the input port and configured to identify a logical block grouping for logical data blocks of requested data, the logical data blocks corresponding to the data stored in the solid state memory, and the logical block grouping comprising at least one physical data storage block from two or more solid state physical memory devices,

wherein the circuitry is further configured to read stored data and a code stored in the identified logical block grouping and compare the code to the stored data to assess the requested data in the solid state memory.

16. The device of claim 15 , wherein the circuitry is further configured to identify, in response to an assessed error, each of the logical data blocks of the logical block grouping as one of a failed logical data block or a non-failed logical data block, read requested data stored in one or more identified non-failed logical data blocks as non-failed data, and recover data of one or more identified failed logical data blocks by comparing the non-failed data and the code.

17. The device of claim 15 , wherein the circuitry is further configured to store the requested data and the code in the logical block grouping before reading the stored data.

18. The device of claim 15 , wherein the buffer comprises multiple buffer memories, and at least one of the buffer memories comprises a single port memory.

19. The device of claim 15 , wherein the circuitry comprises a programmed processor.

20. The device of claim 15 , wherein the device interfaces with a host device as a single data retrieval device.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
Continuity (4)
Continuation 12881881 · Sep 14, 2010
Provisional Application 61254577 · Oct 23, 2009
Provisional Application 61242662 · Sep 15, 2009
Related Publication 20130227202A1 · Aug 29, 2013