高级体系结构之flash storage

本文深入解析了闪存技术,包括NORFlash和NANDFlash的特点与应用,存储单元类型如SLC、MLC、TLC和QLC的区别,以及FTL在闪存管理中的关键作用。同时探讨了闪存的技术挑战,如区块抹除限制、记忆损耗、读取干扰和写入干扰等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先现在的falsh存在两种:NOR FLASH和NAND FLASH。他们各有优缺点:

NOR FLASH:最早提出来的一种FLASH,由intel研发。NOR Flash需要很长的时间进行抹写,但是它提供完整的定址与数据总线,并允许随机存取存储器上的任何区域,这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码,例如计算机的BIOS机顶盒(Set-top Box)的固件。NOR Flash可以忍受一万到一百万次抹写循环。根据NOR Flash提出了NAND FLASH来提高擦除时间和读取时间等。

NAND FLASH:具有较快的抹写时间,而且每个存储单元的面积也较小,这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍。然而NAND Flash的I/O接口并没有随机存取外部地址总线,它必须以区块性的方式进行读取,NAND Flash典型的区块大小是数百至数千比特。

然后咱们讲一下FLASH的存储单元,分为以下几类:

SLC:每个存储单元内存储1个信息比特,因此称为单阶存储单元,价格是$5.60/GB。SLC闪存的优点是传输速度更快,功率消耗更低和存储单元的寿命更长。然而,由于每个存储单元包含的信息较少,其每百万字节需花费较高的成本来生产,大多数用在企业上。为了降低成本,存储更多的信息于是有了MLC(每个存储单元内存储2个信息比特),TLC(每个存储单元内存储3个信息比特),QLC(每个存储单元内存储4个信息比特)。但是虽然降低成本,但是相应的传输速度会变慢,并且存储单元的寿命会依次递减。

MLC:多阶存储单元。传输速度慢,存储单元密集。可靠性会比SLC更低些。价格是$1.39/GB。大多数用于家用。

接下来咱们讲一下FLASH的中间件Flash Translation Layer(FTL),它就相当于用来管理Flash的:

1.有了FTL,NAND Flash才能被当成硬盘来使用;文件系统才可以直接把SSD当成普通块设备来使用。

2.FTL决定了一个SSD的使用寿命、性能和可靠性。一旦FTL出现问题,那么就会导致数据读写发生错误,更为严重的是SSD盘无法被访问。

3.FTL完成逻辑地址到物理地址的映射,管理擦除粒度不匹配,提供一个block-based接口(让flash看上去相当于一个block,也就是相当于封装)。从而提高flash的性能。

FTL设置:

粒度:per-page vs per-block

           per-page这样会生成很大的有关page地址的映射表,导致复杂度高,开销大。

           per-block生成很小的有关block地址的映射表,但是会导致写放大(就是必须复制整个block,当其中1个page更新的时候)

log-based system:

          在一个空的block中,log记录按顺序更改数据。

          write时按顺序写,但是在read时可以乱序读。

 

Flash存在的不足之处:

区块抹除:限制在于即使它可以单一字节的方式读或写入,但是抹除一定是一整个区块。一般来说都是设置某一区中的所有比特为“1”,刚开始区块内的所有部分都可以写入,然而当有任何一个比特被设为“0”时,就只能借由清除整个区块来恢复“1”的状态。换句话说闪存(特别是NOR Flash)能提供随机读取与写入操作,却无法提供任意的随机改写。

记忆损耗:另一项闪存的限制是它有抹写循环的次数限制(大多商业性SLC闪存保证“0”区有十万次的抹写能力,但其他区块不保证)。这个结果部分地被某些固件或文件系统为了在相异区块间分散写入操作而进行的计算写入次数与动态重對映所抵销;这种技巧称为耗损平衡(wear leveling)。另一种处理方法称为坏区管理(Bad Block Management, BBM)。这种方法是在写入时做验证并进行动态重测,如果有验证失败的区块就加以剔除。

读取干扰:所使用的闪存读取方式随着时间的推移会导致在同一区块中相近的记忆单元内容改变(变成写入动作)。这即是所谓的读取干扰。会导致读取干扰现象的读取次数门槛介于区块被抹除间,通常为100,000次。假如连续从一个记忆单元读取,此记忆单元将不会受损,而受损却是接下来被读取的周围记忆单元。为避免读取干扰问题,闪存控制器通常会计算从上次抹除动作后的区块读取动作总次数。当计数值超过所设置的目标值门槛时,受影响的区块会被复制到一个新的区块,然后将原区块抹除后释放到区块回收区中。原区块在抹除动作后就会像新的一样。若是闪存控制器没有即时介入时,读取干扰错误就会发生,如果错误太多而无法被ECC机制修复时就会伴随着可能的数据丢失

写入干扰:写入干扰(编程干扰)是指当对页(page)进行写入时,由于阈值电压接近的关系,相邻的位(bit)也被升高,从而造成相邻的位出错。闪存电荷非常不稳定,相邻存储电荷的悬浮门间会相互干扰,造成相邻悬浮门间的bit错误,MLC由于存在4组接近的电压,与SLC相比更容易受到干扰。

flash功耗 vs disk功耗:

        睡眠状态: <0.3w vs >2w

        读/写:2-3w vs 2-10w

        带宽:500MB/s vs 60MB/s

flash功耗 vs DRAM功耗:

        睡眠状态: <0.3w vs ~1w

        读/写:2-3w vs 2-3w

        容量:128GB vs 8GB

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值