公开/公告号CN105740162A
专利类型发明专利
公开/公告日2016-07-06
原文格式PDF
申请/专利权人 上海盈方微电子有限公司;
申请/专利号CN201511030611.1
申请日2015-12-31
分类号G06F12/06(20060101);
代理机构上海硕力知识产权代理事务所;
代理人郭桂峰
地址 201203 上海市浦东新区张江高科技园区祖冲之路2290弄1号1305、1306单元
入库时间 2023-06-19 00:02:20
法律状态公告日
法律状态信息
法律状态
2018-08-07
授权
授权
2016-08-03
实质审查的生效 IPC(主分类):G06F12/06 申请日:20151231
实质审查的生效
2016-07-06
公开
公开
技术领域
本发明涉及数据存储领域,特别是涉及一种应用于NAND存储器的NFTL数据存储系统。
背景技术
NAND存储器(NANDFLASH)作为一种比较常用的存储介质,目前广泛应用于MID、OTT和MP3这些设备中,具有速度快、空间利用率高和价格便宜等优点。
为了完成从操作系统使用的逻辑区块地址(LBA,LogicBlockAddress)到存储器使用的物理区块地址(PBA,PhysicsBlockAddress)的数据映射,闪存存储器(FLASH)需要闪存转换层(FTL,Flashtranslationlayer)。而NAND存储器就需要NFTL,NAND闪存转换层(NANDFlashTranslationLayer)。
由于NAND存储器的一些固有特性:如以物理页面为单位读写、以物理区块为单位擦除,物理区块中有固有坏块,物理区块有擦除次数的限制,导致在使用时要用一些软件策略规避这些问题。
现有的yaffs和ubi文件管理系统应用于NAND存储器时具有内存消耗大、系统稳定性不足等缺点。
因此需要一种能够保证NAND存储器的最大使用次数、最大使用效率的NFTL数据存储系统。
发明内容
本发明提供的一个技术方案如下:
一种应用于NAND存储器的NFTL数据管理方法,包括:S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法。其中,S10数据存入方法,包括步骤:S100获取向指定的逻辑区块地址的空白逻辑区块存入新数据的指令;S120为指定的逻辑区块地址分配映射的NAND存储器的物理区块地址、物理页面地址,所述分配的物理页面地址是可用的空白物理页面;S130向所述分配的物理区块地址、物理页面地址存入所述的新数据;和,S150在逻辑/物理区块映射表中,更新所述分配的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效。S20数据读取方法,包括步骤:S200获取向指定的逻辑区块地址的有效逻辑区块的读取有效数据的指令;S210根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为映射的NAND存储器的指定的物理区块地址、物理页面地址;S240读取所述指定的物理区块地址、物理页面地址的有效数据;和,S241根据逻辑/物理区块映射表将所述指定的物理页面地址的有效数据重组为所述指定的逻辑区块地址的有效数据。S30数据删除方法,包括步骤:S300获取将指定的逻辑区块地址的有效逻辑区块的删除数据的指令;S310根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为删除前映射的NAND存储器的指定的物理区块地址、物理页面地址;和,S360在逻辑/物理区块映射表中,删除所述指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。S40数据更新方法,包括步骤:S400获取向指定的逻辑区块地址的有效逻辑区块的更新数据的指令;S410根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为更新前映射的NAND存储器的指定的物理区块地址、物理页面地址;S420为指定的逻辑区块地址的有效数据逻辑区块分配更新后的指定物理区块地址、物理页面地址,所述分配的更新后的指定的物理页面地址是可用的空白的物理页面;S430向所述分配的更新后的指定物理区块地址、物理页面地址存入所述的更新后的新数据;S450在逻辑/物理区块映射表中,更新所述更新后的指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;和,S460在逻辑/物理区块映射表中,删除所述更新前的指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,以物理页面为单位读写。操作系统可使用的逻辑区块地址使用NAND存储器进行数据的存入/读取/删除/更新操作。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法,进一步还包括S50物理区块回收方法。其中,S50物理区块回收方法,包括步骤:S570当一个可用的物理区块中全部为无效的物理页面或者部分为无效其余为空白的物理页面时,擦除该物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,以物理页面为单位读写,以物理区块为单位擦除。便于操作系统使用NAND存储器。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法,进一步还包括S50物理区块回收方法。其中,S50物理区块回收方法,包括步骤:S510当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;S520为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;S530向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据;S550在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;S560在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效;S570擦除所述物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法提供了物理区块回收机制(GC机制,GarbageCollection)。可对有部分有效的物理页面的物理区块进行擦除,有助于提高系统的运行效率。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法,进一步还包括S50物理区块回收方法。其中,S50物理区块回收方法,包括步骤:S501将NAND存储器的物理区块划分出保留的缓冲物理区块;S502当空白的物理区块小于预设的物理区块耗尽警戒值时,释放所述保留的缓冲物理区块;S510当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;S520为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;S530向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据;S550在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;S560在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效;S570擦除所述物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一;S503当空白的物理区块重新大于预设的物理区块耗尽警戒值时,重新执行步骤S501。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法还提供了缓冲区机制。用于协助NAND存储器在接近耗尽时执行被动GC机制,有助于提高系统的运行效率。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法,进一步还包括S50物理区块回收方法。其中,S50物理区块回收方法,包括步骤:S504当空闲时,主动执行以下步骤;S510当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;S520为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;S530向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据;S550在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;S560在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效;S570擦除所述物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一。
因此,本发明还提供了主动GC机制,有助于提高系统的运行效率。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法,进一步还包括S50物理区块回收方法。其中,S50物理区块回收方法,包括步骤:S505当一个可用的物理区块中的空白的物理页面的比例小于预设的物理页面耗尽警戒值时,计算所述物理区块中的无效的物理页面的比例;S506当所述物理区块中的无效的物理页面的比例大于预设的无效物理页面通知值时,发出无效物理页面通知;S510当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;S520为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;S530向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据;S550在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;S560在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效;S570擦除所述物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一。
因此,本发明还提供了Trim机制(又叫DisableDeleteNotify),能够及时通知GC机制运作,有助于提高系统的运行效率。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S60物理区块磨损平衡方法。其中,S60物理区块磨损平衡方法,包括步骤:S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S651当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,执行所述S50物理区块回收方法。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,提供了物理区块磨损平衡机制(WL机制,WearLeveling)。能够避免部分物理区块过早的达到擦除次数的限制,而使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S60物理区块磨损平衡方法。其中,S60物理区块磨损平衡方法,包括步骤:S602当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,执行所述步骤S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S622当搜索到至少一个擦除次数标记最小且空白的物理区块时,执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,提供了动态WL机制,在数据操作时选择擦除次数最少的物理区块使用,使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S60物理区块磨损平衡方法。其中,S60物理区块磨损平衡方法,包括步骤:S601当存入、更新数据时,执行步骤S610;S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S651当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,执行所述S50物理区块回收方法;S652跳回执行所述步骤S610直至获取的擦除次数标记的最小值、最大值不再超出预设的磨损平衡警戒值;S622当搜索到至少一个擦除次数标记最小且空白的物理区块时,执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法提供了全盘静态WL机制,有助于进一步提高NAND存储器的使用寿命。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S60物理区块磨损平衡方法。其中,S60物理区块磨损平衡方法,包括步骤:S602当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,执行所述步骤S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S652当获取的擦除次数标记的最小值、最大值未超出预设的磨损平衡警戒值时,执行步骤S612;S612搜索空白的物理区块,并在空白的物理区块中搜索擦除次数标记最小的物理区块;并执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,在数据操作时选择擦除次数最少的物理区块使用,同时结合全盘静态WL机制。使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
进一步,本发明使用红黑树自平衡的方法搜索擦除次数标记最小、最大的物理区块。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法利用了红黑树自平衡算法的快速查找擦除次数标记最小、最大的物理区块,使得WL机制更加快速高效。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S70逻辑/物理区块映射管理方法。其中,S70逻辑/物理区块映射管理方法,包括步骤:S710按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;S720建立物理区块、物理页面的逻辑/物理区块映射表;S730将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法使逻辑区块地址(LBA)与物理区块地址(PBA)建立数据映射,并利用带外数据区(OOB)保存逻辑/物理区块映射表,从而提供一种稳定的NFTL。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S70逻辑/物理区块映射管理方法。其中,S70逻辑/物理区块映射管理方法,包括步骤:S710按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;S720建立物理区块、物理页面的逻辑/物理区块映射表;S730将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区;S740当发生断电后,读取所述带外数据区的所述的逻辑/物理区块映射表的信息,重建逻辑/物理区块映射表。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法可以在异常断电后利用带外数据区(OOB)快速恢复逻辑/物理区块映射表,从而提供一种具有高容错性的NFTL。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S70逻辑/物理区块映射管理方法。其中,S70逻辑/物理区块映射管理方法,包括步骤:S711按EXT4文件管理格式对NAND存储器进行逻辑格式化;S720建立物理区块、物理页面的逻辑/物理区块映射表;S730将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法利用EXT4文件管理格式对NAND存储器进行逻辑格式化,从而提供一种高物理区块利用率的NTFL。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S70逻辑/物理区块映射管理方法。其中,S70逻辑/物理区块映射管理方法,包括步骤:S710按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;S720建立物理区块、物理页面的逻辑/物理区块映射表;S731将所述擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记存入所述物理区块中所述物理页面的带外数据区。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法可以在带外数据区(OOB)保存擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记,从而提供一种稳定性更高的NFTL。
进一步,所述步骤S731中的数据有效标记是时间戳标记。
因此,本发明的数据有效标记带有时间戳标记,当数据出错时便于根据时间戳恢复,从而提供一种具有更高容错性的NFTL。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S80坏块管理方法。其中,S80坏块管理方法,包括步骤:S810对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,物理区块中有固有坏块,提供了坏块管理机制(BBM机制,BadBlockManagement)。能够避免坏块影响数据出错,有助于提高NFTL的稳定性。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S80坏块管理方法。其中,S80坏块管理方法,包括步骤:S801当NAND存储器出厂时,对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法直接基于NAND存储器的固有特性,物理区块中有固有坏块,提供了坏块管理机制(BBM机制,BadBlockManagement)。能够避免坏块影响数据出错,有助于提高NFTL的稳定性。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S80坏块管理方法。其中,S80坏块管理方法,包括步骤:S810对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块;S830根据物理区块状态检测的结果建立坏块管理表。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法在BBM机制下进一步提供坏块管理表(BBT,BadBlockTable)。有助于提高BBM机制的响应速度。
本发明提供的另一个技术方案,一种应用于NAND存储器的NFTL数据管理方法,除包括与前述相同的S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法,进一步还包括S80坏块管理方法。其中,S80坏块管理方法,包括步骤:S801当NAND存储器出厂时,对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块;S830根据物理区块状态检测的结果建立坏块管理表;S802当写入/更新数据时,对NAND存储器的物理区块进行状态检测;S831更新所述坏块管理表。
因此,本发明提供的应用于NAND存储器的NFTL数据管理方法实时更新坏块管理表(BBT)。进一步提高BBM机制的响应速度。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括数据存取接口、与所述数据存取接口电连接的逻辑/物理区块映射管理装置和与所述逻辑/物理区块映射管理装置电连接的数据存取装置。其中,所述数据存取接口获取向指定的逻辑区块地址的空白逻辑区块存入新数据的指令;获取向指定的逻辑区块地址的有效逻辑区块的读取有效数据的指令;获取将指定的逻辑区块地址的有效逻辑区块的删除数据的指令;获取向指定的逻辑区块地址的有效逻辑区块的更新数据的指令。所述逻辑/物理区块映射管理装置为指定的逻辑区块地址分配映射的NAND存储器的物理区块地址、物理页面地址,所述分配的物理页面地址是可用的空白物理页面;并在逻辑/物理区块映射表中,更新所述分配的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为映射的NAND存储器的指定的物理区块地址、物理页面地址;在逻辑/物理区块映射表中,删除所述指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。所述数据存取装置包括数据存入模块、数据读取模块。其中,所述数据存入模块向所述分配的物理区块地址、物理页面地址存入所述的新数据;所述数据读取模块读取所述指定的物理区块地址、物理页面地址的有效数据;根据逻辑/物理区块映射表将所述指定的物理页面地址的有效数据重组为所述指定的逻辑区块地址的有效数据。根据所述数据存取接口获取的存入/读取/删除/更新数据的指令,所述逻辑/物理区块映射管理装置操作逻辑/物理区块映射表,所述数据存取装置控制所述数据存入模块、数据读取模块,从而达成数据的存入/读取/删除/更新操作。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,以物理页面为单位读写。操作系统可使用的逻辑区块地址使用NAND存储器进行数据的存入/读取/删除/更新操作。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置和与数据存取装置。其中,所述数据存取装置还包括与逻辑/物理区块映射管理装置电连接的物理区块擦除模块。所述物理区块擦除模块当一个可用的物理区块中全部为无效的物理页面或者部分为无效其余为空白的物理页面时,擦除该物理区块中全部物理页面上的数据,并将该物理区块擦除为空白的物理区块。所述逻辑/物理区块映射管理装置还将该物理区块的擦除次数标记加一。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,以物理页面为单位读写,以物理区块为单位擦除。便于操作系统使用NAND存储器。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置和与数据存取装置,还包括与所述逻辑/物理区块映射管理装置、数据存取装置电连接的物理区块回收装置。其中,所述逻辑/物理区块映射管理装置当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。所述数据存取装置还以所述数据存入模块向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据。所述物理区块回收装置当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,控制所述逻辑/物理区块映射管理装置、数据存取装置生成一个全部为无效的物理页面或者部分为无效其余为空白的物理页面的可回收的物理区块;并控制所述数据存取装置的所述物理区块擦除模块与所述逻辑/物理区块映射管理装置将该物理区块擦除为空白的物理区块并将该物理区块的擦除次数标记加一。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统提供了物理区块回收机制(GC机制,GarbageCollection)。可对有部分有效的物理页面的物理区块进行擦除,有助于提高系统的运行效率。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置、数据存取装置和物理区块回收装置。进一步,所述逻辑/物理区块映射管理装置还包括与所述物理区块回收装置电连接的物理区块缓冲区管理模块。其中,所述物理区块缓冲区管理模块将NAND存储器的物理区块划分出保留的缓冲物理区块;当空白的物理区块小于预设的物理区块耗尽警戒值时,释放所述保留的缓冲物理区块;当空白的物理区块重新大于预设的物理区块耗尽警戒值时,重新划分出保留的缓冲物理区块。所述物理区块回收装置由所述物理区块缓冲区管理模块控制,当空白的物理区块小于预设的物理区块耗尽警戒值时,控制所述逻辑/物理区块映射管理装置、数据存取装置,回收有部分有效的物理页面其余为无效和/或空白的物理页面的物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块重新大于预设的物理区块耗尽警戒值。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统还提供了缓冲区机制。用于协助NAND存储器在接近耗尽时执行被动GC机制,有助于提高系统的运行效率。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置、数据存取装置和物理区块回收装置。进一步,所述物理区块回收装置当空闲时,主动控制所述逻辑/物理区块映射管理装置、数据存取装置,回收有部分有效的物理页面其余为无效和/或空白的物理页面的物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块增多。
因此,本发明还提供了主动GC机制,有助于提高系统的运行效率。
本发明提供的又一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置、数据存取装置和物理区块回收装置。进一步,所述物理区块回收装置还包括与所述逻辑/物理区块映射管理装置、数据存取装置电连接的无效物理页面通知模块。其中,所述逻辑/物理区块映射管理装置当所述数据存取装置删除、更新数据时,通知所述无效物理页面通知模块,并提供物理区块中的空白、无效、有效的物理页面的数据。所述无效物理页面通知模块计算所述物理区块中的空白的物理页面的比例;当空白的物理页面的比例小于预设的物理页面耗尽警戒值时,计算所述物理区块中的无效的物理页面的比例;当所述物理区块中的无效的物理页面的比例大于预设的无效物理页面通知值时,发出无效物理页面通知。所述物理区块回收装置接收所述无效物理页面通知后,控制所述逻辑/物理区块映射管理装置、数据存取装置,回收所述的空白的物理页面的比例小于预设的物理页面耗尽警戒值且无效的物理页面的比例大于预设的无效物理页面通知值的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块增多。
因此,本发明还提供了Trim机制(又叫DisableDeleteNotify),能够及时通知GC机制运作,有助于提高系统的运行效率。
本发明提供的又一个技术方案,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置、数据存取装置和物理区块回收装置。进一步,所述逻辑/物理区块映射管理装置还包括与所述物理区块回收装置电连接的物理区块磨损平衡模块。其中,所述物理区块磨损平衡模块搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,通知所述物理区块回收装置。所述物理区块回收装置接收所述物理区块磨损平衡模块的通知后,控制所述逻辑/物理区块映射管理装置、数据存取装置,回收所述的擦除次数标记最小的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使所述物理区块的擦除次数增加,使NAND存储器的物理区块的擦除次数平衡。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,提供了物理区块磨损平衡机制(WL机制,WearLeveling)。能够避免部分物理区块过早的达到擦除次数的限制,而使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
进一步,所述物理区块磨损平衡模块当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当搜索到至少一个擦除次数标记最小且空白的物理区块时,将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,提供了动态WL机制,在数据操作时选择擦除次数最少的物理区块使用,使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
进一步,所述逻辑/物理区块映射管理装置当所述数据存取装置存入、更新数据时,通知所述所述物理区块磨损平衡模块。所述物理区块磨损平衡模块搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,通知所述物理区块回收装置。所述物理区块回收装置接收所述物理区块磨损平衡模块的通知后,控制所述逻辑/物理区块映射管理装置、数据存取装置,回收所述的擦除次数标记最小的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使所述物理区块的擦除次数增加。所述物理区块磨损平衡模块循环执行搜索擦除次数标记最小且空白的物理区块,并与物理区块回收装置配合,使NAND存储器的物理区块的擦除次数平衡,直至擦除次数标记的最小值、最大值不再超出预设的磨损平衡警戒值。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统提供了全盘静态WL机制,有助于进一步提高NAND存储器的使用寿命。
进一步,所述物理区块磨损平衡模块当获取的擦除次数标记的最小值、最大值未超出预设的磨损平衡警戒值时,搜索空白的物理区块,并在空白的物理区块中搜索擦除次数标记最小的物理区块;并将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,物理区块有擦除次数的限制,在数据操作时选择擦除次数最少的物理区块使用,同时结合全盘静态WL机制。使NAND存储器的物理区块磨损(擦除次数)平衡,有助于提高NAND存储器的使用寿命。
进一步,所述物理区块磨损平衡模块使用红黑树自平衡的方法搜索擦除次数标记最小、最大的物理区块。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统利用了红黑树自平衡算法的快速查找擦除次数标记最小、最大的物理区块,使得WL机制更加快速高效。
本发明提供的又一个技术方案,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置、数据存取装置和物理区块回收装置。进一步,所述逻辑/物理区块映射管理装置还按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;建立物理区块、物理页面的逻辑/物理区块映射表;并将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统使逻辑区块地址(LBA)与物理区块地址(PBA)建立数据映射,并利用带外数据区(OOB)保存逻辑/物理区块映射表,从而提供一种稳定的NFTL。
进一步,所述逻辑/物理区块映射管理装置还在系统发生断电后,读取所述带外数据区的所述的逻辑/物理区块映射表的信息,重建逻辑/物理区块映射表。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统可以在异常断电后利用带外数据区(OOB)快速恢复逻辑/物理区块映射表,从而提供一种具有高容错性的NFTL。
进一步,所述逻辑/物理区块映射管理装置按EXT4文件管理格式对NAND存储器进行逻辑格式化。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统利用EXT4文件管理格式对NAND存储器进行逻辑格式化,从而提供一种高物理区块利用率的NTFL。
进一步,所述逻辑/物理区块映射管理装置将所述擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记存入所述物理区块中所述物理页面的带外数据区。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统可以在带外数据区(OOB)保存擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记,从而提供一种稳定性更高的NFTL。
进一步,所述数据有效标记是时间戳标记。
因此,本发明的数据有效标记带有时间戳标记,当数据出错时便于根据时间戳恢复,从而提供一种具有更高容错性的NFTL。
本发明提供的再一个技术方案,一种应用于NAND存储器的NFTL数据存储系统,包括与前述相同的数据存取接口、逻辑/物理区块映射管理装置和与数据存取装置,还包括与所述逻辑/物理区块映射管理装置电连接的坏块管理装置,所述坏块管理装置对NAND存储器的物理区块进行状态检测;当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,物理区块中有固有坏块,提供了坏块管理机制(BBM机制,BadBlockManagement)。能够避免坏块影响数据出错,有助于提高NFTL的稳定性。
进一步,所述坏块管理装置当NAND存储器出厂时,对NAND存储器的物理区块进行状态检测;将状态检测出现错误的物理区块标记为坏块。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统直接基于NAND存储器的固有特性,物理区块中有固有坏块,提供了坏块管理机制(BBM机制,BadBlockManagement)。能够避免坏块影响数据出错,有助于提高NFTL的稳定性。
进一步,所述坏块管理装置对NAND存储器的物理区块进行状态检测时,根据物理区块状态检测的结果建立坏块管理表。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统在BBM机制下进一步提供坏块管理表(BBT,BadBlockTable)。有助于提高BBM机制的响应速度。
进一步,所述坏块管理装置当所述所述数据存取装置包括存入数据、或更新数据时,对NAND存储器的物理区块进行状态检测;将状态检测出现错误的物理区块标记为坏块;并更新所述坏块管理表。
因此,本发明提供的应用于NAND存储器的NFTL数据存储系统实时更新坏块管理表(BBT)。进一步提高BBM机制的响应速度。
本发明是一种基于NAND存储介质实现的一种高效的FTL算法,可以保证NAND最大使用次数,并最大效率使用NAND存储空间。本发明所描述的NFTL,采用全盘FTL,直接基于NAND存储设备。这种NFTL的采用NAND物理页面的OOB储存FTL的相关信息。这种NFTL实现了GC与TRIM机制的对接,实现了主动GC机制。这种NFTL采用全盘静态WL机制。具有很强的异常断电容错性。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种基于移动终端的物品安全提醒方法及移动终端的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明的NFTL数据存储系统的框架结构图;
图2是本发明的NFTL整体映射关系图;
图3是本发明的LBA---->PBA映射关系示意图;
图4A是本发明的NFTL数据管理方法的一个实施例的数据存入方法的步骤图;
图4B是本发明一个实施例的数据读取方法的步骤图;
图4C是本发明一个实施例的数据删除方法的步骤图;
图4D是本发明一个实施例的数据更新方法的步骤图;
图5是本发明的NFTL数据管理方法的另一个实施例的物理区块回收方法的步骤图;
图6是本发明的GC原理示意图;
图7是本发明的NFTL数据管理方法的另一个实施例的物理区块磨损平衡方法的步骤图;
图8是本发明的NFTL数据管理方法的另一个实施例的逻辑/物理区块映射管理方法的步骤图;
图9是本发明的NFTL数据管理方法的另一个实施例的坏块管理方法的步骤图;
图10是本发明再一个实施例的的NFTL数据存储系统的组成结构示意图。
附图标号说明:
10数据存取接口;20逻辑/物理区块映射管理装置;25物理区块缓冲区管理模块;26物理区块磨损平衡模块;30数据存取装置;31数据存入模块;32数据读取模块;35物理区块擦除模块;50物理区块回收装置;55无效物理页面通知模块;80坏块管理装置。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
图1是本发明的NFTL数据存储系统的框架结构图。图2是本发明的NFTL整体映射关系图。图3是本发明的LBA---->PBA映射关系示意图。
基于NAND的FTL整体关系如图1~3所示。在图中可见NFTL的重要性,是连接硬件层和用户层的桥梁,一个好的NFTL算法可以大大加强软件构架的稳定性和高效性。
NAND读写是以页面(page)为单位的,擦除是以区块(block)为单位的,但是系统层读写数据是以扇区为单位的,一个扇区512Byte,所以不能直接对NAND进行操作,这样就要求底层NAND存储介质到上层文件系统操作要经过一些转化,把文件系统对NAND的操作虚拟成对512Byte独立扇区的操作,即LBA到PBA的映射,即映射表。
参考图4A~图4D,是本发明的NFTL数据管理方法的一个实施例的数据存入/读取/删除/更新方法的步骤图。根据本发明的一个实施例,一种应用于NAND存储器的NFTL数据管理方法,包括:S10数据存入方法、S20数据读取方法、S30数据删除方法以及S40数据更新方法。
其中,参考图4A,是本实施例的数据存入方法的步骤图。S10数据存入方法包括步骤:S100获取向指定的逻辑区块地址的空白逻辑区块存入新数据的指令;S120为指定的逻辑区块地址分配映射的NAND存储器的物理区块地址、物理页面地址,所述分配的物理页面地址是可用的空白物理页面;S130向所述分配的物理区块地址、物理页面地址存入所述的新数据;和,S150在逻辑/物理区块映射表中,更新所述分配的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效。
参考图4B,是本发明的NFTL数据管理方法的一个实施例的数据读取方法的步骤图。S20数据读取方法包括步骤:S200获取向指定的逻辑区块地址的有效逻辑区块的读取有效数据的指令;S210根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为映射的NAND存储器的指定的物理区块地址、物理页面地址;S240读取所述指定的物理区块地址、物理页面地址的有效数据;和,S241根据逻辑/物理区块映射表将所述指定的物理页面地址的有效数据重组为所述指定的逻辑区块地址的有效数据。
参考图4C,是本发明的NFTL数据管理方法的一个实施例的数据删除方法的步骤图。S30数据删除方法包括步骤:S300获取将指定的逻辑区块地址的有效逻辑区块的删除数据的指令;S310根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为删除前映射的NAND存储器的指定的物理区块地址、物理页面地址;和,S360在逻辑/物理区块映射表中,删除所述指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。
参考图4D,是本发明的NFTL数据管理方法的一个实施例的数据更新方法的步骤图。S40数据更新方法包括步骤:S400获取向指定的逻辑区块地址的有效逻辑区块的更新数据的指令;S410根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为更新前映射的NAND存储器的指定的物理区块地址、物理页面地址;S420为指定的逻辑区块地址的有效数据逻辑区块分配更新后的指定物理区块地址、物理页面地址,所述分配的更新后的指定的物理页面地址是可用的空白的物理页面;S430向所述分配的更新后的指定物理区块地址、物理页面地址存入所述的更新后的新数据;S450在逻辑/物理区块映射表中,更新所述更新后的指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;和,S460在逻辑/物理区块映射表中,删除所述更新前的指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。
NFTL层次关系是在底层NAND存储介质和文件系统(如ext4)之间,当文件系统要写入或者更新一个特定的逻辑地址时,操作系统只要知道操作的LBA,NFTL会将数据写入到一个的空的PBA并更新映射表。并将旧的page设置为无效,这种整体映射关系描述如图2所示。
举例说明LBA到PBA的操作方式。假设在LBA的page0上写数据(对应PBA为n),然后要写入数据到page1(PBA为n+1)。然后page0的数据需要更新,但是更新后的数据由于NAND特性并不能直接覆盖上去,此时FTL会将其写入到PBA为(n+2)中,然后标记PBA是n的为“无效”,将page0的映射关系写到新的PBA对应page的OOB中,并将这个新映射的时间戳设置为最新,无效映射关系的时间戳由于没有新的早,就会被视为无效。经过多次这样的操作后,这个块上就会产生许多“无效”和“有效”的page。如果要将这个块中的“无效”page利用起来,就需要删除整个块,将“有效”page搬移到别的空白块中,再擦除。具体描述如图3所示。
本发明的NFTL数据管理方法的另一个实施例包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法与前述相同,此处不再复述。
其中S50物理区块回收方法,包括步骤:S570当一个可用的物理区块中全部为无效的物理页面或者部分为无效其余为空白的物理页面时,擦除该物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记(EC,EraseConut)加一。
参考图5,是本发明的NFTL数据管理方法的另一个实施例的物理区块回收方法的步骤图。在该实施例中,包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法以及S50物理区块回收方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法与前述相同,此处不再复述。
参考图5,其中,S50物理区块回收方法包括步骤:S510当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;S520为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;S530向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据;S550在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;S560在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效;S570擦除所述物理区块中全部物理页面上的数据,并将该物理区块设置为空白的物理区块;S580将该物理区块的擦除次数标记加一。
优选的,S50物理区块回收方法还包括步骤:S501将NAND存储器的物理区块划分出保留的缓冲物理区块;S502当空白的物理区块小于预设的物理区块耗尽警戒值时,释放所述保留的缓冲物理区块,并执行所述步骤S510~S580;S503当空白的物理区块重新大于预设的物理区块耗尽警戒值时,重新执行步骤S501。
优选的,S50物理区块回收方法还包括步骤:S504当空闲时,主动执行所述步骤S510~S580。
优选的,S50物理区块回收方法还包括步骤:S505当一个可用的物理区块中的空白的物理页面的比例小于预设的物理页面耗尽警戒值时,计算所述物理区块中的无效的物理页面的比例;S506当所述物理区块中的无效的物理页面的比例大于预设的无效物理页面通知值时,发出无效物理页面通知;并执行所述步骤S510~S580。
本发明在NFTL中使用了TRIM机制。TRIM机制是GC的一个辅助功能,可以提高GC的效率。
当系统上层更新一个page数据时,TRIM机制会直接通知NFTL这边,直接将这个page的数据标记为无效,如果这些page中的有效页数量低于阈值时,就去做GC。
TRIM实际系统层发给NFTL主控这边的一个指令,保证系统层写或者更新数据时,FTL主控这边主动去做GC,提供GC效率。
图6是本发明的GC原理示意图。参考图6,是本发明中的GC机制的一个实例。
第一次写数据或者更新数据时,当FTL信息中的EC值还有为0,此时不需要做GC,系统层需要新块直接更新映射表向下申请即可。
GC中预留了32块空间作为数据交换缓冲区,当整个NAND被写满,除了缓冲区没有别的空间可以用了,而上层又需要空间更新数据时,此时就需要GC。
在全盘查找哪些有效页的数量低于设定阈值的块(有效页越少,需要复制到新块的页就少,花费的时间就少,效率就提高了)。将这几个块中的有效数据做搬移到系统预留的缓冲区中,并把这些无用的块删除,EC加1。这些空块下次就可以放新数据。
GC在整个NFTL算法中至关重要,什么时候做GC和选取哪些块做GC,对性能有决定性的影响。举例说明当整个NAND空间满了,需要从block1和block2中将有效的页搬移到块3中,搬移操作结束就删除block1和block2。
图7是本发明的NFTL数据管理方法的另一个实施例的物理区块磨损平衡方法的步骤图。在另一个实施例中,包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法以及S60物理区块磨损平衡方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法与前述相同,此处不再复述。
参考图7,其中,S60物理区块磨损平衡方法,包括步骤:S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S651当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,执行所述S50物理区块回收方法。
优选的,S60物理区块磨损平衡方法,还包括步骤:S602当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,执行所述步骤S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S622当搜索到至少一个擦除次数标记最小且空白的物理区块时,执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
在本发明的另一个实施例中,包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法以及S60物理区块磨损平衡方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法与前述相同,此处不再复述。
其中,S60物理区块磨损平衡方法,包括步骤:S601当存入、更新数据时,执行步骤S610;S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S651当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,执行所述S50物理区块回收方法;S652跳回执行所述步骤S610直至获取的擦除次数标记的最小值、最大值不再超出预设的磨损平衡警戒值;S622当搜索到至少一个擦除次数标记最小且空白的物理区块时,执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
在本发明的另一个实施例中,包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法以及S60物理区块磨损平衡方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法与前述相同,此处不再复述。
其中,S60物理区块磨损平衡方法,包括步骤:S602当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,执行所述步骤S610搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;S621当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,执行步骤S630;S630获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;S640根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;S652当获取的擦除次数标记的最小值、最大值未超出预设的磨损平衡警戒值时,执行步骤S612;S612搜索空白的物理区块,并在空白的物理区块中搜索擦除次数标记最小的物理区块;并执行步骤S660将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面
优选的,上述实施例可以使用红黑树自平衡的方法搜索擦除次数标记最小、最大的物理区块。
图8是本发明的NFTL数据管理方法的另一个实施例的逻辑/物理区块映射管理方法的步骤图。在本发明的另一个实施例中,包括S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法、S60物理区块磨损平衡方法以及S70逻辑/物理区块映射管理方法。其中,S10数据存入方法、S20数据读取方法、S30数据删除方法、S40数据更新方法、S50物理区块回收方法、S60物理区块磨损平衡方法与前述相同,此处不再复述。
参考图8,S70逻辑/物理区块映射管理方法包括步骤:S710按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;S720建立物理区块、物理页面的逻辑/物理区块映射表;S730将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区。
优选的,还包括步骤S740当发生断电后,读取所述带外数据区的所述的逻辑/物理区块映射表的信息,重建逻辑/物理区块映射表。
优选的,所述步骤S710包括步骤S711按EXT4文件管理格式对NAND存储器进行逻辑格式化
优选的,所述步骤S730包括步骤S731将所述擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记存入所述物理区块中所述物理页面的带外数据区。
优选的,所述步骤S731中的数据有效标记是时间戳标记。
在本实施例中,所有FTL信息都保存在NAND每个page的OOB中,包括EC(EraseConut)、映射地址和时间戳等。映射表写在每个page的OOB中,每次有数据更新,就会在新的page的OOB中保存映射表,将新的映射关系写入。
本发明在异常断电时,第一次开机启动重新扫描每个块的第一个page的OOB,可以快速建立FTL映射表,建立完整的LBA到PBA的映射关系。相对于其他yaffs,ubi文件系统,有快速启动的优点。
在本发明的另一个NFTL数据管理方法的实施例中,除与以上实施例相同的部分不再复述之外,还包括S80坏块管理方法。
其中,S80坏块管理方法,包括步骤:S810对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
图9是本发明的NFTL数据管理方法的另一个实施例的坏块管理方法的步骤图。与以上实施例相同的部分不再复述。
参考图9,其中S80坏块管理方法包括步骤:S801当NAND存储器出厂时,对NAND存储器的物理区块进行状态检测;S820当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
优选的,还包括步骤S830根据物理区块状态检测的结果建立坏块管理表。
优选的,还包括步骤S802当写入/更新数据时,对NAND存储器的物理区块进行状态检测。
优选的,还包括步骤S831当写入/更新数据时,对NAND存储器的物理区块进行状态检测。当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。更新所述坏块管理表。
举例而言,首次使用NAND时,全盘扫描整个NAND设备。用BBM(BadBlockManagement)管理所有出厂坏块和操作产生的坏块。将所有LBA到PBA的映射表写入NAND中。当文件系统需要写操作或者更新数据时,需要更新映射表。并使用软件WL(WearLeveling,损耗平衡)机制和GC(GarbagEcollection,垃圾回收)机制。
出厂坏块检查比较简单,直接检查OOB即可知道这个块是不是出厂坏块。如果是出厂坏块直接将这个块写入BBT(BadBlockTable)中。
使用中的坏块是在每次写入和擦除后检查这个块状态,如果发现有错误,就会将这个块标记为坏块,将这种坏块标记为编程坏块,此时BBM会分配一个新的块搬移这个块中的数据,并将原块的映射地址写入新块的OOB,同时将这个编程坏块写入BBT中。
BBT是一个逻辑块中的一个page,由于在这个page的OOB中有独特的MAGIC,使得每次开机扫描很容易找到bbt所在位置。
图10是本发明再一个实施例的的NFTL数据存储系统的组成结构示意图。
参考图10,是根据本发明又一个实施例的应用于NAND存储器的NFTL数据存储系统。该NFTL数据存储系统包括数据存取接口10,与所述数据存取接口10的逻辑/物理区块映射管理装置20,和与所述逻辑/物理区块映射管理装置20电连接的数据存取装置30。
其中,所述数据存取接口10获取向指定的逻辑区块地址的空白逻辑区块存入/读取/删除/更新数据的指令。
所述逻辑/物理区块映射管理装置20在写入/更新数据时,为指定的逻辑区块地址分配映射的NAND存储器的物理区块地址、物理页面地址,所述分配的物理页面地址是可用的空白物理页面。并在更新数据时,在逻辑/物理区块映射表中,更新所述分配的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效。在读取数据时,根据所述的逻辑/物理区块映射表,将所述指定的逻辑区块地址转换为映射的NAND存储器的指定的物理区块地址、物理页面地址。在删除/更新数据时,在逻辑/物理区块映射表中,删除所述指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。
所述数据存取装置30包括数据存入模块31、数据读取模块32。
所述数据存入模块31在存入/更新数据时,向所述分配的物理区块地址、物理页面地址存入所述的新数据。所述数据读取模块32在读取数据时,读取所述指定的物理区块地址、物理页面地址的有效数据;并根据逻辑/物理区块映射表将所述指定的物理页面地址的有效数据重组为所述指定的逻辑区块地址的有效数据。
根据所述数据存取接口10获取的存入/读取/删除/更新数据的指令,所述逻辑/物理区块映射管理装置20操作逻辑/物理区块映射表,所述数据存取装置30控制所述数据存入模块31、数据读取模块32,从而达成数据的存入/读取/删除/更新操作。
优选的,所述数据存取装置30还包括与逻辑/物理区块映射管理装置20电连接的物理区块擦除模块35。所述物理区块擦除模块35当一个可用的物理区块中全部为无效的物理页面或者部分为无效其余为空白的物理页面时,擦除该物理区块中全部物理页面上的数据,并将该物理区块擦除为空白的物理区块。所述逻辑/物理区块映射管理装置20还将该物理区块的擦除次数标记加一。
优选的,所述NAND存储器的NFTL数据存储系统,还包括与所述逻辑/物理区块映射管理装置20、数据存取装置30电连接的物理区块回收装置50。
其中,所述逻辑/物理区块映射管理装置20当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,根据所述的逻辑/物理区块映射表,将所述原有的有效的物理页面的物理区块地址、物理页面地址转换为映射的指定的逻辑区块地址;为各个有效的物理页面分配重新指定的物理区块地址、物理页面地址,所述分配的重新指定的物理区块地址是另一个的物理区块地址,所述分配的重新指定的物理页面地址是可用的空白的物理页面;在逻辑/物理区块映射表中,更新所述重新指定的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效性标记标识为有效;在逻辑/物理区块映射表中,删除所述原有的物理区块地址、物理页面地址与所述指定的逻辑区块地址的映射关系,并将数据有效标记标识为无效。
所述数据存取装置30还以所述数据存入模块31向所述分配的重新指定的物理区块地址、物理页面地址复制存入所述的有效的物理页面的有效数据。
所述物理区块回收装置50当一个可用的物理区块中有部分有效的物理页面其余为无效和/或空白的物理页面时,控制所述逻辑/物理区块映射管理装置20、数据存取装置30生成一个全部为无效的物理页面或者部分为无效其余为空白的物理页面的可回收的物理区块;并控制所述数据存取装置30的所述物理区块擦除模块35与所述逻辑/物理区块映射管理装置20将该物理区块擦除为空白的物理区块并将该物理区块的擦除次数标记加一。
优选的,所述逻辑/物理区块映射管理装置20还包括与所述物理区块回收装置50电连接的物理区块缓冲区管理模块25。
其中,所述物理区块缓冲区管理模块25将NAND存储器的物理区块划分出保留的缓冲物理区块;当空白的物理区块小于预设的物理区块耗尽警戒值时,释放所述保留的缓冲物理区块;当空白的物理区块重新大于预设的物理区块耗尽警戒值时,重新划分出保留的缓冲物理区块。
所述物理区块回收装置50由所述物理区块缓冲区管理模块25控制,当空白的物理区块小于预设的物理区块耗尽警戒值时,控制所述逻辑/物理区块映射管理装置20、数据存取装置30,回收有部分有效的物理页面其余为无效和/或空白的物理页面的物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块重新大于预设的物理区块耗尽警戒值。
优选的,所述物理区块回收装置50当空闲时,主动控制所述逻辑/物理区块映射管理装置20、数据存取装置30,回收有部分有效的物理页面其余为无效和/或空白的物理页面的物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块增多。
优选的,所述物理区块回收装置50还包括与所述逻辑/物理区块映射管理装置20、数据存取装置30电连接的无效物理页面通知模块55。
其中,所述逻辑/物理区块映射管理装置20当所述数据存取装置30删除、更新数据时,通知所述无效物理页面通知模块55,并提供物理区块中的空白、无效、有效的物理页面的数据。
所述无效物理页面通知模块55计算所述物理区块中的空白的物理页面的比例;当空白的物理页面的比例小于预设的物理页面耗尽警戒值时,计算所述物理区块中的无效的物理页面的比例;当所述物理区块中的无效的物理页面的比例大于预设的无效物理页面通知值时,发出无效物理页面通知。
所述物理区块回收装置50接收所述无效物理页面通知后,控制所述逻辑/物理区块映射管理装置20、数据存取装置30,回收所述的空白的物理页面的比例小于预设的物理页面耗尽警戒值且无效的物理页面的比例大于预设的无效物理页面通知值的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使空白的物理区块增多。
优选的,所述逻辑/物理区块映射管理装置20还包括与所述物理区块回收装置50电连接的物理区块磨损平衡模块26。
其中,所述物理区块磨损平衡模块26搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,通知所述物理区块回收装置50。
所述物理区块回收装置50接收所述物理区块磨损平衡模块26的通知后,控制所述逻辑/物理区块映射管理装置20、数据存取装置30,回收所述的擦除次数标记最小的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使所述物理区块的擦除次数增加,使NAND存储器的物理区块的擦除次数平衡。
优选的,所述物理区块磨损平衡模块26当现有的可用的物理区块中缺乏足够的可用的空白的物理页面时,搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当搜索到至少一个擦除次数标记最小且空白的物理区块时,将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
优选的,所述逻辑/物理区块映射管理装置20当所述数据存取装置30存入、更新数据时,通知所述所述物理区块磨损平衡模块26。
所述物理区块磨损平衡模块26搜索擦除次数标记最小的物理区块,并在擦除次数标记最小的物理区块中搜索空白的物理区块;当在擦除次数标记最小的物理区块中未搜索到空白的物理区块时,获取擦除次数标记的最小值,并搜索擦除次数标记最大的物理区块,获取擦除次数标记的最大值;根据获取的擦除次数标记的最小值、最大值与预设的磨损平衡警戒值比较;当获取的擦除次数标记的最小值、最大值超出预设的磨损平衡警戒值时,通知所述物理区块回收装置50。
所述物理区块回收装置50接收所述物理区块磨损平衡模块26的通知后,控制所述逻辑/物理区块映射管理装置20、数据存取装置30,回收所述的擦除次数标记最小的所述物理区块,擦除为空白的物理区块并将该物理区块的擦除次数标记加一,使所述物理区块的擦除次数增加。
所述物理区块磨损平衡模块26循环执行搜索擦除次数标记最小且空白的物理区块,并与物理区块回收装置50配合,使NAND存储器的物理区块的擦除次数平衡,直至擦除次数标记的最小值、最大值不再超出预设的磨损平衡警戒值。
优选的,所述物理区块磨损平衡模块26当获取的擦除次数标记的最小值、最大值未超出预设的磨损平衡警戒值时,搜索空白的物理区块,并在空白的物理区块中搜索擦除次数标记最小的物理区块;并将搜索到的的物理区块设置为可用的物理区块,并将该新设的可用的物理区块中的各个空白的物理页面设置为可用的空白的物理页面。
优选的,所述物理区块磨损平衡模块26使用红黑树自平衡的方法搜索擦除次数标记最小、最大的物理区块。
优选的,所述逻辑/物理区块映射管理装置20还按预设文件管理格式对NAND存储器进行逻辑格式化,建立逻辑区块;建立物理区块、物理页面的逻辑/物理区块映射表;并将所述的逻辑/物理区块映射表的信息存入所述物理区块中所述物理页面的带外数据区。
优选的,所述逻辑/物理区块映射管理装置20按EXT4文件管理格式对NAND存储器进行逻辑格式化。
优选的,所述逻辑/物理区块映射管理装置20还在系统发生断电后,读取所述带外数据区的所述的逻辑/物理区块映射表的信息,重建逻辑/物理区块映射表。
优选的,所述逻辑/物理区块映射管理装置20将所述擦除次数标记、所述物理区块/页面地址与逻辑区块地址的映射关系、所述数据有效标记存入所述物理区块中所述物理页面的带外数据区。
优选的,所述数据有效标记是时间戳标记。
优选的,本发明的NAND存储器的NFTL数据存储系统,还包括与所述逻辑/物理区块映射管理装置20电连接的坏块管理装置80,所述坏块管理装置80对NAND存储器的物理区块进行状态检测;当所述物理区块的状态检测出现错误时,将该物理区块标记为坏块。
优选的,所述坏块管理装置80当NAND存储器出厂时,对NAND存储器的物理区块进行状态检测。
优选的,所述坏块管理装置80对NAND存储器的物理区块进行状态检测时,根据物理区块状态检测的结果建立坏块管理表。
优选的,所述坏块管理装置80当所述所述数据存取装置30包括存入数据、或更新数据时,对NAND存储器的物理区块进行状态检测;并更新所述坏块管理表。
本发明的实现方式是全盘NFTL算法,即系统镜像的存储方式和用户文件的存储方式保持一致。在NFTL完成初始化后,剔除闪存的坏快,把设备封装成一个块设备,并在上面加上BBM和红黑树损耗平衡算法和垃圾处理机制;同时预留几个逻辑块用于垃圾回收时缓存数据。映射表保存在每个page的OOB中,这样保证系统启动不需要全盘扫描就可以知道闪存的使用情况,可以快速启动。相对于一般的yaffs和ubi,有更高的使用效率和较强的系统稳定性。
综上所述,本发明是基于NAND存储设备上实现的一种新的NFTL策略,根据本发明的NFTL策略,可以提供上层LPA到底层PBA的整套映射关系,同时可以很好的管理坏块,带TRIM的WL和GC算法能够使整个系统高效。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。同时本发明还可以有其他各种不同实施例,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,如不同的BBM和GC算法,WL的变形等,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
机译: 用于NAND存储器寻址的存储器控制器,NAND存储器设备,数据存储系统和方法
机译: NAND存储器单元阵列,包括存储器单元阵列的NAND闪存以及用于处理NAND闪存存储器数据的方法
机译: 具有不对称电荷陷阱的多状态存储器单元,存储器阵列,电气系统,用于编程,擦除或读取多状态NAND存储器单元的方法以及读取多状态NAND存储器单元的阵列的方法