具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,为了使本领域技术人员更好的理解本发明,下面对本发明实施例中逻辑块和物理块的地址映射关系进行简要介绍:
参见图1(a)和图1(b),图1(a)为现有技术中逻辑块地址信息和物理块地址信息的映射关系图。可知,现有技术中维护的地址映射信息仅包括了逻辑块地址信息与物理块地址信息的映射关系。图1(b)为本发明实施例提供的逻辑块地址信息与物理块地址信息、以及该物理块地址信息对应的当前物理块中原存储数据所占用的地址范围信息映射关系图。通过比较图1(b)和图1(a),可知,本发明实施例中维护的地址映射信息中不仅维护了逻辑块地址信息与物理块地址信息的关系图,而且还维护了物理块地址信息对应的当前物理块中原存储数据所占用的第一地址范围信息。
由于非易失性存储系统(nand flash)是以页为单位进行读或者写操作的,而擦除操作以块为单位。每个块中通常包含64个页,当我们对nand flash进行写操作时,对同一个块的操作必须是顺序的,也就是说必须先写第一页(page1)然后再写第二页(page2)...最后写最后一页(page64)。中间可以间隔一些页,比如先写了page1然后直接写page9,再继续写page10。但是,有一种情况是不允许的,即先写后面的page再写前面的page,比如先写了page9,那么接下来就不能再去写page7或page1等位于page9前面的页,只能写page10、page11等位于page9后面的页。因此,采用图1(b)所示的逻辑块地址信息和物理块地址信息、以及该物理块地址信息对应的当前物理块中原存储数据所占用的地址范围信息的映射信息,在物理块中写入数据时,可以确定与待写入数据的逻辑块地址信息所对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据所占用的第一地址范围信息,并根据物理块地址信息确定待写入数据针对当前物理块的预占用的第二地址范围信息,并对第一地址范围信息与第二地址范围信息进行比较,根据比较的结果,在存储系统的相应位置写入数据,从而提高随机写性能。
实施例一、
参见图2,为本发明实施例一提供的一种写入数据的方法流程图,所述方法包括:
S101:获得待写入数据的逻辑块地址信息。例如,接收操作系统提供的逻辑块地址信息。
S102:根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据所占用的第一地址范围信息。例如,逻辑块地址为一个28bit的数,对应的物理块地址也为28bit的数,其中高4bit即[27:22]用于识别到某一片flash;[21:8]这14bit用于识别到某一个物理块(block);[7:2]这6bit用于识别到某一页(page)。
其中,第一地址范围信息地址范围信息以原存储数据的第一页地址和最后一页地址来描述、或者以原存储数据的第一页地址和已占用数据的长度来描述、或者以原存储数据的最后一页地址和已占用数据的长度来描述。所述地址为物理地址或者偏移地址。
其中,维护的地址映射信息中包括了逻辑块地址信息和物理块地址信息的映射关系、以及该物理块地址信息对应的当前物理块中原存储数据所占用的第一地址范围信息。
S103:根据物理块地址信息确定待写入数据针对该当前物理块的预占用的第二地址范围信息。
该第二地址范围信息以待写入数据的第一页地址和最后一页地址来描述、或者以待写入数据的第一页地址和预占用数据的长度来描述、或者以待写入数据的最后一页地址和预占用数据的长度来描述。
需要说明的是,这里的,待写入数据针对当前物理块的预占用的第二地址范围信息,并不限定待写入数据一定存储到当前物理块的预占用的第二地址范围信息。
S104:根据第一地址范围信息与第二地址范围信息的比较结果,在存储系统的相应位置写入数据。
具体的,当待写入数据的预占用的第二地址范围与原存储数据已占用的第一地址范围没有交集,且第二地址范围处于第一地址范围之后时,根据第二地址范围信息,将待写入数据写入该当前物理块的相应位置;
或者,当待写入数据的预占用的第二地址范围与原存储数据已占用的第一地址范围没有交集,且第二地址范围处于第一地址范围之前时,根据第一地址范围和第二地址范围的并集中地址从小到大的顺序,将待写入数据写入新的物理块的相应位置,以及将原存储数据拷贝到新的物理块的相应位置;
或者,当第一地址范围为第二地址范围的子集范围,或者第一地址范围与第二地址范围相同时,根据第二地址范围信息,将待写入数据写入一个新的物理块的相应位置;
或者,当第二地址范围与第一地址范围存在交集范围,或者第二地址范围为第一地址范围的子集范围时,根据第一地址范围和第二地址范围的并集中地址从小到大的顺序,将该当前物理块中不相交的地址范围且属于第一地址范围内原存储的数据拷贝到新的物理块的相应位置中,将待写入数据写入新的物理块的相应位置中。
可见,本实施例中,通过维护的地址映射信息确定了物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息,根据所述物理块地址信息确定待写入数据针对当前物理块的预占用的第二地址范围信息,根据第一地址范围信息与第二地址范围信息的比较结果,在存储系统的相应位置写入数据,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,减少写入数据时copy back操作次数,或者减少每次copy back操作的数据长度,提高随机写效率。
下面对第一地址范围信息以原存储数据的第一页地址和最后一页地址来描述、以及第二地址范围信息以待写入数据的第一页地址和最后一页地址来描述的情况为例进行详细说明,即下面对根据待写入数据的第一页地址和/或最后一页地址,与,原存储数据所占用的第一页地址和/或最后一页地址之间的大小比较结果,在存储系统的相应位置写入数据的情况进行详细描述。
实施例二、
参见图3,为本发明实施例二提供的一种写入数据的方法流程图,所述方法包括:
S201:获得待写入数据的逻辑块地址信息。例如,接收操作系统提供的逻辑块地址信息。
S202:根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据所占用的第一页地址和最后一页地址。
其中,维护的地址映射信息中包括了逻辑块地址信息和物理块地址信息的映射关系、以及物理块地址信息对应的物理块中原存储数据所占用的第一页地址和最后一页地址。
S203:根据物理块地址信息确定待写入数据针对当前物理块的预占用的第一页地址和最后一页地址。
S204:当待写入数据的第一页地址大于原存储数据所占用的最后一页地址时,根据待写入数据预占用页的地址从小到大的顺序,将数据写入当前物理块的相应位置中。
例如,当前物理块中原存储数据为2-5页,待写入数据预占用7-10页,则按照地址从小到大的顺序将待写入数据写入当前物理块中的7-10页。
可见,本实施例一,当待写入数据的第一页地址大于原存储数据所占用的最后一页地址时,根据待写入数据预占用页的地址从小到大的顺序,将数据写入当前物理块的相应位置中,从而写入数据时无需进行copy back操作,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,提高随机写效率。
实施例三、
参见图4,为本发明实施例三提供的一种写入数据的方法流程图,包括:S301-S305,其中,该实施例中的S301-S303与实施例二中的S201-S203相同,故不再赘述;以及,
S304:当待写入数据的第一页地址小于或等于原存储数据所占用的第一页地址,且待写入数据的最后一页地址大于或等于原存储数据所占用的最后一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中。
例如,当前物理块中原存储数据为第2-5页,待写入数据预占用1-9页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-9页。
其中,在选择新的物理块后,这个当前物理块被擦除后,可以为一个备用、空的物理块Km;如果存在一个备用的、空的物理块集合{Kl...Km...kn},当需要选择一个新的物理块时,可以是,均衡每个物理块的损耗(每个物理块的擦除次数有限,一般为10万次左右),从中选择一个新的物理块;也可以从备用的、空的物理块集合中随机选择一个物理块。可以理解的是,S304之后还可以包括如下步骤:
S305:将地址映射信息中维护的当前物理块地址信息更新为新的物理块地址信息、以及将当前物理块中原有数据所占第一页地址和最后一页地址更新为新的物理块中存储数据所占用的地址范围信息。这里的当前物理块地址信息,即与获得的逻辑块地址信息对应的物理块地址信息,下面不再赘述。
可见,本实施例中,当待写入数据的第一页地址小于或等于原存储数据所占用的第一页地址,且待写入数据的最后一页地址大于或等于原存储数据所占用的最后一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,从而写入数据时无需进行copyback操作,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,提高随机写效率。
实施例四、
参见图5,为本发明实施例四提供的一种写入数据的方法流程图,包括:S401-S405,其中该实施例中的S401-S403与实施例二中的S201-S203相同,故不再赘述;以及,
S404:当待写入数据的最后一页地址小于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,并将当前物理块中原存储的数据拷贝到新的物理块的相应位置中。
例如,当前物理块中原存储数据占用5-11页,待写入数据预占用1-3页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-3页,再将当前物理块中原存储的数据拷贝到新的物理块中的5-11页。
其中,针对当前物理块中的数据拷贝到另一个物理块后,这个当前物理块被擦除后,称为一个备用、空的物理块Km;如果存在一个备用的、空的物理块集合{Kl...Km...kn},当需要选择一个新的物理块时,可以是,均衡每个物理块的损耗(每个物理块的擦除次数有限,一般为10万次左右),从中选择一个新的物理块;也可以从备用的、空的物理块集合中随机选择一个物理块。
可以理解的是,S404之后还可以包括如下步骤:
S405:将地址映射信息中维护的当前物理块地址信息更新为新的物理块地址信息、以及将当前物理块中原有数据所占第一页地址和最后一页地址更新为新的物理块中存储数据所占用的地址范围信息。
可见,本实施例中,当待写入数据的最后一页地址小于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,并将当前物理块中原存储的数据拷贝到新的物理块的相应位置中,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
实施例五、
参见图6,为本发明实施例五提供的一种写入数据的方法流程图,包括:S501-S505,其中该实施例中的S501-S503与实施例二中的S201-S203相同,故不再赘述;以及,
S504:当待写入数据的第一页地址和最后一页地址分别小于原存储数据所占用的第一页地址和最后一页地址,且待写入数据最后一页地址大于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,然后将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到新的物理块的相应位置中。这里的第一地址范围即原存储数据所占用的第一页地址和最后一页地址组成的地址范围。
例如,当前物理块中原存储数据为5-9页,待写入数据预占用1-7页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-7页,然后将当前物理块中8-9页存储的数据拷贝到新的物理块中的8-9页。
其中,针对当前物理块中的数据拷贝到另一个物理块后,这个当前物理块被擦除后,称为一个备用、空的物理块Km;如果存在一个备用的、空的物理块集合{Kl...Km...kn},当需要选择一个新的物理块时,可以是,均衡每个物理块的损耗(每个物理块的擦除次数有限,一般为10万次左右),从中选择一个新的物理块;也可以从备用的、空的物理块集合中随机选择一个物理块。
可以理解的是,S504之后还可以包括如下步骤:
S505:将地址映射信息中维护的当前物理块地址信息更新为新的物理块地址信息、以及将当前物理块中原有数据所占第一页地址和最后一页地址更新为新的物理块中存储数据所占用的地址范围信息。
可见,本实施例中,当待写入数据的第一页地址和最后一页地址分别小于原存储数据所占用的第一页地址和最后一页地址,且待写入数据最后一页地址大于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,再将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到新的物理块的相应位置中,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
实施例六、
参见图7,为本发明实施例六提供的一种写入数据的方法流程图,包括:S601-S605,其中,该实施例中的S601-S603与实施例二中的S201-S203相同,故不再赘述;以及,
S604:当待写入数据的第一页地址和最后一页地址分别大于原存储数据所占用的第一页地址和最后一页地址,且待写入数据第一页地址小于原存储数据所占用的最后一页地址时,则将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到一个新的物理块的相应位置中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中。这里的第一地址范围即原存储数据所占用的第一页地址和最后一页地址组成的地址范围。
例如,当前物理块中原存储数据为1-7页,待写入数据预占用3-9,则将当前物理块中1-2页存储的数据拷贝到一个新的物理块中的1-2页,再将待写入数据写入新的物理块的3-9页。
其中,针对当前物理块中的数据拷贝到另一个物理块后,这个当前物理块被擦除后,称为一个备用、空的物理块Km;如果存在一个备用的、空的物理块集合{Kl...Km...kn},当需要选择一个新的物理块时,可以是,均衡每个物理块的损耗(每个物理块的擦除次数有限,一般为10万次左右),从中选择一个新的物理块;也可以从备用的、空的物理块集合中随机选择一个物理块。
可以理解的是,S604之后还可以包括如下步骤:
S605:将地址映射信息中维护的当前物理块地址信息更新为新的物理块地址信息、以及将当前物理块中原有数据所占第一页地址和最后一页地址更新为新的物理块中存储数据所占用的地址范围信息。
可见,本实施例中,待写入数据的第一页地址和最后一页地址分别大于原存储数据所占用的第一页地址和最后一页地址,且待写入数据第一页地址小于原存储数据所占用的最后一页地址时,则将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到一个新的物理块的相应位置中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
实施例七、
参见图8,为本发明实施例七提供的一种写入数据的方法流程图,包括:S701-S705,其中,该实施例中的S701-S703与实施例二中的S201-S203相同,故不再赘述;以及,
S704:当待写入数据的第一页地址和最后一页地址小于原存储数据所占用的最后一页地址,且大于原存储数据所占用的第一页地址时,则先将当前物理块中原存储数据所占用的第一页地址至待写入数据第一页范围内的数据拷贝到一个新的物理块中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中,再将当前物理块中原存储数据所占用的最后一页地址至待写入数据最后一页范围内的数据拷贝到新的物理块中。例如,当前物理块中原存储数据为1-9页,待写入数据预占用3-5,将当前物理块中1-2页存储的数据拷贝到一个新的物理块中的1-2页,再将待写入数据写入新的物理块的3-5页,再将当前物理块中6-9页存储的数据拷贝到新的物理块中的6-9页。
其中,针对当前物理块中的数据拷贝到另一个物理块后,这个当前物理块被擦除后,称为一个备用、空的物理块Km;如果存在一个备用的、空的物理块集合{Kl...Km...kn},当需要选择一个新的物理块时,可以是,均衡每个物理块的损耗(每个物理块的擦除次数有限,一般为10万次左右),从中选择一个新的物理块;也可以从备用的、空的物理块集合中随机选择一个物理块。
可以理解的是,S704之后还可以包括如下步骤:
S705:将地址映射信息中维护的当前物理块地址信息更新为新的物理块地址信息、以及将当前物理块中原有数据所占第一页地址和最后一页地址更新为新的物理块中存储数据所占用的地址范围信息。
可见,本实施例中,当待写入数据的第一页地址和最后一页地址小于原存储数据所占用的第一页地址,且大于原存储数据所占用的第一页地址时,则先将当前物理块中原存储数据所占用的第一页地址至待写入数据第一页范围内的数据拷贝到一个新的物理块中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中,再将当前物理块中原存储数据所占用的最后一页地址至待写入数据最后一页范围内的数据拷贝到新的物理块中,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
以上对本发明实施例提供的写入数据的方法实施例进行了描述,下面对本发明实施例提供的存储系统进行描述。
实施例八、
参见图9,为本发明实施例八提供的一种存储系统,所述存储系统包括:
存储单元801,用于存储写入的数据;该存储单元可以为flash芯片。
控制单元802,用于获得待写入数据的逻辑块地址信息;根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息;根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;根据第一地址范围信息与第二地址范围信息的比较结果,在所述存储单元801的相应位置写入数据。
其中,在一种实现下,控制单元802包括:
第一控制子单元,用于获得待写入数据的逻辑块地址信息;根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息;根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;
第一操作子单元,用于在待写入数据的预占用的第二地址范围与原存储数据已占用的第一地址范围没有交集,且第二地址范围处于第一地址范围之后时,根据第二地址范围信息,将数据写入所述存储单元中当前物理块的相应位置。
或者,在另一种实现下,控制单元802包括:
第二控制子单元,用于获得待写入数据的逻辑块地址信息;根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息;根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;
第二操作子单元,用于待写入数据的预占用的第二地址范围与存储数据已占用的第一地址范围没有交集,且第二地址范围处于第一地址范围之前时,根据第一地址范围和第二地址范围的并集中地址从小到大的顺序,将待写入数据写入新的物理块的相应位置,以及将原存储数据拷贝到所述存储单元中新的物理块的相应位置。
或者,在另一种实现下,控制单元802包括:
第三控制子单元,用于获得待写入数据的逻辑块地址信息;根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息;根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;
第三操作子单元,用于第一地址范围为第二地址范围的子集范围,或者第一地址范围与第二地址范围相同时,根据第二地址范围信息,将数据写入所述存储单元中一个新的物理块的相应位置。
或者,在另一种实现下,控制单元802包括:
第四控制子单元,用于获得待写入数据的逻辑块地址信息;根据维护的地址映射信息,确定与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息;根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;
第四操作子单元,用于在第二地址范围与第一地址范围存在交集范围,或者第二地址范围为第一地址范围的子集范围时,根据第一地址范围和第二地址范围的并集中地址从小到大的顺序,将当前物理块中不相交的地址范围且属于第一地址范围内原存储的数据拷贝到新的物理块的相应位置中,将待写入数据写入所述存储单元中新的物理块的相应位置中。
其中,第一地址范围信息以原存储数据的第一页地址和最后一页地址来描述、或者以原存储数据的第一页地址和已占用数据的长度来描述、或者以原存储数据的最后一页地址和已占用数据的长度来描述;
第二地址范围信息以待写入数据的第一页地址和最后一页地址来描述、或者以待写入数据的第一页地址和预占用数据的长度来描述、或者以待写入数据的最后一页地址和预占用数据的长度来描述。
可见,本实施例中,通过维护的地址映射信息确定了物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息,根据所述物理块地址信息确定待写入数据针对当前物理块的预占用的第二地址范围信息,根据第一地址范围信息与第二地址范围信息的比较结果,在存储系统的相应位置写入数据,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,减少写入数据时copy back操作次数,或者减少每次copy back操作的数据长度,提高随机写效率。
实施例九、
参见图10,为本发明实施例九提供的一种存储系统,相对于实施例八所提供的存储系统,该实施例中,控制单元802还包括:
映射更新子单元901,用于将维护的地址映射信息中当前物理块地址信息更新为新的物理块地址信息、以及将所述第一地址范围信息更新为新的物理块中存储数据所占用的地址范围信息。
如图10所示,需要说明的是,第M控制子单元902可以为前述的第一控制子单元、第二控制子单元、第三控制子单元或第四控制子单元中的任一个;第M操作子单元903可以为前述的第一操作子单元、第二操作子单元、第三操作子单元或第四操作子单元中的任一个;故功能描述不再赘述。
可见,本实施例相对于实施例八,通过更新维护的地址映射信息,从而保持维护的地址映射信息的准确性。
实施例十、
该实施例相对于实施例八,第一操作子单元为第一写操作子单元,用于待写入数据的第一页地址大于原存储数据所占用的最后一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入所述存储单元802中当前物理块的相应位置中。例如,当前物理块中原存储数据为2-5页,待写入数据预占用7-10页,则按照地址从小到大的顺序将待写入数据写入当前物理块中的7-10页。
本实施例相对实施例八,当待写入数据的第一页地址大于原存储数据所占用的最后一页地址时,根据待写入数据预占用页的地址从小到大的顺序,将数据写入当前物理块的相应位置中,从而写入数据时无需进行copy back操作,提高随机写效率。
实施例十一、
该实施例相对于实施例八,第二操作子单元为第二写操作子单元,用于待写入数据的最后一页地址小于原存储数据所占用的第一页地址时,根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,再将当前物理块中原存储的数据拷贝到所述存储单元802中新的物理块的相应位置中。例如,当前物理块中原存储数据为5-11页,待写入数据预占用1-3页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-3页,然后将当前物理块中存储的数据拷贝到新的物理块中的5-11页。
本实施例中相对于实施例八,当待写入数据的最后一页地址小于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,然后将当前物理块中原存储的数据拷贝到新的物理块的相应位置中,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
实施例十一、
该实施例相对于实施例八,第三操作子单元为第三写操作子单元,用于待写入数据的第一页地址小于或等于原存储数据所占用的第一页地址,且待写入数据的最后一页地址大于或等于原存储数据所占用的最后一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入所述存储单元802中一个新的物理块的相应位置中。例如,当前物理块中原存储数据为第2-5页,待写入数据预占用1-9页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-9页。
可见,本实施例中,当待写入数据的第一页地址小于或等于原存储数据所占用的第一页地址,且待写入数据的最后一页地址大于或等于原存储数据所占用的最后一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入一个新的物理块的相应位置中,从而写入数据时无需进行copyback操作,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,提高随机写效率。
实施例十二、
该实施例相对于实施例八,第四操作子单元为第四写操作子单元,用于在待写入数据第一页地址和最后一页地址组成的第二地址范围,与当前物理块中原存储数据所占用的第一页地址和最后一页组成的第一地址范围之间存在交集时,根据待写入数据第一页地址和最后一页地址组成的第二地址范围,与当前物理块中原存储数据所占用的第一页地址和最后一页组成的第一地址范围的并集中地址从小到大的顺序,将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到新的物理块的相应位置中,将待写入数据写入所述存储单元802中新的物理块的相应位置中。
该第四写操作子单元包括第五写操作子弹元、第六写操作子单元、第七写操作子单元、第八写操作子单元中的任意一个。其中:
第五写操作子单元,用于在待写入数据的最后一页地址小于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入存储单元802中一个新的物理块的相应位置中,再将当前物理块中原存储的数据拷贝到新的物理块的相应位置中。例如,当前物理块中原存储数据为5-11页,待写入数据预占用1-3页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-3页,然后将当前物理块中原存储的数据拷贝到新的物理块中的5-11页。以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率
第六写操作子单元,用于当待写入数据的第一页地址和最后一页地址分别小于原存储数据所占用的第一页地址和最后一页地址,且待写入数据最后一页地址大于原存储数据所占用的第一页地址时,则根据待写入数据预占用页的地址从小到大的顺序,将数据写入存储单元802中一个新的物理块的相应位置中,再将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到新的物理块的相应位置中。这里的第一地址范围即原存储数据所占用的第一页地址和最后一页地址组成的地址范围。例如当前物理块中原存储数据为5-9页,待写入数据预占用1-7页,则按照地址从小到大的顺序将待写入数据写入一个新的物理块中的1-7页,然后将当前物理块中8-9页存储的数据拷贝到新的物理块中的8-9页。从而,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
第七写操作子单元,用于在待写入数据的第一页地址和最后一页地址分别大于原存储数据所占用的第一页地址和最后一页地址,且待写入数据第一页地址小于原存储数据所占用的最后一页地址时,则将当前物理块中不相交的地址范围且属于第一地址范围内的原存储的数据拷贝到存储单元802中一个新的物理块的相应位置中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中。这里的第一地址范围即原存储数据所占用的第一页地址和最后一页地址组成的地址范围。例如,当前物理块中原存储数据为1-7页,待写入数据预占用3-9,则将当前物理块中1-2页存储的数据拷贝到一个新的物理块中的1-2页,然后将待写入数据写入新的物理块的3-9页;以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
第八写操作子单元,用于当待写入数据的第一页地址和最后一页地址小于原存储数据所占用的第一页地址,且大于原存储数据所占用的第一页地址时,则先将当前物理块中原存储数据所占用的第一页地址至待写入数据第一页范围内的数据拷贝到存储单元802中一个新的物理块中,再根据待写入数据预占用页的地址从小到大的顺序,将数据写入新的物理块的相应位置中,再将当前物理块中原存储数据所占用的最后一页地址至待写入数据最后一页范围内的数据拷贝到新的物理块中。例如,当前物理块中原存储数据为1-9页,待写入数据预占用3-5,将当前物理块中1-2页原存储的数据拷贝到一个新的物理块中的1-2页,然后将待写入数据写入新的物理块的3-5页,再将当前物理块中6-9页存储的数据拷贝到新的物理块中的6-9页,以实现在写入数据时,即使需要进行copy back操作,但也减少了copy back操作的数据长度,从而提高随机写效率。
综上所述,上述实施例通过根据维护的地址映射信息,确定物理块地址信息,以及该物理块地址信息对应的与所述逻辑块地址信息对应的物理块地址信息,以及该物理块地址信息对应的当前物理块中原存储数据已占用的第一地址范围信息,根据所述物理块地址信息确定待写入数据针对所述当前物理块的预占用的第二地址范围信息;根据第一地址范围信息与第二地址范围信息的比较结果,在存储系统的相应位置写入数据,从而避免了针对任何情况,在写入数据时,都需要拷贝该段数据所属物理块中的数据,减少写入数据时copy back操作次数,或者减少每次copy back操作的数据长度,提高随机写效率。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。