  In this paper we comprehensively investigate block-wise product (BWP) BCH
codes, wherein raw data is arranged in the form of block-wise matrix and each
row and column BCH codes intersect on one data block. We first devise efficient
BCH decoding algorithms, including reduced-1-bit decoding, extra-1-bit list
decoding, and extra-2-bit list decoding. We next present a systematic
construction of BWP-BCH codes upon given message and parity lengths that takes
into account for performance, implementation and scalability, rather than
focusing on a regularly defined BWP-BCH code. It can easily accommodate
different message length or parity length at minimal changes. It employs
extended BCH codes instead of BCH codes to reduce miscorrection rate and an
inner RS code to lower error floor. We also describe a high-speed scalable
encoder. We finally present a novel iterative decoding algorithm which is
divided into three phases. The first phase iteratively applies reduced BCH
correction capabilities to correct lightly corrupted rows/columns while
suppressing miscorrection, until the process stalls. The second phase
iteratively decodes up to the designed correction capabilities, until the
process stalls. The last phase iteratively applies the proposed list decoding
in a novel manner which effectively determines the correct candidate. The key
idea is to use cross decoding upon each list candidate to pick the candidate
which enables the maximum number of successful cross decoding. Our simulations
show that the proposed algorithm provides a significant performance boost
compared to the state-of-the-art algorithms.
