Browse Prior Art Database

Programmable Reed Solomon engine

IP.com Disclosure Number: IPCOM000033661D
Original Publication Date: 2004-Dec-21
Included in the Prior Art Database: 2004-Dec-21
Document File: 1 page(s) / 35K

Publishing Venue

IBM

Abstract

A programmable hardware implementation of Reed-Solomon codes, aimed at disk Raid arrays, which permits the code to be specified independently for each operation.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 81% of the total text.

Page 1 of 1

Programmable Reed Solomon engine

Reed Solomon codes are used with disk arrays to permit data reconstruction when two or more disks fail. Different vendors may choose a different polynomial when choosing the code. Hardware support designed for a particular Reed Solomon code is not usable with data created using a different code.

    The invention provides programmability to support any Reed Solomon code where the polynomial is of degree 8, and can also be used with degree 4 polynomials.

    Reed Solomon codes operate by transfoming each symbol of data (typically 1 byte) using a linear transformation. The linear transformation is based on:
a) The polynomial (typically of degree 8) chosen as the basis of the Reed Solomon code, and
b) The number of disks in the disk array, and the operation being performed (write, update, reconstruct of failed disk(s) etc).

Previous designs have typically hardwired a) and let firmware select b).

Since any linear transformation on bytes (viewed as 8-bit binary vectors) can be represented as an 8x8 binary matrix, such a matrix can be constructed for any combination of a) and b) above.

    This hardware Reed Solomon engine processes each successive byte of data through one fully programmable 8x8 binary matrix. The matrix is loaded by firmware at the start of the Reed Solomon operation, based on a) and b) above. Thus this hardware can be freely used to implement any Reed Solomon code (based on a degree 8 polynomial) as and when required. For example,...