IP Library Granted Patent US 7,917,831
Granted Patent B2
US 7,917,831 · App. 11/763,107 · Granted Mar 29, 2011

Optimization of storage device accesses in RAID systems

Assignee: Freescale Semiconductor, Inc.
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 7,917,831
App. No.
11/763,107
Granted
Mar 29, 2011
Kind
B2
Abstract

A result value, such as a parity value, for a set of corresponding data elements from a plurality of storage devices is determined using a commutative operation. When accessing the set of corresponding data elements from a plurality of storage devices, a dual access can be performed for the storage device accessed last for the set of corresponding data elements so as to also obtain a data element from the last-accessed storage device for the next parity calculation. As a result, the number of storage device accesses can be reduced compared to conventional systems whereby a single access is performed for each storage device to obtain a single data element from the storage device.

Claims (81)

1. In a data storage system comprising N storage devices, a method comprising:

performing a single access to each storage device of a first sequence of storage devices to obtain a data element from each storage device of the first sequence, the first sequence advancing from a first storage device to an N−1th storage device, and the data elements from the storage devices of the first sequence forming a first subset of N−1 data elements;

performing a first dual access to an Nth storage device of the N storage devices to obtain a first data element and a second data element, the first subset of N−1 data elements and the first data element forming a first set of N data elements;

performing a first commutative operation using each data element of the first set of N data elements to generate a first result data; and

storing the first result data.

2. The method of claim 1 , further comprising:

performing a single access to each storage device of a second sequence of storage devices to obtain a data element from each storage device of the second sequence, the second sequence advancing from the N−1th storage device to a second storage device, and the data elements from the storage devices of the second sequence forming a second subset of N−2 data elements;

performing a second dual access to the first storage device to obtain a third data element and a fourth data element, the second data element, the third data element, and the second subset of N−2 data elements forming a second set of N data elements;

performing a second commutative operation using each data element of the second set of N data elements to generate a second result data; and

storing the second result data.

3. The method of claim 2 , further comprising:

correcting an erroneous data element of the first set of N data elements using the first result data.

4. The method of claim 2 , wherein:

the first commutative operation comprises an XOR operation; and

the second commutative operation comprises an XOR operation.

5. The method of claim 1 , further comprising:

performing a single access to each storage device of a second sequence of storage devices to obtain a data element from each storage device of the second sequence, the second sequence advancing from the N−1th storage device to the first storage device, and the data elements from the storage devices of the second sequence forming a second subset of N−1 data elements;

performing a second commutative operation using each data element of the second set of N data elements to generate a second result data; and

storing the second result data.

6. The method of claim 5 , further comprising:

correcting an erroneous data element of the first set of N data elements using the first result data.

7. The method of claim 5 , wherein:

the first commutative operation comprises an XOR operation; and

the second commutative operation comprises an XOR operation.

8. The method of claim 1 , wherein storing the first result data comprises storing the first result data at a register.

9. The method of claim 1 , wherein storing the first result data comprises storing the first result data as a parity data at a storage location of one of the plurality of storage devices, the parity data corresponding to the first data element and the second data element.

10. The method of claim 1 , further comprising:

correcting an erroneous data element of the first set of N data elements using the first result data.

11. The method of claim 1 , wherein the first commutative operation comprises an XOR operation.

12. A method comprising:

performing a first access operation to a first storage device of a plurality of storage devices to obtain a first data element from the first storage device;

storing the first data element at a first-in first-out (FIFO) buffer;

performing a second access operation to a second storage device of the plurality of storage devices to obtain a second data element and third data element from the second storage device, the second access operation performed subsequent to the first access operation;

storing the second data element at the FIFO buffer subsequent the first data element;

storing the third data element at the FIFO buffer subsequent to the second data element;

performing a third access operation to the first storage device to obtain a fourth data element and a fifth data element from the storage device, the third access operation performed subsequent to the second access operation;

storing the fourth data element at the FIFO buffer subsequent to the third data element;

storing the fifth data element at the FIFO buffer subsequent to the fourth data element;

obtaining the first data element and the second data element from the FIFO buffer;

performing a first commutative operation using the first data element and second data element to generate a first result data;

storing the first result data;

obtaining the third data element and the fourth data element from the FIFO buffer subsequent to obtaining the first data element and the second data element from the FIFO buffer;

performing a second commutative operation using the third data element and the fourth data element to generate a second result data; and

storing the second result data.

13. The method of claim 12 , further comprising:

performing a fourth access operation to the second storage device to obtain a sixth data element from the third storage device;

storing the sixth data element in the FIFO buffer subsequent to the fifth data element;

obtaining the fifth data element and the sixth data element from the FIFO buffer subsequent to obtaining the third data element and the fourth data element from the FIFO buffer;

performing a third commutative operation using the fifth data element and the sixth data element to generate a third result data; and

storing the third result data.

14. The method of claim 12 , further comprising:

performing a fourth access operation to a third storage device of the plurality of storage devices to obtain a sixth data element from the third storage device;

storing the sixth data element in the FIFO buffer subsequent to the first data element and prior to the second data element;

performing a fifth access operation to the third storage device to obtain a seventh data element from the third storage device;

storing the seventh data element in the FIFO buffer subsequent to the third data element and prior to the fourth data element;

obtaining the sixth data element from the FIFO buffer subsequent to the first data element and prior to the second data element;

obtaining the seventh data element from the FIFO buffer subsequent to the third data element and prior to the fourth data element;

wherein performing the first commutative operation comprises performing the first commutative operation using the first data element, the second data element, and the sixth data element to generate the first result data; and

wherein performing the second commutative operation comprises performing the second commutative operation using the third data element, the fourth data element, and the seventh data element to generate the second result data.

15. The method of claim 14 , further comprising:

performing a sixth access operation to the third storage device to obtain an eighth data element from the third storage device;

storing the eighth data element in the FIFO buffer subsequent to the fifth data element;

performing a seventh access operation to the second storage device to obtain a ninth data element and a tenth data element from the second storage device;

storing the ninth data element in the FIFO buffer subsequent to the eighth data element;

storing the tenth data element in the FIFO buffer subsequent to the ninth data element;

obtaining the eighth data element and the ninth data element from the FIFO buffer subsequent to the fifth data element;

performing a third commutative operation using the fifth data element, the eighth data element, and the ninth data element to generate a third result data; and

storing the third result data.

16. A system comprising:

a controller coupleable to a plurality of storage devices, the controller comprising:

a first-in first-out (FIFO) buffer configured to buffer data elements;

an access interface configured to initiate a first access operation to a first storage device of a plurality of storage devices to obtain a first data element from the first storage device for storage in the FIFO buffer and initiate a second access operation to a second storage device of the plurality of storage devices to obtain a second data element and a third data element from the second storage device for storage in the FIFO buffer subsequent to the first data element; and

a commutative operation component coupled to the FIFO buffer and configured to perform a first commutative operation using the first data element and the second data element obtained from the FIFO buffer to generate a first result data.

17. The system of claim 16 , wherein:

the access interface is configured to initiate a third access operation to the first storage device to obtain a fourth data element from the first storage device for storage in the FIFO buffer subsequent to the third data element; and

the commutative operation component is configured to perform a second commutative operation using the third data element and the fourth data element obtained from the FIFO buffer to generate a second result data.

18. The system of claim 16 , further comprising:

the plurality of storage devices.

19. The system of claim 18 , wherein each of the plurality of storage devices comprises a storage device selected from a group consisting of: a magnetic disk device; an optical disk device; a dynamic random access memory device; a static random access memory device; and a flash memory device.

20. The system of claim 16 , further comprising:

a correction component to correct an erroneous data element of a storage device of the plurality of storage devices based on the first result data.

Assignments (32)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2024
From: PHAN, SAMSON; TAO, LEON; HOSKINS, WILLIAM; GULKIN, SCOTT; KLOFAS, BRYAN; KOUMRIAN, TODD; COUSINS, MICHAEL
To: SRI INTERNATIONAL
Reel/Frame 068007/0266 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040632 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Sep 21, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 044209/0047 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040632/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0655 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Nov 1, 2007
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 020045/0448 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2007
From: MILLMAN, STEVEN D.; TORLA, MICHAEL J.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 019431/0606 →
Continuity (1)
Related Publication 20080313397A1 · Dec 18, 2008