IP Library Granted Patent US 7,664,915
Granted Patent B2
US 7,664,915 · App. 11/642,315 · Granted Feb 16, 2010

High performance raid-6 system architecture with pattern matching

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,664,915
App. No.
11/642,315
Granted
Feb 16, 2010
Kind
B2
Abstract

An acceleration unit offloads computationally intensive tasks from a processor. The acceleration unit includes two data processing paths each having an Arithmetic Logical Unit and sharing a single multiplier unit. Each data processing path may perform configurable operations in parallel on a same data. Special multiplexer paths and instructions are provided to allow P and Q type syndromes to be computed on a stripe in a single-pass of the data through the acceleration unit.

Claims (38)

1. An apparatus comprising:

a first data processing path to receive a block of data, the first data processing path including a first accumulate buffer to store the block of data and a first arithmetic logical unit to perform a first operation on the block of data; and

a second data processing path to receive the block of data, the second data processing path including a second accumulate buffer to store the block of data and a second arithmetic logical unit to perform a second operation on the block of data, the first data processing path and the second data processing path sharing a multiplier, the multiplier to perform a multiply operation on the block of data, each of the data processing paths to process the block of data in parallel to provide a first result block of data and a second result block of data in a single pass of the block of data through the data processing paths, the first arithmetic logical unit has a first programmable polynomial and the second arithmetic logical unit has a second programmable polynomial.

2. The apparatus of claim 1 , wherein the block of data is a data block in a Redundant Array of Independent Disks (RAID) stripe.

3. The apparatus of claim 2 , wherein the first operation to compute a P syndrome for the stripe and the second operation to compute a Q syndrome for the stripe.

4. The apparatus of claim 2 , wherein the RAID stripe includes a P syndrome block and a Q syndrome block, the first operation to recover a first data block and the second operation to recover a second block in the RAID stripe using the P syndrome block, the Q syndrome block and other data blocks in the RAID stripe.

5. The apparatus of claim 2 , wherein the RAID stripe is updated for a new data block, the first operation to compute a new P syndrome for the stripe using an old P syndrome block, an old data block and a new data block for the stripe.

6. The apparatus of claim 5 , wherein the second operation to compute a new Q syndrome using an old Q syndrome block, the old data block and the new data block for the stripe.

7. The apparatus of claim 6 , wherein the new P syndrome is moved to a shared memory while the new Q syndrome is computed.

8. The apparatus of claim 1 , wherein the first operation to perform a pattern match on the block of data stored in the first accumulate buffer and a second block of data received by the first data processing path.

9. The apparatus of claim 1 , wherein the first operation to perform a non zero result operation on the received block of data.

10. The apparatus of claim 1 , wherein the first operation to perform on the first block of data and a second block, the first block of data and the second block included in a Redundant Array of Independent Disks (RAID) level 6 stripe, the result to be stored in the first accumulate buffer for a subsequent operation with another block.

11. A method comprising:

storing a block of data in a first accumulate buffer in a first data processing path;

storing the block of data in a second accumulate buffer in a second processing path, the first processing path and the second processing path sharing a multiplier;

performing, by a first arithmetic logical unit a first operation on the block of data; and

performing, by a second arithmetic logical unit a second operation on the block of data, the first data processing path and the second data processing path processing the block of data in parallel to provide a first result block of data and a second result block of data in a single pass of the block of data through the data processing paths the first arithmetic logical unit has a first programmable polynomial and the second arithmetic logical unit has a second programmable polynomial.

12. The method of claim 11 , wherein the block of data is a data block in a Redundant Array of Independent Disks (RAID) stripe.

13. The method of claim 12 , wherein the first operation computes a P syndrome for the stripe and the second operation computes a Q syndrome for the stripe.

14. The method of claim 12 , wherein the RAID stripe includes a P syndrome block and a Q syndrome block, the first operation to recover a first data block and the second operation to recover a second block in the RAID stripe using the P syndrome block, the Q syndrome block and other data blocks in the RAID stripe.

15. The method of claim 12 , wherein the RAID stripe is updated for a new data block, the first operation computing a new P syndrome for the stripe using an old P syndrome block, an old data block and a new data block for the stripe.

16. The method of claim 15 , wherein the second operation computes a new Q syndrome using the old Q syndrome block, the old data block and the new data block for the stripe.

17. The method of claim 16 , wherein the new P syndrome is moved to a shared memory while the new Q syndrome is computed.

18. The method of claim 11 , wherein the first operation to perform a pattern match on the block of data stored in the first accumulate buffer and a second block of data received by the first data processing path.

19. The method of claim 11 , wherein the first operation to perform a non zero result operation on the received block of data.

20. The method of claim 11 , wherein the first operation to perform on the first block of data and a second block, the first block of data and the second block included in a Redundant Array of Independent Disks (RAID) level 6 stripe, the result to be stored in the first accumulate buffer for a subsequent operation with another block.

21. An article including a machine-accessible storage medium having associated information, wherein the information, when accessed, results in a machine performing:

storing a block of data in a first accumulate buffer in a first data processing path;

storing the block of data in a second accumulate buffer in a second processing path, the first processing path and the second processing path sharing a multiplier;

performing, by a first arithmetic logical unit a first operation on the block of data; and

performing, by a second arithmetic logical unit a second operation on the block of data, the first data processing path and the second data processing path processing the block of data in parallel to provide a first result block of data and a second result block of data in a single pass of the block of data through the data processing paths, the first arithmetic logical unit has a first programmable polynomial and the second arithmetic logical unit has a second programmable polynomial.

22. The article of claim 21 , wherein the block of data is a data block in a Redundant Array of Independent Disks (RAID) stripe.

23. A system comprising:

a redundant array of independent disks (RAID) system having a plurality of Serial Attached Small Computer System Interface (SAS) disk drives; and

an acceleration unit to process data for the RAID system, the acceleration unit comprising:

a first data processing path to receive a block of data, the first data processing path including a first accumulate buffer to store the block of data and a first arithmetic logical unit to perform a first operation on the block of data; and

a second data processing path to receive the block of data, the second data processing path including a second accumulate buffer to store the block of data and a second arithmetic logical unit to perform a second operation on the block of data, the first data processing path and the second data processing path sharing a multiplier, the multiplier to perform a multiply operation on the block of data, each of the data processing paths to process the block of data in parallel to provide a first result block of data and a second result block of data in a single pass of the block of data through the data processing paths.

24. The system of claim 23 , wherein the block of data is a data block in a Redundant Array of Independent Disks (RAID) stripe.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 15, 2022
From: INTEL CORPORATION
To: TAHOE RESEARCH, LTD.
Reel/Frame 061175/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2008
From: GOPAL, VINODH; WOLRICH, GILBERT; YAP, KIRK S.; VRANICH, JOHN J.; OTTAVI, ROBERT P.; FEGHALI, WAJDI K.
To: INTEL CORPORATION
Reel/Frame 021404/0810 →