闪存——磨损均衡、垃圾回收、数据压缩、纠错编码


1.闪存

如图所示,闪存由多个颗粒(Die)组成,每个颗粒由多个分组(Plane)组成,每个分组由多个块(Block)组成,每个块由多个页(Page)组成。

块是擦除的基本单位。
页是读写的基本单位。
当一个存储页被写入数据后,只有在进行了擦除后才可进行新的写入操作。但是闪存的每个存储单元(物理块)的写操作和擦除操作的次数是有限的。在芯片写擦过程中,存储单元隧道氧化层的绝缘性逐渐变差,遭受损耗。
所以必须采用有效的措施减少擦写次数,提高使用寿命。目前研究主要集中以下四个方面。
2
2.1磨损均衡
磨损均衡的简单介绍见磨损均衡。
磨损均衡算法分为静态磨损均衡和动态磨损均衡。
首先应当明确冷热数据的概念。经常读写使用的数据是热数据,很少读写使用的数据是冷数据。由于数据分冷热,所以导致闪存数据块上的读写擦除次数有很大的方差。这也是使用磨损均衡的原因:使闪存块区损耗程度尽量均衡。
动态磨损均衡主要为更新频繁的热数据快服务,忽略冷数据块,虽然算法简单,但是很难实现高程度的磨损均衡。
静态磨损均衡则冷热兼顾,定期将冷数据搬到擦除次数较大的数据块(老数据块)上,以减少对老数据块的读写擦除磨损。但是在搬运过程中会引起写放大问题,具体见垃圾回收部分。有时候回收会占用大量资源而且算法复杂。
影响磨损均衡的三个因素[2]:

回收选择机制。磨损均衡要求擦除当前时刻具有最小擦除次数的块,但是垃圾回收倾向于选择有效数据最少的块进行回收,显然二者很难统一。
空间分配策略。如何处理冷数据的搬移以及新写入数据如何存放,直接由块分配策略决定。
冷热数据分离机制。好的算法应该能够清晰地区分冷热数据,并且能够解决冷数据突然变热以及热数据突然变冷的块反转现象。
2.2垃圾回收
当一个物理页的数据需要更新时,固态硬盘先将新数据写入到别的空的物理页中,再将原物理页的逻辑地址重定向,同时把原物理页标为无效。但是随着更新次数的增加,闪存中会出现大量的无效页。垃圾回收也就应运而生。
垃圾回收简介见垃圾回收

2.3数据压缩
数据压缩降低闪存损耗的方法是降低实际存储数据量。也就是说,闪存使用寿命直接和数据的压缩率挂钩。见数据压缩

2.4纠错编码
纠错编码是为了保证数据可靠性,使其不受位交换、位反转错误的影响。纠错码算法(ECC)主要通过增加校验码来保护存储数据。目前最常用的三种ECC检验码是:汉明码、RS码、BCH码。
————————————————
版权声明:本文为CSDN博主「出门左拐是海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/I_canjnu/article/details/106397220

posted @ 2022-10-09 09:55  咸鱼书生  阅读(383)  评论(0编辑  收藏  举报