低成本LDPC解决方案:闪存解码器架构与性能分析
引言
本文介绍了一种适用于闪存的低成本LDPC解码器解决方案,重点讨论了块串行分层解码架构及其设计要求。
LDPC解码与架构对比
- LDPC解码原理:迭代解码LDPC码,通过变量节点和校验节点的消息传递更新,直至满足校验方程或达到最大迭代次数。
- 解码器架构对比:
- 全并行架构:所有校验节点消息同时更新,硬件资源需求大,存在路由拥塞问题。
- 串行架构:校验节点和变量节点消息串行更新,硬件资源需求低,但吞吐量较低。
- 半并行架构:使用多个单元并行更新校验节点和变量节点消息,适用于大多数应用,但复杂度较高。
分层解码器架构
- 分层解码原理:通过L、P、Q、R等消息传递实现分层解码,优化算法减少内存和计算量。
- 块串行分层解码器:
- 优势:
- Q(或L/P/Q)内存可复用存储L/Q/P值,减少内存需求。
- 单一移位器设计,有效复用计算结果。
- 低复杂度数据路径和校验节点单元设计。
- 支持层和循环级乱序处理,消除流水线和内存访问停滞周期。
- 数据流图:Rnew选择和PS处理采用乱序执行,优化数据依赖。
乱序处理优化
- 乱序块处理:处理当前层时,依赖前一层数据的块最后处理,避免流水线延迟导致的停滞周期。
- 乱序层处理:Rnew消息的生成基于循环依赖,而非简单按层执行,确保计算时机精准。
内存需求
- Q内存:宽度为循环大小×8位,深度为块列数。
- HD内存:宽度为循环大小,深度为块列数。
- Qsign内存:宽度为循环大小×1位,深度为非零循环数。
- FS内存:宽度为循环大小×15位,通过调度减少访问次数。
双循环处理
- 支持高吞吐量应用:通过双循环处理模块支持多种码率。
- 内存组织:Q、HD、Qsign内存分为3个银行,宽度不变,深度减半。
系统需求与设计规格
- 关键参数:吞吐量、误码率(BER)、延迟、循环大小(Sc)、每时钟处理的循环数(NSc)。
- 吞吐量计算公式:吞吐量 = 每时钟处理的比特数 × 时钟频率。
- 比特数计算:Sc × NSc × 码率 / (迭代次数 × 平均变量节点度)。
闪存性能结果
- MLC 1Y闪存:
- 使用5位解码器,HD和SD模式使用不同LLR表。
- 5次 strobe 读取,SD模式下使用5 strobe。
- 代码长度1KB,循环大小140。
- TLC 1Y闪存:
- 5 strobe生成3比特(1 HD比特+2 SD比特)。
- 系统利用率可通过软比特数调整,但2比特软数据优于1比特软数据。
3D芯片仿真
- 测试平台:Xilinx FPGA板,成功应用于3D闪存。
- 系统规格:目标吞吐量、延迟、工作频率和误码率范围。
结论
- LDPC解码器架构在吞吐量、面积、内存需求等方面存在不同权衡。
- 高效解码器实现需结合数据路径组织、乱序处理、内存复用、校验节点单元设计等优化技术。
- 块串行分层解码器架构具有上述优势,已成功应用于平面和3D闪存。