硬碟上的资料是否有重量?

我的学生前些日子突然脑洞爆发,问我:“存满资料的硬碟是不是比空硬碟重?资料是否有重量?”

我也查了大量的资料,也和朋友老狼做了持续的辩论。所以这里简单的介绍一下:简单来说就是存了资料後,硬碟只有磁级变化,质量不变;而SSD因为锁住了更多的电子元件(但要记住,是0变多了,而不是1 ),所以变重了,尽管只有几乎可以忽略的一点点!

我先将硬碟分为传统磁介质硬碟和固体硬碟两种,两种硬碟有不同的答案。和他不同的是,我希望从空硬碟什麽样,存满资料的硬碟什麽样的角度来推导出结论。

空硬碟什麽样?
大家买回去的硬碟上面什麽也没有,还需要重新分区等等操作,是不是硬碟上面就空空如也,什麽也没有呢?其实并不是。

磁介质硬碟出厂时做过低级格式化,拿到用户的手上时已经被写入柱面、磁道、扇区等等信息,在没有内容的数据区,都被磁化成0的内容。所以空机械硬碟是绝大部分为0内容,很小部分为资料(假设0,1参半)。

SSD存储介质采取NAND Flash。为了简化起见,我们只讨论SLC。MLC/TCL/QLC也类似,并不影响结果。空的SSD出厂前已经被写入原始的FTL映射表,空闲块也已经被预擦除(不是必须,结果一样)。和卓克认为的不一样,被擦除後是全1,也就是说空SSD是绝大部分是1,很小部分是资料(也假设0,1参半)。

存满资料後有什麽变化?
为了简化起见,我们假设存满的资料也都是0,1参半。那麽存满资料後硬碟发生了什麽变化呢?

磁介质硬碟资料是通过调整磁介质磁极方向来存储的。卓克的比喻十分形象,这里借用一下:机械硬碟是一个筐子,磁介质是里面放的很多香蕉。0是香蕉把朝北,1是香蕉把朝南。存满资料就相当於,原来香蕉把都朝北,现在一半朝北一半朝南。请问筐子重量会不会变化呢?当然不会!

SSD的NAND Flash存储,卓克认为是测量被囚禁在浮动栅(Float Gate)里面的电子的数量,大於100就是1,小於就是0。因为电子有质量,因为空的SSD以前都是0,现在被囚禁了很多电子,导致0,1参半,所以会重一点点。但是我们前面提到,空SSD实际上绝大部分是1,存满资料实际上是0变多了,那是不是意味着存满资料,SSD变轻了呢?

实际上,是会重一点。卓克犯了两个错误,负负的正,结论反倒是正确的。实际上存0比存1重,所以SSD会变重点。那麽为什麽存0反倒比存1重呢?这要从NAND Flash的存储原理说起。

闪存的工作原理
闪存的基本原理在1980年代之後基本就没有变化过。它的构成和场效应管(MOSFET)十分类似:
闪存的工作原理1

它由:源极(Source)、漏极(Drain)、浮动栅(Float Gate)和控制栅(Control Gate)组成。相对场效应管的单栅极结构,闪存是双栅极结构。浮动栅是由氮化物夹在二氧化矽材料(Insulator)之间构成。
闪存的工作原理2

在控制栅加正电压,将电子(带负电)吸入浮动栅。在此後,由於浮动栅上下的二氧化矽材料并不导电,这些电子被囚禁(Trap)在浮动栅之中,出不去了。这样无论今後控制栅电压有否,这个状态都会保持下去,所以闪存可以掉电保存资料。注意写操作完毕後,该闪存单元存储的是0,後面我们将会介绍为什麽。

我们的擦除操作(Erase)刚好相反:
闪存的工作原理3

在源极加正电压利用浮空栅与漏极之间的隧道效应,将注入到浮空栅的负电荷吸引到源极,排空浮动栅的电子。这时读取的状态是1。

那为什麽有电子是0,没电子是1呢?以为读取的时候,需要给控制栅加一个低的读取电压,对於被Program过的闪存单元来说,被囚禁的电子可以抵消该读取电压,造成源极和漏极之间是处於被关闭的状态:
闪存的工作原理3

如果是被擦除过的就刚好相反,源极和漏极在控制栅的低电压作用下,处於导通状态:
闪存的工作原理4

也就是说通过向控制栅加读取电压,判断漏极-源极之间是否处於导通状态来读取闪存单元的状态,如果被Program过的,就是处於关闭OFF状态,为0;而被Erase过的,就是处於导通状态ON,为1。

总结一下,就是浮动栅(Float Gate)里面没有电子,就是1;如果有电子,就是0。因为0有少许电子,比没有电子的1的状态要重一些。空的SSD大部分是1,没有电子;写满後0状态变多了,有了更多的电子,所以重一丢丢。

答疑
今天我就其中思考比较深入的问题统一就我的理解做一个解释。

Q:好像也不对,虽然局部锁住了电子,但整体上SSD是电中性的,所以应该也会有些局部的原因抵消了电子的电负性,比如正离子、空穴之类。
Q :这样会造成电源流出和流入的电子数量不匹配,电荷不守恒了。我猜电子是从衬底中来的,浮栅充电後衬底多了相应数量的空穴。
Q :但是电子带负电,电子多了如果不是本来就在里面的,那还有别的什麽离子进去啊。
A:总的来说疑问就是多余的电子从哪里来?半导体不是电中性吗?

思考这些问题的同学应该是具有一定的半导体的知识。这很好,我们都知道场效应管(MOSFET)其中虽然分为N型和P型,但整体是电中性的,即正负电荷总数相等。昨天的这幅图:
闪存的工作原理5

让很多同学认为电荷是从基底/衬底,也就是P型半导体抽上来的,总体电子数量不变,因为电中性。这是因为我为了面向一般受众,将一些具体的细节没有提及,难怪产生误解。下面这个图应该就比较清楚了:
闪存的工作原理6

我们可以看到源极Source和漏极Drain都是N型半导体,基底是P型半导体。与一般MOSFET不同的是,这里有两个Gate,他们之前由氧化物绝缘层隔离。

Program(写0)的过程是这样:
闪存的工作原理8

源极接地,漏极接正电压,同时在控制gate接正电压。电子就从源极向漏极流动,在控制gate上电压足够高时,电子会穿过氧化物绝缘层(tunneling),被捕获(trap)在浮动gate中。这个电压要刚刚好,既要让电子穿过第一个氧化物绝缘层,又不能让它们继续穿过下一个氧化物绝缘层到达控制gate。

看到这里,相信同学们已经清楚电子从哪里来的,半导体的电中性怎麽样了吧。电子是从source的ground来的,没有东西被电离。电子确确实实是多出来了,它们会被关在那里,直到下一次越狱的机会。

值得一提的是,电子并不会被永远关在那里,如果闲着不动的话,有逃离的机会:

我们的资料存在固态硬碟上安全吗?

Q:感觉应该是充放电造成电势能变化,进而E=mc2造成质量变化。
Q:不只有内能,假设内能完全不变,电子从分散到聚集电势能肯定增加的。磁场排列从无序到有序能量肯定也是增加。
Q:是不是熵增加了?
A: 是势能发生了变化,从这个角度理解也可以。熵实际上应该是减小了。

Q:要是能做实验观测到重量变化就好了哈哈哈哈,原来一直在想这个问题,是不是写满了就变重了
A: 这个目前来说没法做实验。电子质量是9.10938356 × 10(-31)kg,就算trap了一亿个电子,我们的测量仪器还没有这种灵敏度。其他的干扰因素,如风吹啊,灰尘啊等等带来的影响就比这增加的一点点质量要高得多。

结论

存满资料後,机械硬碟只有磁级变化,质量不变;而SSD因为锁住了更多的电子(但要记住,是0变多了,而不是1),所以变重了,尽管只有几乎可以忽略的一点点!

生活中真是充满了各种有趣的意想不到的知识!


<<:  【左京淳的JAVA WEB学习笔记】第九章 电商网站-基础配置

>>:  Cookie与Session

快速查询的秘密武器B+树索引-Part1(无索引如何搜寻、基本索引概念)

进入到这篇之前要先确保大家有一些概念。 大家要知道Innodb各个资料页物理上并没有连在一起,而是透...

不只懂 Vue 语法:试解释如何使用导航守卫?

问题回答 导航守卫(Navigation Guard)可以在 3 个地方使用,包括全域、元件和路由。...

Day 19 - Spring Boot & Cookie

Cookie 介绍 Cookie 指得是储存在Client (用户)端上的资料,是一种在服务器与浏览...

DAY13 - 认识与操作 firestore

上一篇,建立了firestore资料库,并且成功与前端连接,读取到资料库的资料,那麽这一篇就来认识一...

[WMX3] 7.IO - Set/Get OutBytes

在还没开始撰写程序前可以先开启WMX3 Console选取I/O 图上显示的红底0.0第一个字代表位...