ECC校验
ECC的全称是 Error Checking and Correction or Error correction Coding,是一种用于差错检测和修正的算法。NAND闪存在生产和使用中都会产生坏块,BBM就是坏块的管理机制,而要有效管理坏块的首要前提就是有可靠的坏块检测手段。如果操作时序和电路稳定性不存在问题,NAND闪存出错的时候一般不会造成整个Block或Page不能读取甚至全部出错,而是整个Page中只有一个或几个bit出错,这时候 ECC就能发挥作用了。不同颗粒有不同的基本ECC要求,不同主控制器支持的ECC能力也不同,理论上来说ECC能力也是够用就行。
当前SSD内最普遍使用的ECC码是BCH码。当数据写入的时候,内部的ECC模块计算数据并生成ECC签名,一般来说这个步骤非常快,因此并不会影响整个SSD太多的性能表现。ECC的签名一般来说都保存在NAND页后部的SA区域,当数据从NAND读取的时候ECC模块回去读取 ECC签名,并对照相同与否来发现出现的错误。
相比发现错误,修复接收到的数据错误更复杂。第一步是检测收到的数据是否出错,这个和上面生成ECC签名的操作一样非常快。如果检测到接收到的数据包含错误比特,就需要去生成独特的ECC算法(比如BCH),这部分会造成性能损失,但是只有在检测到错误时候才做。用生成的ECC算法来修复之前检测到的错误。
必须强调的是,ECC解码过程是可能出现失败的,所以ECC系统架构必须合理的设计才能保证ECC不出错,而ECC能够修复的错误比特数取决于ECC算法设计。
如果ECC纠不过来, 一般会报ECC Fail, 用户表现为Read Fail,有时候ECC甚至诊测不到出错, 就会导致数据错误。
NAND的稳定性需要有多方面保障,ECC只能用来保证部分比特出错时的修复,如果整个页甚至块出现大面积错误,那么只有RAID这类的保护才能修复了。
在企业级产品中对ECC甚至还有更苛刻的要求,那就是数据完整性检查,SSD内部所有的总线, 先进先出数据器部分都要查,可以数据在进入NAND之前的错误。
上图是个4KB页的NAND闪存。(SA区128字节)
1、每当一个page写入NAND闪存,数据会通过ECC引擎,创造独特的ECC签名。
2、数据和对应的ECC签名存都存放在NAND闪存里,数据放在数据区,ECC签名放在SA区。
3、当需要读取数据时,数据和ECC签名一起被送往主控制器,此时新的ECC签名被生成。
4、此时主控把2个签名对照,如果签名相同,说明数据没有错误,数据就会被送往。如果签名不同,数据就会先放在主控里,而不是直接送往主机。
某些主控会把改正后的数据再次写回闪存,另一些则不会,因为谁也不知道下次读取会不会再出错。
ECC的能力也影响到NAND的寿命和数据保存期。当NAND闪存的标称P/E数到了之后,错误数会越来越多,ECC弱的直接就报坏块并标记退休,如果ECC能力足够强,能挖掘出Flash更多潜力,只是效果比较有限。
ECC校验的更多相关文章
- ECC校验原理以及在Nand Flash中的应用
本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍 ECC,全称为Error Correcting Code, ...
- NAND FLASH ECC校验原理与实现
ECC简介 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块.为了检测数据的可靠性,在应用NAND ...
- NandFlash ECC 校验
ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法.如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个 ...
- 说说NAND FLASH以及相关ECC校验方法
Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将 ...
- 512字节纠错1位的ECC校验码生成演示
Flash型号: NandFlash型号:TC58NVG2S3ETA00 pagesize: 2KB oobsize : 64B blocksize : 128K 关于ECC可以参考:http:// ...
- ECC校验优化之路
引子: 今天上嵌入式课程时,老师讲到Linux的文件系统,讲的重点是Linux中对于nand flash的ECC校验和纠错.上课很认真地听完,确实叹服代码作者的水平. 晚上特地下载了Linux最新的内 ...
- STM32下FatFs的移植,实现了坏块管理,硬件ECC,ECC纠错,并进行擦写均衡分析
最近因项目需要,做一个数据采集的单片机平台.需要移植 FatFs .现在把最后成果贴上来. 1.摘要 在 STM32 单片机上,成功移植 FatFs 0.12b,使用的 Nand Flash 芯片为 ...
- ECC内存
ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条.一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定.ECC是“Error Checking and Corre ...
- 【转】nand flash坏块管理OOB,BBT,ECC
0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 ...
随机推荐
- select 详解
In summary, a socket will be identified in a particular set when select returns if: readfds:If liste ...
- selenium自动测试
import requestsimport sysimport iofrom selenium import webdriverfrom selenium.webdriver.common.actio ...
- 【python学习-5】面向对象的python
python是一种面向对象的编程语言,虽然与C++一样,支持面向过程的程序设计,python完全可以使用函数.模块等方式来完成工作,但是当使用python编写一个较大的项目时,则应该考虑使用面向对象的 ...
- odoo 工作流
odoo工作流 介绍 新版本的odoo开始减少workflow的使用,推荐使用workflow-ish的方式来处理工作流过程 很多模块中还是使用到工作流,这里我记录一个简单的实例,欢迎大家给出建议. ...
- JSP(Servlet)中从连接池获取连接
1) 建立连接. 2) 执行SQL. 3) 处理结果. 4) 释放资源. Connection pool:连接池 DataSource: LDAP ( Light directory access p ...
- KNN与SVM对比&SVM与逻辑回归的对比
首先说一下两种学习方式: lazy learning 和 eager learning. 先说 eager learning, 这种学习方式是指在进行某种判断(例如,确定一个点的分类或者回归中确定 ...
- HTTP协议-缓存
HTTP 协议中,缓存更多关心的文档资源的再利用.其目的是减少数据传输,加快相应速度等等.而对于缓存采用的是什么方案,也就是存在内存中还是硬盘中之类的问题,就属于另外的内容了. 假设,我身在广东,但是 ...
- RelativeLayout 高度宽度
RelativeLayout ss = (RelativeLayout) findViewById(R.id.myRelativeLayout); ss.setLayoutParams(new Rel ...
- 【BZOJ-4261】建设游乐场 最大费用最大流
4261: 建设游乐场 Time Limit: 50 Sec Memory Limit: 256 MBSubmit: 21 Solved: 8[Submit][Status][Discuss] D ...
- Educational Codeforces Round 14 D. Swaps in Permutation 并查集
D. Swaps in Permutation 题目连接: http://www.codeforces.com/contest/691/problem/D Description You are gi ...