小知识大作用:U盘的芯片,为什么会有坏块?
坏块的种类:
第一种是出厂时就有的坏块,也就是,你买到的新的,还没用过的Nand Flash,就可能包含了坏块。此类出厂时就有的坏块,被称作factory (masked) bad block 或initial bad/invalid block,在出厂之前,就会做对应的标记,标为坏块。
第二种是在使用过程中产生的坏块,由于使用过程时间长了,在擦块除的时候,出错了,说明此块坏了,也要在程序运行过程中,发现,并且标记成坏块的。具体标记的位置,和上面一样。这类块叫做worn-out bad block。即用坏了的块。
坏块标记:
NAND Flash坏块标记的位置三种情况:每个块的第1页、第1页和第2页、最后1页。对于小页(512Bytes大小),坏块标记是在OOB区域的第6个字节。对于大页(如2K大小),坏块标记是在OOB区域的第1个字节。如果坏块标记字节是0xff,则说明这个块是好块,否则就是坏块。
坏块管理:
在linux系统中会使用坏块表(BBT)对坏块进行管理。在加载NAND驱动时,如果你没有加入参数主动要求跳过坏块扫描,那么系统都会扫描坏块,并建立BBT。使用中可以通过BBT来查询某个块是否是坏块。使用过程中如果发现坏块,也需要更新BBT。坏块表有两种存放方式:
第一种是存放在内存中,这就要求在每次系统上电后都要重新扫描一次NAND Flash,建立bbt。缺点是使系统启动速度变慢,优点是不需要占用NAND Flash空间。
第二种是存放在NAND Flash中,这种方式就不需要在系统上电后重新扫描NAND Flash,只需要去读取就可以了。
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的软件硬件架构,就用哪种吧。
相关问答
flash 导入音频时,显示“ 读取 文件时出现问题,一个或多个文...MP3的编码问题flash不支持你那个MP3文件的编码flash支持的文件格式有MP3wav直接点说就是你的这个mp3文件有问题导致不能导入你网上随便下个mp3应该都可以...
NAND Flash 和Nor Flash 到底有什么区别?1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...
flash 导入音频时 读取 文件出现问题?解决方案:1、将音频文件放进AdobeAudition,或根据自己的需要对音频文件进行一定的裁剪。2、点击软件左上角文件另存为或者导出。3、点击采样类型旁边的更...
电脑装了 flash 仍无法观看课件?电脑装了flash无法观看课件,这是电脑缺乏flash驱动造成的。Flash软件在电脑运行时,除了软件本身,还需要安装驱动,这样才可以读取科技电脑装了flash无法观看...
为什么我用u盘复制他人的 flash 软件 在自己电脑上打不开!-ZOL问答如果是硬件松动打开笔记本对松动硬件重新进行插入即可;硬件损坏造成则需要用专业仪器进行检测后对损坏硬件进行更换。3、硬件松动或者COMS数据同错造成开机时提...
spi flash 读写问题?如图所示,虽然Flash的读写时序差别不大,但是每种型号的Flash读写等操作命令(0x**)不一定是完全相同的,所以不选择芯片型号的情况下,可能找不到芯片的ID如图所示,...
diskgenius提示读扇区错误怎么办?答:diskgenius提示读扇区错误的解决办法。1.首先,双击打开计算机上的diskgenius软件,然后进入下一步。2.其次,打开diskgenius,并确保修复mbr硬盘。然后进入下...
win10必要的系统组件未能正常运行 请修复adobe flash player?不要管他,千万不要安装flashplayer。Adobeflashplayer在国内的代理就是流氓,会在软件中插入广告推送程序,在后台偷偷读取隐私。win10系统已经不需要flash...
FLASH 里面图片和文字能从后台数据库里面 读取 吗。怎么办?通过后台上传图片的时候一般先将图片存入服务器指定路径中.而在数据库中只保存图片的位置也就是路径.前台通过FLASH调用并显示图片的过程:通过WEB开发语言ASP/...
jtag能 读取flash 吗?是的,JTAG(联合测试行动组)可以用于读取Flash存储器。JTAG是一种用于测试和调试电子设备的标准接口,它可以通过特定的命令和序列与芯片内部的逻辑进行通信。...