Flash存储中的纠错编码

2012-03-19 08:22:48张有光金令旭王名邦
北京航空航天大学学报 2012年9期

康 旺 张有光 金令旭 王名邦

(北京航空航天大学 电子信息工程学院,北京 100191)

因闪存(Flash memory)具有非易失性、高密度、高存储速度、低功耗、防震等诸多优良特性而备受人们青睐,随着移动通信的发展以及便携式设备的普及,闪存的应用也越来越广泛,成为当前市场上最主流的固态存储器之一.闪存通常由若干闪存块(block)组成,闪存块由若干物理页(page)组成,而物理页又由若干基本的存储胞元(cell)组成.闪存根据胞元内部结构的不同可分为“或非(NOR)”型和“与非(NAND)”型两种,而根据胞元可存储比特(bit)数目的不同又可以分为SLC(Single-Level Cell)型和MLC(Multi-Level Cell)型两种,SLC型Flash的胞元状态只有两个,只能存储一个比特信息,而MLC型胞元状态有多个(4~256或者更多),可以存储多个比特信息[1].本文只讨论 MLC NAND Flash.

NAND Flash以页为单位进行读写操作,且在重写之前需对目标区域进行擦除,而以块为单位进行擦除,且擦除次数是有限的(SLC为10万次左右,MLC为1万次左右),因此,提高Flash的生命周期是当前研究热点之一,也是Flash大规模普及面临最严重的挑战之一.目前的研究方案有很多,涉及不同的层次,其中采用磨损均衡的方式以平衡各个块的擦除次数主要是考虑设计一个良好的文件系统,该方案易于操作也比较有效,但是其会带来额外的数据擦除[2];而采用存储编码(storage coding)通过对存储的数据进行编码,以控制存储状态转移,从而提高存储单元的重写次数,减小块的擦除次数,如 floating codes[3],buffer codes[4], multidimensional Flash codes[5], rank modulation[6]等,其同样会带来系统设计上的难度,目前难以应用于实际系统;另外……

登录APP查看全文