CN105242871B - 一种数据写入方法及装置 - Google Patents

一种数据写入方法及装置 Download PDF

Info

Publication number
CN105242871B
CN105242871B CN201410251232.4A CN201410251232A CN105242871B CN 105242871 B CN105242871 B CN 105242871B CN 201410251232 A CN201410251232 A CN 201410251232A CN 105242871 B CN105242871 B CN 105242871B
Authority
CN
China
Prior art keywords
page
data
write
flash memory
refresh operation
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
CN201410251232.4A
Other languages
English (en)
Other versions
CN105242871A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410251232.4A priority Critical patent/CN105242871B/zh
Priority to PCT/CN2015/080779 priority patent/WO2015185002A1/zh
Publication of CN105242871A publication Critical patent/CN105242871A/zh
Application granted granted Critical
Publication of CN105242871B publication Critical patent/CN105242871B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及计算机技术领域,尤其涉及一种数据写入方法及装置,用以解决SSD的闪存寿命与SSD的使用性能之间存在较大矛盾的问题。本发明提供的一种数据写入方法包括:SSD控制器根据当前对SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。

Description

一种数据写入方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据写入方法及装置。
背景技术
固态硬盘(Solid State Disk,SSD)是存储领域常用的数据载体。由于它具有高性能、低延迟、低功耗、环境适应性强等优点,同时成本也在不断降低,因此目前应用的越来越普遍。
SSD可以采用闪存作为存储介质。一般情况下,人们常采用对SSD闪存执行写操作的速度(也即写速度)来衡量SSD的使用性能。写速度越大,通常表示该SSD的使用性能越好。写速度的大小与执行写操作时的编程电压成正比,写速度越大,编程电压越大。这里的编程电压是在对每个存储单元进行编程(也即写入数据)时采用的充电电压步幅。存储单元分为单层单元(Single Level Cell,SLC)和多层单元(Multi-Level Cell,MLC)两种。每个SLC的大小为1比特(bit),每个MLC的大小为2比特(bit)。如图1(a)和图1(b)所示,分别为在编程电压ΔVpp1和ΔVpp2(ΔVpp1<ΔVpp2)下每个MLC数据(分别为11、10、01和00)对应的阈值电压(Vth)分布示意图。从图中可见,编程电压越大,存储数据对应的阈值电压的分布范围越大,不同存储数据的阈值电压之间的间隔越小。若存储单元中出现电子流失,阈值电压就会发生变化,如图2所示,为电子流失导致阈值电压发生变化的示意图;在这种情况下,不同存储数据的阈值电压之间的间隔越小,就越容易导致存储数据出错。
对于SSD,可以采用对闪存中的每个闪存块总共可执行的编程/擦除(Program/Erase,P/E)次数来衡量该SSD闪存的寿命大小。一次P/E操作是指对闪存块以页为单位执行至少一次写入动作后,又以闪存块为单位对整个闪存块的存储数据执行了一次擦除动作。P/E操作会对SSD的闪存造成磨损,破坏闪存的绝缘层,导致电子流失。因此,对一个闪存块执行的P/E操作次数越多,该闪存块存储的数据就越容易出错。SSD控制器可以采用纠错码(Error Correcting Code,ECC)来对读取的存储数据进行纠错,但是,若存储数据出错的程度超出了ECC的纠错范围,ECC便无法对该存储数据进行纠错,也就意味着SSD闪存寿命的终结。
为了提高SSD的使用性能,人们一般将写速度设置的较大。从上述分析可知,写速度越大,不同存储单元的阈值电压之间的间隔越小,存储数据出错的几率及出错程度就越大。尤其在SSD闪存的寿命后期,由于已执行了较多次的P/E操作,电子流失速度变得很快,如果这时仍采用较大的写速度,很容易造成存储数据出错,而存储数据出错程度一旦超出ECC的纠错范围,也就导致了SSD闪存寿命的终结。
综上,SSD的闪存寿命与SSD的使用性能之间存在较大矛盾:若为了提高SSD使用性能而采用较大的写速度,在SSD闪存的寿命后期很容易导致存储数据出错程度较大而终结SSD闪存的寿命;若为了延长SSD闪存寿命而采用较小的写速度,又降低了SSD的使用性能。
发明内容
本发明实施例提供一种数据写入方法及装置,用以解决SSD的闪存寿命与SSD的使用性能之间存在较大矛盾的问题。
第一方面,提供一种数据写入方法,包括:
固态硬盘SSD控制器根据当前对所述SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
结合第一方面,在第一种可能的实现方式中,所述SSD控制器对所述SSD的闪存执行除刷新操作外的写操作,包括:
所述SSD控制器在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
所述SSD控制器在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述SSD控制器根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长,包括:
所述SSD控制器根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:所述SSD控制器根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作;
所述SSD控制器根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:所述SSD控制器根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述SSD控制器根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作,包括:
所述SSD控制器根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述SSD控制器根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作,包括:
针对任一种数据属性,所述SSD控制器基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
所述SSD控制器根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
结合第一方面,或第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:
所述SSD控制器根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述SSD控制器根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:
所述SSD控制器基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
所述SSD控制器根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
结合第一方面的第三或第四种可能的实现方式,在第五种可能的实现方式中,所述SSD控制器根据失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
所述SSD控制器根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
结合第一方面的第三或第四种可能的实现方式,在第六种可能的实现方式中,所述SSD控制器根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
所述SSD控制器根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
第二方面,提供一种数据写入装置,包括:
确定模块,用于根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
执行模块,用于根据所述确定模块确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
结合第二方面,在第一种可能的实现方式中,所述执行模块具体用于:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定模块具体用于:
根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
所述执行模块具体用于根据以下步骤执行所述写操作:根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作;
所述执行模块具体用于根据以下步骤执行所述刷新操作:根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述执行模块具体用于根据以下步骤执行所述写操作:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块具体用于根据以下步骤执行所述刷新操作:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
结合第二方面,或第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述执行模块具体用于根据以下步骤执行所述写操作:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块具体用于根据以下步骤执行所述刷新操作:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
结合第二方面的第三或第四种可能的实现方式,在第五种可能的实现方式中,所述执行模块具体用于:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
结合第二方面的第三或第四种可能的实现方式,在第六种可能的实现方式中,所述执行模块具体用于:根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
第三方面,提供一种数据写入装置,该装置包括处理器、存储器和总线,所述存储器存储执行指令,当所述装置运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述装置执行如下方法:
根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
结合第三方面,在第一种可能的实现方式中,所述处理器执行的所述方法中,对所述SSD的闪存执行除刷新操作外的写操作,包括:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
结合第一方面,或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器执行的所述方法中,根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长,包括:
根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作;
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器执行的所述方法中,根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作,包括:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作,包括:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
结合第一方面,或第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述处理器执行的所述方法中,根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
结合第一方面的第三或第四种可能的实现方式,在第五种可能的实现方式中,所述处理器执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
结合第三方面的第三或第四种可能的实现方式,在第六种可能的实现方式中,所述处理器执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
附图说明
图1(a)为在编程电压ΔVpp1下每个MLC数据对应的阈值电压分布示意图;
图1(b)为在编程电压ΔVpp2下每个MLC数据对应的阈值电压分布示意图;
图2为电子流失导致阈值电压发生变化的示意图;
图3为SSD的结构示意图;
图4为本发明实施例一提供的数据写入方法流程图;
图5为本发明实施例二提供的数据写入方法流程图;
图6(a)为在SSD闪存的寿命初期的对应关系图;
图6(b)为在SSD闪存的寿命中期的对应关系图;
图6(c)为在SSD闪存的寿命后期的对应关系图;
图7为本发明实施例三提供的数据写入方法流程图;
图8为针对闪存块中写入数据的每一页,记录该页的OOB信息的示意图;
图9为本发明实施例四提供的数据写入方法流程图;
图10为本发明实施例五提供的数据写入装置结构示意图;
图11为本发明实施例六提供的数据写入装置结构示意图。
具体实施方式
如图3所示,为SSD的结构示意图。SSD主要由主机逻辑接口31、SSD控制器32和闪存芯片33组成。SSD控制器32通过主机逻辑接口31与主机34之间进行数据交互,主机34向SSD控制器32发送数据读写请求后,SSD控制器32根据该数据读写请求,对闪存芯片33进行读写操作。本发明实施例主要对SSD中SSD控制器对SSD闪存的写入操作进行了改进。
本发明实施例中,SSD控制器根据当前对SSD的闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长。采用本发明实施例,可以在SSD闪存的不同寿命阶段采用不同的写速度和数据保存时长,以满足在不同阶段对SSD的使用性能和寿命的要求。这里的数据保存时长是进行刷新操作的时间依据。刷新操作是将闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置,该操作可以进一步减少存储数据的出错率和出错程度,延长SSD闪存的使用寿命。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图4所示,为本发明实施例一提供的数据写入方法流程图,包括以下步骤:
S401:SSD控制器根据当前对SSD的闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
在该步骤中,SSD控制器可以在对SSD的闪存中的每个闪存块执行完一次P/E操作后,根据之前最近一次记录的对所述闪存总共执行P/E操作的次数或之前最近一次记录的对闪存中的每个闪存块平均执行的P/E次数,确定当前对闪存中的每个闪存块平均执行的P/E次数。
在具体实施时,预先设置不同的P/E次数范围分别与写速度和数据保存时长的对应关系,在确定当前对闪存中的每个闪存块平均执行的P/E次数所属P/E次数范围发生变化后,根据预设的P/E次数范围分别与写速度和数据保存时长的对应关系,更新当前的写速度和数据保存时长。由于在SSD闪存的寿命初期,已执行的P/E次数较少,这时,闪存绝缘层损坏程度较小,存储单元内电子流失速度较慢,存储数据不容易出错,因此,在SSD闪存的寿命初期可以采用较大的写速度,以提高SSD的使用性能;同时,可以采用较长的数据保存时长,以减少进行刷新操作的次数,从而节省SSD的系统开销,提高SSD的使用性能。相应地,在SSD闪存的寿命后期,已执行的P/E次数较多,闪存绝缘层损坏程度较大,存储单元内电子流失速度较快,存储数据容易出错,因此,在SSD闪存的寿命后期可以采用较小的写速度,以延长SSD闪存的使用寿命;同时,可以采用较短的数据保存时长,以缩短进行刷新操作的时间,避免存储数据出错程度超出ECC校验范围而导致SSD闪存的寿命终结。
S402:所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
在该步骤中,SSD控制器根据步骤S401确定出的当前阶段的写速度,执行除刷新操作外的写操作,并结合步骤S401确定出数据保存时长和写速度,执行刷新操作。这里,除刷新操作外的写操作,也就是除刷新操作外的对闪存执行的其它任何写操作。比如,具体可以包括以下两种写操作:
SSD控制器在接收到主机发送的写请求后,根据所述写请求,对SSD的闪存执行写操作;或,
SSD控制器在确定闪存中空白的闪存块数量在闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
上述两种写操作中,第一种是SSD控制器根据主机发送的写请求,对闪存执行写操作。第二种是SSD控制器执行垃圾回收(Garbage Collection,GC)的过程。SSD闪存中空白的闪存块数量在闪存中所占比率低于设定阈值后,将会严重影响SSD的写入性能,因此,需要及时对包含无效数据的闪存块执行擦除操作。这里,对闪存中的数据进行修改时,并不删除修改前的数据,而是将包含修改前的数据的闪存页标记为无效数据页,将修改后的数据写入空白的闪存页中。为了及时对包含无效数据的闪存块执行擦除操作,首先需要将该闪存块中的有效数据移动到其它位置,然后再对只包含无效数据的闪存块执行擦除操作,这就是执行GC的过程。
采用上述实施例,可以在SSD闪存的不同寿命阶段采用不同的写速度和数据保存时长,比如,在SSD闪存的寿命初期可以采用较大的写速度和较长的数据保存时长,以提高SSD的使用性能;在SSD闪存的寿命后期可以采用较小的写速度和较短的数据保存时长,以延长SSD闪存的使用寿命。可见,本发明实施例可以较好地改善SSD闪存的使用寿命与SSD的使用性能之间存在的矛盾。
在SSD的闪存中存储的数据可以分成两种类型,一种是被访问频率较大的热数据,一种是被访问频率较小的冷数据。在具体实施中,可以对这两种类型的数据进行区别对待,即在SSD闪存的同一寿命阶段,针对不同类型的数据,采用不同的写速度和数据保存时长。比如,由于冷数据不常被访问,在SSD闪存的寿命后期,相比热数据,可以对冷数据采用相对较慢的写速度,以及相对较长的数据保存时长。这样,虽然针对冷数据的写速度较慢,但却可以使冷数据的存储单元之间的阈值电压间隔大些,这样,即使采用较长的数据保存时长,冷数据也不容易出错。由于冷数据不常被访问,针对冷数据的写速度慢些对SSD的整体写入性能影响较少,基本不会影响用户体验度。以下实施例二中将对该实施方式作详细介绍。
如图5所示,为本发明实施例二提供的数据写入方法流程图,包括以下步骤:
S501:SSD控制器根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率。
该步骤中,分别为热数据和冷数据设置不同的对应关系表,可以将该对应关系表存储在SSD控制器的只读存储器(Read-Only Memory,ROM)中。在具体实施时,随P/E次数的增加,可以逐渐减小针对冷数据和热数据的写速度。如图6(a)所示,为在SSD闪存的寿命初期的对应关系图。在SSD闪存的寿命初期,由于已执行的P/E次数较少,可以为热数据和冷数据都设置较大的写速度和较长的数据保存时长,以提高SSD的使用性能。如图6(b)所示,为在SSD闪存的寿命中期的对应关系图,其中实线对应热数据,虚线对应冷数据。在SSD闪存的寿命中期,可以为热数据和冷数据设置不同的对应关系。由于冷数据的被访问频率较低,相比热数据,可以对冷数据采用相对较慢的写速度,以及相对较长的数据保存时长。虽然冷数据对应的写速度较慢,但却可以使冷数据的存储单元之间的阈值电压间隔大些,这样,即使采用较长的数据保存时长,冷数据也不容易出错。并且,由于冷数据不常被访问,冷数据对应的写速度慢些对SSD的整体写入性能影响较少。相对SSD闪存的寿命初期,可以减小热数据对应的写速度和数据保存时长。但是,由于热数据的被访问频率较高,相比冷数据,可以对热数据采用相对较快的写速度,以及相对较短的数据保存时长。如图6(c)所示,为在SSD闪存的寿命后期的对应关系图,其中实线对应热数据,虚线对应冷数据。在SSD闪存的寿命后期,SSD闪存的寿命称为重点考虑的方面。相对SSD闪存的寿命中期,冷数据和热数据对应的写速度都进一步减小,同时,还可以进一步减小热数据的数据保存时长。如下表一和表二所示,分别为本发明实施例二中热数据和冷数据的对应关系表。该表中,以编程电压的大小来标识写速度的大小。需要说明的是,该对应关系表仅是本发明实施例具体的实施方式之一,在具体实施时可根据实际需要改变表中的对应关系。
表一
表二
S502:所述SSD控制器根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,对所述SSD的闪存执行所述写操作。
该步骤中,可以预先设置不同类型数据的数据属性,比如,文件的根目录由于需要被经常访问,可以将其设置为热数据,对于一些影视文件,可以将其设置为冷数据。这里,数据的数据属性并不是固定的,SSD控制器在将数据写入闪存后,可以根据该数据的被访问频率对其数据属性进行调整。
S503:所述SSD控制器根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
该步骤中,如果写入到闪存中的热数据在经过设置的数据保存时长后,仍没有被更新,则可以将该热数据的数据属性变更为冷数据,并采用冷数据对应的写速度,对该数据进行刷新操作。因此,该步骤中,不管是热数据还是冷数据,在需要进行刷新时,都是作为冷数据被刷新。
在执行刷新操作时,可以以闪存块为最小刷新单位,但是,由于闪存块中每页数据被写入的时间不一致,若按照被写入时间最早的数据进行刷新,会刷新很多不必要的数据,若按照被写入时间最晚的数据进行刷新,又有可能导致其它被写入时间较早的数据因没有得到及时刷新而出错。因此,本发明以下实施例三中为了提高进行数据刷新的及时性和避免对不必要的数据进行刷新操作,以页作为最小的刷新单位。
如图7所示,为本发明实施例三提供的数据写入方法流程图,包括:
S701:SSD控制器根据当前对所述SSD的闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长。
该步骤的实施可参见实施例一的描述,重复之处,不再赘述。
S702:SSD控制器根据确定的写速度,以页为单位向闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外(Out of Band,OOB)信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间。
如图8所示,为针对闪存块中写入数据的每一页,记录该页的OOB信息的示意图。通过任一页数据的OOB信息,不仅可以确定该页的页号,还可以确定该页的前一页的页号和在该页的后一页的页号,这里的前一页和后一页是与该页在写入顺序上相邻的页。
S703:SSD控制器在向闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号。
该步骤中,可以将失效时间队列信息存储在SSD控制器的ROM中。SSD控制器每执行一次写操作,就将该写操作写入的数据加入失效时间队列中,这里,将写入的数据加入失效时间队列实际上就是如步骤S702所述,记录写入的页的OOB信息。在将写入的数据加入失效时间队列后,更新失效时间队列信息。在该失效时间队列信息中只记录失效时间队列的队列头和队列尾的页的页号,其中,队列头的页可以是所述最早写入数据的一页,队列尾的页可以是所述最近一次写入数据的一页,或者,队列头的页可以是所述最近一次写入数据的一页,队列尾的页可以是所述最早写入数据的一页。结合该队列头或队列尾的页号,以及记录的每一页的OOB信息(包括该页的页号、该页的前一页和后一页的页号),可以依次寻找到该失效时间队列中的每一页。
S704:所述SSD控制器基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页;根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
根据对上述步骤的描述可知,根据失效时间队列信息中最早写入数据的一页的页号或最近一次写入数据的一页的页号以及闪存中写入数据的页的OOB信息,可以依次寻找到失效时间队列中的每一页。结合数据保存时长,依次判断寻找到的每一页是否需要进行刷新,在确定需要进行刷新后,根据确定的写速度对其进行刷新,因为刷新实际上就将该页的数据重新写入到其它页的位置,因此,需要重新记录刷新后的页的OOB信息,并更新失效时间队列信息。
在确定需要执行刷新操作的页时,可以从上述失效时间队列信息中选择所述最早写入数据的一页或最近一次写入数据的一页作为起始页开始判断,根据选择的起始页不同,本实施例中具体提供以下两种实施方式。
第一种:以所述最早写入数据的一页作为起始页开始判断;
具体地,所述SSD控制器根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
比如,所述失效时间队列信息中记录有最早写入数据的一页的页号2和所述最近一次写入数据的一页的页号6。根据闪存中每一页的OOB信息,查找页号为2的页。在查找到页号为2的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长。如果超出,则确定需要对该页号为2的页执行刷新操作,否则,结束当前的刷新操作。若确定需要对该页号为2的页执行刷新操作,则对该页号为2的页执行刷新操作,并根据该页号为2的页的OOB信息中记录的该页的后一页的页号4,在闪存中查找页号为4的页。在查找到页号为4的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长。如果超出,则确定需要对该页号为4的页执行刷新操作,否则,结束当前的刷新操作。若确定需要对该页号为4的页执行刷新操作,则对该页号为4的页执行刷新操作,并根据该页号为4的页的OOB信息中记录的该页的后一页的页号6,在闪存中查找页号为6的页。在查找到页号为6的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长。如果超出,则确定需要对该页号为6的页执行刷新操作,否则,结束当前的刷新操作。若确定需要对该页号为6的页执行刷新操作,则对该页号为6的页执行刷新操作,并且,由于页号6为所述最近一次写入数据的一页的页号,所以需要结束当前的刷新操作。
第二种:以所述最近一次写入数据的一页作为起始页开始判断;
具体地,所述SSD控制器根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
所述SSD控制器根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有未更新的页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
比如,所述失效时间队列信息中记录有最早写入数据的一页的页号2和所述最近一次写入数据的一页的页号6。根据闪存中每一页的OOB信息,查找页号为6的页。在查找到页号为6的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长。如果超出,则确定需要对该页号为6的页以及写入顺序在该页号之前的所有未更新的页都执行刷新操作。这里,根据该页号为6的页的OOB信息确定该页号为6的页的前一页为页号为4的页,根据该页号为4的页的OOB信息确定该页号为4的页的前一页为页号为2的页,也就是所述最早写入数据的一页。那么,该实施方式中就需要将页号为6、4、2的页依次进行刷新。如果确定在页号为6的页写入数据的时间与当前时间之间的时间间隔没有超出所述数据保存时长,则根据该页号为6的页的OOB信息中记录的该页的前一页的页号4,在闪存中查找页号为4的页。在查找到页号为4的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长。如果超出,则确定需要对该页号为4的页,以及该页号为4的页的前一页(页号为2的页)都执行刷新操作。否则,根据该页号为4页的OOB信息中记录的该页的前一页的页号2,在闪存中查找页号为2的页,在查找到页号为2的页后,根据该页的OOB信息中记录的在该页写入数据的时间,所述数据保存时长,以及当前时间,判断在该页写入数据的时间与当前时间之间的时间间隔是否超出了所述数据保存时长,如果超出,则确定需要对该页号为2的页执行刷新操作,否则,确定不需要对该页号为2的页,也就是所述最早写入数据的一页执行刷新操作。
结合上述实施例二和实施例三,提出了以下实施例四。该实施例四中,不同数据属性对应不同的对应关系表,且在进行数据刷新时,以页作为最小的刷新单位。具体实施与上述实施例重复之处不再赘述。
如图9所示,为本发明实施例四提供的数据写入方法流程图,包括:
S901:SSD控制器根据当前对所述SSD的闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长。
S902:所述SSD控制器根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间。
S903:SSD控制器在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号。
S904:针对任一种数据属性,所述SSD控制器基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
在确定需要执行刷新操作的页时,可以从上述失效时间队列信息中选择所述最早写入数据的一页或最近一次写入数据的一页作为起始页开始判断,根据选择的起始页不同,本实施例中具体提供以下两种实施方式。
第一种:以所述最早写入数据的一页作为起始页开始判断;
具体地,针对任一种数据属性,所述SSD控制器根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、选择的数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、选择的数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
第二种:以所述最近一次写入数据的一页作为起始页开始判断;
具体地,针对任一种数据属性,所述SSD控制器基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页,包括:
针对任一种数据属性,所述SSD控制器根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、选择的数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、选择的数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
基于同一发明构思,本发明实施例中还提供了一种与数据写入方法对应的数据写入装置,由于该装置解决问题的原理与本发明实施例数据写入方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图10所示,为本发明实施例五提供的数据写入装置结构示意图,包括:
确定模块101,用于根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
执行模块102,用于根据所述确定模块101确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
可选地,所述执行模块102具体用于:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
可选地,所述确定模块101具体用于:
根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
所述执行模块102具体用于根据以下步骤执行所述写操作:根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作;
所述执行模块102具体用于根据以下步骤执行所述刷新操作:根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
可选地,所述执行模块102具体用于根据以下步骤执行所述写操作:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块102具体用于根据以下步骤执行所述刷新操作:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
可选地,所述执行模块102具体用于根据以下步骤执行所述写操作:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块102具体用于根据以下步骤执行所述刷新操作:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
可选地,所述执行模块102具体用于:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
可选地,所述执行模块102具体用于:根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
如图11所示,为本发明实施例六提供的数据写入装置110结构示意图,该装置包括处理器111、存储器112和总线113,所述存储器112存储执行指令,当所述装置运行时,所述处理器111与所述存储器112之间通过总线113通信,所述处理器111执行所述执行指令使得所述装置执行如下方法:
根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长;
根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,并
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
可选地,所述处理器111执行的所述方法中,对所述SSD的闪存执行除刷新操作外的写操作,包括:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
可选地,所述处理器111执行的所述方法中,根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及预设的P/E次数范围分别与写速度和数据保存时长的对应关系,确定写速度和数据保存时长,包括:
根据当前对所述闪存中的每个闪存块平均执行的P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围与写速度和数据保存时长的对应关系;所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:根据所述除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作;
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作。
可选地,所述处理器111执行的所述方法中,根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作,包括:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作,包括:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
可选地,所述处理器111执行的所述方法中,根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
可选地,所述处理器111执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
可选地,所述处理器111执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明执行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (18)

1.一种数据写入方法,其特征在于,包括:
固态硬盘SSD控制器根据当前对所述SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围分别与写速度和数据保存时长的对应关系,所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
所述SSD控制器根据所述SSD的闪存执行除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述刷新操作外的写操作;
所述SSD控制器根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
2.如权利要求1所述的方法,其特征在于,所述SSD控制器对所述SSD的闪存执行除刷新操作外的写操作,包括:
所述SSD控制器在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
所述SSD控制器在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
3.如权利要求1或2所述的方法,其特征在于,所述SSD控制器根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作,包括:
所述SSD控制器根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述SSD控制器根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作,包括:
针对任一种数据属性,所述SSD控制器基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
所述SSD控制器根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
4.如权利要求1或2所述的方法,其特征在于,所述SSD控制器根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:
所述SSD控制器根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述SSD控制器根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:
所述SSD控制器基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
所述SSD控制器根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
5.如权利要求4所述的方法,其特征在于,所述SSD控制器根据失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
所述SSD控制器根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
6.如权利要求4所述的方法,其特征在于,所述SSD控制器根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
所述SSD控制器根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
所述SSD控制器根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
7.一种数据写入装置,其特征在于,包括:
确定模块,用于根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围分别与写速度和数据保存时长的对应关系,所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
执行模块,用于根据所述SSD的闪存执行除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述刷新操作外的写操作;以及
根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
8.如权利要求7所述的装置,其特征在于,所述执行模块具体用于:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
9.如权利要求8所述的装置,其特征在于,所述执行模块具体用于根据以下步骤执行所述写操作:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块具体用于根据以下步骤执行所述刷新操作:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
10.如权利要求7或8所述的装置,其特征在于,所述执行模块具体用于根据以下步骤执行所述写操作:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新所述SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
所述执行模块具体用于根据以下步骤执行所述刷新操作:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
11.如权利要求10所述的装置,其特征在于,所述执行模块具体用于:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
12.如权利要求10所述的装置,其特征在于,所述执行模块具体用于:根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
13.一种数据写入装置,其特征在于,该装置包括处理器、存储器和总线,所述存储器存储执行指令,当所述装置运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述执行指令使得所述装置执行如下方法:
根据当前对固态硬盘SSD的闪存中的每个闪存块平均执行的编程/擦除P/E次数,以及每种数据属性所对应的对应关系表,确定每种数据属性对应的写速度和数据保存时长;其中,所述对应关系表中记录有预设的P/E次数范围分别与写速度和数据保存时长的对应关系,所述数据属性包括热数据和冷数据,所述热数据的访问频率大于所述冷数据的访问频率;
根据所述SSD的闪存执行除刷新操作外的写操作所需要写入到闪存中的数据的数据属性,从确定的每种数据属性对应的写速度中,选择写速度,并根据选择的写速度,对所述SSD的闪存执行所述刷新操作外的写操作;
根据写入到闪存中的数据的数据属性,从确定的每种数据属性对应的数据保存时长中,选择数据保存时长,根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作;所述刷新操作是将所述闪存中存储时间超过所述数据保存时长的数据从最近一次写入的位置重新写入到所述闪存中的其它位置。
14.如权利要求13所述的装置,其特征在于,所述处理器执行的所述方法中,对所述SSD的闪存执行除刷新操作外的写操作,包括:
在接收到主机发送的写请求后,根据所述写请求,对所述SSD的闪存执行写操作;或,
在确定闪存中空白的闪存块数量在所述闪存中所占比率低于设定阈值后,将包含无效数据的闪存块中的有效数据写入到空白的闪存页中。
15.如权利要求13或14所述的装置,其特征在于,所述处理器执行的所述方法中,根据选择的写速度,对所述SSD的闪存执行所述除刷新操作外的写操作,包括:
根据选择的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,根据写入的数据的数据属性,更新所述SSD控制器维护的该数据属性对应的失效时间队列信息;所述失效时间队列信息包括之前写入具有该数据属性的数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据选择的数据保存时长以及冷数据对应的写速度,对写入到闪存中的数据执行刷新操作,包括:
针对任一种数据属性,基于预设的刷新周期,根据该数据属性对应的失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及选择的数据保存时长,确定需要执行刷新操作的页;
根据冷数据对应的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述冷数据对应的失效时间队列信息。
16.如权利要求13或14所述的装置,其特征在于,所述处理器执行的所述方法中,根据确定的写速度,对所述SSD的闪存执行除刷新操作外的写操作,包括:
根据确定的写速度,以页为单位向所述闪存中写入数据;针对写入数据的每一页,在该页中记录该页的带外OOB信息,所述OOB信息包括该页的页号、与该页在写入顺序上相邻的前一页的页号、与该页在写入顺序上相邻的后一页的页号和在该页写入数据的时间;并
在向所述闪存中的任一页写入数据后,更新SSD控制器维护的失效时间队列信息;所述失效时间队列信息包括之前写入数据且未更新的页中,最早写入数据的一页的页号和最近一次写入数据的一页的页号;
根据确定的数据保存时长以及确定的写速度,对写入到闪存中的数据执行刷新操作,包括:
基于预设的刷新周期,根据所述失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及确定的数据保存时长,确定需要执行刷新操作的页;
根据确定的写速度,对确定的所述需要执行刷新操作的页执行刷新操作,记录刷新后的页的OOB信息,并更新所述失效时间队列信息。
17.如权利要求16所述的装置,其特征在于,所述处理器执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号和最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最早写入数据的一页的页号,在所述闪存中查找对应所述最早写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最早写入数据的一页执行刷新操作;
若确定不需要对所述最早写入数据的一页执行刷新操作,则结束当前周期的刷新操作;
若确定需要对所述最早写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出不需要执行刷新操作的页或直到确定出需要对所述最近一次写入数据的一页执行刷新操作:
以当前确定出的需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的后一页的页号,在所述闪存中查找该后一页的OOB信息,并
根据查找到的该后一页的OOB信息中包括的在该后一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该后一页执行刷新操作。
18.如权利要求16所述的装置,其特征在于,所述处理器执行的所述方法中,根据失效时间队列信息中所述最早写入数据的一页的页号或最近一次写入数据的一页的页号、所述闪存中写入数据的页的OOB信息以及所述数据保存时长,确定需要执行刷新操作的页,包括:
根据所述最近一次写入数据的一页的页号,在所述闪存中查找对应所述最近一次写入数据的一页的OOB信息;
根据查找到的OOB信息中包括的在该页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对所述最近一次写入数据的一页执行刷新操作;
若确定需要对所述最近一次写入数据的一页执行刷新操作,则确定需要对写入顺序在所述最近一次写入数据的一页之前的所有未更新的页都执行刷新操作;
若确定不需要对所述最近一次写入数据的一页执行刷新操作,则重复执行以下步骤,直到确定出需要执行刷新操作的页,则确定需要对写入顺序在确定出的需要执行刷新操作的页之前的所有页都执行刷新操作,或直到确定不需要对所述最早写入数据的一页执行刷新操作:
以当前确定出的不需要执行刷新操作的页作为当前页,根据当前页的OOB信息中包括的与该当前页在写入顺序上相邻的前一页的页号,在所述闪存中查找该前一页的OOB信息,并
根据查找到的该前一页的OOB信息中包括的在该前一页写入数据的时间、所述数据保存时长和当前时间,判断是否需要对该前一页执行刷新操作。
CN201410251232.4A 2014-06-06 2014-06-06 一种数据写入方法及装置 Active CN105242871B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410251232.4A CN105242871B (zh) 2014-06-06 2014-06-06 一种数据写入方法及装置
PCT/CN2015/080779 WO2015185002A1 (zh) 2014-06-06 2015-06-04 一种数据写入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410251232.4A CN105242871B (zh) 2014-06-06 2014-06-06 一种数据写入方法及装置

Publications (2)

Publication Number Publication Date
CN105242871A CN105242871A (zh) 2016-01-13
CN105242871B true CN105242871B (zh) 2018-06-05

Family

ID=54766176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410251232.4A Active CN105242871B (zh) 2014-06-06 2014-06-06 一种数据写入方法及装置

Country Status (2)

Country Link
CN (1) CN105242871B (zh)
WO (1) WO2015185002A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016393275B2 (en) * 2016-02-19 2019-10-10 Huawei Technologies Co., Ltd. Method and apparatus for accessing flash memory device
JP6705604B2 (ja) * 2016-03-09 2020-06-03 ホアウェイ・テクノロジーズ・カンパニー・リミテッド フラッシュメモリデバイスをリフレッシュする方法および装置
TWI576699B (zh) * 2016-03-31 2017-04-01 慧榮科技股份有限公司 紀錄資料區塊的使用時間的方法及其裝置
CN107436726B (zh) * 2016-05-26 2020-09-08 华为技术有限公司 数据写入方法、存储控制器、计算设备以及存储装置
CN107506135B (zh) * 2016-06-14 2022-05-06 杭州海康威视数字技术股份有限公司 一种数据处理方法、装置及系统
CN107783725A (zh) * 2016-08-30 2018-03-09 南京中兴新软件有限责任公司 数据存储的方法、装置以及非易失性存储器
CN106558346B (zh) * 2016-11-16 2020-04-07 杭州华澜微电子股份有限公司 一种基于raim构架的固态硬盘寿命计算的方法及装置
WO2018214013A1 (zh) * 2017-05-23 2018-11-29 深圳大学 基于三维闪存的数据写入方法及装置
CN107229419B (zh) * 2017-05-23 2020-05-12 深圳大学 基于三维闪存的数据写入方法及装置
CN107273056A (zh) * 2017-06-30 2017-10-20 郑州云海信息技术有限公司 一种Ceph文件系统的数据存储方法及装置
CN107678692B (zh) * 2017-10-09 2020-09-22 苏州浪潮智能科技有限公司 一种io流速控制方法及系统
CN107832008A (zh) * 2017-10-25 2018-03-23 记忆科技(深圳)有限公司 一种提高ssd写性能一致性的方法
CN107832012A (zh) * 2017-11-03 2018-03-23 重庆大学 一种在线挖掘闪存制程差异现象优化刷新的方法
CN108804025B (zh) * 2018-03-07 2021-10-01 深圳忆联信息系统有限公司 一种降低闪存滞留错误的方法及固态硬盘
CN109032503B (zh) * 2018-06-14 2021-04-16 浙江大华存储科技有限公司 一种固态硬盘数据迁移带宽的流控方法及装置
CN109032505A (zh) * 2018-06-26 2018-12-18 深圳忆联信息系统有限公司 带时效的数据读写方法、装置、计算机设备及存储介质
CN109119108A (zh) * 2018-08-15 2019-01-01 杭州阿姆科技有限公司 一种提高Nand寿命的方法
CN110858121B (zh) * 2018-08-23 2023-07-11 阿里巴巴集团控股有限公司 后台操作的调度方法及装置
CN109582224A (zh) * 2018-11-12 2019-04-05 哈尔滨工业大学 一种基于自恢复效应的NAND Flash存储可靠性优化方法
CN109582240B (zh) * 2018-12-03 2022-02-18 郑州云海信息技术有限公司 一种数据移动方法及其相关设备
US10725705B1 (en) * 2019-01-16 2020-07-28 Western Digital Technologies, Inc. System and method for storage system property deviation
CN114303123A (zh) * 2019-08-27 2022-04-08 华为技术有限公司 一种固态硬盘的数据存储方法、装置及固态硬盘ssd
CN113467703B (zh) * 2020-03-31 2024-06-14 杭州海康存储科技有限公司 存储介质的管理方法、装置及设备
CN112506445B (zh) * 2020-12-29 2022-05-20 杭州电子科技大学 一种同质混合固态硬盘的分区比例自适应调整方法
CN114400035A (zh) * 2021-12-02 2022-04-26 长江存储科技有限责任公司 存储器的编程方法、存储器及存储系统
CN116547759A (zh) 2021-12-02 2023-08-04 长江存储科技有限责任公司 存储器设备、存储器系统及其程序操作方法
CN114510198B (zh) * 2022-02-16 2023-06-30 北京中电华大电子设计有限责任公司 一种提高nvm擦写效率的方法
CN116302633B (zh) * 2023-01-18 2024-04-09 北京得瑞领新科技有限公司 闪存存储器的逻辑单元失效管理方法、装置、介质及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103198862A (zh) * 2012-01-06 2013-07-10 力晶科技股份有限公司 非易失性半导体存储器装置及其写入方法
CN103337257A (zh) * 2013-06-20 2013-10-02 深圳市瑞耐斯技术有限公司 一种nand闪存设备及其操作方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7154153B1 (en) * 1997-07-29 2006-12-26 Micron Technology, Inc. Memory device
US8130249B2 (en) * 2009-08-17 2012-03-06 Xerox Corporation Erase decoupled from writing for erasable paper
US8737141B2 (en) * 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
CN103019615B (zh) * 2012-07-19 2015-08-26 中国人民解放军国防科学技术大学 一种基于负载控制的提高闪存固态硬盘持久性方法
CN102937935A (zh) * 2012-09-04 2013-02-20 邹粤林 一种固态存储系统及控制器、提高闪存芯片寿命的方法
CN103677653B (zh) * 2012-09-21 2017-07-25 联想(北京)有限公司 一种基于ssd的数据处理方法及电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103198862A (zh) * 2012-01-06 2013-07-10 力晶科技股份有限公司 非易失性半导体存储器装置及其写入方法
CN103337257A (zh) * 2013-06-20 2013-10-02 深圳市瑞耐斯技术有限公司 一种nand闪存设备及其操作方法

Also Published As

Publication number Publication date
WO2015185002A1 (zh) 2015-12-10
CN105242871A (zh) 2016-01-13

Similar Documents

Publication Publication Date Title
CN105242871B (zh) 一种数据写入方法及装置
US10176113B2 (en) Scalable indexing
TWI498730B (zh) 用於對記憶體進行耗損平均之方法,記憶體控制器及裝置
CN104461393B (zh) 一种闪存存储器的混合映射方法
TWI398770B (zh) 用於快閃記憶體的資料存取方法、儲存系統與控制器
US9304903B2 (en) Block grouping method for solid state drive
TWI425357B (zh) 用來進行區塊管理之方法以及記憶裝置及控制器
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN106201916B (zh) 一种面向ssd的非易失缓存方法
US10162554B2 (en) System and method for controlling a programmable deduplication ratio for a memory system
CN107025071A (zh) 非易失性存储器装置及其垃圾收集方法
JP5622155B2 (ja) キャッシュメモリおよびその制御方法
CN110532200B (zh) 一种基于混合内存架构的内存系统
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
US8392691B2 (en) Data management method, memory controller and memory storage apparatus
US9009442B2 (en) Data writing method, memory controller and memory storage apparatus
CN107273046A (zh) 一种基于固态盘阵列的数据处理方法及系统
CN105159602B (zh) 数据处理方法及存储设备
US20140089566A1 (en) Data storing method, and memory controller and memory storage apparatus using the same
CN104298615B (zh) 一种存储器交换分区损耗的均衡方法
CN111324549B (zh) 一种存储器及其控制方法和装置
WO2011019029A1 (ja) データ処理装置、データ記録方法、データ記録プログラム
US20240118835A1 (en) Solid state drive having mram and methods for operating the same
CN105653466A (zh) 数据储存装置以及快闪存储器控制方法
KR20180135390A (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant