SSD学习笔记-NOR, NAND, FTL, GC基本概念
NOR v.s. NAND
两者都是非易失存储介质。即掉电都不会丢失内容, 在写入前都需要擦除。
NOR有点像内存,支持随机访问,这使它也具有支持XIP(eXecute In Place)的特性,可以像普通ROM一样执行程序。现在几乎所有的BIOS和一些机顶盒上都是使用NOR Flash,它的大小一般在1MB到32MB之间,价格昂贵。
NAND Flash广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中。
NOR VS NAND - 场景
如果以镁光(Micron)自己的NAND和NOR对比的话,详细速度数据如下:
NOR VS NAND - 性能
NAND Flash
NAND Flash目前的用途更为广泛,它的颗粒根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。现在高端SSD会选取MLC甚至SLC,低端SSD则选取TLC。SD卡一般选取TLC。
SLC,MLC,TLC
NAND Flash的组成
一个典型的Flash芯片由Package, Die, Plane, Block和Page组成,其中die内部可以通过3D 堆叠技术扩展容量,譬如三星的V-NAND每层容量都有128Gb(16GB),通过3D堆叠技术可以实现最多24层堆叠,这意味着24层堆叠的总容量将达到384GB!
NAND Flash组成
写放大
Block是擦除操作的最小单位,Page是写入动作的最小单位,一个Block包含若干个Pages。当我们有了块干净的Flash,我们第一个想干的事就是写些东西上去,无论我们是写一个byte还是很多东西,必须以page为单位,即写一个byte上去也要写一个page。要修改一个字节,必须要擦除,擦除的最小单元是Block。
Flash Translation Layer (FTL)
NAND flash的寿命是由其擦写次数决定的(P/E数 (Program/Erase Count)来衡量的),频繁的擦除慢慢的会产生坏块。那么我们如何才能平衡整块Flash的整体擦写次数呢?这就要我们的FTL登场了。
Flash Translation Layer原理
FTL简单来说就是系统维护了一个逻辑Block地址(LBA,logical block addresses )和物理Block地址(PBA, physical block addresses)的对应关系。 有了这层映射关系,我们需要修改时就不需要改动原来的物理块,只需要标记原块为废块,同时找一个没用的新物理块对应到原来的逻辑块上就好了。
垃圾回收(GC,Garbage Collection)机制定期回收这些废块, 和Java,GO等语言的GC机制类似,应用不需要像C/C++那样关注内存释放,GC定期扫描,回收释放内存。目标是让Flash最小化擦除次数,最大化使用寿命。
SSD一年不通电 数据会不会丢?
不少读者认为在长时间存储数据的情况下,机械硬盘的安全性是要高于固态硬盘的,因为机械硬盘是通过磁盘来存储数据,断电存放时间可以达到十年甚至更久,而固态硬盘是使用浮栅晶体管和内部电子保存数据,假设固态硬盘在长时间不通电的情况下,内部数据会有很大的几率因浮栅内电子的衰减而彻底丢失,并且无法恢复,那真的是这样吗?
固态硬盘不通电不会丢数据
固态硬盘采用NAND Flash作为存储介质,其能防止SSD在长时间不通电的情况下数据丢失,所以即使SSD在长时间不通电的情况下,一般也不会出现数据丢失的现象。
我们的数据放在SSD里安全吗?
随着闪存成本的不断下降,SSD的应用越来越广泛,其速度相较于机械硬盘可谓是天差地别,但是我们的数据存放在里面真的安全吗,它能有机械硬盘抗造吗?
SSD寿命计算公式
我们知道NAND Flash单元的寿命是由擦写(P/E)次数决定的,而目前大部分的SSD都是由TLC颗粒组成,一般的TLC有1000次左右的擦写寿命,但不是我们向这块SSD写入1000次数据它就报废了,它的寿命是跟主控、容量、OP空间等众多因素相关,根据众多实测证明,SSD的实际承载写入量要远远大于标称写入量,所以我们将数据存放在SSD内是安全的,尽可以放心。
会什么会有数据丢失的现象?
NAND是通过把电子禁锢在Gate里来存储数据,当温度越高时,电子便会越活跃,进而会造成电子丢失的现象,这也就会造成数据丢失。
电子与温度关系图
固态技术协会(JEDEC)也早已经对此做出了相关规定,在30℃不通电保存的情况下,消费级SSD里的数据存放一年是没有问题的,但是如果掉电保存温度过高,丢失数据的风险将会大幅增加。
结论
固态硬盘作为存储使用的情况下,我们不需要担心使用寿命的问题,妥善使用即可,虽然它拥有众多的数据保护机制,但是笔者并不建议长时间掉电放置,毕竟SSD是买来用的。
相关问答
NANDflash 和NORflash的区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
flash 存储器 寿命 ?Flash存储器的寿命取决于其写入/擦除(WearLeveling)算法和使用模式。通常,Flash存储器的寿命可以达到数十万到数百万次的写入/擦除循环。然而,频繁的写入操...
程序员在写代码的时候bug太多会给计算机造成损坏吗?为什么?原则上程序员写代码调试对于计算机的冲击是有限的,但编程来讲不是什么都是绝对的,如果是windows编程写的代码对于cpu或者硬盘有非常大的冲击,也会造成计算机损...
flash 类型怎么选择?在选择Flash类型之前,需要考虑以下几个因素:1.存储容量:Flash存储器通常有不同的容量规格,从几MB到几TB不等。因此,你需要根据自己的需要来确定所需的存储...
固态硬盘 擦写 500多次,会出现什么情况?感谢邀请,对于固体硬盘问题,虽然它提升了开机速度,但是对于擦写之后的寿命问题,我想很多人害怕会用不久。那么首先是需要了解一下固体硬盘怎么存储的。固体...
Flash 存储器的作用?FLASH存储器又称闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区...
Windows10必做的优化?关闭整理磁盘碎片。磁盘碎片整理会对硬盘进行频繁地擦写,会大大损耗SSD内部Flash的寿命,并不适用于SSD。如果装了SSD硬盘,我们可以将里面的整理计划进行关闭...
笔记本电脑固态硬盘 寿命 - 粽子_581063DB 的回答 - 懂得基于闪存的固态硬盘基于闪存的固态硬盘(IDEFLASHDISK、SerialATAFlashDisk):采用FLASH芯片作为存储介质,这也是我们通常所说的SSD。它的外观可以...
u盘 擦写 次数怎么算?u盘读写次数是有限制的,它不是无限的,因此你的u盘也是有寿命。大部分u盘的读写次数是在10万次左右,也许有些朋友就担心那我读写了10万次u盘不就报废了吗?其实...
时常对U盘格式化会影响 使用寿命 吗?-ZOL问答格式化应该也算是在使用u盘当然也就对他的寿命有影响你中的病毒是autorun.ini把显示隐藏文件选项和隐藏收保护文件点了手动删除就可以了对U盘进行格式化次...