CN107562381A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN107562381A
CN107562381A CN201710763544.7A CN201710763544A CN107562381A CN 107562381 A CN107562381 A CN 107562381A CN 201710763544 A CN201710763544 A CN 201710763544A CN 107562381 A CN107562381 A CN 107562381A
Authority
CN
China
Prior art keywords
block
chained list
data
erasing times
free
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.)
Pending
Application number
CN201710763544.7A
Other languages
English (en)
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.)
New H3C Information Technologies Co Ltd
Original Assignee
Unis Huashan Information Technologies 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 Unis Huashan Information Technologies Co Ltd filed Critical Unis Huashan Information Technologies Co Ltd
Priority to CN201710763544.7A priority Critical patent/CN107562381A/zh
Publication of CN107562381A publication Critical patent/CN107562381A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据处理方法及装置,所述方法包括:根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;其中,SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;当需要进行数据写入时,从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。应用本申请实施例在提高数据处理的效率的前提下,提高SSD使用寿命。

Description

一种数据处理方法及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及装置。
背景技术
SSD(Solid State Drives,固态硬盘)是使用固态电子存储芯片阵列制成的硬盘,SSD采用NAND(与非)FLASH(闪存)作为存储介质。
发明内容
本申请提供一种数据处理方法及装置,以在提高数据处理的效率的前提下,提高SSD使用寿命。
根据本申请实施例的第一方面,提供一种数据处理方法,应用于SSD,该方法包括:
根据所述SSD中各空闲块的擦除次数以及块的类型将各空闲块加入到预设的空闲链表;其中,所述SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;
当需要进行数据写入时,从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
根据本申请实施例的第二方面,提供一种数据处理装置,应用于SSD,该装置包括:
链表管理单元,用于根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;其中,所述SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;
处理单元,用于当需要进行数据写入时,从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
应用本申请实施例,通过根据SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;当需要进行数据写入时,从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入,避免了每次进行数据写入时均需要遍历SSD中所有的空闲块,在提高数据处理的效率的前提下,提高了SSD使用寿命。
附图说明
图1是本申请实施例提供的一种数据处理方法的流程示意图;
图2是本申请实施例提供的一种空闲块选取的流程示意图;
图3是本申请实施例提供的一种数据处理装置的结构示意图;
图4是本申请实施例提供的另一种数据处理装置的结构示意图;
图5是本申请实施例提供的另一种数据处理装置的结构示意图;
图6是本申请实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
NAND FLASH写入的最小单位是页,通过凑够4个扇区组成一个页,一起写入;擦除的最小单位是块。NAND FLASH在写入前必须先进行擦除,每次的编程/擦除叫做1个P/E(Program/Erase cycles,编程/擦除周期)。
NAND FLASH有P/E次数(本文中也可以称为擦除次数)限制(即P/E次数上限)。当前主流SLC(Single-Level Cell,单层单元)的P/E次数限制为10万次,50nm MLC(Multi-LevelCell,多层单元)为1万次,3xnm的MLC为5000次,TLC(Triple Level Cell,3阶单元)为1000次。SSD的寿命局限于它的P/E次数。对相同的存储单元不断地进行编程和擦除将更容易导致该存储单元受到永久性的损害。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
请参见图1,为本申请实施例提供的一种数据处理方法的流程示意图,其中,该数据处理方法可以应用于SSD,如SSD硬盘或SSD芯片等,如图1所示,该数据处理方法可以包括以下步骤:
步骤101、根据SSD中各空闲块的擦除次数以及块的类型将各空闲块加入到预设的空闲链表;其中,该SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围。
本申请实施例中,为了均衡SSD中各块的擦除次数,提高SSD的使用寿命,每次进行数据写入时,可以优先考虑将数据写入到擦除次数最小的数据块中。
为了达到上述目的,且避免每次进行数据写入时都需要遍历SSD中的所有块,可以预先对应SSD设置多个空闲链表(即上述预设的空闲链表),该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围。
在本申请其中一个实施例中,上述根据SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表,可以包括:
当检测到针对目标块的擦除操作,且擦除操作成功时,更新目标块的擦除次数;
当目标块更新后的擦除次数小于阈值threshold[0]时,将目标块加入空闲链表free_list[0];
当目标块更新后的擦除次数大于等于阈值threshold[i],且小于阈值threshold[i+1]时,将所述目标块加入到空闲链表free_list[i+1];
当所述目标块更新后的擦除次数大于等于threshold[N-2]时,将所述目标块加入到空闲链表free_list[N-1];
其中,0≤i≤N-2,阈值threshold[i+1]>阈值threshold[i],N为所述多个预设的空闲链表的数量,N≥2。
在该实施例中,目标块并不特指某一固定的块,而是可以指代SSD中的任一块,本申请实施例后续不再复述。
在该实施例中,假设SSD对应的预设的空闲链表的数量为N(N≥2),即free_list[0]~free_list[N-1],各空闲链表对应的擦除次数阈值范围分别为[0,threshold[0])、[threshold[i],threshold[i+1])、…、[threshold[N-2],∞);其中,0≤i≤N-2,阈值threshold[i+1]>阈值threshold[i]。
相应地,当SSD检测到针对目标块的擦除操作,且擦除操作成功时,可以将目标块的擦除次数加1,并比较目标块的擦除次数与各空闲链表的擦除次数阈值范围,以确定目标块的擦除次数落入的擦除阈值范围,并将目标块加入到对应的空闲链表中。
进一步地,在本申请实施例中,考虑到随着时间的推移,SSD中块的擦除次数整体均会增长,因此,为了避免空闲块被集中加入到部分空闲链表中,可以动态调整各空闲链表的擦除次数阈值范围。
举例来说,SSD初始化运行时,各空闲链表的擦除次数阈值范围可以分别为[0,10)、[10,20)、[20,30)…[90,∞);随着时间的推移,SSD中各块的擦除次数整体均会增长,在某一时刻,SSD可以将各空闲链表的擦除次数阈值范围可以分别调整为[0,100)、[100,200)、[200,300)…[900,∞)。
本申请实施例中,当SSD调整各空闲链表对应的擦除次数阈值范围之后,还可以根据调整后的擦除次数阈值范围更新各空闲链表中包括的空闲块。
仍以上一示例为例,假设某空闲块的擦除次数为90次,则在擦除次数阈值范围调整之前,该空闲块被加入到最后一个空闲链表中;当擦除次数阈值范围调整之后,该空闲块需要由最后一个空闲链表被转移至第一个空闲链表。
值得说明的是,在本申请实施例中,空闲链表中各空闲块可以按照擦除次数从少到多或从多到少的顺序排列,或者,也可以按照各块加入到空闲链表中的时间先后顺序进行排列。
步骤102、当需要进行数据写入时,从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
本申请实施例中,当SSD接收到数据写入请求时,SSD可以预设的空闲链表中选择空闲块进行数据写入。
其中,为了保证各块的擦除次数的均衡性,SSD选择空闲块时,需要先判断包括的块的擦除次数最少的空闲链表中是否存在空闲块;若有,则从该空闲链表中选择擦除次数最少的空闲块用于进行数据写入;否则,判断包括的块的擦除次数次少的空闲链表中是否存在空闲块,依次类推,从空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
本申请实施例中,当空闲链表中各空闲块按照擦除次数从少到多(或者从多到少)排序时,SSD从空闲链表中选择空闲块时,可以直接选择第一个(或最后一个)空闲块进行数据写入;当空闲链表中各空闲块按照加入时间先后顺序进行排序时,SSD从空闲链表中选择空闲块时,需要比较该空闲链表中各空闲块的擦除次数,并选择擦除次数最少的空闲块进行数据写入。
可见,在图1所示的数据处理方法中,通过预设多个对应不同擦除次数阈值范围的空闲链表,并将SSD中各块加入到对应的空闲链表中,当需要进行数据写入时,可以直接从相应的空闲链表中查找擦除次数最少的空闲块,而不需要每次进行数据写入时都遍历所有的块,在提高SSD中各块的擦除次数的均衡性的同时,提高了数据写入的效率。
进一步地,在本申请实施例中,考虑到冷数据写入到SSD后,一般很长时间不会被更改,即全部写入冷数据的块,可能在很长一段时间里,块里的数据都是有效数据,不需要对块进行擦除操作。
而热数据被写入到SSD后,可能很快会被更改,这样就会把原来写入的块的扇区标识为无效扇区,把更改后的数据写入到SSD其他的块中。一旦原来的块的无效扇区达到一定值,则把原来块中的有效扇区进行数据迁移,迁移完成后,会对原来的块进行擦除操作,从而该块的擦除次数增加一次。
可见,写入冷数据的块,磨损频率会降低;写入热数据的块,磨损频率会增加,因此,将冷数据写入擦除次数较高的块,将热数据写入擦除次数较低的块可以进一步提高SSD中各块的均衡性。
相应地,在本申请其中一个实施例中,当需要进行数据写入时,上述从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入之前,还包括:
判断待写入数据为冷数据或热数据;
若为热数据,则确定执行上述从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据的步骤;
若为冷数据,则从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最多的空闲链表中选择空闲块进行数据写入。
在该实施例中,当SSD接收到数据写入请求时,SSD在选择空闲块之前,需要先判断待写入的数据为冷数据或热数据。
若SSD确定待写入的数据为热数据,则SSD需要优先选择擦除次数少的空闲块进行数据写入,此时,SSD可以按照上述实施例中所描述的从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
若SSD确定待写入的数据为冷数据,则SSD需要优先选择擦除次数多的空闲块进行数据写入,此时,SSD可以多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最多的空闲链表中选择空闲块进行数据写入。
举例来说,假设SSD中预设的空闲链表共有8个(分别为free_list[0]~free_list[7]),且free_list[0]~free_list[7]中空闲块的擦除次数依次递增(free_list[0]中空闲块的擦除次数最少,free_list[7]中空闲块的擦除次数最多),则当SSD接收到数据写入请求时,SSD可以先判断待写入的数据为冷数据或热数据。
若为热数据,则SSD确定需要优先使用擦除次数少的空闲块进行数据写入,此时,SSD可以先判断free_list[0]中是否存在空闲块,若存在,则从free_list[0]中选择擦除次数最少的空闲块进行数据写入(假设空闲链表中各空闲块按照擦除次数从少到多的顺序排列,则直接选择头结点进行数据写入);若不存在,则从free_list[1]中是否存在空闲块,若存在,则选择free_list[1]的头结点进行数据写入,若不存在,则继续判断free_list[2]中是否存在空闲块,以此类推,直至取到空闲块,并把数据写入取到的空闲块上。
若为冷数据,则SSD确定需要优先使用擦除次数多的空闲块进行数据写入,此时,SSD可以先判断free_list[7]中是否存在空闲块,若存在,则从free_list[7]中选择擦除次数最多的空闲块进行数据写入(假设空闲链表中各空闲块按照擦除次数从少到多的顺序排列,则直接选择尾结点进行数据写入);若不存在,则从free_list[6]中是否存在空闲块,若存在,则选择free_list[6]的尾结点进行数据写入,若不存在,则继续判断free_list[5]中是否存在空闲块,以此类推,直至取到空闲块,并把数据写入取到的空闲块上,其示意图可以如图2所示。
进一步地,在本申请实施例中,对于某些块,如果写入的数据是冷数据且从未被更新过,则这个块的在很长一段时间均不会发生擦除操作。如果不对这个块中的数据进行迁移,则这个块将长时间没有进行充放电操作,数据的稳定性和正确性得不到保障。另外,如果不对这个块的数据进行迁移,则这个块的将永远不会被擦除,擦除次数将保持不变。如果这样的块足够多,会导致其他块经常被擦除,其他块将会加速老化。时间久了,就会出现一部分块的擦除次数很小,而其他块已经达到擦除次数上限的情况,从而降低了SSD的寿命。因此,为了进一步保证SSD中各块的均衡性,对于长时间未进行编程的块,可以将其中的数据迁移至擦除次数更高的块,并将数据迁移后得到的空闲块重新加入到对应的空闲链表中备用。
相应地,在本申请其中一个实施例中,上述数据处理方法还可以包括:
定时轮询SSD中各数据块;
当存在编程时间距当前时间超过预设时间阈值的数据块时,将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中,并在数据迁移完成后,对该数据块进行数据块擦除操作,且在擦除成功之后,根据该数据块的擦除次数以及块的类型将其加入到对应的空闲链表。
在该实施例中,SSD可以定时轮询各数据块;对于任一数据块,SSD可以计算该数据块最近一次编程时间与当前时间的差值,并判断该差值是否超过预设时间阈值(可以根据实际场景设定),若该差值超过预设时间阈值,则SSD可以将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中,并在数据迁移完成后,对该数据块进行数据块擦除操作,并在擦除成功之后,根据该数据块的擦除次数以及块的类型将其加入到对应的空闲链表;若该差值未超过预设时间阈值,则SSD可以继续轮询其它数据块。
优选地,在本申请实施例中,SSD可以仅对满数据块进行上述轮询和数据迁移处理。
举例来说,以预设时间周期为一个月为例,SSD可以每个小时轮询一次所有的满数据块,判断是否存在连续未编程时间超过一个月的满数据块(即该满数据块写满的时间与当前系统时间的差值超过10分钟),若存在(假设满数据块A连续未编程时间超过10分钟),则SSD可以根据满数据块A的擦除次数,从空闲链表中取一个擦除次数高于该满数据块A的擦除次数的空闲数据块(假设为空闲数据块B),并将满数据块A中的数据迁移至空闲数据块B中,并在迁移完成后,对满数据块A进行擦除操作,且在擦除成功之后,将得到的空闲数据块A的擦除次数加1,并根据空闲数据块A的擦除次数以及空闲数据块A的类型将其加入到对应的空闲链表。
需要说明的是,在本申请实施例中,SSD对满数据块中的数据进行迁移时,优选地将该满数据块中的数据迁移至同类型的空闲数据块中。
进一步地,在本申请实施例中,考虑到当长时间未编程的满数据块的擦除次数较高时,对其进行数据迁移的效果较差,因此,在进行上述数据迁移时,可以仅对擦除次数较低的数据块进行数据迁移。
相应地,在本申请其中一个实施例中,当SSD确定存在编程时间距当前时间超过预设时间阈值的数据块时,在将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中之前,还可以包括:
判断该数据块的擦除次数是否满足预设条件,若满足,则确定执行上述将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中的步骤;否则,不对该数据块中的数据进行迁移。
其中,该预设条件可以包括但不限于该数据块的擦除次数低于预设比例(可以根据实际场景设定,如50%、60%、70%等)的块的擦除次数或者,该数据块的擦除次数低于SSD中所有块的擦除次数的平均值等。
举例来说,仍以上一示例为例,当SSD发现满数据块A连续未编程时间超过10分钟时,SSD可以判断满数据块A的擦除次数是否低于SSD中所有块的擦除次数的平均值,若是,则SSD可以将满数据块A中的数据迁移至空闲数据块B中,并按照上述实施例中的相关描述进行处理;否则,不对满数据块A进行数据迁移。
进一步地,在本申请实施例中,为了降低数据处理的粒度,提高数据处理的精度和效率,可以将SSD的每个颗粒(一个NAND FLASH为一个颗粒)划分为多个部分,如划分为多个LUN(Logic Unit,逻辑单元),并分别对各LUN进行数据处理。其中,对于任一LUN,均可以按照上述方法实施例中的相关描述进行处理,多个LUN之间可以并行处理,其具体实现在此不再赘述。
此外,在本申请实施例中,考虑到SSD中块可以包括多种不同的类型,如SLC、MLC或TLC,且不同类型的块的擦除次数上限差别较大,将所有类型的块统一进行上述处理,可能会导致擦除次数上限较小的类型的块的的擦除次数提前达到擦除次数上限,影响SSD的使用寿命,因此,为了进一步提高SSD的使用寿命,可以对应SSD中各种类型的块分别设定多个空闲链表,其中,每一种块的类型(如SLC、MLC或TLC)可以对应多个空闲链表,不同块的类型对应的空闲链表的数量可以相同也可以不同,同一种块的类型对应的多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围。当需要将空闲块加入到空闲链表时,需要根据空闲块的擦除次数以及块的类型,将空闲块加入到其所属的类型对应的空闲链表中。
举例来说,假设SSD中同时包括SLC类型的块和MLC类型的块,则可以分别设定X个对应SLC类型的块的空闲链表,以及Y个对应MLC类型的块的空闲链表;其中,X,Y为大于1的正整数,且X可以等于Y,也可以不等于Y。当需要将空闲块加入到空闲链表中时,SLC类型的空闲块需要加入到与SLC类型的块对应的X个空闲链表中的一个;MLC类型的空闲块需要加入到与MLC类型的块对应的Y个空闲链表中的一个。
其中,对于SSD中包括的任一类型的块,可以按照上述方法实施例中所描述的方法进行数据处理,其具体实现在此不再赘述。
通过以上描述可以看出,在本申请实施例提供的技术方案中,通过根据SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;当需要进行数据写入时,从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入,避免了每次进行数据写入时均需要遍历SSD中所有的空闲块,在提高数据处理的效率的前提下,提高了SSD使用寿命。
请参见图3,为本申请实施例提供的一种数据处理装置的结构示意图,其中,该数据处理装置可以应用于上述方法实施例中的SSD,如图3所示,该数据处理装置可以包括:
链表管理单元310,用于根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;其中,所述SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;
处理单元320,用于当需要进行数据写入时,从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
请一并参见图4,为本申请实施例提供的另一种数据处理装置的结构示意图,如图4所示,在图3所示数据处理装置的基础上,图4所示的数据处理装置还包括:
更新单元330,用于当检测到针对目标块的擦除操作,且擦除操作成功时,更新所述目标块的擦除次数;
所述链表管理单元310,具体用于当所述目标块更新后的擦除次数小于阈值threshold[0]时,将所述目标块加入空闲链表free_list[0];当所述目标块更新后的擦除次数大于等于阈值threshold[i],且小于阈值threshold[i+1]时,将所述目标块加入到空闲链表free_list[i];当所述目标块更新后的擦除次数大于等于threshold[N-2]时,将所述目标块加入到空闲链表free_list[N-1];
其中,0≤i≤N-2,阈值threshold[i+1]>阈值threshold[i],N为所述多个预设的空闲链表的数量,N≥2。
在可选实施例中,所述链表管理单元310,还用于动态调整各空闲链表对应的擦除次数阈值范围;根据调整后的擦除次数阈值范围更新各空闲链表中包括的空闲块。
请一并参见图5,为本申请实施例提供的另一种数据处理装置的结构示意图,如图5所示,在图3所示数据处理装置的基础上,图5所示的数据处理装置还包括:
判断单元340,用于判断待写入数据为冷数据或热数据;
所述处理单元320,具体用于若为热数据,则确定执行所述从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入的步骤;
所述处理单元320,还用于若为冷数据,则从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最多的空闲链表中选择空闲块进行数据写入。
请一并参见图6,为本申请实施例提供的另一种数据处理装置的结构示意图,如图6所示,在图3所示数据处理装置的基础上,图6所示的数据处理装置还包括:
轮询单元350,用于定时轮询所述SSD中各数据块;
所述处理单元320,还用于当存在编程时间距当前时间超过预设时间阈值的数据块时,将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中,并在数据迁移完成后,对该数据块进行数据块擦除操作;
所述链表管理单元310,还用于在擦除成功之后,根据该数据块的擦除次数以及块的类型将其加入到对应的空闲链表。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,通过根据SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;当需要进行数据写入时,从多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入,避免了每次进行数据写入时均需要遍历SSD中所有的空闲块,在提高数据处理的效率的前提下,提高了SSD使用寿命。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种数据处理方法,应用于固态硬盘SSD,其特征在于,该方法包括:
根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;其中,所述SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;
当需要进行数据写入时,从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
2.根据权利要求1所述的方法,其特征在于,所述根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表,包括:
当检测到针对目标块的擦除操作,且擦除操作成功时,更新所述目标块的擦除次数;
当所述目标块更新后的擦除次数小于阈值threshold[0]时,将所述目标块加入空闲链表free_list[0];
当所述目标块更新后的擦除次数大于等于阈值threshold[i],且小于阈值threshold[i+1]时,将所述目标块加入到空闲链表free_list[i+1];
当所述目标块更新后的擦除次数大于等于threshold[N-2]时,将所述目标块加入到空闲链表free_list[N-1];
其中,0≤i≤N-2,阈值threshold[i+1]>阈值threshold[i],N为所述多个预设的空闲链表的数量,N≥2。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
动态调整各空闲链表对应的擦除次数阈值范围;
根据调整后的擦除次数阈值范围更新各空闲链表中包括的空闲块。
4.根据权利要求1所述的方法,其特征在于,当需要进行数据写入时,所述从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入之前,还包括:
判断待写入数据为冷数据或热数据;
若为热数据,则确定执行所述从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入的步骤;
若为冷数据,则从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最多的空闲链表中选择空闲块进行数据写入。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
定时轮询所述SSD中各数据块;
当存在编程时间距当前时间超过预设时间阈值的数据块时,将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中,并在数据迁移完成后,对该数据块进行数据块擦除操作,且在擦除成功之后,根据该数据块的擦除次数以及块的类型将其加入到对应的空闲链表。
6.一种数据处理装置,应用于固态硬盘SSD,其特征在于,该装置包括:
链表管理单元,用于根据所述SSD中各空闲块的擦除次数将各空闲块加入到预设的空闲链表;其中,所述SSD对应有多个预设的空闲链表,且该多个预设的空闲链表中不同的空闲链表对应不同的擦除次数阈值范围;
处理单元,用于当需要进行数据写入时,从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
更新单元,用于当检测到针对目标块的擦除操作,且擦除操作成功时,更新所述目标块的擦除次数;
所述链表管理单元,具体用于当所述目标块更新后的擦除次数小于阈值threshold[0]时,将所述目标块加入空闲链表free_list[0];当所述目标块更新后的擦除次数大于等于阈值threshold[i],且小于阈值threshold[i+1]时,将所述目标块加入到空闲链表free_list[i];当所述目标块更新后的擦除次数大于等于threshold[N-2]时,将所述目标块加入到空闲链表free_list[N-1];
其中,0≤i≤N-2,阈值threshold[i+1]>阈值threshold[i],N为所述多个预设的空闲链表的数量,N≥2。
8.根据权利要求6或7所述的装置,其特征在于,
所述链表管理单元,还用于动态调整各空闲链表对应的擦除次数阈值范围;根据调整后的擦除次数阈值范围更新各空闲链表中包括的空闲块。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断单元,用于判断待写入数据为冷数据或热数据;
所述处理单元,具体用于若为热数据,则确定执行所述从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最少的空闲链表中选择空闲块进行数据写入的步骤;
所述处理单元,还用于若为冷数据,则从所述多个预设的空闲链表中存在空闲块,且包括的块的擦除次数最多的空闲链表中选择空闲块进行数据写入。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
轮询单元,用于定时轮询所述SSD中各数据块;
所述处理单元,还用于当存在编程时间距当前时间超过预设时间阈值的数据块时,将该数据块中的数据迁移至擦除次数比该数据块的擦除次数更高的空闲数据块中,并在数据迁移完成后,对该数据块进行数据块擦除操作;
所述链表管理单元,还用于在擦除成功之后,根据该数据块的擦除次数以及块的类型将其加入到对应的空闲链表。
CN201710763544.7A 2017-08-30 2017-08-30 一种数据处理方法及装置 Pending CN107562381A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710763544.7A CN107562381A (zh) 2017-08-30 2017-08-30 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710763544.7A CN107562381A (zh) 2017-08-30 2017-08-30 一种数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN107562381A true CN107562381A (zh) 2018-01-09

Family

ID=60978141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710763544.7A Pending CN107562381A (zh) 2017-08-30 2017-08-30 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN107562381A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920107A (zh) * 2018-07-13 2018-11-30 深圳忆联信息系统有限公司 筛选冷数据的方法、装置、计算机设备及存储介质
CN109582224A (zh) * 2018-11-12 2019-04-05 哈尔滨工业大学 一种基于自恢复效应的NAND Flash存储可靠性优化方法
CN109669641A (zh) * 2018-12-24 2019-04-23 深圳忆联信息系统有限公司 降低ssd误码率的数据存放方法及装置
CN110109625A (zh) * 2019-05-16 2019-08-09 深圳市时创意电子有限公司 一种改善Free Queue的管理方法
CN111324288A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111324284A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111897745A (zh) * 2019-05-05 2020-11-06 北京兆易创新科技股份有限公司 一种数据存储方法、装置、电子设备及存储介质
CN111930300A (zh) * 2020-06-28 2020-11-13 深圳佰维存储科技股份有限公司 数据写入方法、装置、计算机可读存储介质及电子设备
WO2021120665A1 (zh) * 2019-12-20 2021-06-24 浪潮电子信息产业股份有限公司 固态硬盘磨损均衡方法、装置及计算机可读存储介质
CN113032414A (zh) * 2021-04-21 2021-06-25 杭州海康威视系统技术有限公司 数据管理方法、装置、系统、计算设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880556A (zh) * 2012-09-12 2013-01-16 浙江大学 一种实现Nand Flash磨损均衡的方法及其系统
CN104778127A (zh) * 2015-03-25 2015-07-15 合肥格易集成电路有限公司 一种nand flash写数据的方法和装置
CN106201906A (zh) * 2016-07-11 2016-12-07 浪潮(北京)电子信息产业有限公司 一种用于闪存的冷热数据分离方法及系统
CN106484323A (zh) * 2016-09-13 2017-03-08 郑州云海信息技术有限公司 一种固态存储的损耗均衡方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880556A (zh) * 2012-09-12 2013-01-16 浙江大学 一种实现Nand Flash磨损均衡的方法及其系统
CN104778127A (zh) * 2015-03-25 2015-07-15 合肥格易集成电路有限公司 一种nand flash写数据的方法和装置
CN106201906A (zh) * 2016-07-11 2016-12-07 浪潮(北京)电子信息产业有限公司 一种用于闪存的冷热数据分离方法及系统
CN106484323A (zh) * 2016-09-13 2017-03-08 郑州云海信息技术有限公司 一种固态存储的损耗均衡方法及系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920107A (zh) * 2018-07-13 2018-11-30 深圳忆联信息系统有限公司 筛选冷数据的方法、装置、计算机设备及存储介质
CN108920107B (zh) * 2018-07-13 2022-02-01 深圳忆联信息系统有限公司 筛选冷数据的方法、装置、计算机设备及存储介质
CN109582224A (zh) * 2018-11-12 2019-04-05 哈尔滨工业大学 一种基于自恢复效应的NAND Flash存储可靠性优化方法
CN111324284B (zh) * 2018-12-14 2024-02-23 兆易创新科技集团股份有限公司 一种存储器
CN111324288A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111324284A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111324288B (zh) * 2018-12-14 2024-02-23 兆易创新科技集团股份有限公司 一种存储器
CN109669641A (zh) * 2018-12-24 2019-04-23 深圳忆联信息系统有限公司 降低ssd误码率的数据存放方法及装置
CN109669641B (zh) * 2018-12-24 2022-03-29 深圳忆联信息系统有限公司 降低ssd误码率的数据存放方法及装置
CN111897745A (zh) * 2019-05-05 2020-11-06 北京兆易创新科技股份有限公司 一种数据存储方法、装置、电子设备及存储介质
CN111897745B (zh) * 2019-05-05 2024-04-05 兆易创新科技集团股份有限公司 一种数据存储方法、装置、电子设备及存储介质
CN110109625A (zh) * 2019-05-16 2019-08-09 深圳市时创意电子有限公司 一种改善Free Queue的管理方法
WO2021120665A1 (zh) * 2019-12-20 2021-06-24 浪潮电子信息产业股份有限公司 固态硬盘磨损均衡方法、装置及计算机可读存储介质
CN111930300A (zh) * 2020-06-28 2020-11-13 深圳佰维存储科技股份有限公司 数据写入方法、装置、计算机可读存储介质及电子设备
CN113032414B (zh) * 2021-04-21 2022-09-23 杭州海康威视系统技术有限公司 数据管理方法、装置、系统、计算设备及存储介质
CN113032414A (zh) * 2021-04-21 2021-06-25 杭州海康威视系统技术有限公司 数据管理方法、装置、系统、计算设备及存储介质

Similar Documents

Publication Publication Date Title
CN107562381A (zh) 一种数据处理方法及装置
US10209902B1 (en) Method and apparatus for selecting a memory block for writing data, based on a predicted frequency of updating the data
US8275933B2 (en) Apparatus, system, and method for managing physical regions in a solid-state storage device
KR102275094B1 (ko) 저장된 데이터를 플래시 메모리에 기초한 저장 매체에 기입하기 위한 방법 및 디바이스
US10289317B2 (en) Memory apparatus and methods thereof for write amplification aware wear leveling
TWI506422B (zh) 用來管理具有多通道、多途徑的記憶裝置之方法以及相關之記憶裝置及其控制器
US10126970B2 (en) Paired metablocks in non-volatile storage device
US9361024B1 (en) Memory cell programming method, memory control circuit unit and memory storage apparatus
TWI466121B (zh) 用來進行區塊管理之方法以及記憶裝置及控制器
US11210005B2 (en) Unbalanced plane management method, associated data storage device and controller thereof
JP2014530420A (ja) ソリッドステートドライブのメモリ装置への論理的アドレスの適応マッピング
US10424383B1 (en) Decoding method and storage controller
US10482978B2 (en) Read voltage optimization method, memory storage device and memory control circuit unit
CN107924700B (zh) 自适应多阶段擦除
US20160266798A1 (en) Cache memory for hybrid disk drives
US11500547B2 (en) Mitigating data errors in a storage device
US20100023677A1 (en) Solid state storage system that evenly allocates data writing/erasing operations among blocks and method of controlling the same
US20120159280A1 (en) Method for controlling nonvolatile memory apparatus
CN111639041B (zh) 存储器控制方法、存储器存储装置及存储器控制器
CN105761754B (zh) 存储单元编程方法、存储器控制电路单元与存储装置
TWI752784B (zh) 非對稱型平面管理方法以及資料儲存裝置及其控制器
CN108572924B (zh) 一种3d mlc闪存设备的请求处理方法
CN110364207B (zh) 解码方法以及储存控制器
CN108334278B (zh) 一种存储系统均衡管理方法和装置
US11966591B2 (en) Apparatus with read level management and methods for operating the same

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Xinhua Sanxin Information Technology Co., Ltd.

Address before: 310052 11th Floor, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Huashan Information Technology Co., Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180109