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最小化擦除次数,最大化使用寿命。
NAND和闪存转换层(FTL)
我们使用的固态硬盘(SSD),U盘等存储设备,有别于机械硬盘,其实际存储颗粒为NAND。而NAND存储颗粒受其物理特性影响必然存在坏块,同时也不能直接写0写1。
NAND有别于机械硬盘,主要体现在一下几个方面。
一,如果你想往某个区域存储一个字节的数据,比如0x55,首先需要确认当前区域是没有写入过数据的,也就是必须是全部0xFF的,因为NAND写入的时候每个bit只能从1变成0,不能从0变成1。如果不是全FF,则需要擦除操作,讲该区域全部变成0xFF,才可以写入你想要的0x55写进去。
二,NAND还存在另外一个特性是数据容易出错,写进去的是0x55,回读可能是0x5A,这时候需要ECC算法将错误的数据纠正过来,ECC算法比较复杂,在此不论述。
三,NAND存储颗粒的擦写次数是有限的,一般一个块也就是3000次左右,不能无线擦写。
四,NAND存储颗粒是存在坏块的,也就是实际物理地址上的某个区域是不能正常存储数据的。
这些特性都导致电脑不能向机械硬盘一样直接操作NAND。比如我们的电脑管理了全部文件内容,管理这些文件内容的功能叫文件系统。类似FAT文件系统会在固定的区域存储所有的文件信息,包括文件名,大小,作者等,例如存储在地址0里面。而我们需要频繁的修改文件,那么地址0存储的文件信息就需要频繁的更新,假如存储地址0对应NAND地址0,那么这块控件将很快达到其擦写次数寿命,导致损坏,我们的文件信息就会发生错乱。而且NAND不接受直接写入,必须先擦除再写入,还需要记录NAND中的坏块在哪里,避免写入已经坏掉的区域。读取的时候还需要进行ECC纠错,防止数据出错,这都会大大增加系统的负担,是不会被厂家接受的。大家都懒,谁愿意为了你的问题而改变自己呢,除非你给钱。
FTL闪存转换增这时候被提出来了,其作用就是文件系统和NAND之间的沟通桥梁。对于文件系统来说,它操作的实际第一对象是FTL,依然向机械硬盘一样管理所有的数据,不需要变动,什么都不需要改,除了问题一定是你的,因为我没改。这样系统方恨开心。但是管理NAND的脏活累活就得FTL来做了,谁让SSD等厂家想卖钱呢。
FTL算法,其实就是一种逻辑地址到物理地址的映射。当文件系统发送指令要写入或者更新一个特定的逻辑页时,FTL实际上是把数据写入到一个不同的空闲物理页并更新映射表(逻辑地址和物理地址的关联数据),并把这个页上包含的"旧数据"标记为"无效"(更新后的数据已经写入新的物理地址,旧地址的数据自然就失效了)。正是因为FTL的存在,操作系统才能把SSD当成机械硬盘那样操作,因此FTL转换的性能也就直接影响SSD的性能表现,而且FTL算法也是影响SSD寿命及稳定性的决定因素之一。
FTL还需要管理坏块,磨损均衡(与NAND寿命直接相关),ECC算法等功能,只有这样才能伪装的自己是一个机械硬盘,别人才会用你。
相关问答
nand 和tlc的区别?区别就是两者所表达的中文意思是不一样,具体的不同如下NAND是一种比硬盘驱动器更好的存储设备,在不超过4GB的低容量应用中表现得尤为明显。TLC:Trinary-Leve...
固态硬盘上的3D NAND 是什么?-ZOL问答3DNAND是相较于2DNAND而言的,而2DNAND其实也就是闪存颗粒,又称闪存,是一种非易失性存储器,即在断电的情况下依旧可以保存已经写入的数据,而且是以固定的区块...
iphone现在开不了机了 出现以下英文[ NAND ]-FindFlashMediaAn...中关村在线vivoX90Pro+举报手机苹果苹果iPhone127人讨论4667次围观关注问题写回答讨论回答(7)774940715这是硬件故障问题没办法自己维修,去厂家...
当iPhone遇到开机 NAND 的问题该怎么办?可能是存储方面的原因,NAND]_FindFlashmediaAndKeepout:600physicalnandblockoffset1发现媒体和隔离:600物理NAND块偏移1[...
谁能告诉我存储器dataflash norflash nandflash EEPROM这些的区别啊?norflash,nandflash,EEPROM都是些非易失性存储器,它们都是基于悬浮栅晶体管结构,但具体实现工艺上有差异。EEPROM:(ElectricallyErasableProgra...
闪存是谁发明的?拜托各位大神 - 珊瑚海1314 的回答 - 懂得闪存的发展历史在1984年,东芝公司的发明人FujioMasuoka首先提出了快速闪存存储器(此处简称闪存)的概念。与传统电脑内存不同,闪存的特点是非易失...
为什么国内博客上只有一个人 写 过 nand 2tetries主题的文章呢?感谢邀请,不过我对于国内博客这个主题不太清晰,所以暂不能回答此问题。再次感谢邀请!感谢邀请,不过我对于国内博客这个主题不太清晰,所以暂不能回答此问题。...
Nandflash和norflash的区别?nandflash和norflash的区别如下:1、开发的公司不同:NORflash是intel公司1988年开发出了NORflash技术。NOR的特点是芯片内执行(XIP,eXecute...
闪存都有那些种类?定义是什么?又是怎样分别的?[回答]闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速...
Nand Flash和Nor Flash有什么区别?求解?1、写入/擦除操作的时间不同【nandflash】:擦除NAND器件以8~32KB的块进行,执行同一写入/擦除的操作时间为4ms【norflash】:擦除NOR器件是以64~128KB的块.....