news 2026/5/26 0:26:09

【SSD】闪存数据完整性 重读 ECC纠错 RAID 数据随机化简述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【SSD】闪存数据完整性 重读 ECC纠错 RAID 数据随机化简述
闪存的特性就是随着闪存的使用以及数据存储时间的边长,存储在闪存里面的数据据容易发生比特位翻转,出现随机性错误。这个问题随着flash cell的变小更加严重,所以需要采用一些数据完整性的技术来确保用户数据可靠不丢失。

1.读错误来源

  • 擦写次数增多
  • Data Retension
  • 读干扰
  • cell之间的耦合电容的干扰
  • 写错误

写错误主要发生在MLC或者TLC 2-pass的过程中,先写Lower Page,然后再写Upper Page,因为在写Upper Page的时候,它是基于之前的Lower Page的状态,如果Lower Page已经出错,写Upper的时候,Lower Page数据是不会经过ECC纠错的,就会导致写错误。有写错误自然会出现读错误。

2.重读(Read Retry)

发生电压平移的问题后,如果还用之前的参考电压去读取的话,就可能出现读取数据失败的情况,使用重读之后,可以不断更改参考电压,来找到正确的电压点。

3.ECC纠错

ECC纠错模块在SSD的主控上面,常用的ECC纠错算法有BCH和LDPC,后面会学。

用户数据都是写在页上面,页的空间除了用户空间,还有OP(Over Provisioning预留空间),这部分空间用于写ECC校验数据;

静态ECC纠错

ECC纠错单元和ECC校验数据的大小固定,所以纠错能力始终保持不变。

动态ECC纠错

根据需要的ECC能力调整ECC校验数据的在Page里面站的比例大小

4.RAID

当闪存中数据bit发生翻转的个数超出ECC纠错能力范围后,ECC纠错就无能为力了。这个时候就可以使用RAID来纠错,原理如下:

一块固态硬盘有5个Die,只需要将用户数据分成4份(每一份都不同)和校验数据同时写入5个Die中,Die 0~3存储的是用户数据,Die P则存储校验数据,为Die 0Die 1Die 2 和Die 3数据之异或。假设Die 1上出现ECC不可纠的错误,那么可以 通过读取Die 0Die 2Die 3Die P对应位置上的数据,然后做异 或”,就能恢复出Die 1上的数据。

5.数据随机化

在刚开始写Flash的时候,如果只是简单的把数据+纠错码写进去,就会遇到很多错误,有时候是写失败,有时候是读出来的数据数据失误率高,那就很有可能是数据没有随机化,Flash是通过控制栅极施加电压来存储数据的,不断的输入全0或者全1,容易导致Flash内部电子不均衡,从而导致信号抗干扰性下降,导致这些数据在Flash中的可靠性变差。

原因:

让0和1的分布充分隔离。

虚线是没有随机化的分布,会发现有些状态的分布变宽了,很容易和周边发生交集。实线是随机化后的分布,每个状态都充分隔离。

降低相邻单元Cell之间耦合电压产生的影响

对一个单元影响最大的是周围4个直接相邻的单元,这些单元会影响到中间单元的阈值电压,所以在SSD主控或者Flash中有数据随机化模块,对用户数据加入扰码,使“0”和“1”均衡。

数据随机化的存放位置

数据随机化放置于数据最终写到闪存之前,ECC加校验数据之后;在ECC纠错之前还需要数据去随机化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 0:26:07

源码不迷路:深入浅出OpenClow的模块化代码结构与核心文件夹导读

一、引言:为什么需要一份源码导读? 在开源世界里,阅读源码是开发者提升技术深度最有效的途径之一。然而,面对一个动辄数万行代码的中大型项目,很多人的第一反应往往是茫然——不知从何处下手,不清楚每个文件夹的职责边界,更不理解模块之间如何协作。这种"源码迷路…

作者头像 李华
网站建设 2026/5/26 0:25:53

北光恒电:安捷伦N5182A信号源 开机异常、自检报错、输出异常故障排查

安捷伦N5182A信号源是一款高性能射频信号发生器,凭借更宽的频率覆盖、更低的相位噪声及稳定的调制性能,广泛应用于高端通信测试、元器件精密验证、接收机调试等场景,是实验室研发和工业生产中不可或缺的核心测试设备。长期高负荷运行、操作不…

作者头像 李华
网站建设 2026/5/26 0:17:43

半导体元件(二极管/三极管/MOS管/IC)损坏诊断全解

半导体元件(二极管、三极管、MOS 管、集成电路)是 PCB 的核心功能单元,对过压、过流、ESD、高温极度敏感,损坏后直接导致电路功能失效、短路烧板。很多工程师维修时盲目更换芯片,不仅成本高,还易误判。​一…

作者头像 李华
网站建设 2026/5/26 0:11:31

开发转兼职DBA(二):执行计划教我做事

开发转兼职DBA(二):执行计划教我做事 查询慢了不知道为什么,加了索引还是慢,复合索引怎么建,执行计划怎么看——这些不是DBA的专利,是每个写SQL的开发者迟早要面对的事。 文章目录 开发转兼职DB…

作者头像 李华
网站建设 2026/5/26 0:09:01

靶场启动失败的五大根因与渗透测试新手生存指南

1. 别再盲目刷靶场:为什么90%的新手练了半年还是卡在“连不上靶机”这一步你是不是也这样:下载了十几个CTF平台、靶场镜像,兴致勃勃地配好VirtualBox,导入ISO,启动——然后卡在黑屏、蓝屏、网络不通、SSH连不上、靶机I…

作者头像 李华