NAND 闪存原理,为什么不应该把手机存储、固态硬盘用得满满

手机越用越慢,排除各类软件后台等因素,手机存储也会影响手机运行速度,特别是在可用空间较少的时候。

什么是 NAND 闪存?

内存颗粒又称闪存,是一种非易失性储存器,掉电不会丢失内容。闪存颗粒有很多变种,其中 NAND 闪存常用于固态硬盘、手机存储器。

闪存颗粒:

NAND 闪存原理,为什么不应该把手机存储、固态硬盘用得满满

根据 NAND 颗粒每个单元内储存的比特数不同又可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell)、TLC(Triple-Level Cell)和 QLC(Quad-level cell)

储存密度越高读写性能可能会越差、寿命会越短,但成本越低。目前市面 90% 以上的固态硬盘、手机都是 TLC 颗粒。

TLC 颗粒寿命一般在1000次完全写入(1000 P/E)左右。所谓完全写入,例如 128G 存储,写入 128G 数据为一次 P/E。

NAND 颗粒的组成:

NAND 闪存原理,为什么不应该把手机存储、固态硬盘用得满满

在 NAND 闪存颗粒中:

1.Block 是最小的擦除单位 Block 包含多个 Page。

2.Page 是最小的写入单位

3.删除数据时,数据并没有擦除,而是把文件的储存空间(Page)标记为作废。

4.必须先擦除才能写入数据

当写入数据的时候:

如果存储空间充足,芯片会找一个新的(干净的/擦除过的) Block 以 Page 为单位写入数据。

如果没有太多空闲容量时(已经没有闲置的(干净的)整个Block,只有作废的 Page),芯片会将某个 Block 读取到缓存,然后将原本的数据和新添加的数据一起写入刚才的 Block 。

这种情况造成了原本只需要写入一个 Page 变成了一个 Block,这就是闪存的写放大(Write Amplification)。这种情况下原本只要写入 4K 的数据,却造成了整个 Block 的写入,写放大128倍。重新写入整个 Block 的操作造成速度变慢。

可用空间不足时写入数据的步骤:

NAND 闪存原理,为什么不应该把手机存储、固态硬盘用得满满

前面提到 NAND 闪存擦写次数是有限的,写放大不仅使写入性能下降而且加速了 NAND 闪存的磨损。

垃圾回收(Garbage Collection)

当我们删除文件的时候,系统利用 Trim 命令通知闪存主控,闪存主控将他们标记为废块,不再搬动数据。并在适当的时间回收废块。

寿命均衡(Wear Levelling)

为了避免某些物理快在写入后就没有再次更改(例如系统文件),而一些块不断的擦写导致有些块寿命还很长,而有些块磨损严重,闪存主控会在适当的时机给文件更换位置。

结论:

从上面可以看到闪存主控会在适当的时机不断的腾挪数据存储在 NAND 闪存物理块的位置,起到均衡磨损、减少写放大的作用。

随着数据越来越多,闪存存储空间越来越少,留给主控腾挪的空间也越来越少, IBM Zurich Research Laboratory 做的研究表明写放大和空闲空间关系极大。如下图:

NAND 闪存原理,为什么不应该把手机存储、固态硬盘用得满满

空闲块少后,写放大达到3-4倍,当闪存存储空间使用大于75%后,会因为写放大而大大降低写入性能。所以删除掉一些文件吧。


分享到:


相關文章: