Embodiments are related to systems and methods for data processing, and more particularly to systems and methods for processing data accessed from a flash memory.
Various data storage systems have been developed that include flash memory devices. Access to such flash memory devices is done with reasonably low latency where no errors occur. When errors occur, however, processing approaches used to correct the errors may be time consuming. As an example, processes have been developed to generate soft data from the information read from the flash memory device, and then to correct errors using that soft data. Such an approach takes considerable time.
Hence, for at least the aforementioned reasons, there exists a need in the art for advanced systems and methods for accessing data from a flash memory.
Embodiments are related to systems and methods for data processing, and more particularly to systems and methods for processing data accessed from a flash memory.
Some embodiments of the present invention provide a system for accessing a flash memory device. The system includes a flash memory read circuit including: a hard data processing circuit, an accumulated syndrome circuit, and a multi-codeword parity based processing circuit. The hard data processing circuit is operable to apply a hard data decoding algorithm to a set of hard data derived from flash memory cells, where application of the hard data decoding results in converged codewords and at least one non-converged codeword. The accumulated syndrome circuit operable to compute a partial syndrome of the converged codewords. The multi-codeword parity based processing circuit includes: a cross codeword error correction circuit operable to calculate a soft data adjustment value based at least in part upon the at least one non-converged codeword; and a data decoding circuit operable to apply a secondary data decoding algorithm to the at least one non-converged codeword guided by a decoder input generated in part from the soft data adjustment value.
This summary provides only a general outline of some embodiments of the invention. The phrases “in one embodiment,” “according to one embodiment,” “in various embodiments”, “in one or more embodiments”, “in particular embodiments” and the like generally mean the particular feature, structure, or characteristic following the phrase is included in at least one embodiment or one embodiment of the present invention, and may be included in more than one embodiment of the present invention. Importantly, such phases do not necessarily refer to the same embodiment. Many other embodiments of the invention will become more fully apparent from the following detailed description, the appended claims and the accompanying drawings.
A further understanding of the various embodiments of the present invention may be realized by reference to the figures which are described in remaining portions of the specification. In the figures, like reference numerals are used throughout several figures to refer to similar components. In some instances, a sub-label consisting of a lower case letter is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
Embodiments are related to systems and methods for data processing, and more particularly to systems and methods for processing data accessed from a flash memory.
Some embodiments of the present invention provide a system for accessing a flash memory device. The system includes a flash memory read circuit including: a hard data processing circuit, an accumulated syndrome circuit, and a multi-codeword parity based processing circuit. The hard data processing circuit is operable to apply a hard data decoding algorithm to a set of hard data derived from flash memory cells, where application of the hard data decoding results in converged codewords and at least one non-converged codeword. The accumulated syndrome circuit operable to compute a partial syndrome of the converged codewords. The multi-codeword parity based processing circuit includes: a cross codeword error correction circuit operable to calculate a soft data adjustment value based at least in part upon the at least one non-converged codeword; and a data decoding circuit operable to apply a secondary data decoding algorithm to the at least one non-converged codeword guided by a decoder input generated in part from the soft data adjustment value.
In some instances of the aforementioned embodiments, the partial syndrome is computed by XORing the bits in bit positions that are protected by the cross codewords error correction codeword of the converged codewords. It should be noted in other cases where no converged codewords occur, the accumulated syndrome would be all zeros. In various instances of the aforementioned embodiments, the secondary data decoding algorithm is a low density parity check decoding algorithm. In one or more instances of the aforementioned embodiments, the at least one non-converged codeword includes at least a first non-converged codeword and a second non-converged codeword. In such instances, applying the secondary data decoding algorithm yields a first converged codeword corresponding to the first non-converged codeword, and a third non-converged codeword corresponding to the second non-converged codeword. In some such instances, the flash memory read circuit further includes an iterative data processing circuit operable to: receive soft data corresponding to the third non-converged codeword, where the soft data is generated using multiple instances of the hard data of the third non-converged codeword each corresponding to different threshold values; and apply a tertiary data decoding algorithm to the third non-converged codeword guided by the soft data. In one particular case, the tertiary data decoding algorithm is a low density parity check decoding algorithm.
In some instances of the aforementioned embodiments, the system is implemented as part of a solid state storage device. In some such instances, the solid state storage device includes a flash memory device having the flash memory cells. In various instances of the aforementioned embodiments, the system is implemented as part of an integrated circuit.
Other embodiments of the present invention provide methods for accessing a flash memory device. The methods include: providing a flash memory device that includes a data block including at least: a first codeword, a second codeword, a third codeword, and a cross codewords error correction codeword; accessing the data block from the flash memory device; applying a hard data decoding algorithm to the data block where application of the hard data decoding results in a converged codeword corresponding to the first codeword, a first non-converged codeword corresponding to the second codeword, a second non-converged codeword corresponding to the third codeword, and a decoded version of the cross codewords error correction codeword; computing a partial syndrome of at least the converged codeword; using a multi-codeword parity based processing circuit to calculate a soft data adjustment value based at least in part upon a decoded output corresponding to the first non-converged codeword and the second non-converged codeword, and applying a secondary data decoding algorithm to the first non-converged codeword and the second non-converged codeword guided by a decoder input generated in part from the soft data adjustment value. Of note, if decoding of the cross codewords error correction codeword converges, then the syndrome is updated. Otherwise if decoding of the cross codewords error correction codeword fails, then the hard input or decoder output is buffered and used for calculation of the soft data adjustment value.
In some instances of the aforementioned embodiments, computing the partial syndrome of at least the converged codeword includes XORing the bits in bit positions that are protected by the cross codewords error correction codeword of the at least the converged codeword. In various instances of the aforementioned embodiments, the secondary data decoding algorithm is a low density parity check decoding algorithm. In one or more instances of the aforementioned embodiments, the converged codeword is a first converged codeword, and applying the secondary data decoding algorithm yields a second converged codeword corresponding to the first non-converged codeword, and a third non-converged codeword corresponding to the second non-converged codeword. In some such instances, the method further includes: receiving soft data corresponding to the third non-converged codeword, where the soft data is generated using multiple instances of the hard data of the third non-converged codeword each corresponding to different threshold values; and applying a tertiary data decoding algorithm to the third non-converged codeword guided by the soft data. In some cases, an entire data block is read from the flash memory and soft data is generated for the entire data block. In cases where only a portion of the soft data is needed in relation to failed codewords, the soft data related to other codewords may simply be discarded.
Turning to
A data write is effectuated when host controller circuit 160 provides input data 103 to an encoding circuit 164 to yield a write data set 105. The encoding applied by encoding circuit 164 yields an encoded output corresponding to input data 103 and an additional cross codewords error correction codeword. Together, the encoded output and the additional cross codewords error correction codeword are provided as write data 105. In some cases, the encoded output is generated by encoding portions of input data 103 as low density parity check (LDPC) encoding as is known in the art, and the cross codewords error correction codeword is encoded by XORing corresponding portions of the LDPC codewords. One implementation of encoding circuit 164 is discussed below in relation to
A memory access controller 120 formats write data 105 and provides an address 123 and an encoded write data 125 to a write circuit 130. Write circuit 130 provides write voltage pulses 135 corresponding to respective groupings of encoded write data 125 that is used to charge respective flash memory cells addressed by address 123. For example, where flash memory cells are two bit cells (i.e., depending upon the read voltage, a value of ‘11’, ‘10’, ‘00’, or ‘01’ is returned), the following voltages may be applied to store the data:
Where V3 is greater than V2, V2 is greater than V1, and V1 is greater than V0. Write circuit 130 applies a pulsed voltage to flash memory cells 140 according to encoded write data 125.
When a read back of previously stored data is desired, host controller 160 provides an address 110 to memory access controller 120 which is translated to a physical address and provided to flash memory cells 140 as address 123. In turn, flash memory cells 140 returns a block of data identified by address 123 as read voltages 145 that each represents individual bits or groups of bits in flash memory cells 140. Read circuit 150 compares read voltages 145 with read threshold values 156, and based upon the comparison hard data 155 is generated. Hard Data 155 is provided to memory access controller 120 where it is buffered. The phrases “hard data” or “hard decisions” are used in their broadest sense. In particular, “hard data” or “hard decisions” are outputs indicating an expected original input value (e.g., a binary ‘1’ or ‘0’, or a non-binary digital value). Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of hard decisions or hard data that may be used in relation to different embodiments of the present invention.
Memory access controller 120 causes application of up to three different processing algorithms to generate a data output to host controller circuit 160. In particular, memory access controller 120 transfers hard data 155 as read data 107 to hard data processing circuit 180. Hard data processing circuit 180 applies standard flash data processing. Each codeword within the accessed block of data that is corrected using the hard data algorithm applied by hard data processing circuit 180 is provided as a data output 185 to host controller circuit 160 and a syndrome for the converged codeword is provided as a syndrome output 186 to memory access controller circuit 120. Memory access controller circuit 120 accumulates the syndrome values of all converged codewords, and eliminates hard data 155 corresponding to the converged codewords from the buffer. In contrast, whenever a codeword within the accessed block of data that is not rendered error free using the hard data algorithm applied by hard data processing circuit 180, an error indicator 188 is provided to memory access controller circuit 120. Whenever memory access controller circuit 120 receives an indication of a failed codeword, hard data 155 corresponding to the codeword is maintained in the buffer for further processing.
Once all codewords within the requested block have been processed by hard data processing circuit 180, memory access controller 120 transfers hard data 155 corresponding to the codewords that failed during processing by hard data processing circuit 180 to multi-codeword parity based hard/soft input processing circuit 190 as read data 107. In turn, to multi-codeword parity based hard/soft input processing circuit 190 processes the failed codewords using the cross codewords error correction codeword received as part of the retrieved block of data. During the processing, hard data corresponding to the failed codewords is received as read data 107 and decoded. The decoder circuit included as part of multi-codeword parity based hard/soft input processing circuit 190 accumulates syndrome and soft information based upon decoding using the cross codewords error correction codeword. This soft information is then used to guide additional iterations through the data decoder circuit. Each of the failed codewords that is corrected using the multi-codeword parity based hard/soft input processing circuit 190 is provided as a data output 195 to host controller circuit 160 and a syndrome for the converged codeword is provided as a syndrome output 172 to memory access controller circuit 120. Memory access controller circuit 120 accumulates the syndrome values of all converged codewords, and eliminates hard data 155 corresponding to the converged codewords from the buffer. In contrast, whenever a failed codeword is not rendered error free using the algorithm applied by multi-codeword parity based hard/soft input processing circuit 190, an error indicator 198 is provided to memory access controller circuit 120. Whenever memory access controller circuit 120 receives an indication of a failed codeword, hard data 155 corresponding to the codeword is maintained in the buffer for further processing. Multi-codeword parity based hard/soft input processing circuit 190 may be implemented similar to that discussed below in relation to
Once all codewords that failed when processed by hard data processing circuit 180 have been re-processed by multi-codeword parity based hard/soft input processing circuit 190, memory access controller 120 transfers hard data 155 corresponding to the codewords that failed during processing by multi-codeword parity based hard/soft input processing circuit 190 to iterative data processing circuit 170. Iterative data processing circuit 170 includes a data decoder circuit that is guided by soft information generated by previous local iterations through the data decoder circuit. In addition, iterative data processing circuit 170 receives a soft data adjustment value 171 (soft data adjustment value 484 discussed in relation to
Memory access controller 120 generates soft data corresponding to hard data 155 for the remaining failed codewords. The phrases “soft data”, “soft information”, or “soft decisions” are used in their broadest sense. In particular, “soft data”, “soft information”, or “soft decisions” indicate a likelihood that corresponding hard decisions are correct. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize a variety of soft data that may be used in relation to different embodiments of the present invention. This soft data is generated by comparing the data accessed from flash memory cells 140 to different threshold values. The soft data is provided to iterative data processing circuit 170 as soft data 176. Using soft data 176, iterative data processing circuit 170 re-processes the remaining failed codewords. Each of the remaining failed codewords that is corrected using the iterative data processing circuit 170 is provided as a data output 175 to host controller circuit 160 and a syndrome for the converged codeword is provided as a syndrome output 176 to memory access controller circuit 120. Memory access controller circuit 120 accumulates the syndrome values of all converged codewords, and eliminates hard data 155 and soft data corresponding to the converged codewords from the buffer. In contrast, whenever a failed codeword is not rendered error free using the algorithm applied by iterative data processing circuit 170, an error indicator 179 is provided to host controller 160. Iterative data processing circuit 170 may be implemented similar to that discussed below in relation to
Turning to
First level encoded output 222 is provided to both a selector circuit 250 and a cross codewords encoding circuit 230. Cross codewords encoding circuit 230 applies an encoding algorithm to the codewords provided as first level encoded output 222 to yield a cross codewords error correction codeword 232. In some cases, the cross codewords encoding includes XORing all corresponding bit positions in the multiple codewords provided as first level encoded output 222 and an encoding bit is generated to yield a particular parity (e.g., odd or even parity) for the bit position including the corresponding position in cross codewords error correction codeword 232. The generated parity assumes the particular location in cross codewords error correction codeword 232, and the process is completed for each of the other bit positions in the multiple codewords provided as first level encoded output 222 to generate cross codewords error correction codeword 232. Cross codewords error correction codeword 232 is provided to selector circuit 250.
Selector circuit 250 selects one of cross codewords error correction codeword 232 or first level encoded output 222 to yield a channel encoder input codeword 252. Channel encoder input codeword 252 is provided to a channel ECC encoder 260 that applies an encoding algorithm to each of the codewords (i.e., each of the codewords provided as first level encoded output 222 and cross codewords error correction codeword 232) to yield an encoded output 275. Encoded output 275 is then prepared to be written to a storage medium. In some embodiments, the encoding algorithm applied by channel ECC encoder 260 is a low density parity check encoding algorithm as is known in the art. In such a case, encoded output 275 is a low density parity check encoded output.
It should be noted that in some embodiments the cross-codewords error correction codeword is not subjected to LDPC encoding. In such instances, it is possible to move a cross codewords encoding circuit 230 to after channel ECC encoder 260. In such case, the output of channel ECC encoder 260 is provided as an input to cross codewords encoding circuit 230. Cross codewords error encoding circuit 230 encodes the output from channel ECC encoder 260 by XORing corresponding elements across instances of encoded output 275 to yield a cross codewords error correction codeword that is provided along with encoded output 275 for storage to the flash memory device (not shown).
It should be noted that in some embodiments of the present invention that the output of channel ECC encoder corresponding to cross codewords error correction codeword 232 is provided to a scrambler circuit (not shown). Such a scrambler circuit scrambles the elements of encoded output 275 that correspond to the cross codewords error correction codeword 232 to yield a scrambled output. Scrambling may be done, for example, XORing a pseudo-random sequence with the data to make the data appear random. In such embodiments, the scrambled output is provided to an upstream processing circuit in place of encoded output 275. Such scrambling avoids a situation where all zeros are written to a storage medium.
Turning to
Turning to
by decreasing the number of codewords protected by a given cross codewords error correction codeword. Such an approach provides a systemaic way to decrease the code rate below the base LDPC code design code rate range.
Turning to
Decoder circuit 370 applies a data decoding algorithm to modified decoder input 352 to yield a decoded output 371. Where decoded output 371 fails to converge (i.e., decoded output 371 includes errors), another iteration of the data decoding algorithm is applied to modified decoder input 352 guided by decoded output 371. This process is repeated until either decoded output 371 converges (i.e., is error free) or a maximum number of iterations are performed condition is met. Alternatively, where decoded output 371 converges, it is provided as a decoded output 372 to a hard decision buffer circuit 390. Hard decision buffer circuit 390 provides the hard decisions of decoded output 372 as a hard decision output 392. Hard decision output 392 corresponds to data output 175 of
Turning to
Where the original data is recovered (i.e., the data decoding algorithm converges) or a timeout condition occurs, data decoder circuit 450 provides the result of the data decoding algorithm as a data output 474. Data output 474 is provided to a hard decision output circuit 496 where the data is reordered before providing a series of ordered data sets as a data output 498. in addition, the accumulated cross codewords syndrome is updated to reflect the convergence.
Alternatively, where the data decoding algorithm fails to converge after a selected number of local iterations, a total decoded output 451 which is a total soft output for all non-converging codewords associated with a given cross codewords error correction codeword (including soft data for the cross codewords error correction codeword where it is non-converging) is provided to a cross codewords error correction circuit 480. Cross codewords error correction circuit 480 provides an interim soft data adjustment value 486 to a multiplier circuit 457 where it is multiplied by a scaling input 458 to yield a soft data adjustment value 484. Any scaling input 458 known in the art may be used in relation to different embodiments of the present invention. Soft data adjustment value 486 is updated by cross codewords error correction circuit 480 after all non-converged codewords associated with a given cross codewords error correction codeword are available from data decoder circuit 450 as total decoded output 451.
Soft data adjustment value 484 is provided to a cross codeword based modification circuit 460 (shown in dashed lines). Cross codeword based modification circuit 460 includes an adder circuit 453 that adds sample output 477 to soft data adjustment value 484 to yield modified decoder input 459. On the first round of local iterations for each of the non-converged codewords through data decoder circuit 450, data decoder circuit 450 processes sample output 477. During subsequent rounds of local iterations for each of the non-converged codewords through data decoder circuit 450, data decoder circuit 450 processes modified decoder input 459 instead of sample output 477.
Soft data adjustment value 486 is calculated based upon total decoded output 451 in accordance with the following equations:
LLRCCECC,in=LLRDec(i.e., the total LLR generated by a hard input/soft input decoder);
sign{LLRCCECC,ext}=AccumulatedCrossCodewordsSyndrome+xor(sign{LLRCCECC,in[Other Failed Codewords]}); and
|LLRCCECC,ext|=min(|LLRCCECC,in[All Other Failed Codewords]|).
LLR is soft data also known in the art as log likelihood ratio data. LLRCCECC,in is the prior soft data for the cross codewords error correction decoding, LLRCCECC,ext is the extrinsic soft data for the cross codewords error correction decoding, xor(sign{LLRCCECC,in[Other Failed Sectors]}) is the XOR of the signs of LLRCCECC,in of all of the other failed codewords, and the AccumulatedCrossCodewordsSyndrome is the cross codeword error correction partial syndrome computed by XORing the bits in bit positions that are protected by the cross codewords error correction coding of converged user codewords and/or the converged cross codeword error correction codeword. Using data processing circuit 400 of
Initial processing on sample output 477 is hard data input decoding that yields a soft data output. Later iterations may be soft data input decoding that yields a soft data output. In some embodiments of the present invention, the same LDPC decoding circuit may be shared between hard data processing circuit 180, multi-codeword parity based hard/soft input processing circuit 190, and iterative data processing circuit 170 discussed above in relation to
Turning to
Alternatively, when a read access is received (block 505), it includes an address indicating a location from which the data is to be accessed. Data corresponding to the address (i.e., selected data) is then accessed from the flash memory at the location indicated by the read request (block 510). The selected data includes a block of data including a number of encoded codewords along with a cross codewords error correction codeword. A first codeword of the selected data is selected (block 515), and standard flash memory hard decoding is applied to the codeword (block 520). Such standard flash memory hard decoding may be any decoding processing known in the art that operates on hard data accessed from the slash memory. As such, various error correction may be applied to the hard data.
It is then determined whether the hard decoding resulted in an error free codeword (block 525). Where hard decoding resulted in an error free codeword (block 525), the error free codeword is provided as part of a read data output (block 530). In addition, the resulting syndrome is added to an accumulated cross codewords syndrome maintained for the block of data accessed from the flash memory (block 535). This accumulated cross codewords syndrome is a partial syndrome computed by XORing the bits in bit positions that are protected by the cross codewords error correction coding of converged user codewords and/or the converged cross codeword error correction codeword. At this juncture, the hard data for the currently processing codeword that was received from the flash memory is discarded. Alternatively, where hard decoding failed to yield an error free codeword (block 525), the hard data for the currently processing codeword that was received from the flash memory is stored to a buffer as a failed codeword (block 540).
It is determined whether another codeword from the block of data received from the flash memory remains to be processed (block 545). Where another codeword remains to be processed (block 545), the next codeword within the block of data received from the flash memory is selected for processing (block 550), and the processes of blocks 520-545 are repeated for the next codeword. This process is then repeated until all codewords within the block of data received from the flash memory. Once all of the codewords have been processed, the accumulated cross codewords syndrome represents a value of that can be used in relation for further processing of the remaining failed codewords. It is determined whether there are any failed codewords from all of the codewords of the block of data accessed from the flash memory (block 555). Where no failed codewords remain (block 555), processing of the block is complete. Otherwise, where failed codewords remain (block 555), multi-tiered decoding is applied to the remaining failed codewords (block 560). Such multi-tiered decoding is shown in dashed lines as detail of such is set forth in
Turning to
It is determined whether the result of applying the LDPC decoding algorithm corrected all errors in the codeword (i.e., did the codeword converge) (block 517). Where the result of applying the LDPC decoding algorithm converged (block 517), the syndrome is that of the cross codewords error correction codeword updated to account for the newly converged codeword (i.e., the syndrome of the result is added to the syndrome of block 535 of
It is determined whether another failed codeword remains for initial processing (block 532). Where another failed codeword remains for initial processing (block 532), the next failed codeword is selected (block 537), and the processes of blocks 512-532 are repeated for the next failed codeword. This process is repeated until all failed codewords have been initially processed.
Alternatively, where no failed codewords remain for initial processing (block 532), one of the remaining failed codewords is selected for re-processing (block 542). The decoder inputs are updated based upon all other failed codeword data in the buffer and the accumulated syndrome from all converged codewords (block 547). This updating is done in accordance with the following equations:
LLRCCECC,in=LLRDec,ext;
sign{LLRCCECC,ext}=AccumulatedCrossCodewordsSyndrome+xor(sign{LLRCCECC,in[All Other Failed Codewords]}); and
|LLRCCECC,ext|=min(|LLRCCECC,in[All Other Failed Codewords]|).
LLR is soft data also known in the art as log likelihood ratio data. LLRCCECC,in is the prior soft data for the cross codewords error correction decoding, LLRCCECC,ext is the extrinsic soft data for the cross codewords error correction decoding, xor(sign{LLRCCECC,in[All Other Failed Sectors]}) is the XOR of the signs of LLRCCECC,in of all of the other failed codewords, and the AccumulatedCrossCodewordsSyndrome is the cross codeword error correction partial syndrome computed by XORing the bits in bit positions that are protected by the cross codewords error correction coding of converged user codewords and/or the converged cross codeword error correction codeword. Using data processing circuit 400 of
The LDPC decoding algorithm is re-applied to the selected failed codeword using the updated decoder inputs (block 552). This re-application of the data decoder algorithm to the failed sector is guided by the following updated decoder guide:
Updated Decoder Guide=(LLRCCECC,ext)×Scaling Factor.
In the preceding applications of the data decoder algorithm (i.e., during block 512), the decoder guide was:
Decoder Guide=(LLRDec,ext)×Scaling Factor.
Thus, during application of the data decoder algorithm, soft data generated based upon the cross codewords error correction codeword is used to reprocess the failed data sectors.
It is determined whether the codeword converged (block 557). Where the codeword converged (block 557), the hard data and decoded outputs for the converged codeword are discarded, and the converged codeword is provided as a data output (block 567). In addition, the codeword that had previously failed, but now has converged is removed from the list of remaining failed codewords. Alternatively, where the result of re-applying the LDPC decoding algorithm failed to converge (block 557), hard data and decoded outputs for the failed codeword are buffered for further processing (block 562).
It is then determined whether additional failed codewords remain to be processed (i.e., whether any failed codewords have not yet been processed on this iteration) (block 572). Where additional failed codewords remain to be processed (block 572), the next failed codeword is selected (block 577) and the processes of blocks 547-572 are repeated for the next failed codeword. Alternatively, where it is determined that no additional failed codewords remain to be processed (block 572), it is determined whether another iteration through all of the remaining failed codewords is desired (block 582). In some case, up to ten iterations through the failed codewords is allowed. Where another iteration is allowed (block 582), the processes of blocks 542-582 are repeated for the remaining failed codewords. Otherwise, where no additional iterations are allowed (block 582), the process completes and a return to block 565 of
Returning to
Turning to
The hard data for the failed codewords that is maintained in the buffer in block 562 of
Alternatively, where it is determined that the decoded output failed to converge (block 531). It is determined whether another iteration of the data decoding algorithm is allowed (block 541). In some cases, a maximum number of iterations of the data decoding algorithm is fixed or programmable. This is effectively a timeout condition. In some cases, the maximum number of allowable iterations of the data decoding algorithm is one hundred. Based upon the disclosure provided herein, one of ordinary skill in the art will recognize other numbers of iterations that may be allowed in relation to different embodiments of the present invention. Where another local iteration is not allowed (block 541), an error is indicated (block 546). Otherwise, where another iteration of the decoding algorithm is allowed (block 541), the processes of blocks 526-541 are repeated.
It is determined whether another failed codeword remains to be processed (block 551). Where another failed codeword remains to be processed (block 551), the next failed codeword is selected (block 556), and the processes of blocks 506-551 are repeated for the next failed codeword. Where no failed codewords remain to be processed (block 551), the process completes and a return to
It should be noted that the various blocks discussed in the above application may be implemented in integrated circuits along with other functionality. Such integrated circuits may include all of the functions of a given block, system or circuit, or a subset of the block, system or circuit. Further, elements of the blocks, systems or circuits may be implemented across multiple integrated circuits. Such integrated circuits may be any type of integrated circuit known in the art including, but are not limited to, a monolithic integrated circuit, a flip chip integrated circuit, a multichip module integrated circuit, and/or a mixed signal integrated circuit. It should also be noted that various functions of the blocks, systems or circuits discussed herein may be implemented in either software or firmware. In some such cases, the entire system, block or circuit may be implemented using its software or firmware equivalent. In other cases, the one part of a given system, block or circuit may be implemented in software or firmware, while other parts are implemented in hardware.
In conclusion, the invention provides novel systems, devices, methods and arrangements for data processing. While detailed descriptions of one or more embodiments of the invention have been given above, various alternatives, modifications, and equivalents will be apparent to those skilled in the art without varying from the spirit of the invention. Therefore, the above description should not be taken as limiting the scope of the invention, which is defined by the appended claims.