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 Flash是如何生产出来的?
Hardy(晗狄) 架构师技术联盟
NAND Flash是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁存电荷,电荷被储存在浮栅中,它们在无电源供应的情况下仍然可以保持。关于NAND Flash技术基本原理之前有过讲解,大家可以参考文章闪存技术最全面解析。今天主要讨论下NAND Flash生产过程、架构 和关键指标 。
NAND Flash是从原始的硅材料加工出来的,硅材料被加工成晶圆(Wafer) ,一片晶圆上可以做出几百颗NAND FLASH芯片。芯片未封装前的晶粒成为Die,它是从Wafer上用激光切割而成的小片,每个Die就是一个独立的功能芯片,它由无数个晶体管电路组成,但最终可被作为一个单位封装起来成为闪存颗粒芯片。下面是NAND Flash芯片的详细加工过程。
NAND Flash的容量结构从大到小可以分为Device、Target、LUN、Plane、Block、Page、Cell 。一个Device有若干个Die(或者叫LUN),每个Die有若干个Plane,每个Plane有若干个Block,每个Block有若干个Page,每个Page对应着一个Wordline。
Die/LUN是接收和执行FLASH命令的基本单元。不同的LUN可以同时接收和执行不同的命令。但在一个LUN当中,一次只能执行一个命令,不能对其中的某个Page写的同时又对其他Page进行读访问。下面详解介绍下这些结构单元和之间的联系。
Device就是指单片NAND Flash,对外提供Package封装的芯片,通常包含1个或多个Target;
Target拥有独立片选的单元,可以单独寻址,通常包含1或多个LUN;LUN也就是Die,能够独立封装的最新物理单元,通常包含多个plane。
Plane拥有独立的Page寄存器,通常LUN包含1K或2K个奇数Block或偶数Block;
Block是能够执行擦除操作的最小单元,通常由多个Page组成;Page是能够执行编程和读操作的最小单元,通常大小为4KB/8KB/16KB/32KB等。
Cell是Page中的最小操作擦写读单元,对应一个浮栅晶体管,可以存储1bit或多bit数据,主要可颗粒类型。
下图是一个FLASH Block的组织架构,每个Cell的漏极对应BL(Bitline) ,栅极对应WL(Wordline) ,源极都连在一起。每个Page对应着一个Wordline,通过Wordline加不同电压和不同时间长度进行各种操作。
一个WordLine对应着一个或若干个Page,对SLC来说一个WordLine对应一个Page;而对MLC来说则对应2个Page(Lower Page 和Upper Page);Page的大小与WordLine上存储单元(Cell)数量对应。
Data Retention(数据保存力) 是用于衡量写入NAND Flash的数据能够不失真保时间的可靠性指标,一般定义为在一定的温度条件下,数据在使用ECC纠错之后不失真保存在NAND Flash中的时间;影响Data Retention 最大的两个因素是擦写次数和存储温度。通常情况下企业级SSD盘的Data Retention都是遵循JEDEC的JESD218标准,即40℃室温下,100%的PE Cycle之后,在下电的情况Data Retention时间要求达到3个月。
NAND Flash写入前必须擦除, Block擦除1次后再写入1次称为1次PE Cycle ,Endurance (耐久性) 用于衡量NAND Flash的擦写寿命的可靠性指标;Endurance指的是在一定的测试条件下NAND Flash能够反复擦写数据的能力,即对应NAND Flash的PE (Program/Erase ) Cycle。
Bit Error Rate(BER) 指由于NAND Flash颗粒概率发生Bit位翻转导致的错误,其中,RBER (Raw Bit Error Rate) 指没有经过ECC纠错时出现一个Bit位发生错误的几率,RBER也是衡量NAND品质的一项指标。RBER是NAND自身品质的一个特性,随着PE次数的增加会变差,出错趋势呈指数分布,其主要原因是擦写造成了浮栅氧化层的磨损。
UBER(Uncorrectable Bit Error Rate) 指发生不可纠正ECC错误的几率,即一个纠错单元Codeword内发生bit位翻转的位数超出ECC算法可纠能力范围的几率。
DWPD(Diskful Writes Per Day) 指每日写入量。SSD的成本($/GB)随DWPD增加会变高,未来SSD的趋势预测读密集型当前已占50%,未来的占比会逐渐变大。
NAND Flash的寿命不等于SSD的寿命;SSD盘可以通过多种技术手段从整体上提升SSD的寿命,通过不同的技术手段,SSD盘的寿命可以比NAND Flash宣称寿命提升20%~2000%不等。
SSD的寿命不等于NAND Flash的寿命。NAND Flash的寿命主要通过P/E cycle来表征。SSD由多个Flash颗粒组成,通过盘片算法,可有效发挥颗粒寿命。影响SSD盘使用寿命关键因素主要包括下面因素。
每年写入数据量 ,和客户的业务场景强相关;
单个Flash颗粒寿命 , 不同颗粒的P/E Cycle不同
数据纠错算法 ,更强纠错能力延长颗粒可用寿命
磨损均衡算法 ,避免擦写不均衡导致擦写次数超过颗粒寿命
Over Provisioning占比 ,随着OP(预留空间)的增加SSD磁盘的寿命会得到提高。
作为闪存开发、设计和从业人员而言,必须与时俱进,紧跟新技术步伐。关于SSD、闪存、NVMe和SCM技术想做进一步了解,请参看“闪存技术、产品和发展趋势全面解析 ”资料,目录详情如下。
点击原文链接 即可查看最“闪存技术、产品和发展趋势全面解析”全面的闪存技术大餐。
>>>推荐阅读
从高性能计算(HPC)技术演变解析方案、生态和行业发展趋势
存储性能瓶颈的背后,这篇文章带来的参考价值
分布式、多活数据中心如何实现DNS域名解析和负载均衡
传统企业存储厮杀过后,昨天的战场留下什么值得回忆
相关问答
sdkflash怎么 擦除 ?flash的特性是,写数据只能将1写为0,0不能写为1.擦除数据是将所有数据都写为1.因此如果想在已经数据的flash上写入新的数据,则必须先擦除。sdcard则没有这个特...
硬盘Ghost开启出现Bad block (s)encountered on read-continu...一些用户在用ghost备份系统的时候,出现“Badblock(s)encounteredonread.Continueanyway”badblock的意思是坏区,但这不一定是坏区...
我的世界怎样让命令方块怎么消除指令?消除周围的方块的指令是:/setblock0[xyz]minecraft:air【/setblock放置方块命令】命令使用方法:/setblock[datValue][旧方块处理方式][data...
sns. block .00001是什么文件可以删除吗?可以删除。通常是系统或者某些软件对已完成的某种处理的记录,以便将来做为参考,它并没有固定的格式,通常是文本文件,可以用记事本打开以查看内容,当然...可...
我的世界怎样清除公告栏?在我的世界游戏中按“T”或直接输入“/”打开语言栏,在语言栏中输入指令/give@scommand_block,输入完后,按Enter执行即可获得命令方块。将命令方块放置在地...
怎样删除物品栏里的物品?如果要删除物品栏中的物品的话有两种方法:1、/clear[玩家][物品][数据][最大数量][数据标签]2、/replaceitemblock如果要删除物品栏中的物品的话有两...
我的世界怎么弄掉命令方块?要删除Minecraft中的命令方块,您可以使用游戏内的命令或手动删除。1.使用游戏内命令:-在创造模式下,打开命令方块所在的区域。-在聊天框中输入命令:...
固态硬盘的启动分区被我作死的删了.应该怎么办?删除对固态寿命没有任何影响。固态和机械的删除都是标记这个区块为废弃,下次直接覆盖。(注:固态的覆盖是在写入前清除该block并写入,但如果没有写入,是不会...
bio设置中显卡错误报告为何要关闭? BIOS设置选项中Plug& play...BIOS里面的这个功能对windowsXP以上的系统来说意义不大,因为windows系统也有plugandplay服务。对windows以外的其他系统,也许有关键性的作用。有用(0)回复....
3dmax删除键删除不了怎么回事?因为材质编辑器没有关闭1、那是因为材质编辑器没有关闭,而是在最小化的模式下(而且某个材质还在选中状态),按了Delete系统不会对场景进行删除处理。2、而...