CN103034586B - 通过闪存转换层识别上层应用的方法及其系统 - Google Patents

通过闪存转换层识别上层应用的方法及其系统 Download PDF

Info

Publication number
CN103034586B
CN103034586B CN201210505054.4A CN201210505054A CN103034586B CN 103034586 B CN103034586 B CN 103034586B CN 201210505054 A CN201210505054 A CN 201210505054A CN 103034586 B CN103034586 B CN 103034586B
Authority
CN
China
Prior art keywords
sequential
write
write order
block
random
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210505054.4A
Other languages
English (en)
Other versions
CN103034586A (zh
Inventor
张雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ramaxel Technology Shenzhen Co Ltd
Original Assignee
Ramaxel Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ramaxel Technology Shenzhen Co Ltd filed Critical Ramaxel Technology Shenzhen Co Ltd
Priority to CN201210505054.4A priority Critical patent/CN103034586B/zh
Publication of CN103034586A publication Critical patent/CN103034586A/zh
Application granted granted Critical
Publication of CN103034586B publication Critical patent/CN103034586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明适用于存储技术领域,提供了一种通过闪存转换层识别上层应用的方法及其系统,所述方法包括如下步骤:在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型。借此,本发明使通过闪存转换层可以识别上层应用下发的写命令的类型。

Description

通过闪存转换层识别上层应用的方法及其系统
技术领域
本发明涉及存储技术领域,尤其涉及一种通过闪存转换层识别上层应用的方法及其系统。
背景技术
NANDFlash是Flash内存的一种,属于非易失性、抗振动、存储速度快、功耗低的特性,使其广泛应用于手机、数码相机等便携式移动设备。但是NANDFlash存在一个限制条件:需要先擦除再写入,数据读写单位为page,擦除的单位为block,而且block的擦除次数有限;因此,文件系统不能直接访问它。
FTL(FlashTranslationLayer闪存转换层)是文件系统和NANDFlash之间的转换层,使文件系统可以像磁盘一样访问NANDFlash。文件系统与FTL的层次关系如图1所示:
FTL由三个核心功能组成:地址映射、垃圾回收、均衡磨损。FTL地址映射通常分为块映射、页映射、块页混合映射三类。块页混合映射一般是多级映射,第一级块映射,第二级块内页映射。
目前FTL多采用块页混合映射,而且采用日志系统原理,将数据的更新记录在日志块上。这种日志式混合映射类型的FTL通常将Flash块分成两类:数据块和日志块,数据块和日志块的对应关系一对一,或者多对多。垃圾回收的代价主要来源于擦除操作,其次是复制有效数据。因此,对于顺序写,采用块映射可以节约内存空间,数据块和日志块采用一一对应的关系,垃圾回收效率较高;对于随机写,一般采用页映射,日志块对应多个数据块,提高日志块的利用率,但是垃圾回收的效率不高。当前常见FTL算法只提供一种数据块和日志块的对应关系,而且鲜见有区分上层应用的机制,因此,不能满足如图1所示的通用计算机系统的复杂应用。
综上可知,现有闪存转换层识别上层应用的技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种通过闪存转换层识别上层应用的方法及其系统,使通过闪存转换层可以识别上层应用下发的写命令的类型。
为了实现上述目的,本发明提供一种通过闪存转换层识别上层应用的方法,所述方法包括如下步骤:
在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型。
根据所述的方法,在所述在闪存转换层建立顺序写筛选列表的步骤之前包括:
将闪存存储块划分为日志块、数据块以及空白块;
所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;并且分别设置所述顺序日志块和随机日志块的上下限的数目;
在所述根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型的步骤之后包括:
根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
根据所述的方法,在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型的步骤包括:
在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
根据所述的方法,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤包括:
在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
根据所述的方法,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤还包括:
在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
若是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
为了实现本发明的另一实施例,本发明提供了一种通过闪存转换层识别上层应用的系统,包括:
第一建立模块,用于在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
第二建立模块,用于在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
判断模块,用于在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型。
根据所述的系统,所述系统还包括:
划分模块,用于将闪存存储块划分为日志块、数据块以及空白块;
所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;
设置模块,用于分别设置所述顺序日志块和随机日志块的上下限的数目;
执行模块,用于根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
根据所述的系统,所述判断模块包括:
第一检查子模块,用于在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
第一增加子模块,用于在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
第二检查子模块,用于在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
第二增加子模块,用于在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
更新子模块,用于在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
标记子模块,用于在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
根据所述的系统,所述执行模块包括:
分配子模块,用于在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
第一执行子模块,用于当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
第二执行子模块,用于在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
根据所述的系统,所述执行模块还包括:
第三执行子模块,用于在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块时,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
第四执行子模块,用于若是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块时,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
本发明通过建立两个LRU表以识别上层应用是顺序还是随机;闪存转换层的一级映射按照块映射;当遇到随机写时可以动态增加块内页映射,当遇到顺序写使,垃圾回收时释放页映射空间。此外,将闪存内存储块划分的日志块分为两组:顺序日志块和随机日志块,顺序日志块对应一个数据块,随机日志块对应多个数据块。在顺序写和随机写交替下发时,支持顺序日志块角色向随机日志块转变,因此增加闪存转换层识别上层应用的功能,提高了垃圾回收的效率。
附图说明
图1是现有技术中文件系统与闪存转换层的层次关系图;
图2是本发明第一实施例提供的通过闪存转换层识别上层应用的系统结构图;
图3是本发明第二~第五实施例提供的通过闪存转换层识别上层应用的系统结构图;
图4A是本发明一个实施例提供的闪存转换层的模型示意图;
图4B是本发明一个实施例提供的检测顺序写的LRU表示意图;
图5A是本发明一个实例提供日志块申请示意图;
图5B是本发明一个实例提供日志块申请示意图;
图5C是本发明一个实例提供日志块申请示意图;
图5D是本发明一个实例提供日志块申请示意图;
图6是本发明第六实施例提供的通过闪存转换层识别上层应用的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图2,在本发明的第一实施例中,提供了一种通过闪存转换层识别上层应用的系统100,包括:
第一建立模块10,用于在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
第二建立模块20,用于在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
判断模块30,用于在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型。
在该实施例中,通过第一建立模块10和第二建立模块20分别在闪存转换层建立顺序写筛选列表和顺序写候选列表以记录上层应用下发的写命令,判断模块30并根据具体的记录判断上层应用下发的所述写命令的类型。因此,在该实施例中,该闪存转换层可以识别上层应用程序下发的是随机写还是顺序写,根据不同的应用采取不同日志块分配和回收机制,可以有效提高垃圾回收效率。
参见图3,在本发明的第二实施例中,所述系统还包括:
划分模块40,用于将闪存存储块划分为日志块、数据块以及空白块;
所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;
设置模块50,用于分别设置所述顺序日志块和随机日志块的上下限的数目;
执行模块60,用于根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
在该实施例中,在传统日志式混合映射类型的闪存转换层的基础上,增加识别上层应用的功能,根据应用类型采取不同的地址映射和垃圾回收机制,可以有效提高垃圾回收效率。参见图5A~5B,划分模块40将所有Flash块分为数据块、日志块、空白块。并且设置模块50还分别设置所述顺序日志块和随机日志块的上下限的数目;当所述顺序日志块和随机日志块不够时,可以从空白块中申请日志块;当上述两种日志块达到上限或者从空白块中申请不到日志块时,启动垃圾回收机制。执行模块60则根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
参见图3,在本发明的第三实施例中,判断模块30包括:
第一检查子模块31,用于在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
第一增加子模块32,用于在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
第二检查子模块33,用于在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
第二增加子模块34,用于在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
更新子模块35,用于在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
标记子模块36,用于在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
参见图3,在本发明的第四实施例中,执行模块60包括:
分配子模块61,用于在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
第一执行子模块62,用于当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
第二执行子模块63,用于在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
在该实施例中,地址映射采用一级块映射,映射到各个数据块,随机数据块构造块内页映射关系;日志块又分为两个组:顺序日志块和随机日志块,顺序日志块对应一个数据块,随机日志块供多个数据块使用。两组日志块都分别设置了上限和下限块个数,当日志块不够时,从空白块中申请日志块;当日志块达到上限或者从空白块中申请不到日志块时,启动垃圾回收机制;空白块至少保留N个块。识别上层应用的功能依靠两个LRU(LeastRecentlyUsed,最近最少使用)链表实现,第一个表是顺序写筛选表,记录下一个写命令lba,如LBA(LogicalBlockAddressing,逻辑块寻址),链表长度根据系统可能并发的写命令个数而定,建议链表长度定义为1024。第二个表是顺序写候选表,记录顺序写,链表长度根据系统可能同时出现的顺序写应用个数而定,第二个链表建议长度为64。顺序写筛选表中每个表项由两个成员组成:下一个命令起始地址StartLBA和当前命令长度CurLen;顺序写候选表中每个表项也由两个成员组成:下一个命令起始地址StartLBA和顺序写总长度TotolLen。
参见图3,在本发明的第五实施例中,执行模块60还包括:
第三执行子模块64,用于在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块时,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
第四执行子模块65,用于若是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块时,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
在该实施例中,当有写命令(lba1,len1)下发时,检查lba1是否在筛选表中有记录;如果没有记录,则筛选表中增加一个记录(lba1+len1,len1);如果有lba1的记录(lba1,len0),然后检查lba1是否在候选表中记录:如果没有,则候选表中增加记录(lba1+len1,len0+len1);如果有记录(lba1,total),则更新候选表中记录(lba1+len1,total+len1);最后更新筛选表中记录(lba1+len1,len1)。如果候选表中记录total大于数据块大小,则标记这次写请求为顺序写。
参见图5A~图5D,在本发明的一个实施例中,根据写请求标志位为顺序写,则地址映射按照块映射,为一个数据块分配一个顺序日志块,如图5A所示;当数据块上的数据都无效或者当顺序块用完或者达到上限时,启动垃圾回收机制。
如果写请求标志位为随机写,则地址映射按照页映射,每个数据块上页数据更新可以存放在不同的随机日志块上,如图5B所示;当所有随机日志块用完或者达到上限时,启动垃圾回收机制;先回收所有日志块,然后按随机日志块下限从空白块中申请擦除次数最少的块。
如果顺序写和随机写交替下发到数据块,则遵循下面原则:如果是顺序写,该数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块,则如图5C所示,给它分配一个顺序日志块,当垃圾回收时释放页映射表;如果是随机写,该数据块没有页映射表,有一个顺序日志块,则如图5D所示,构建页映射表,并且将它的顺序日志块转换成随机日志块,当随机日志块达到上限时,启动垃圾回收机制。在上述多个实施例中,该系统多个模块可以是硬件单元或软硬件结合单元。
参见图6,在本发明的第六实施例中,提供了一种通过闪存转换层识别上层应用的方法,所述方法包括如下步骤:
步骤S601中,第一建立模块10在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
步骤S602中,第二建立模块20在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
步骤S603中,判断模块30在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型。
在该实施例中,参见图4A,通过第一建立模块10、第二建立模块20建立两个LRU表,然后判断模块30通过上述两个LRU表识别上层应用下发的是顺序写命令还是随机写命令,以提高闪存的垃圾回收率。
在本发明的第七实施例中,在所述步骤S601之前包括:
划分模块40将闪存存储块划分为日志块、数据块以及空白块;
所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;并且设置模块50分别设置所述顺序日志块和随机日志块的上下限的数目;
在所述步骤S603之后包括:
执行模块60根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
在该实施例中,参见图4B,需要通过划分模块40将闪存存储块划分为日志块、数据块以及空白块;并且设置模块50分别设置所述顺序日志块和随机日志块的上下限的数目;在判断模块30通过上述两个LRU表识别上层应用下发的是顺序写命令还是随机写命令后,进一步的还通过执行模块60根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理,例如适时的执行垃圾回收机制。
在本发明的第八实施例中,在所述步骤S603包括:
第一检查子模块31在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
第一增加子模块32在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
第二检查子模块33在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
第二增加子模块34在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
更新子模块35在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
标记子模块36在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
在该实施例中,第一检查子模块31检查所述上层应用下发所述写命令是否在所述顺序写筛选列表中有记录;第一增加子模块32在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;第二检查子模块33在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:第二增加子模块34在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;更新子模块35在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;因此,主要通过所述两个LRU表的记录判断上层下发的写命令的类型,最后标记子模块36在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
在本发明的第九实施例中,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤包括:
分配子模块61在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
第一执行子模块62当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
第二执行子模块63在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
在该实施例中,分配子模块61在所述写命令标记为顺序写命令时,则将所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;并且第一执行子模块62当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收,以及时清理垃圾,提高处理上层应用下发的写命令的速率。而第二执行子模块63在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收,以及时清理垃圾,提高处理上层应用下发的写命令的速率。
在本发明的第十实施中,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤还包括:
第三执行子模块64在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
第四执行子模块65则在若下发的是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
在该实施中,随机写和顺序写的命令下发的交替进行的,则第三执行子模块64在下发的为所述顺序写命令,并且所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块时给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;提高垃圾回收的效率。另一方面,第四执行子模块65则上层应用下发的是所述随机写命令时,所述数据块没有页映射表,但是具有顺序日志块时,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收;提高垃圾回收的效率。另外,闪存转换层的动态均衡磨损是依靠垃圾回收,以及从空白块中申请擦除次数最少的块作为日志块来实现,达到块擦除次数的动态平衡。为防止不活跃的块擦除次数过少,块得不到充分应用,在后台启动静态均衡磨损。
综上所述,本发明通过建立两个LRU表以识别上层应用是顺序还是随机;闪存转换层的一级映射按照块映射;当遇到随机写时可以动态增加块内页映射,当遇到顺序写使,垃圾回收时释放页映射空间。此外,将闪存内存储块划分的日志块分为两组:顺序日志块和随机日志块,顺序日志块对应一个数据块,随机日志块对应多个数据块。在顺序写和随机写交替下发时,支持顺序日志块角色向随机日志块转变,因此增加闪存转换层识别上层应用的功能,提高了垃圾回收的效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (8)

1.一种通过闪存转换层识别上层应用的方法,其特征在于,所述方法包括如下步骤:
在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型;
在所述在闪存转换层建立顺序写筛选列表的步骤之前包括:
将闪存存储块划分为日志块、数据块以及空白块;
在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型的步骤包括:
在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
2.根据权利要求1所述的方法,其特征在于,所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;并且分别设置所述顺序日志块和随机日志块的上下限的数目;
在所述根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型的步骤之后包括:
根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤包括:
在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
4.根据权利要求3所述的方法,其特征在于,所述根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理的步骤还包括:
在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
若是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
5.一种通过闪存转换层识别上层应用的系统,其特征在于,包括:
第一建立模块,用于在闪存转换层建立顺序写筛选列表,所述顺序写筛选列表记录上层应用的下一个写命令的逻辑块寻址;
第二建立模块,用于在所述闪存转换层建立顺序写候选列表,所述顺序写候选列表记录所述上层应用下发的写命令;
判断模块,用于在所述上层应用下发写命令时,根据所述顺序写筛选列表和顺序写候选列表的记录判断所述上层应用下发的所述写命令的类型;
划分模块,用于将闪存存储块划分为日志块、数据块以及空白块;
所述判断模块包括:
第一检查子模块,用于在所述上层应用下发写命令时,检查所述写命令是否在所述顺序写筛选列表中有记录;
第一增加子模块,用于在所述写命令所述顺序写筛选列表中没有记录时,则在所述顺序写筛选列表中增加一个所述写命令的数目及长度的记录;
第二检查子模块,用于在所述写命令所述顺序写筛选列表中有记录时,则检查所述写命令是否在所述顺序写候选列表中有记录:
第二增加子模块,用于在所述顺序写候选列表中没有记录时,则在所述顺序写候选列表中增加所述写命令的数目及长度的记录;
更新子模块,用于在所述顺序写候选列表中有记录时,则更新所述顺序写候选列表中所述写命令的数目及总长度记录;
标记子模块,用于在所述顺序写候选列表中记录所述写命令的总长度大于所述数据块大小,则标记该次所述写命令为顺序写命令,否则标记为随机写命令。
6.根据权利要求5所述的系统,其特征在于,所述日志块分为顺序日志块和随机日志块;所述顺序日志块对应一个所述数据块,所述随机日志块对应多个所述数据块;
所述系统还包括:
设置模块,用于分别设置所述顺序日志块和随机日志块的上下限的数目;
执行模块,用于根据所述写命令的类型以及当前所述顺序日志块和随机日志块的情况,执行相应的操作处理。
7.根据权利要求6所述的系统,其特征在于,所述执行模块包括:
分配子模块,用于在所述写命令标记为顺序写命令时,则所述闪存转换层的地址映射按照块映射,为一个所述数据块分配一个所述顺序日志块;
第一执行子模块,用于当所述数据块上的数据都无效或者当所述顺序日志块用完或者达到所述顺序日志块数目的上限时,则执行垃圾回收;
第二执行子模块,用于在所述写命令标记为随机写命令时,则所述闪存转换层的地址映射按照页映射,每个所述数据块上页数据更新可以存放在不同的所述随机日志块上;当所有的所述随机日志块用完或者达到所述随机日志块数目的上限时,则执行垃圾回收。
8.根据权利要求7所述的系统,其特征在于,所述执行模块还包括:
第三执行子模块,用于在所述顺序写命令和随机写命令交替下发到所述数据块时,则若是所述顺序写命令,所述数据块有页映射表,或者已经关联了随机日志块,但是没有关联顺序日志块时,则给所述数据块分配一个顺序日志块,当垃圾回收时释放页映射表;
第四执行子模块,用于若是所述随机写命令,所述数据块没有页映射表,但是具有顺序日志块时,则构建页映射表,并且将所述数据块的顺序日志块转换成随机日志块,当达到所述随机日志块数目的上限时,执行垃圾回收。
CN201210505054.4A 2012-11-30 2012-11-30 通过闪存转换层识别上层应用的方法及其系统 Active CN103034586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210505054.4A CN103034586B (zh) 2012-11-30 2012-11-30 通过闪存转换层识别上层应用的方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210505054.4A CN103034586B (zh) 2012-11-30 2012-11-30 通过闪存转换层识别上层应用的方法及其系统

Publications (2)

Publication Number Publication Date
CN103034586A CN103034586A (zh) 2013-04-10
CN103034586B true CN103034586B (zh) 2016-03-23

Family

ID=48021499

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210505054.4A Active CN103034586B (zh) 2012-11-30 2012-11-30 通过闪存转换层识别上层应用的方法及其系统

Country Status (1)

Country Link
CN (1) CN103034586B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365788B (zh) * 2013-08-06 2016-01-13 山东大学 实时闪存转换层使用的自适应局部垃圾回收方法
CN104134027B (zh) * 2014-07-23 2017-10-10 华为技术有限公司 一种顺序流识别的方法以及装置
KR102320864B1 (ko) * 2015-03-24 2021-11-03 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
CN113590504A (zh) * 2016-06-29 2021-11-02 北京忆恒创源科技股份有限公司 存储日志帧以及日志条目的固态硬盘
CN110955614B (zh) * 2018-09-26 2022-05-03 Oppo广东移动通信有限公司 文件缓存的回收方法、装置、存储介质及终端
CN113093997B (zh) * 2021-04-19 2021-09-28 深圳市安信达存储技术有限公司 一种基于Host Based FTL架构分离数据的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876945A (zh) * 2009-11-24 2010-11-03 西安奇维测控科技有限公司 针对逻辑地址不同数据自动配置虚拟块的方法
CN102163175A (zh) * 2011-04-26 2011-08-24 西安交通大学 一种基于局部性分析的混合地址映射方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
TWI398770B (zh) * 2008-07-08 2013-06-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876945A (zh) * 2009-11-24 2010-11-03 西安奇维测控科技有限公司 针对逻辑地址不同数据自动配置虚拟块的方法
CN102163175A (zh) * 2011-04-26 2011-08-24 西安交通大学 一种基于局部性分析的混合地址映射方法

Also Published As

Publication number Publication date
CN103034586A (zh) 2013-04-10

Similar Documents

Publication Publication Date Title
CN103034586B (zh) 通过闪存转换层识别上层应用的方法及其系统
TWI405082B (zh) 記憶體系統及其映射方法
EP2115595B1 (en) Memory device performance enhancement through pre-erase mechanism
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
CN102819496B (zh) 闪存ftl的地址转换方法
US8250286B2 (en) Block management method, and storage system and controller using the same
CN102841851B (zh) 闪存管理方法和闪存设备
CN105740163A (zh) 一种Nand Flash坏块管理方法
CN101740110A (zh) 一种Nand Flash擦除均衡的方法及装置
US20090198875A1 (en) Data writing method for flash memory, and controller and system using the same
CN101634967B (zh) 用于闪存的区块管理方法、储存系统与控制器
KR20080073499A (ko) 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
CN101556555B (zh) 用于闪存的区块管理方法、其控制器与储存系统
CN101630233B (zh) 用于闪存的数据存取方法、储存系统与控制器
CN106354658B (zh) 一种降低混合映射算法中映射表内存资源占用的方法
CN107632942A (zh) 一种固态硬盘实现lba级别trim命令的方法
CN103744614A (zh) 固态硬盘访问的方法及其固态硬盘
CN103744798A (zh) 固态硬盘的垃圾回收方法
CN102609358B (zh) 聚集静态数据的方法及其固态硬盘
CN101714065A (zh) 一种闪存控制器的映射信息管理方法
CN103049224A (zh) 将数据导入物理磁带的方法、装置和系统
CN101661431B (zh) 用于快闪存储器的区块管理方法、快闪储存系统及控制器
CN105988950B (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
CN101425338B (zh) 非易失性存储器的写入方法及使用此方法的控制器
CN102520885B (zh) 一种混合硬盘的数据管理系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant