IP Library › Granted Patent US 10,365,967
Granted Patent B2
US 10,365,967 · App. 15/684,649 · Granted Jul 30, 2019

On the fly raid parity calculation

Inventor: Julien Margetts (Thame, GB)
Assignee: Toshiba Memory Corporation
G06F11/1068G06F11/1076G11C29/52
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 10,365,967
App. No.
15/684,649
Granted
Jul 30, 2019
Kind
B2
Abstract

A data storage device comprises a nonvolatile semiconductor storage array containing data, a controller in communication with the nonvolatile semiconductor storage array, and a buffer containing RAID units, the RAID units being in communication with the nonvolatile semiconductor storage array via the controller. The controller is configured to receive write requests from a host device, and accumulate first data relating to the write requests in the RAID units. The controller is also configured to, concurrently, transfer the first data contained in the RAID units to the nonvolatile semiconductor storage array, calculate parity values of the first data contained in the RAID units, each parity value relating to each write request, and accumulate the parity values in a context identifier buffer. The controller is further configured to associate context identifiers with the parity values, and store the parity values and the context identifiers in the nonvolatile semiconductor storage array.

Claims (77)

1. A data storage device comprising:

a nonvolatile semiconductor storage array;

a controller in communication with the nonvolatile semiconductor storage array; and

a buffer containing RAID units, the RAID units being in communication with the nonvolatile semiconductor storage array via the controller;

wherein the controller is configured to:

receive write requests from a host device,

accumulate first data relating to the write requests in the RAID units,

concurrently

transfer the first data contained in the RAID units to the nonvolatile semiconductor storage array,

calculate parity values of the first data contained in the RAID units, each parity value relating to each write request,

accumulate the parity values in a context identifier buffer, and

associate context identifiers with the parity values, and

store the parity values and the context identifiers in the nonvolatile semiconductor storage array.

2. The data storage device of claim 1 , wherein the first data comprises first data pages that are divided into first data parts.

3. The data storage device of claim 2 , wherein the parity values are calculated using the first data parts.

4. The data storage device of claim 3 , wherein the context identifier buffer calculates the parity values using the same first data parts of all the first data pages.

5. The data storage device of claim 4 , wherein the parity value is calculated by performing a logical XOR operation using the same first data parts of all the first data pages contained in the context identifier buffer.

6. The data storage device of claim 1 , wherein the controller is further configured to allocate an identifier to the first data contained in each RAID unit.

7. The data storage device of claim 1 , wherein the identifiers comprise at least one of: a final flag, a page bitmap and an offset bitmap.

8. The data storage device of claim 1 , wherein the first data in each RAID unit is stored with the identifier in the nonvolatile semiconductor storage array.

9. The data storage device of claim 1 , wherein the buffer is a DRAM buffer.

10. The data storage device of claim 1 , wherein the RAID units are implemented as RAID 5.

11. A data storage device comprising:

a nonvolatile semiconductor storage array containing first data;

a controller in communication with the nonvolatile semiconductor storage array; and

a buffer containing RAID units, the RAID units being in communication with the nonvolatile semiconductor storage array via the controller;

wherein the controller is configured to:

receive a read request from a host device for a second data stored in the nonvolatile semiconductor storage array;

determine an identifier associated with the requested second data;

determine if the requested second data contains an unrecoverable error;

accumulate first data, including a parity value, contained in the nonvolatile semiconductor storage array associated with the same identifier as the requested second data in a reconstruction buffer, if the requested second data contains an unrecoverable error;

reconstruct the requested second data from the accumulated first data and the parity value; and

transfer the reconstructed second data to the host device via the RAID units.

12. The data storage device of claim 11 , wherein the requested second data is reconstructed by performing a logical XOR operation on the accumulated first data and the parity value.

13. The data storage device of claim 11 , wherein the controller determines the location of the requested second data in the nonvolatile semiconductor storage array using a look up table.

14. The data storage device of claim 11 , wherein the buffer is a DRAM buffer.

15. The data storage device of claim 11 , wherein the RAID units are implemented as RAID 5.

16. A method comprising:

receiving, by a controller in communication with a nonvolatile semiconductor storage array, a write request from a host device;

accumulating first data related to the write request in RAID units contained in a buffer, the buffer being in communication with the nonvolatile semiconductor storage array via the controller;

concurrently

transferring the first data contained in the RAID units to the nonvolatile semiconductor storage array,

calculating parity values from the first data contained in the RAID units, each parity value relating to each write request,

accumulating the parity values in a context identifier buffer, and associating context identifiers with the parity values, and

storing the parity values and the context identifiers in the nonvolatile semiconductor storage array.

17. The method of claim 16 , wherein the first data comprises first data pages that are divided into first data parts.

18. The method of claim 17 , further comprising:

calculating the parity values using the first data parts.

19. The method of claim 18 , wherein the context identifier buffer calculates the parity values using the same first data parts of all the first data pages.

20. The method of claim 19 , wherein the parity value is calculated by performing a logical XOR operation using the same first data parts of all the first data pages contained in the context identifier buffer.

21. The method of claim 20 , further comprising allocating an identifier to the first data contained in each RAID unit.

22. A method comprising:

receiving, by a controller in communication with a nonvolatile semiconductor storage array, a read request from a host device for second data stored in the nonvolatile semiconductor storage array;

determining an identifier associated with the requested second data;

determining if the requested second data contains an unrecoverable error;

accumulating first data, including a parity value, contained in the nonvolatile semiconductor storage array associated with the same identifier as the requested second data in a reconstruction buffer, if the requested second data contains an unrecoverable error;

reconstructing the requested second data from the accumulated first data and the parity value; and

transferring the reconstructed second data to the host device via the RAID units.

23. The method of claim 22 , further comprising:

performing a logical XOR operation on the first data and the parity value.

24. The method of claim 22 , wherein the controller determines the location of the requested second data in the nonvolatile semiconductor storage array using a look up table.

25. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform a method comprising:

receiving, by a controller in communication with a nonvolatile semiconductor storage array, a write request from a host device;

accumulating first data related to the write request in RAID units contained in a buffer, the buffer being in communication with the nonvolatile semiconductor storage array via the controller;

concurrently

transferring the first data contained in the RAID units to the nonvolatile semiconductor storage array,

calculating parity values from the first data contained in the RAID units, each parity value relating to each write request,

accumulating the parity values in a context identifier buffer, and

associating context identifiers with the parity values, and

storing the parity values and the context identifiers in the nonvolatile semiconductor storage array.

26. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform a method comprising:

receiving, by a controller in communication with a nonvolatile semiconductor storage array, a read request from a host device for second data stored in the nonvolatile semiconductor storage array;

determining an identifier associated with the requested second data;

determining if the requested second data contains an unrecoverable error;

accumulating first data, including a parity value, contained in the nonvolatile semiconductor storage array associated with the same identifier as the requested second data in a reconstruction buffer, if the requested second data contains an unrecoverable error;

reconstructing the requested second data from the accumulated first data and the parity value; and

transferring the reconstructed second data to the host device via the RAID units.

Assignments (6)
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
MERGER Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: K.K. PANGEA
Reel/Frame 055659/0471 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2017
From: MARGETTS, JULIEN
To: OCZ STORAGE SOLUTIONS, INC.
Reel/Frame 043390/0956 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2017
From: OCZ STORAGE SOLUTIONS, INC.
To: TOSHIBA AMERICA ELECTRONIC COMPONENTS, INC.
Reel/Frame 043390/0993 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2017
From: TOSHIBA AMERICA ELECTRONIC COMPONENTS, INC.
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 043391/0049 →
Continuity (1)
Related Publication 20190065306A1 · Feb 28, 2019