固态硬盘SSD是如何存储数据的?为什么固态硬盘不能长时间保存数据?NAND FLASH的工作原理?U盘存储卡这些是如何存储数据的?

电脑的固态硬盘、手机的硬盘、U盘还有存储卡都属于闪存,如果再细分的话它们都属于NAND FLASH

接下来我们就来说说它是如何存储信息的
它存储信息的基本单元是一个浮栅晶体管,下面是结构示意图

和我们平时见的常规晶体管非常相似,不同的是它在断电以后可以存储信息,而常规晶体管不能存储信息。
先说一下常规晶体管的工作原理,红色小球代表电子,当栅极电压为0时,它是截止的

当我们给栅极施加一个5V电压,栅极就能把黄色区域中的电子吸引到绝缘层附近。因为绝缘层的存在,电子都聚集在这一区域,形成了N沟道

如果我们给DS极施加电压,这个晶体管就会有电流流过

而当我们把栅极电压去掉,电子就不会在这一块聚集,没有形成通路,所以晶体管就会截止

这种常规的晶体管只能控制截止和导通,而浮栅晶体管在常规晶体管的基础上多了两层东西,其中一层是隧穿层,另外一层是浮栅层

它是这样存储信息的,也就是写信息。如果想要它存储电荷,必须给它一个高压,比如20V,这样电子就能穿过隧穿层,进入浮栅层。因为有绝缘层的存在,电子再也不能往前移动了,所以被囚禁在了浮栅层

而当我们把电压撤去,这些电子依然会被囚禁在浮栅层。因为隧穿层本质上也是绝缘体,所以它只能被关押着,这样一位数据就被存储进去了

这些电子能被囚禁多长时间也就是固态硬盘可以存储数据的年限,一般新的固态硬盘可以保存的数据年限是10年,因为随着时间的流失,不断地有电子越狱成功,等越狱的电子多到一定数量时,我们保存的数据就不见了

如果我们想释放这些电子,也非常简单,可以在它的衬底上施加高压,这样电子就被吸出来了

我们删除电脑上的数据其实就是在释放这些电子,浮栅晶体管有没有存储电荷就可以代表0和1,上述过程就是电子的写入和擦除的过程

关于它读数据的原理也非常简单,比如当它没有存储电子的时候,我们给栅极一个低压,它就会导通,因为电压低,电子只能被吸引到这里,所以就导通了形成电流

在它的上方会有检测电流的东西,如果检测到电流,说明它没有存储电子

而如果浮栅晶体管存储了电子,我们还给它加原来那个电压,由于浮栅层里面的电子对这些电子有排斥作用,所以这时候晶体管就不能导通,这时候就检测不到电流,或者电流很小,它就是这样读取数据的。

在实际中NAND FLASH都是以块为单位擦除数据的,而以页为单位读写数据

举例来说,这就是一块数据,每一行都是一页数据,在每一列的两端都有两个普通晶体管,这两个晶体管的不同开关状态就可以控制我们的读写和擦除。

行代表字线,列代表位线,一行就是一个字节,这一块数据总共可以存储8个字节。它的每一列晶体管都是串联的,结构上是这样的:每两个晶体管共用一个N区,可以减少制造难度,它的这一列共用一个衬底

其实不止是每一列,它的这一块数据都共用一个衬底,所以只要我们给衬底施加高压,这一整块的数据都会消失。这就是它为什么是以块来擦除数据的原因。

再来说说它为什么以页为单位来读写,因为字线同时连接到了这一页上所有晶体管的栅极,它没法单独的去控制里面的每一个晶体管

比如我们要给某个晶体管写入数据,就需要给这个字线高压,给它的位线写0,其它的如图。这样这一个晶体管在高压下就会存储电荷,而我们不想存储电荷的话,就给它的位线2V电压,这样由于这些晶体管的沟道效应就阻碍的电子进入晶体管的浮栅层,所以它们就没有存储电荷

如果把存储电荷代表0,此时它代表的数据是01111111

其实在真正的实际应用中,一块数据不可能只有8字节,按小存储芯片来说,它的一页数据也得有32,768位,也就是4KB,每一块存储里面含有64个这样的页,也就是一块数据得有256KB。
而一个NAND FLASH里面含有8,192个这样的数据块,总空间就是2,097,152KB,也就是2个G的存储空间

因为它的每一位都需要一个晶体管,所以仅仅2G的存储卡需要存储数据的晶体管得有170亿这么多(以SLC颗粒,最基础的NAND FLASH为例)

最后我们再来说一下为什么固态硬盘有擦写次数要求,也就是擦写多少次,最多的擦写次数目前是10万次

这是因为在擦写的过程中,电子反复在隧穿层进进出出,这就导致隧穿层损坏,不能阻拦电子,失去了隧穿层应有的作用
