【FLASH存储器系列十三】Nand flash出厂就有坏块,NOR flash有吗?

        前面我们在分析flash存储原理时,提到了nand flash的寿命通常比nor flash长,原因是由于nor flash擦除时隧穿通道集中,所以此处的隧道氧化层更容易在多次电子隧穿后损坏,所以nor flash的擦除次数一般十万次等级,而nandflash由于分散隧穿,它的氧化层寿命更长,一般在一百万次等级。同时热电子注入对氧化层的损伤又比FN隧穿要大。所以nor flash理论上更易产生失效的存储单元,为什么总体听到nand flash有坏块,而没有听说nor flash有坏块这个说法呢?

        所谓坏块,本身就是Nand flash中的叫法,因为nand flash的最小擦除单位是block,当某个block因某个或某几个单元在进行擦除时报告了错误,那这一整个block将会被标记为坏块。而nor flash的最小擦除单位不一定是block,也可以是sector,同时nor flash的错误管理机制和nand flash不一样,没有标记一整个block为坏块之说,所以就认为nor flash不存在坏块。但是nor flash也会有概率出现错误的存储单元,只是不叫坏块罢了。

        存储单元的错误有两类:一是出厂时的固有错误,这个只要是flash都会有;二是使用过程错误,这类nand flash出现的概率比nor flash要高。因为nand 阵列的存储单元是串联的,存储单元容易收到相邻单元的影响,而nor阵列的存储单元是独立的,不容易收到相邻单元的干扰。

        运行时的错误称为位反转,产生的原因如下:

        漂移效应(Drifting Effects):漂移效应指的是,Nand Flash中cell的电压值,慢慢地变了,变的和原始值不一样了。

        编程干扰所产生的错误(Program-Disturb Errors):此现象有时候也叫做过度编程效应(over-program effect)。对于某个页面的编程操作,即写操作,引起非相关的其他的页面的某个位跳变了。

        读操作干扰产生的错误(Read-Disturb Errors):此效应是,对一个页进行数据读取操作,却使得对应的某个位的数据,产生了永久性的变化,即Nand Flash上的该位的值变了。

        Nand flash通常使用ECC来检查和纠正错误。每个2K page都有一个64字节的spare area,可用来存放ECC校验结果,在读操作时,将读回的数据做ECC校验,再将校验结果与原来的ECC校验值做异或,就可以知道读回的值是否发生了位反转。如果某个存储单元发生了永久性的错误,编程和擦除均报错,则会在此block的第一个page中的spare area的第6字节(三星、东芝的颗粒是第6字节,其他厂家有可能不一样)标记0x00的坏块信息。

        而nor flash通常使用冗余比特替换来纠正错误,芯片设计时,每组存储单元会有若干个冗余比特,当该组存储单元存在失效的比特,就可以用冗余比特加以替换。所以nor flash一般不会有一整个block都出错的情况,有个别错误时,用冗余的存储单元进行替换后,这个block还可以正常使用。

你可能感兴趣的:(FLASH存储器,硬件工程)