SSD坏块管理
坏块来源
出厂坏块 (Factory bad block):Flash从工厂出来,就或多或少的有一些坏块。一般来说,出厂坏块率为2%-10%,再坏的话,出厂的时候就被淘汰了。增长坏块 (Grown bad block):随着Flash的使用,一些初期好块也会变成坏块。变坏的原因,主要是擦写磨损导致的。
坏块识别
Flash厂商在Flash出厂时,会对出厂坏块做特殊标记。一般来说,刚出厂的Flash都被擦除,里面的数据是全0xFF。但是对坏块来说,Flash厂商会打上不同的标记。拿Toshiba某型号Flash来说,它是这样标记出厂坏块的:
它会在出厂坏块的第一个Page和最后一个Page的数据区第一个Byte和Spare区第一个Byte写上一个非0xFF的值。
用户在使用Flash的时候,首先应该按照Flash文档,扫描所有的Block,把坏块剔除出来,建立一张坏块表。还是拿上面Flash来说,Toshiba建议按照下面的流程来建立坏块表:
还有些Flash厂商,它会把坏块信息存储在Flash内部某个地方(掉电不丢失),用户在建立坏块表的时候,没有必要扫描所有的Block来识别坏块,只需读取Flash的那个特定区域。
对增长坏块而言,它的出现会通过读写擦等操作反映出来。比如读到UECC (Uncorrectable Error Correction Code, 数据没有办法通过ECC纠错恢复),比如擦除失败,比如写失败,这都是一个坏块出现的反映。用户应该把这些坏块加入坏块表,不再使用。
坏块管理策略
一般有两种策略对付坏块,一是略过(Skip)策略,而是替换(Replace)策略。
略过策略 :用户根据建立的坏块表,在写Flash的时候,一旦遇到坏块,跨过它,写下一个Block。SSD的存储空间是Flash阵列,一般有几个并行通道,每个通道上连接了若干个Flash。以上图为例,该SSD有四个通道,每个通道上挂了一个Flash(只有一个Die)。SSD的固件 (Firmware) 向四个Die依次写入。假设Die1上有个Block B是坏块,若FW采取坏块略过策略,则写完Block A时,接下来便会跨过Block B写到Die 2 的Block C上面去。替换策略 :与略过策略不同,当某个Die上发现坏块,它会被该Die上的某个好块替换。用户在写数据的时候,不是跨过这个Die,而是写到替换块上面去。采用此策略,除正常用户使用的Block,还需额外保留一部分好的Block,用于替换用户空间的坏块。整个Die上Block就划分为两个区域:用户区域和预留区域:还是以上面的情况为例:用户写入数据时,当碰到坏块B,它不会略过Die 1不写,而是写入到Block B 的替换者 Block B’上面去。采用替换策略,SSD固件内部需维护一张映射表:坏块到替换块的映射,比如上图的B->B’。
两种坏块管理策略,没有谁优谁劣,取决于SSD的软硬件架构。在此提这两种策略,只是给设计者一个 参考。但需要提到的是,替换机制策略有一个致命点,那就是如果某个Die坏了(所有Block不可用,或者可用的很少),那么,整个SSD就废了!因为在那个Die上,找不到好块来替换坏块,用户数据无处可写!
替换策略有木桶效应,你也许会说,既然这样,那就采用略过策略吧。但是,对某些SSD控制器来说,它只支持替换策略。还是那句话,哪种策略适合你SSD的软件硬件架构,就用哪种吧。
闪存芯片NOR Flash、NAND Flash傻傻分不清楚 ICMAX帮你搞定
通过前天的文章介绍,我们知道eMMC 是 Flash Memory 的一类,eMMC的内部组成是NAND flash+主控IC,那什么是Flash Memory、NOR Flash、NAND Flash,宏旺半导体就和大家好好捋一捋它们几者之间的关系。
Flash Memory 是一种非易失性的存储器。在嵌入式系统中通常用于存放系统、应用和数据等。在 PC 系统中,则主要用在固态硬盘以及主板 BIOS 中。另外,绝大部分的 U 盘、SDCard 等移动存储设备也都是使用 Flash Memory 作为存储介质。
1. Flash Memory 的主要特性
与传统的硬盘存储器相比,Flash Memory 具有质量轻、能耗低、体积小、抗震能力强等的优点,但也有不少局限性,主要如下:
需要先擦除再写入
Flash Memory 写入数据时有一定的限制,它只能将当前为 1 的比特改写为 0,而无法将已经为 0 的比特改写为 1,只有在擦除的操作中,才能把整块的比特改写为 1。
块擦除次数有限
Flash Memory 的每个数据块都有擦除次数的限制(十万到百万次不等),擦写超过一定次数后,该数据块将无法可靠存储数据,成为坏块。
为了最大化的延长 Flash Memory 的寿命,在软件上需要做擦写均衡(Wear Leveling),通过分散写入、动态映射等手段均衡使用各个数据块。同时,软件还需要进行坏块管理(Bad Block Management,BBM),标识坏块,不让坏块参与数据存储。(注:除了擦写导致的坏块外,Flash Memory 在生产过程也会产生坏块,即固有坏块。)
读写干扰
由于硬件实现上的物理特性,Flash Memory 在进行读写操作时,有可能会导致邻近的其他比特发生位翻转,导致数据异常,这种异常可以通过重新擦除来恢复,Flash Memory 应用中通常会使用 ECC 等算法进行错误检测和数据修正。
电荷泄漏
存储在 Flash Memory 存储单元的电荷,如果长期没有使用,会发生电荷泄漏,导致数据错误,不过这个时间比较长,一般十年左右,此种异常是非永久性的,重新擦除可以恢复。
2. NOR Flash 和 NAND Flash
根据硬件上存储原理的不同,Flash Memory 主要可以分为 NOR Flash 和 NAND Flash 两类。 主要的差异如下所示:
· NAND Flash 读取速度与 NOR Flash 相近,根据接口的不同有所差异;
· NAND Flash 的写入速度比 NOR Flash 快很多;
· NAND Flash 的擦除速度比 NOR Flash 快很多;
· NAND Flash 最大擦次数比 NOR Flash 多;
· NOR Flash 支持片上执行,可以在上面直接运行代码;
· NOR Flash 软件驱动比 NAND Flash 简单;
· NOR Flash 可以随机按字节读取数据,NAND Flash 需要按块进行读取。
· 大容量下 NAND Flash 比 NOR Flash 成本要低很多,体积也更小;
(注:NOR Flash 和 NAND Flash 的擦除都是按块块进行的,执行一个擦除或者写入操作时,NOR Flash 大约需要 5s,而 NAND Flash 通常不超过 4ms。)
2.1 NOR Flash
NOR Flash 根据与 CPU 端接口的不同,可以分为 Parallel NOR Flash 和 Serial NOR Flash 两类。
Parallel NOR Flash 可以接入到 Host 的 SRAM/DRAM Controller 上,所存储的内容可以直接映射到 CPU 地址空间,不需要拷贝到 RAM 中即可被 CPU 访问,因而支持片上执行。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通过 SPI 接口与 Host 连接。
图片: Parallel NOR Flash 与 Serial NOR Flash
鉴于 NOR Flash 擦写速度慢,成本高等特性,NOR Flash 主要应用于小容量、内容更新少的场景,例如 PC 主板 BIOS、路由器系统存储等。
2.2 NAND Flash
NAND Flash 需要通过专门的 NFI(NAND Flash Interface)与 Host 端进行通信,如下图所示:
图片:NAND Flash Interface
NAND Flash 根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。
NAND Flash 的一个存储单元内部,是通过不同的电压等级,来表示其所存储的信息的。在 SLC 中,存储单元的电压被分为两个等级,分别表示 0 和 1 两个状态,即 1 个比特。在 MLC 中,存储单元的电压则被分为 4 个等级,分别表示 00 01 10 11 四个状态,即 2 个比特位。同理,在 TLC 中,存储单元的电压被分为 8 个等级,存储 3 个比特信息。
图片: SLC、MLC 与 TLC
NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。下图 中,给出了特定工艺和技术水平下的成本和寿命数据。
相比于 NOR Flash,NAND Flash 写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的 eMMC 内部的 Flash Memory 都属于 NAND Flash,PC 中的固态硬盘中也是使用 NAND Flash。
3. Raw Flash 和 Managed Flash
由于 Flash Memory 存在按块擦写、擦写次数的限制、读写干扰、电荷泄露等的局限,为了最大程度的发挥 Flash Memory 的价值,通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。
在具体实现中,根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类。
图片: Raw Flash 和 Managed Flash
Raw Flash
在此类应用中,在 Host 端通常有专门的 FTL 或者 Flash 文件系统来实现坏块管理、擦写均衡等的功能。Host 端的软件复杂度较高,但是整体方案的成本较低,常用于价格敏感的嵌入式产品中。通常我们所说的 NOR Flash 和 NAND Flash 都属于这类型。
Managed Flash
Managed Flash 在其内部集成了 Flash Controller,用于完成擦写均衡、坏块管理、ECC校验等功能。相比于直接将 Flash 接入到 Host 端,Managed Flash 屏蔽了 Flash 的物理特性,对 Host 提供标准化的接口,可以减少 Host 端软件的复杂度,让 Host 端专注于上层业务,省去对 Flash 进行特殊的处理。eMMC、SD Card、UFS、U 盘等产品是属于 Managed Flash 这一类。
看完这篇文章,相信对Flash memory都会有一个全面的了解,无论是其原理,还是NOR Flash 和 NAND Flash、Raw Flash 和 Managed Flash 之间的异同,欢迎关注宏旺半导体,会持续带来存储领域更专业的文章。
相关问答
nandflash norflashmcpflash的区别?norflash的存储区是连续的支持连续烧录,nand不支持连续烧录,其存储区不是连续的。nor出厂可以保证是好的,不存在坏块;nand可能存在坏块。其他的区别网上可查...
norflash和 nandflash 的区别?NANDflash和NORflash的区别一、NANDflash和NORflash的性能比较flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的....
u盘只能识别到主控不能识别到 flash ?答方法如下1、在电脑桌面右键点击“计算机”,在出现的菜单中选择“管理”选项,2、在弹出的计算机管理窗口,依次打开“计算机管理-服务和应用程序-服...
量产是什么意思? - 7jiP0Tin 的回答 - 懂得量产软件英文USBDISKPRODUCTIONTOOL,简称是PDT,意思是U盘生产工具。U盘生产厂家不像我们玩家,一次就搞一两个U盘,他们生产都是按批计算的,是用电脑...
u盘一直出现驱动错误?这个和驱动没关系,是文件/文件夹损坏,具体原因要测,如果其他文件/文件夹是好的,最可能的情况是flash颗粒有坏块造成的,客观的讲完美恢复的几率不大,但是肯...
SD卡怎么快速修复?问得不清不楚,看在你是上帝的份上,我把所有能想到的都给你回答一下吧。首先我要纠正一下你的说法,你放出的图片叫MicroSDCard,原名Trans-flashCard(TF卡...
手机U盘打不开修复方法?二、是U盘本省已经损毁,只有拿去给销售商换了。第二类:也是最多的一类FLASH芯片有坏块<部分JS将扩容的U盘卖给消费者>,或者是年代久远造成的消耗,导致用过一...
惠普优盘怎么样?质量可以。1.行业标准对于级别的评价标准主要是闪存的写入次数/每单元,A级Flash芯片的使用10万次/每存储单元。另外A级Flash芯片还具备低坏块率,行业里把坏块...
同一品牌,同样内存,为什么价钱不一样?请教手机内存卡怎么选? 电脑插入U盘,系统不识别,提示要格式化?二呢是U盘本省已经损毁,只有拿去给销售商换了。第二类:也是最多的一类FLASH芯片有坏块<部分JS将扩容的U盘卖给消费者,或者是年代久远造成的消耗,导致用过一段...