ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git备忘清单
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • SVN Trunk Branches的Merge操作
  • 如何高效阅读嵌入式项目代码
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • MFC使用细节
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • NAND Flash基础
  • 基于PA算法的FTL引导
  • SD逻辑擦除和物理擦除
  • NAND Flash的SDR、ONFI、DDR接口
  • 【详解】Nand Flash必看知识
  • 【两万字详解】Nand Flash必看知识
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git备忘清单
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • SVN Trunk Branches的Merge操作
  • 如何高效阅读嵌入式项目代码
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • MFC使用细节
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • NAND Flash基础
  • 基于PA算法的FTL引导
  • SD逻辑擦除和物理擦除
  • NAND Flash的SDR、ONFI、DDR接口
  • 【详解】Nand Flash必看知识
  • 【两万字详解】Nand Flash必看知识
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • 电子嵌入式通信协议

  • 深入浅出SSD

    • 第1章 SSD综述
    • 第2章 SSD主控和全闪存阵列
    • 第3章 SSD存储介质:闪存
    • 第4章 SSD 主控
    • 第6章 FTL 综述
    • 第9章 ECC 原理
      • 1. ECC 是什么?(是什么东西?)
      • 2. 为什么需要 ECC?(作用?用途?)
      • 3. LDPC 是什么?
      • 4. Tanner 图是什么?
      • 5. LDPC 解码是什么?
      • 6. 什么是 Bit-flipping 算法
      • 7. 什么是和积信息传播算法
  • 文件系统

  • 汇编语言

  • STM32

  • 嵌入式软件开发
  • 深入浅出SSD
霜晨月
2025-07-09
目录

第9章 ECC 原理

# 第9章 ECC 原理

# 1. ECC 是什么?(是什么东西?)

ECC 是纠错码,主流 ECC 算法是 LDPC。

# 2. 为什么需要 ECC?(作用?用途?)

所有闪存都无法保证存储的数据会永久稳定,所以需要 ECC(纠错码)去给闪存纠错。确保信息传递的错误率趋近于0.

ECC 能力的强弱直接影响 SSD 的使用寿命和可靠性。

NAND闪存为什么会出错?

NAND 每个存储单元从只放一个 bit,叫 SLC,变成可放两个 bit,叫 MLC,现在主流的是放3个 bit,叫 TLC。在存储密度不断增加的同时,器件尺寸变小,存储单元电气耦合性变得很复杂。比如氧化层变得很薄,比如读取单个 bit 需要的读电压控制能力更精密等,总的来说,NAND flash更容易出错了,或者说 NAND 上的噪声增加了。

# 3. LDPC 是什么?

LDPC 全程 Low Density Parity-Check Code,即低密度奇偶校验码。也就是说校验矩阵 H 里面的1的分布比较稀疏。它分为正则 LDPC(regular LDPC)和非正则 LDPC(irregular LDPC)编码。

  • 正则 LDPC:检验矩阵每行有固定 J 个1,每列有固定 K 个1
  • 非正则 LDPC:没有上述限制

# 4. Tanner 图是什么?

由节点和连线组成,可直观的表示LDPC的H矩阵。

节点分为b节点(bit node)(用圆形表示),c节点(check node)(用方块表示)

# 5. LDPC 解码是什么?

LDPC解码分为硬盘决解码和软判决解码。

  • 经典的硬判决算法:Bit-flipping 算法
  • 软判决算法:和积信息传播算法

# 6. 什么是 Bit-flipping 算法

Bit-flipping是一种运用消息传递方法,通过不断迭代达到纠错效果的算法。

核心思想:如果信号中有一个 bit 参与的大量校验方程都校验失败,那么这个 bit 有错误的概率很大。

# 7. 什么是和积信息传播算法

和积信息传播算法(sum-product message passing,简称和积算法),它是在贝叶斯网络、马尔可夫随机场等概率图模型中用于推断的一种信息传递算法。

第6章 FTL 综述
FAT16文件系统

← 第6章 FTL 综述 FAT16文件系统→

Theme by Vdoing | Copyright © 2023-2025 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式