作者mosquito520 ( )
看板Electronics
标题Re: [问题] NAND Flash ECC
时间Fri Jun 6 14:20:24 2014
※ 引述《jfsu (水精灵)》之铭言:
: ※ 引述《looter (隬莉)》之铭言:
: : 非本科系但工作遇到相问题
: : 麻烦版上高手解惑
: : 请问NAND flash 的ECC是
因为NAND本身的特性,每个Cell有写入次数的寿命,
又因为制程跟设计的缘故,每个Block的寿命不一定,
或是因为不正常断电导致资料写入不完全造成的毁损,
所以透过ECC这个演算法去验证每个Block是不是正常。
: : 1. NAND Flash内建的一个演算功能? 写入资料时比对?
: 有内建,也有做在Controller上;Spec都会写。
: 写入与读取都需要。
一般市面的产品分成Pure NAND跟其他产品
Pure NAND就是单纯的NAND Flash,不含Controller,
需搭配Controller或是内建Controller的SOC使用,
非Pure NAND就是NAND Flash加上Controller,一般会被当作另外的产品
例如eMMC、SD卡,将NAND Flash跟Controller封装在一起
或USB随身碟、SSD固态硬碟,将NAND Flash跟Controller做成同一个产品
ECC的检查是放在Controller上面
至於检查的时机我只大概知道几个,
例如第一次烧录前的Bad Block Check之类的,
好像有些eMMC出厂的时候就会跑过一次,但这我有些不是很肯定
具体要看厂商的作法
: : 2. 控制器(CPU)上控制器(Memory controller) 对NAND的侦错?
: 承上,内建的话就在memory里头做,做在controller就由controller做。
: : 3. HW ECC跟SW ECC之间的差异?
: : 先感谢了
: HW的ECC主要都是组合逻辑,比较占晶片空间,也会影响效能
: SW的话...不知道...哈...目前都是做HW的。
: 可能得多给个空间放这些SW code。
HW或SW取决於各自的实现方式,也有可能是混和
例如将ECC演算法的运算用硬体实现,搭配MCU做控制,增加产品的弹性
这部分都是取决於Controller
内建Controller的产品,
以eMMC来说,他不需要让客户知道ECC如何做或是Controller的细节。
他只要让客户知道我的eMMC符合JEDEC的标准就足够,
所以对使用者来说eMMC看起来像是纯粹的硬体,
但实际上eMMC有分FW版本,所以里面是有MCU控制的
eMMC内有分不同的Block作为不同的用途跟不同的可靠度,也是由MCU控制的
所以ECC是在memory还是Controller做?这个问题我就无法回答
也说不定是在Controller里面的memory做XD
Pure NAND的话,就取决於SOC的Controller或是独立的Controller怎麽实作
独立的Controller我没用过,不过应该也是内建MCU去增加产品的弹性
依稀记得以前在网路上有挖到过某一家USB Disk flash controller的Source
内建SOC的controller就不一定,
有一些Vendor把这部分包成library,所以也看不到他实际怎麽运作
有些Vendor这部分是开放的,
至少我之前看过某一家的Code,spare area放的方式跟其他家硬是不一样
(Spare area:每个Block当中,用来记载判断Bad block资讯的地方)
但ECC应该都是透过硬体实现,毕竟ECC越长,演算法的运算量越大,
不大可能牺牲效能去干这件事...
以上给你做个参考:)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.187.83
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Electronics/M.1402035627.A.0B7.html
1F:推 mmonkeyboyy:ecc看bit数的 06/06 21:02
2F:推 looter:看来ECC做法很多,感谢您解答,大推! 06/07 11:26
3F:推 weop388:ECC是错误更正码,而根据不同的ECC,有许多对应的演算法 06/07 11:34
4F:→ weop388:还有bad block detection跟ECC检查是两件没有关联的事情唷 06/07 11:35
5F:推 haworz:ECC是具有更正错误的能力 detection只能侦测有无错误 06/07 22:27
6F:→ haworz:当错误的bit数在ECC的保护范围内 这样还能够解出正确的Data 06/07 22:30
7F:→ mosquito520:我是从应用的角度以及先前跟FAE讨论的印象回答 06/08 01:57
8F:→ mosquito520:所以若是有错误的地方也请尽量指证:D 06/08 01:58
9F:→ mosquito520:ECC有错误更正的能力 但详细的行为我没办法很肯定 06/08 01:58
10F:→ mosquito520:例如检查有错,算回正确资料後是改用新的Block? 06/08 01:59
11F:→ mosquito520:还是持续沿用原来的Block直到整个Block烂掉? 06/08 01:59
12F:→ mosquito520:Badblock侦测我没记错的话是根据sparearea的资料判断 06/08 02:00
13F:→ mosquito520:但ECC检查如果资料有误,不需要mark bad block吗?? 06/08 02:01
14F:→ mosquito520:另外...我不确定ECC操作的单位是Page还是Block...XD 06/08 02:02
15F:→ mosquito520:在家躺了两个多月,有些东西都还回去了XDDD 06/08 02:02
16F:→ mosquito520:还请各位先进多多指教:) 06/08 02:03
17F:推 Baneling:推 06/10 00:15