Patent ID: 8131794

Claim:
An apparatus for storing data, comprising: N data storages each storing a partial data block of N partial data blocks generated by dividing the data, where N is a natural number greater than 1; a parity storage for storing a first parity data and a second parity data, the first parity data being generated by combining the N partial data blocks, and the second parity data being generated by performing on the N partial data blocks a Galois field product computation; and a controller for dividing the data into the N partial data blocks, generating the first parity data by combining the N partial data blocks, generating the second parity data by performing on the N partial data blocks the Galois field product computation, and storing the generated first and second parity data into the parity storage, wherein the controller performs the Galois field product computation comprising: acquiring, from one of the N partial data blocks, a first symbol data including a plurality of symbols, each being a bit sequence on which a product operation by a factor α is to be performed in a Galois field, where α is a primitive element of the Galois field; and repeating a factor-α computation M times on the first symbol data, where M is an integer greater than or equal to 0, so as to weight each symbol included in the first symbol data with a weighting factor α M , the factor-α computation comprising: generating a second symbol data by performing a bit-shift operation on the first symbol data by 1 bit toward the higher-order bit position, generating first mask data including a plurality of mask bit sequences from the first symbol data, each of the plurality of mask bit sequences having a one-to-one correspondence with each of the plurality of symbols in the first symbol data, each mask bit sequence being generated by: performing an AND operation between the corresponding symbol in the first symbol data and a first fixed value to extract the most significant bit from the symbol, and performing a compare operation between the result of the AND operation and the first fixed value, so as to set all the bits of the mask bit sequence to 1 when the result of the AND operation is equal to the first fixed value, or set to 0 otherwise; generating first correction data by computing a logical AND of the first mask data and a first symbol correction value which is determined on the basis of a primitive polynomial for the Galois field, generating a factor-α computation result by computing a XOR of the second symbol data and the first correction data, such that the factor-α computation result includes a plurality of symbols, each representing the result of a product operation of the factor α and the corresponding symbol in the first symbol data, and storing the factor-α computation result into the first symbol data as the new first symbol data.