BCH Codes for Solid-State-Drives

  • Alessia MarelliEmail author
  • Rino Micheloni
Part of the Springer Series in Advanced Microelectronics book series (MICROELECTR., volume 37)


Given that the NAND Flash memory is not a very reliable medium, it follows that a Solid State Disk needs some help to achieve a reliability suitable for computing applications: the Error Correction Code (ECC). As the NAND technology scales down, ECC becomes a critical design topic. This chapter deals with BCH, the most common ECC in solid state disks. Two main issues arise when an ECC is used inside an SSD. First of all, the ECC should not limit the bandwidth, being the bottleneck of the entire drive: this translates in a hardware implementation that needs to handle multiple devices (channel) in parallel. At the same time, ECC must avoid erroneous corrections when the error correction capability of the code is overcome, i.e. it must have a high detection property. In this chapter the ECC definitions are reviewed, then the BCH code is presented along with the multi-channel topic. Finally, BCH and LDPC detection property are discussed.


  1. 1.
    C.E. Shannon, A mathematical theory of communication. Bell Syst. Tech. J. 27(379–423), 623–656 (1948)MathSciNetCrossRefGoogle Scholar
  2. 2.
    R.C. Bose, D.K. Ray-Chaudhuri, On a class of error-correcting binary group codes. Inform. Contr. 3(1), 68–79 (1960)MathSciNetCrossRefGoogle Scholar
  3. 3.
    A. Hocquenghem, Codes correcteurs d’erreurs. Chiffres 2 (1959)Google Scholar
  4. 4.
    I.S. Reed, G. Solomon, Polynomial codes over certain finite fields. J. SIAM 8(2), 300–304 (1960)MathSciNetCrossRefGoogle Scholar
  5. 5.
    C. Berrou, A. Glavieux, P. Thitimajshimima, Near Shannon limit error-correcting coding and decoding: turbo-codes, in Proceedings of ICC’93 (Geneva, Switzerland, May 1993), pp. 1064–1070Google Scholar
  6. 6.
    R.G. Gallager, Low-density parity-check codes. IRE Trans. Inf. Theory IT 8, 21–28 (1962)MathSciNetCrossRefGoogle Scholar
  7. 7.
    D.J.C. MacKay, R.M. Neal, Near Shannon limit performance of low density parity check codes. Electron. Lett. 32(18), 1645–1646 (1996)CrossRefGoogle Scholar
  8. 8.
    R. Micheloni, A. Marelli, R. Ravasio, Error Correction Codes for Non-volatile Memories (Springer, Berlin, 2008)Google Scholar
  9. 9.
    S. Lin, D.J. Costello, Error Control Coding (Prentice Hall, Upper Saddle River, 2004)zbMATHGoogle Scholar
  10. 10.
    T.K. Moon, Error Correcting Coding—Mathematical Methods and Algorithms (Wiley, Hoboken, 2005)CrossRefGoogle Scholar
  11. 11.
    Y. Chen, K. Parthi, Small area parallel Chien search architecture for long BCH codes. IEEE Trans. Very Large Scale Integr. (VLSI) Syst. 12(5), 545–549 (2004)Google Scholar
  12. 12.
    R. Micheloni et al., A 4 Gb 2b/cell NAND flash memory with embedded 5b BCH ECC for 36 MB/s system read throughput, in ISCC Digest of Technical Papers, San Francisco, Feb 2006Google Scholar
  13. 13.
    R. Micheloni, L. Crippa, A. Marelli, Inside NAND Flash Memories (Springer, Berlin, 2010)CrossRefGoogle Scholar
  14. 14.
    E.R. Berlekamp, Algebraic Coding Theory (McGraw-Hill, New York, 1968)zbMATHGoogle Scholar
  15. 15.
    H.O. Burton, Inversionless decoding of binary BCH codes. IEEE Trans. Inf. Theory 17(4), 464–466 (1971)MathSciNetCrossRefGoogle Scholar
  16. 16.
    I.S. Reed, M.T. Shih, T.K. Truong, VLSI design of inverse-free Berlekamp-Massey algorithm. IEEE Proc. 138, 295–298 (1991)Google Scholar
  17. 17.
    S. Mizrachi, D. Stopler, Efficient method for fast decoding of BCH binary codes. US Patent 2003/0159103 A1, Aug 2003Google Scholar
  18. 18.
    W.W. Peterson, E.J. Weldon Jr., Error-Correcting Codes, 2nd edn. (MIT Press, Cambridge, 1972)zbMATHGoogle Scholar
  19. 19.
    T. Kasami, T. Fujiwara, S. Lin, An approximation to the weight distribution of binary linear codes. IEEE Trans. Inf. Theory 31(6), 769–780 (1985)MathSciNetCrossRefGoogle Scholar
  20. 20.
    I. Krasikov, S. Litsyn, On spectra of BCH codes. IEEE Trans. Inf. Theory 41, 786–788 (1995)MathSciNetCrossRefGoogle Scholar
  21. 21.
    I. Krasikov, S. Litsyn, On the distance distribution of duals BCH codes. IEEE Trans. Inf. Theory 45, 247–250 (2001)MathSciNetCrossRefGoogle Scholar
  22. 22.
    F.J. MacWilliams, N.J.A. Sloane, The Theory of Error-Correcting Codes. North-Holland Mathematical Library, vol. 16 (North-Holland Publishing Company, Amsterdam, 1977)Google Scholar
  23. 23.
    O. Keren, S. Litsyn, More on the distance distribution of BCH Codes. IEEE Trans. Inf. Theory 1, 251–155 (1999)MathSciNetCrossRefGoogle Scholar
  24. 24.
    M. Sala, A. Tamponi, A linear programming estimate of the weight distribution of BCH(255, k). IEEE Trans. Inf. Theory 46(6), 2235–2237 (2000)MathSciNetCrossRefGoogle Scholar
  25. 25.
    M.G. Kim, J.H. Lee, Decoder error probability of binary linear block codes and its application to binary primitive BCH codes. IEICE Trans. Fundam. E79-A(4), 592–599 (1996)Google Scholar
  26. 26.
    Y. Lee, H. Yoo, I. Yoo, I.C. Park, 6.4 Gb/s multi-threaded BCH encoder and decoder for multi-channel SSD controllers, in ISCC Digest of Technical Papers, San Francisco, Feb 2012Google Scholar
  27. 27.
    A. Marelli, R. Micheloni, False Decoding Probability (Detection) of BCH and LDPC Codes, Flash Memory Summit 2016Google Scholar
  28. 28.
    M. Hagiwara, M.P.C. Fossorier, H. Imai, Fixed Initialization decoding of LDPC codes over binary simmetric channel, in IEEE Transaction on Information Theory, April 2012Google Scholar
  29. 29.
    S.M. Khatami, L. Danjean, D.V. Nguyen, B. Vasic, An Efficient Exhaustive Low-Weight Codeword Search for Structured LDPC CodesGoogle Scholar

Copyright information

© Springer Nature Singapore Pte Ltd. 2018

Authors and Affiliations

  1. 1.Storage Solutions, Microsemi CorporationVimercateItaly

Personalised recommendations