Nand闪存的映射表管理方法及其系统与流程

文档序号:11250806阅读:887来源:国知局
Nand闪存的映射表管理方法及其系统与流程

本发明涉及存储技术领域,尤其涉及一种nand闪存的映射表管理方法及其系统。



背景技术:

nand闪存由于其体积小、质量轻、抗震性强、噪声小、耐高温和低功耗等优点,已经广泛地应用在常见的电子产品中。nand闪存中的ftl(flashtranslationlayer,闪存转换层)是一种与操作系统间对话的介质,由于存在ftl,因此操作系统可将闪存等产品作为一个磁盘驱动器,在闪存等产品上建立多个虚拟的数据块或者扇区用以存储及管理数据。

目前,由于传统的单层或者双层映射表太大,而电子产品的单芯片的内存大小有限,所以有必要减小映射表在单芯片的内存中所占的空间。



技术实现要素:

本发明所要解决的技术问题是:提供一种nand闪存的映射表管理方法及其系统,可以减少占用电子产品的单芯片的内存空间。

为了解决上述技术问题,本发明采用的技术方案为:

一种nand闪存的映射表管理方法,包括:

当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置;

判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;

若是,则将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。

本发明采用的另一技术方案为:

一种nand闪存的映射表管理系统,包括:

建立模块,用于当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置;

判断模块,用于判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;

存放模块,用于若是,则将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。

本发明的有益效果在于:当将数据写入nand闪存时,建立具有三级映射关系的映射表,并且只将一定个数的一级映射表、二级映射表和三级映射表存放在单芯片的内存中,其余的则存放在nand闪存中,可以减少映射表在单芯片的内存中的占用空间,降低单芯片的制作成本,并且本发明采用三级映射的方式,可以提高查询效率。

附图说明

图1为本发明的nand闪存的映射表管理方法的流程图;

图2为本发明的nand闪存的映射表管理系统的示意图。

标号说明:

1、建立模块;2、判断模块;3、存放模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:只将一定个数的一级映射表、二级映射表和三级映射表存放在单芯片的内存中,其余的则存放在nand闪存中,可以减少映射表在单芯片的内存中的占用空间,降低单芯片的制作成本。

请参照图1,一种nand闪存的映射表管理方法,包括:

当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置;

判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;

若是,则将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。

从上述描述可知,本发明的有益效果在于:当将数据写入nand闪存时,建立具有三级映射关系的映射表,并且只将一定个数的一级映射表、二级映射表和三级映射表存放在单芯片的内存中,其余的则存放在nand闪存中,可以减少映射表在单芯片的内存中的占用空间,降低单芯片的制作成本,并且本发明采用三级映射的方式,可以提高查询效率。存放在单芯片的内存中的映射表的数目可以根据内存大小进行设置,例如可以存放两个一级映射表,两个二级映射表和十六个三级映射表。

进一步的,当需要建立新的三级映射表,并且单芯片的内存中的三级映射表的个数达到预设个数时,将访问次数最少的三级映射表存放至nand闪存中,并同步更新对应的二级映射表。

由上述描述可知,可以根据需要将访问次数最少的,即将最不常用的三级映射表存放至nand闪存中,对存放在单芯片的内存中的映射表进行实时调整,可以提高查询效率。

进一步的,当需要建立新的二级映射表,并且单芯片的内存中的二级映射表的个数达到预设个数时,将访问次数最少的二级映射表存放至nand闪存中,并同步更新对应的一级映射表。

由上述描述可知,可以将使用较少的二级映射表存至nand闪存中,对二级映射表进行实时调整。

进一步的,当存放于nand闪存上的一三级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的三级映射表存放至nand闪存中,并将所述一三级映射表存放至单芯片的内存中,同步更新对应的二级映射表。

进一步的,当存放于nand闪存上的一二级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的二级映射表存放至nand闪存中,并将所述一二级映射表存放至单芯片的内存中,同步更新对应的一级映射表。

进一步的,当存放于nand闪存上的一一级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的一级映射表存放至nand闪存中,并将所述一一级映射表存放至单芯片的内存中。

由上述描述可知,当nand闪存上的映射表访问次数较多时,将其与单芯片的内存中访问次数最少的映射表互换存放位置,可以更加有效地管理相关数据。

请参照图2,本发明的另一技术方案为:

一种nand闪存的映射表管理系统,包括:

建立模块,用于当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置;

判断模块,用于判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;

存放模块,用于若是,则将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。

进一步的,还包括第一更新模块,用于当需要建立新的三级映射表,并且单芯片的内存中的三级映射表的个数达到预设个数时,将访问次数最少的三级映射表存放至nand闪存中,并同步更新对应的二级映射表。

进一步的,还包括第二更新模块,用于当需要建立新的二级映射表,并且单芯片的内存中的二级映射表的个数达到预设个数时,将访问次数最少的二级映射表存放至nand闪存中,并同步更新对应的一级映射表。

进一步的,还包括第三更新模块,用于当存放于nand闪存上的一三级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的三级映射表存放至nand闪存中,并将所述一三级映射表存放至单芯片的内存中,同步更新对应的二级映射表。

进一步,还包括第四更新模块,用于当存放于nand闪存上的一二级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的二级映射表存放至nand闪存中,并将所述一二级映射表存放至单芯片的内存中,同步更新对应的一级映射表。

进一步的,还包括第五更新模块,用于当存放于nand闪存上的一一级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的一级映射表存放至nand闪存中,并将所述一一级映射表存放至单芯片的内存中。

实施例一

请参照图1,本发明的实施例一为:

一种nand闪存的映射表管理方法,可以减少占用电子产品的单芯片的内存空间,包括:

s1、当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置。本实施例中,一个一级映射表对应的二级映射表的存放位置的数量可以根据需要进行设置,一个二级映射表对应的三级映射表的存放位置的数量也可以根据需要进行设置,一个三级映射表对应的实际位置也可以根据需要进行设置,一个存放位置的大小可以是2字节、4字节或者8字节。在建立映射表时,可以根据数据大小来建立相应大小的映射表,当存入新的数据时,根据需要增加映射表的数量。

s2、判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;若是,则进行步骤s3,若否,则将一级映射表、二级映射表和三级映射表全部存放至单芯片的内存中。在单芯片的内存中存放的一级映射表、二级映射表和三级映射表的个数可以根据单芯片的内存大小来定,各级映射表的预设个数可以相同,也可以不同。例如,可以存放两个一级映射表,两个二级映射表和16个三级映射表,若每一个映射表的大小均为4096bytes,那么存放在单芯片的内存中的映射表的总大小为80kbytes,占用的单芯片的内存空间很小。

s3、将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。本实施例中,可以将映射表存放至nand闪存的slc块中。

本实施例中,当需要建立新的三级映射表,并且单芯片的内存中的三级映射表的个数达到预设个数时,将访问次数最少的三级映射表存放至nand闪存中,并同步更新对应的二级映射表。当需要建立新的二级映射表,并且单芯片的内存中的二级映射表的个数达到预设个数时,将访问次数最少的二级映射表存放至nand闪存中,并同步更新对应的一级映射表。

本实施例中,当存放于nand闪存上的一三级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的三级映射表存放至nand闪存中,并将所述一三级映射表存放至单芯片的内存中,同步更新对应的二级映射表。当存放于nand闪存上的一二级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的二级映射表存放至nand闪存中,并将所述一二级映射表存放至单芯片的内存中,同步更新对应的一级映射表。当存放于nand闪存上的一一级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的一级映射表存放至nand闪存中,并将所述一一级映射表存放至单芯片的内存中。预设次数可以根据需要进行设置,对于不同级的映射表,预设次数可以设置为相同,也可以设置为不同。

实施例二

请参照图2,本发明的实施例二为:一种nand闪存的映射表管理系统,与实施例一的方法相对应,包括:

建立模块1,用于当将数据写入nand闪存时,建立至少一个的一级映射表、二级映射表和三级映射表,所述一级映射表对应至少一个的所述二级映射表的存放位置,所述二级映射表对应至少一个的所述三级映射表的存放位置,所述三级映射表对应所述数据在nand闪存上的实际位置;

判断模块2,用于判断所述一级映射表、二级映射表和三级映射表的个数是否超过预设个数;

存放模块3,用于若是,则将预设个数的一级映射表、二级映射表和三级映射表存放至单芯片的内存中,将未存放在单芯片的内存中的一级映射表、二级映射表和三级映射表存放至nand闪存中。

进一步的,还包括第一更新模块,用于当需要建立新的三级映射表,并且单芯片的内存中的三级映射表的个数达到预设个数时,将访问次数最少的三级映射表存放至nand闪存中,并同步更新对应的二级映射表。

进一步的,还包括第二更新模块,用于当需要建立新的二级映射表,并且单芯片的内存中的二级映射表的个数达到预设个数时,将访问次数最少的二级映射表存放至nand闪存中,并同步更新对应的一级映射表。

进一步的,还包括第三更新模块,用于当存放于nand闪存上的一三级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的三级映射表存放至nand闪存中,并将所述一三级映射表存放至单芯片的内存中,同步更新对应的二级映射表。

进一步,还包括第四更新模块,用于当存放于nand闪存上的一二级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的二级映射表存放至nand闪存中,并将所述一二级映射表存放至单芯片的内存中,同步更新对应的一级映射表。

进一步的,还包括第五更新模块,用于当存放于nand闪存上的一一级映射表的访问次数超过预设次数时,将单芯片的内存中访问次数最少的一级映射表存放至nand闪存中,并将所述一一级映射表存放至单芯片的内存中。

综上所述,本发明提供的一种nand闪存的映射表管理方法及其系统,只将一定个数的一级映射表、二级映射表和三级映射表存放在单芯片的内存中,其余的则存放在nand闪存中,可以减少映射表在单芯片的内存中的占用空间,降低单芯片的制作成本,并且实时对单芯片的内存中的映射表进行调整,可以有效地对相关数据进行管理。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1