admin管理员组

文章数量:1530517

固态硬盘主要由主控、缓存、闪存组成,数据通过接口进入主控,经主控中转调配后储存到各个闪存颗粒中。闪存的基本存储单元是"浮栅晶体管"

浮栅被二氧化硅包裹,和上下绝缘,即使在去除电压之后,栅极内的电子也会被捕获,断电时也能保存电子,这就是固态硬盘掉电也能存储数据的原理。

现在浮栅中的电子数量高于中间值,表示“0”,如果要写入成"1",要先擦除才能写入,在P级上施加正电压,浮栅中的电子会因为量子隧穿效应,穿过隧穿层被吸出来,现在浮栅中的电子数量低于中间值,表示1。

在控制栅施加正电压,这使得来自源极的电子穿过隧穿层并到达浮柵层,每次隧穿所需的电压取决于隧穿层的厚度,现在浮栅中的电子数量高于中间值,表示0

如果要读取数据,往控制极加一个较低的电压,就能导通这两个N级,因为电压较低,不足以让电子隧穿,而存储“0”的浮栅相比储存“1”的浮栅有更多电子,会抵消控制极的电压,所以控制极需要更大的电压才能导通两个N极,因此通过阈值电压的不同,来判断浮栅中是否有电子。单元中的电压与阈值电压进行比较,高于阈值电压识别为0,低于阈值电压识别为1。

每次对单元进行编程或擦除时,一些电子都会卡在氧化层中,抵消控制级的电压,这些电子的累积,使得控制极为了导通两个N极所需的电压越来越大,一旦氧化层不能够在编程和擦除状态之间找到可靠的区分点,则该单元被认为是坏的。

单阶存储单元SLC,电子数量只有两种状态,每个存储单元只能存储1bit的数据,由于只有两个级别,因此两个级别之间的电压余量非常“宽”,这使得读取单元的速度更快,原始误码率很低,因此微小的电荷泄漏具有相对较低的影响。同时也有一个缺点,就是相较于多阶存储单元,每个单元的成本更高。
MLC每个存储单元能存储2bt数据,有4种状态,阈值电压与3个电平进行比较。

TLC每个存储单元能存储3bit数据,有8种状态,阈值电压与7个电平进行比较。

QLC每个存储单元能存储4bit数据,有16种状态,阈值电压与15个电平进行比较,相较于单阶存储单元,多阶存储单元每个级别之间的电压“宽”度就分得非常细,寿命更短,读取速度更慢。多阶存储单元通过更多级别进行比较,读取操作需要更加精确,原始误码率高,任何电荷泄漏都会产生更大的相对影响,优点是单位容量高,成本相对较低。

现在你看到的单位是“块”,字线同时连接这一页上的所有晶体管的控制极,听以写入时都是以页为单位写入和读取数据的,每一列的浮栅晶体管都是串联的,它的每一列的两端,都有两个普通晶体管,两个晶体管的开关状态就可控制读写

给需要写入数据的字线高压,这一行的浮栅晶体管都会被注入电子,那么就要阻止其他浮栅晶体管注入电子,给不需要写入数据的字线一个较低的电压,导通位线,给不需要写入数据的位线一个电压,就能带走电子,阻止注入电子
给P极一个电压就可以擦除数据,要注意的是,因为整个块都共用一个P极,所以闪存都是以块为单位擦出数据的。

给不需要读取数据的字线一个较低的电压,导通位线,给不需要读取数据的位线一个电压导通即可,这样不需要读取的浮栅都被导通了,给控制栅加读取电压,判断漏极-源极之间是否处于导通状态。

以MLC为例,如果一个浮栅晶体管储存2bit数据,一页是4K就需要16384个浮栅晶体管,有256个页,一块就是1M,一个512GB的闪存就需要524288块,指甲盖大小的颗粒中就有2万亿个浮栅晶体管。主控过若干通道并行操作多块闪存颗粒,类似Raid0,这样大大提高了底层带宽。缓存虽然叫做缓存,但其实闪存并不需要缓存帮忙写入数据,主控每把一笔数据写入闪存中时,便会记录下该数据的逻辑地址到物理地址的映射关系,也就是映射表。

其中映射表设置了两个区块池,一个是空闲池,一个是数据池,空闲池记录的就是空闲块的地址,数据池记录的就是有效数据的地址,这样当想要读取数据时就会根据这个映射读取到真实的数据,缓存就是用来储存这张映射表的。

如果没有缓存颗粒,就会使用闪存颗粒中的部分空间来做缓存,写分为新写入和覆盖写两种,主控根据空闲池中的“地址”找到新的块,将数据写入到页,主控会把数据存放的“地址”记录到数据池中。

主控根据空闲池中的“地址”找到新的块,将现有的数据和需要改写的数据合并为新的,一起写入到页,将“地址”记录到数据池中,旧数据的“地址”就会被删除,而不是擦除块,这就是固态硬盘删除数据还有机会能找回的原因。

就是垃圾回收机制,主控根据空闲池中的“地址”找到新的块,根据数据池的地址,将有效数据迁移到新的块,将有效数据的地址记录到数据池中,然后擦除块,将块的“地址”记录到空闲池中,注意,如果整个块并没有被写满,但是块上有无效数据,主控并不会直接擦除块,而是把有效数据,写到其他页上继续使用,这就造成了写入放大。

覆盖写时会将现有的数据和需要改写的数据合并为新的,写入另一个块中,原本就已经写入过一次了,再加上这次搬迁就又多了一次写入,如果块上有无效的数据,会连同无效数据一起搬到别的块上,这样写入量变的更大,就会增加硬盘负担,影响闪存速度和闪存寿命。

禁用删除通知机制,刚好弥补了这一缺点,作为底层的固态硬盘并不知道哪些数据是有效的,哪些是无效的,禁用删除通知只是一种命令,只负责通知固态硬盘哪些是无效数据,这样覆盖写时就不会把无效数据,搬运到新块上了。

禁用删除通知命令是和垃圾回收是互补的,禁用删除通知命令给主控的可删除数据越多,垃圾回收操作需要转移的数据就越少,也就延长了硬盘的使用寿命,还有什么方法可以延长硬盘的使用寿命吗?动态磨损平衡

动态磨损平衡,主控在使用块进行擦写操作的时候,优先挑选写入次数低,相对年轻的块,还有更复杂的,静态磨损平衡,主控会把长期没有修改的老数据从年轻块当中搬岀,迁移到年老的块中,腾出年轻的块使用,如果所有闪存容量为256G,开放给用户使用也是256G,现在,我们把全盘写满,接着删除一些文件,能不能写入新的数据呢?

答案是不能,因为空间已经满了,无法把它回收到空闲池,在固态硬盘底层,如果要写入新的数据,必须要有可用的空闲块,才会擦除待回收的块到空闲池中,这样就需要部分预留空间,这就是买的256G的硬盘只有240G的原因

这部分空间主控是看不到的,这部分预留空间,不仅仅用做垃圾回收,事实上,SSD内部的一些系统数据,比如SSD固件,SSD系统管理数据,映射表也需要预留空间来存储。

总结,闪存需要先擦除才能写入,不能覆盖写。闪存是有寿命的每擦除一次寿命便会减少一点,删除的数据,并不会被马上擦除,只是逻辑地址被删除了所以被删除的数据还有一定的机会找回。缓存虽然叫做缓存,但其实闪存并不需要缓存帮忙写入数据。固态需要部分预留空间来作为缓存,垃圾回收,存储固件,存储系统数据等,这就是你买的固态硬盘标注容量,会比实际容量少的原因

本文标签: 固态硬盘也能工作原理原理