3 ms·
Also depends on failure mode of your media. E.g. if you can lose data by 4k sectors, then it makes sense to use RS with 4k symbols instead of 8 bit (if there is
by 112233 9y ago
Also depends on failure mode of your media. E.g. if you can lose data by 4k sectors, then it makes sense to use RS with 4k symbols instead of 8 bit (if there is such a thing...), because you do not need partial sector recovery. If you can flip separate bits, then BCH is kind of optimal. If you plan to stream, maybe some sort of FEC code, et cettera.
For example, in ye olde NAND that had 512 byte pages with 16 byte OOB area per page it made sense to use BCH, because bit errors were kind of independent from each other. Bit errors in TLC NAND are not independant anymore.
- Bulat-Ziganshin 9y agowhen encoding larger blocks, they are just split into multiple small words. f.e when GF(256) is used, each word is just a single byte. then you have f.e. 20 data blocks and encode corresponding words of each blocks as a single group, and each group generates a single word for each of parity blocks. you may consider it just as interleaving overall, encoding in GF(2^n) is faster when n is smaller (since you need smaller multiplication tables that better fits into cpu cache). But OTOH encoding with K data+parity blocks require that 2^n>K, so for best speed n is choosen as small as possible among 8/16/32 depending on the K value
- 112233 9y agowhat I meant is that smallest unit that RS can correct is one word, which usually is byte. So 8 bit errors in one word can be restored with less EC than 8 bit errors in different words. In case of BCH, location of bit errors does not influence error correction strength, so it is more suited to correcting independant bit errors, while RS is more suited for bursty/whole block errors.