Menu Close

SSD 为什么断电以后还能记住数据

你有没有想过,电脑里面存在一个奇怪的矛盾?

S S D 为什么断电以后还能记住数据

R A M 和 S S D 都是硅芯片,也都利用电来保存信息。

但是,电脑一旦关机,R A M 里的内容马上消失。S S D 里的照片、游戏和操作系统,却依然完好无损。

为什么 R A M 像一条只有几秒记忆的金鱼,而 S S D 却像一座上锁的档案馆?

难道 S S D 里面藏着一块小电池吗?

并没有。

S S D 的真正秘密,是把电子困在数十亿个微小的电荷陷阱里。

今天,我们就进入 S S D 内部的微观世界,看看这些电子是怎样保存数据的,为什么 S S D 会磨损,以及 Linux 系统中的 TRIM 到底有什么作用。

第一部分,容易失忆的 D R A M。

电脑的主内存通常使用 D R A M,也就是动态随机存取存储器

在 D R A M 里面,一个存储单元通常由一个晶体管和一个微小的电容器组成。

电容器可以暂时保存电荷。

我们可以把它想象成一个很小的水桶。

水桶里有电荷,代表一种状态。水桶里没有电荷,代表另一种状态。

但是,这个水桶会漏水。

电容器里的电荷会不断流失,所以内存控制器必须定期检查,并重新补充电荷。

这个过程叫作刷新。

只要电脑正在运行,刷新就会不停进行。

这就是 D R A M 名字中“动态”这个词的含义。

一旦电脑断电,刷新立即停止。

水桶里的电荷慢慢漏光,数据也就消失了。

因此,D R A M 被称为易失性存储器

它必须依靠持续的电力保存数据。

S S D 则需要解决另一个问题。

它也要使用电学状态表示零和一,但是断电以后,这些状态仍然必须保留下来。

所以,S S D 不再使用会漏水的小桶,而是建造了一座微型保险库。

第二部分,N A N D 闪存里的电子保险库。

大多数 S S D 使用 N A N D 闪存

闪存芯片里排列着数量惊人的存储单元。每个单元都是一种特殊的晶体管

在这种晶体管内部,有一个被绝缘材料包围的区域,可以用来保存电荷。

在不同的闪存结构中,它可能叫作浮栅,也可能叫作电荷陷阱。

为了方便理解,我们把它想象成一间被厚玻璃包围的微型房间。

这间房间没有普通电线连接外部,所以电子不能自由进出。

当 S S D 写入数据时,芯片会施加一个很强的电场。

在合适的条件下,电子可以穿过极薄的绝缘层,进入电荷存储区域。

这个过程可能涉及一种量子物理现象,叫作量子隧穿。

在日常世界里,一个小球不能直接穿过墙壁。

但是,电子并不完全像普通小球。它也具有波的性质。

在极小的尺度下,当绝缘层足够薄,电场又足够强时,电子有一定概率穿过原本无法通过的屏障。

电子进入以后,写入电压被移除。

周围的绝缘材料就像保险库的墙壁,把电子困在里面。

即使 S S D 不再通电,电子仍然可以停留很长时间。

这就是非易失性存储的基本原理。

不过,S S D 并不能永远保存数据。

电子仍然可能非常缓慢地泄漏。保存时间还会受到温度、闪存磨损程度和制造工艺的影响。

所以,S S D 可以在断电以后保存数据很多年,但重要文件仍然必须备份。

第三部分,S S D 怎样读取数据。

S S D 并不会打开保险库,直接数里面有多少电子。

被困住的电子,会改变晶体管的电学特性。

更准确地说,它们会改变晶体管的阈值电压。

阈值电压,就是让晶体管开始导通所需要的电压。

S S D 控制器会施加测试电压,再观察晶体管是否导通。

通过这个结果,它就能判断存储单元处在哪一个电荷状态。

在最简单的 S L C 闪存中,每个单元保存一个比特。

一个比特只有两种状态,所以控制器只需要区分两个电压范围。

现代消费级 S S D 通常会在一个单元里保存更多数据。

T L C 每个单元保存三个比特,需要区分八个电压范围。

Q L C 每个单元保存四个比特,需要区分十六个电压范围。

因此,现代闪存单元并不只是简单的空和满。

它更像一个带有很多刻度的量杯。

不同的电荷水平,对应不同的数据组合。

一个单元保存的比特越多,容量越大,成本越低。

但是,各个电压范围也会变得更加接近,读取和写入都需要更精确的控制。

第四部分,为什么 S S D 会磨损。

如果电子被关在绝缘层里面,S S D 怎样擦除数据呢?

芯片会施加另一组电压,把电子从电荷存储区域中移出。

但是,N A N D 闪存通常不能像 R A M 那样,直接覆盖任意一个小位置。

闪存写入数据的基本单位叫作页,擦除数据的基本单位叫作块。

一个块包含很多页。

我们可以把一个闪存块想象成一栋公寓楼,每一页就是一个房间。

你可以一次向一个房间搬入家具。

但是,当你要清除旧数据时,可能必须一次清空一整层楼。

如果一个块里既有无效数据,也有仍然需要保留的数据,控制器必须先把有效数据复制到其他位置,再擦除整个块。

这个后台整理过程叫作垃圾回收。

每次写入和擦除,都需要让电子穿过很薄的绝缘层。

反复进行以后,绝缘材料会逐渐产生微小缺陷。

你可以把它想象成一条被反复拉伸的橡皮筋。

使用次数越来越多,材料就会慢慢老化。

绝缘层老化以后,电子更容易泄漏,电压状态也会变得更难区分。

这就是 S S D 写入寿命有限的原因。

为了延长寿命,S S D 控制器会使用错误校正、备用存储块和磨损均衡。

磨损均衡的作用,是把写入操作分散到不同的闪存区域。

如果所有数据都反复写进同一小片区域,那片区域会很快损坏。

如果写入被平均分散,整个 S S D 就能使用更长时间。

第五部分,TRIM 到底做什么。

当你删除一个文件时,操作系统通常只是把它占用的空间标记为可以重新使用。

但是,S S D 控制器可能还不知道这些旧数据已经没有用了。

TRIM 就是操作系统发送给 S S D 的一条通知。

它告诉控制器,这些逻辑存储区域已经不再被文件系统使用,可以当作无效数据处理。

TRIM 不负责磨损均衡。

它的主要作用,是帮助控制器更有效地执行垃圾回收。

控制器整理闪存块时,不必再复制那些已经被标记为无效的数据。

这样可以减少不必要的复制、写入和擦除。

在很多现代 Linux 系统中,TRIM 会通过定时服务自动运行。

我们也可以在终端中手动执行。

屏幕上显示下面这条命令。

sudo fstrim -v /

配音可以读成:

sudo,空格,fstrim,空格,短横线 v,空格,斜杠。

这条命令会告诉 S S D,根文件系统中的哪些区域已经不再使用。

但它不会马上清除每一个存储单元。

真正的垃圾回收和擦除时间,仍然由 S S D 控制器决定。

现在,我们可以回答最开始的问题了。

D R A M 使用电容器中的临时电荷保存数据。

电荷会不断泄漏,所以必须持续刷新。

电脑一旦断电,刷新停止,数据就会消失。

N A N D 闪存则把电子保存在被绝缘材料包围的隔离区域中。

这些电子会改变晶体管的阈值电压。

S S D 控制器读取不同的电压范围,再把它们还原成零和一。

所以,S S D 并不是依靠隐藏的电池保存数据。

它依靠的是硅材料、绝缘层、电场、闪存控制器,以及微观世界中的量子效应。

这就是 S S D 在没有电源的情况下,仍然能够记住数据的真正原因。

如果你喜欢这种用简单语言解释计算机内部原理的视频,请点赞,并订阅 Gate and Kernel。

感谢观看。

我们下一期再见。

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!
Posted in 计算机科学 (编程语言)