CN103336744B - 一种固态存储设备的垃圾回收方法及其系统 - Google Patents
一种固态存储设备的垃圾回收方法及其系统 Download PDFInfo
- Publication number
- CN103336744B CN103336744B CN201310248150.XA CN201310248150A CN103336744B CN 103336744 B CN103336744 B CN 103336744B CN 201310248150 A CN201310248150 A CN 201310248150A CN 103336744 B CN103336744 B CN 103336744B
- Authority
- CN
- China
- Prior art keywords
- request
- garbage reclamation
- physical
- page
- physical page
- 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
Links
Abstract
一种固态存储设备的垃圾回收方法及其系统,适用于基于闪存的固态存储设备,属于固态存储领域,解决现有垃圾回收方法不能有效利用系统空闲时间进行垃圾回收或者垃圾回收耗时较长、增大系统读写响应延迟的问题。本发明方法包括产生垃圾回收请求、判断、执行不可中断请求以及执行可中断请求步骤;本发明系统包括相应模块。本发明将垃圾回收请求分为可中断的垃圾回收请求和不可中断的垃圾回收请求,通过动态调整垃圾回收的触发阈值,分别调用可中断的垃圾回收步骤和不可中断的垃圾回收步骤,充分利用固态存储设备的空闲时段进行垃圾回收,同时避免不必要的垃圾回收;实现在不影响垃圾回收效率的情况下,有效地降低垃圾回收带来的读写性能损失。
Description
技术领域
本发明属于固态存储领域,具体涉及一种固态存储设备的垃圾回收方法及其系统。
背景技术
固态存储设备是一类有别于传统硬盘的新型计算机存储设备,根据其内部存储介质特性的不同,固态存储设备通常可分两种类型:支持原地写的固态存储设备和不支持原地写的固态存储设备;支持原地写的固态存储设备主要是基于动态随机存储器介质或相变存储器介质,不支持原地写的固态存储设备主要基于闪存介质。这两类介质的区别在于第一类存储介质在写数据之前不需要进行擦除操作,而向第二类介质的一个物理地址写数据之前需要先对其进行擦除操作。
闪存介质是一种具有高密度,大容量,非易失性等特点的新型存储介质,与磁介质相比,它具有较低的读写延时和较低的能耗。但是闪存芯片也存在一些缺陷:
(1)闪存介质必须先擦除后写入。而且擦除操作和读写操作的基本单元不同:擦除操作的单元为块,读写操作的单元为页,一个块包含多个页。
(2)闪存的读、写、擦除速度相差很大。一个擦除操作的时间约为一个读操作的100倍,一个写操作的7~8倍。
(3)闪存中每个物理块的擦除次数是有限的。
上述特征导致在闪存介质上的同一个物理位置更新数据的代价非常高昂,通常的做法是采用异地更新的方法,即将更新后的数据存放在一个新的物理页,原物理页上的数据标记为无效。
在固态存储设备中,具有一个闪存转化层,其主要包含垃圾回收、损耗均衡和地址映射3个功能,其中垃圾回收用于回收固态存储设备中的物理块以增加设备中的可用空间;损耗均衡用于固态存储设备中的擦除操作均匀进行,以提高固态存储设备的寿命;地址映射用于固态存储设备中逻辑地址与物理地址之间的转换,其采用一个映射表来记录逻辑地址与物理地址之间的映射关系。
闪存中的物理页可分为三种状态:空闲,即该物理页已被擦除过,可以直接写数据;有效,即该物理页上记录的数据是有效的数据;无效,即该物理页上记录的是无效的数据。固态存储设备在使用一段时间后会存在大量的无效数据,此时需要通过垃圾回收方法来回收无效数据占据的物理空间,即通过擦除无效数据所在的块获得空闲页;同时由于物理块的擦除次数有限,因此应该尽量减少对块的擦除操作并将擦除均匀的分布到各个物理块上,以延长固态存储设备的寿命。
垃圾回收的过程一般是先将选中的物理块中的有效数据转移到其它物理块中,然后对其实施擦除操作,因为垃圾回收操作涉及到数据的迁移和块的擦除,所以它是一个极为耗时的过程。数据迁移时,数据的源物理页和目的物理页所处的芯片会被占用,而且在它们之间传输数据还会占用通道资源。在执行擦除操作时,虽然不会占用通道资源,但擦除对象所处的芯片会被占用。因此,垃圾回收过程中的固态存储设备的读写性能将受到较大影响。
任何一个完整的垃圾回收算法都必须做出“何时触发垃圾回收操作”的决定,对于何时触发垃圾回收操作,通常有两种垃圾回收方法:
一种方法是设置一个确定的阈值,当固态存储设备中的空闲页数目低于这一阈值时,就进行垃圾回收(见K.Ha and J.Kim,“A Program Context-AwareData Separation Technique for Reducing Garbage Collection Overhead in NANDFlash Memory,”Proc.7th IEEE SNAPI,May 2011.);这种方法的优点是:在固态存储设备中有足够的空闲空间时,不会触发垃圾回收操作,其读写性能较好。当垃圾回收被触发时,设备中的无效页水平会比较高,被选中进行垃圾回收操作的目标物理块中的有效数据页较少,一次垃圾回收操作能回收更多的物理页,即垃圾回收的效率较高。但这种方法也存在缺点:当固态存储设备中的空闲页数目降到一个较低值时,若有批量的写请求到达,系统需要为这些写请求分配空闲页,有可能在短时间内触发大量的垃圾回收请求,导致垃圾回收的集中爆发。这种情况一旦发生,系统的性能将会严重下降。
另一种方法是根据固态存储设备的参数,如擦除次数、页的状态,在固态存储设备空闲时决定是否进行垃圾回收(见J.Lee,Y.Kim,G.Shipman,S.Oral,F.Yang,and J.Kim,“A Semi-Preemptive Garbage Collector for Solid StateDrives,”IEEE Int’l Symp.Performance Analysis of Systems and Software(ISPASS 11),April 2011,pp.12-21.)。这种方法的优点是:在系统空闲时,根据物理块和物理页的状态来判定是否要进行垃圾回收操作,通常能得到较高的垃圾回收效率。它的缺点是:需要对请求到达时间做精确预测,如果预测失败,极有可能造成垃圾回收操作与读写操作的冲突,导致读写请求不能及时被响应;另外,这种方法不能保证固态存储设备中存在足够的空闲页。批量写请求的到来可能会迅速消耗空闲页但不会触发垃圾回收,从而使空闲页数目下降到极低的水平,不能保证每个写请求都能及时获得空闲页。
在固态存储设备使用末期,垃圾回收越来越频繁,现有两种垃圾回收方法可能导致固态存储设备的性能严重下降。
为了清楚地理解本发明,以下对有关概念加以解释:
物理块:固态存储设备中的某一存储区域,每个固态存储设备中包含若干个物理块,每个物理块中包含恒定数量的物理页,物理块也是擦除操作的基本单位,物理页是为写请求分配资源的基本单位;
额外空间比例E:表示固态存储设备额外空间容量占固态存储设备总物理容量的比例,额外空间容量为在固态存储设备总物理容量与逻辑容量的差值,在固态存储设备中,其总物理容量是设备的总容量,逻辑容量是用户可以看到和使用的容量,是小于总物理容量的;E由固态存储设备出厂时设定,使用过程中不再改变;
有效物理页:固态存储设备物理页的中的数据是有效数据时,该物理页为有效物理页,不能直接进行擦除操作,需要将其中的内容迁移到另一空闲页后才能进行擦除操作,用该物理页对应的状态寄存器中一个状态位标记;
有效页比例V:表示固态存储设备有效物理页数目Nv占固态存储设备总物理页数目Nt的比例;出厂时V初始值为0,在用户使用过程中会发生变化;
无效物理页:固态存储设备物理页的中的数据是无效数据时,该物理页为无效物理页,可以直接进行擦除操作,用该物理页对应的状态寄存器中一个状态位标记;
垃圾回收区域中无效页比例I:表示固态存储设备无效物理页数目Ni占固态存储设备总物理页数目Nt的比例;出厂时I初始值为0,在用户使用过程中会发生变化;
空闲物理页:固态存储设备中物理页还没有使用,即其没有数据时,该物理页为空闲物理页,可以用于写请求和迁移操作的资源分配,用该物理页对应的状态寄存器中一个状态位标记;
空闲页比例f:表示固态存储设备中空闲物理页的数目Nf占固态存储设备物理页总数目Nt的比例;
不可中断垃圾回收请求:本发明中的垃圾回收请求类型,其优先级高于读写请求,执行该类型垃圾回收请求时不可中断;该请求内容包括以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;各项的具体含义如下:
(1)目标物理区域:指定了垃圾回收的目标物理块所在的通道号和芯片号,对于一个固态存储设备,其通常具有多通道结构,每个通道内又包含多个芯片;
(2)目标物理块号:用于记录垃圾回收请求所指示的要回收的目标物理块;
(3)物理页号:用于记录请求执行的断点,该字段初始值置为0,表示指向被回收物理块的第一个页;
(4)优先级:指示了该垃圾回收请求的优先级大小,对于所述请求,该项内容表示其高于读写请求的优先级;
(5)请求状态:状态指示的是垃圾回收请求的状态。一个垃圾回收请求在不同时刻有不同的状态,用状态标志,任意一个时刻,一个垃圾回收请求处于以下状态中的一个:等待状态,准备好状态,运行状态和完成状态。等待状态表明该垃圾回收请求要访问的区域(通道或芯片)正在执行其它的请求,该垃圾回收请求需要等待其完成后才能进行;准备好状态表明请求只要被仲裁选中就可以执行;运行状态表明该请求正在被执行,可能是在进行数据迁移操作,也可能正在进行擦除操作;完成状态表明该请求已经被执行完毕,正等待固态存储设备其从队列中取下。垃圾回收请求刚产生时处于准备好状态;在为其指定了目标物理区域后,如果目标通道和芯片被占用,则它的状态变为等待状态;一旦目标通道和芯片执行完当前的操作而变为空闲时,垃圾回收请求进入准备好状态;垃圾回收请求被选中执行时处于运行状态;被中断后返回到准备好状态;完成擦除操作后处于完成状态。
可中断垃圾回收请求:本发明中的垃圾回收请求类型,其优先级低于读写请求,执行该类型垃圾回收请求时可以被中断;该请求内容包括以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态,其含义与上述不可中断垃圾回收请求相同,需要注意的是此时优先级字段内容表示其低于读写请求的优先级;
不可中断阈值H:表示是否触发产生不可中断垃圾回收请求的控制阈值,0<H<1;
可中断阈值T:表示是否触发产生可中断垃圾回收请求的控制阈值,T和H的关系为:0<H<T<1;
不可中断请求队列:该队列用于存放产生的不可中断垃圾回收请求成员,当要执行不可中断垃圾回收操作时,取其队首成员并执行即可;
可中断请求队列:该队列用于存放产生的可中断垃圾回收请求成员,当要执行可中断垃圾回收操作时,取其队首成员并执行即可;
擦除操作:用于固态存储设备中的垃圾回收,主要工作是将指定的物理块中所有的内容消除并重新置位,将该物理块中所有物理页变为空闲物理页;
数据迁移:将目标物理页中的数据复制到另一个空闲物理页中,并将原目标物理页标记为无效物理页。
发明内容
本发明提供一种固态存储设备的垃圾回收方法,同时提供适用该垃圾回收方法的垃圾回收系统,解决现有垃圾回收方法不能有效利用系统空闲时间进行垃圾回收或者垃圾回收过程耗时较长、增大系统读写响应延迟的问题。
本发明所提供的一种固态存储设备的垃圾回收方法,适用于基于闪存的固态存储设备,包括产生垃圾回收请求步骤、判断步骤、执行不可中断请求步骤和执行可中断请求步骤,其特征在于:
(1)产生垃圾回收请求步骤,包括下述子步骤:
(1.1)置有效页比例V=0,置无效页比例I=0,置空闲页分配数目C=0,进行子步骤(1.2);
(1.2)判断是否C≥n,是则置C=0,转子步骤(1.3);否则转步骤(2);n为每个物理块中物理页的数目;
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
f=Nf/Nt,其中,Nf为当前固态存储设备中空闲物理页的数目,从存储系统中直接获得;Nt是固态存储设备中物理页的总数目;
V=Nv/Nt,其中,Nv为当前固态存储设备中有效物理页数目,从存储系统中直接获得;
I=Ni/Nt,其中,Ni为当前固态存储设备中无效物理页数目,从存储系统中直接获得;
H=δE+ε(1-V);
T=αE+β(1-V)+γI;
其中,额外空间比例E为设备厂商出厂时提供,通常为5%~20%;比例系数δ取值范围为0.3~0.5、比例系数ε取值范围为0.1~0.3、比例系数α取值范围为0.5~0.7、比例系数β取值范围为0.1~0.4、比例系数γ取值范围为0.1~0.3,且0<H<T<1;
计算完毕进行子步骤(1.4);
(1.4)判断是否f<H,是则转子步骤(1.5),否则转子步骤(1.6);
(1.5)生成一个不可中断垃圾回收请求,将其挂载到不可中断请求队列的尾部,转步骤(2);所述不可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;其中,物理页号用于记录请求执行的断点,其初始值置为0,表示指向被回收物理块的第一个页;目标物理块号用于记录垃圾回收请求所指示的要回收的目标物理块;
(1.6)判断是否f<T,是则转子步骤(1.7);否则转步骤(2);
(1.7)生成一个可中断垃圾回收请求,将其挂载到可中断请求队列的尾部,转步骤(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态,其具体含义与不可中断垃圾回收请求相同;
(2)判断步骤,包括下述子步骤:
(2.1)判断不可中断请求队列是否为空,是则转子步骤(2.2),否则转步骤(3);
(2.2)判断是否存在读请求或写请求,是则转子步骤(2.3),否则转子步骤(2.4);
(2.3)执行读请求或写请求:
读请求执行完毕,转子步骤(1.2);
执行写请求时,每为写请求分配一个空闲页后,置C=C+1,写请求执行完毕,转子步骤(1.2);
(2.4)判断可中断请求队列是否为空,是则转子步骤(2.1),否则转步骤(4);
(3)执行不可中断请求步骤,包括下述子步骤:
(3.1)取不可中断请求队列位于队首的垃圾回收请求,进行子步骤(3.2);
(3.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转子步骤(3.3),否则转子步骤(3.6);
(3.3)判断所述垃圾回收请求中物理页号所指示的页是否为有效页,是则转子步骤(3.4),否则转子步骤(3.5);
(3.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中物理页号加1,转子步骤(3.2);
(3.5)将所述垃圾回收请求中物理页号加1,转子步骤(3.2);
(3.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(3.7);
(3.7)从不可中断请求队列中删除该垃圾回收请求,转子步骤(1.3);
(4)执行可中断请求步骤,包括下述子步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求,进行子步骤(4.2);
(4.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转子步骤(4.3),否则转子步骤(4.6);
(4.3)判断所述物理页号所指示的页是否为有效页,是则转子步骤(4.4),否则转子步骤(4.5);
(4.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中所述物理页号加1,转步骤(2);
(4.5)将所述垃圾回收请求中所述物理页号加1,转子步骤(4.3);
(4.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(4.7);
(4.7)从可中断请求队列中删除该垃圾回收请求;转子步骤(1.3)。
所述的垃圾回收方法,其特征在于:
所述执行不可中断请求步骤的子步骤(3.4)和执行可中断请求步骤的子步骤(4.4)中,所述数据迁移,包括如下过程:
A1.判断该物理页是否为有效物理页,是则转过程B1;否则结束;
B1.找寻一个空闲物理页,将所述有效物理页中的数据复制到所述空闲物理页中,转过程C1;
C1.修改固态存储设备映射表中相关的项,将原映射表项中物理页地址修改为所述空闲页的物理地址,数据迁移完成;
所述执行不可中断请求步骤的子步骤(3.6)和执行可中断请求步骤的子步骤(4.6)中,所述擦除操作,包括如下过程:
A2.将目标物理块中所有物理页的各数据位复位,擦除操作完毕,转过程B2;
B2.修改该物理块中各物理页对应的状态寄存器,将所有状态寄存器中的状态位标记为空闲。
本发明所提供的适用所述垃圾回收方法的垃圾回收系统,适用于基于闪存的固态存储设备,包括产生垃圾回收请求模块、判断模块、执行不可中断请求模块和执行可中断请求模块,其特征在于:
(1)产生垃圾回收请求模块,其可配置为执行下述步骤:
(1.1)置有效页比例V=0,置无效页比例I=0,置空闲页分配数目C=0,进行步骤(1.2);
(1.2)判断是否C≥n,是则置C=0,转步骤(1.3);否则转入模块(2);n为每个物理块中物理页的数目;
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
f=Nf/Nt,其中,Nf为当前固态存储设备中空闲物理页的数目,从存储系统中直接获得;Nt是固态存储设备中物理页的总数目;
V=Nv/Nt,其中,Nv为当前固态存储设备中有效物理页数目,从存储系统中直接获得;
I=Ni/Nt,其中,Ni为当前固态存储设备中无效物理页数目,从存储系统中直接获得;
H=δE+ε(1-V);
T=αE+β(1-V)+γI;
其中,额外空间比例E为设备厂商出厂时提供,通常为5%~20%;比例系数δ取值范围为0.3~0.5、比例系数ε取值范围为0.1~0.3、比例系数α取值范围为0.5~0.7、比例系数β取值范围为0.1~0.4、比例系数γ取值范围为0.1~0.3,且0<H<T<1;
计算完毕进行步骤(1.4);
(1.4)判断是否f<H,是则转步骤(1.5),否则转步骤(1.6);
(1.5)生成一个不可中断垃圾回收请求,将其挂载到不可中断请求队列的尾部,转模块(2);所述不可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;其中,物理页号用于记录请求执行的断点,其初始值置为0,表示指向被回收物理块的第一个页;目标物理块号用于记录垃圾回收请求所指示的要回收的目标物理块;
(1.6)判断是否f<T,是则转步骤(1.7);否则转入模块(2);
(1.7)生成一个可中断垃圾回收请求,将其挂载到可中断请求队列的尾部,转模块(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态,其具体含义与不可中断垃圾回收请求相同;
(2)判断模块,其可配置为执行下述步骤:
(2.1)判断不可中断请求队列是否为空,是则转步骤(2.2),否则转入模块(3);
(2.2)判断是否存在读请求或写请求,是则转步骤(2.3),否则转步骤(2.4);
(2.3)执行读请求或写请求:
读请求执行完毕,转步骤(1.2);
执行写请求时,每为写请求分配一个空闲页后,置C=C+1,写请求执行完毕,转步骤(1.2);
(2.4)判断可中断请求队列是否为空,是则转步骤(2.1),否则转入模块(4);
(3)执行不可中断请求模块,其可配置为执行下述步骤:
(3.1)取不可中断请求队列位于队首的垃圾回收请求,进行步骤(3.2);
(3.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转步骤(3.3),否则转步骤(3.6);
(3.3)判断所述垃圾回收请求中物理页号所指示的页是否为有效页,是则转步骤(3.4),否则转步骤(3.5);
(3.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中物理页号加1,转步骤(3.2);
(3.5)将所述垃圾回收请求中物理页号加1,转步骤(3.2);
(3.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转步骤(3.7);
(3.7)从不可中断请求队列中删除该垃圾回收请求,转步骤(1.3);
(4)执行可中断请求模块,其可配置为执行下述步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求,进行步骤(4.2);
(4.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转步骤(4.3),否则转步骤(4.6);
(4.3)判断所述物理页号所指示的页是否为有效页,是则转步骤(4.4),否则转步骤(4.5);
(4.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中所述物理页号加1,转入模块(2);
(4.5)将所述垃圾回收请求中所述物理页号加1,转步骤(4.3);
(4.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转步骤(4.7);
(4.7)从可中断请求队列中删除该垃圾回收请求;转步骤(1.3)。
所述的垃圾回收系统,其特征在于:
所述执行不可中断请求模块的步骤(3.4)和执行可中断请求模块的步骤(4.4)中,所述数据迁移,包括如下过程:
A1.判断该物理页是否为有效物理页,是则转过程B1;否则结束;
B1.找寻一个空闲物理页,将所述有效物理页中的数据复制到所述空闲物理页中,转过程C1;
C1.修改固态存储设备映射表中相关的项,将原映射表项中物理页地址修改为所述空闲页的物理地址,数据迁移完成;
所述执行不可中断请求模块的步骤(3.6)和执行可中断请求模块的步骤(4.6)中,所述擦除操作,包括如下过程:
A2.将目标物理块中所有物理页的各数据位复位,擦除操作完毕,转过程B2;
B2.修改该物理块中各物理页对应的状态寄存器,将所有状态寄存器中的状态位标记为空闲。
本发明将垃圾回收请求分为可中断的垃圾回收请求和不可中断的垃圾回收请求。可中断的垃圾回收请求的执行过程是将垃圾回收过程分割为多个可顺序独立执行的操作,具体包括零个或多个数据迁移操作和一个物理块擦除操作。在一个操作完成后,更改垃圾回收请求的物理页号,然后返回到判断步骤,由判断步骤来选择下一阶段执行什么操作。不可中断的垃圾回收请求的执行与可中断的垃圾回收请求的执行过程类似,都是先进行数据迁移操作,后进行擦除操作,但不可中断的垃圾回收请求需要一次执行完所有这些操作,其间不能中断。
在子步骤(1.2)中,使用变量n来控制生成垃圾回收请求的频度,n为一个物理块中物理页的数目,也可以将n设置为上一次垃圾回收操作回收的物理页数目。如果采用后一种方式,在固态存储设备出厂时,n被设置为总物理页数目的五分之一,以后每进行完一次垃圾回收,就将n设置为该次垃圾回收操作回收的物理页数目。
在子步骤(1.3)中,f,H,T的值是动态计算的,不可中断阈值H为触发不可中断垃圾回收操作的空闲页比例的临界值,用于确定垃圾回收方式;可中断阈值T为触发垃圾回收操作的空闲页比例的临界值,用于判定是否要触发垃圾回收;
固态存储设备每为写请求分配一个空闲页后,空闲页分配数目C值加1,当C大于或等于n时,比较空闲页比例f与阈值H、T,判断是否要触发垃圾回收,
这里需要说明的是,在垃圾回收过程中,因有效数据迁移而分配空闲页时,C值不变;这是因为垃圾回收过程总体上会使系统的空闲页数目增多,即使f的值增大。另外,这也是为了避免由一个垃圾回收请求的执行去触发另一个垃圾回收请求的产生。
固态存储设备维持一个不可中断请求队列和一个可中断请求队列,分别用于挂载刚产生的不可中断的垃圾回收请求和可中断的垃圾回收请求。
上述的每个垃圾回收请求会导致固态存储设备回收一个物理块。可中断的垃圾回收请求的执行过程由多个可顺序独立完成的操作组成,各个操作之间可以中断,但单个操作内部不可中断。不可中断的垃圾回收请求的执行过程一经启动,就不能中断,直到垃圾回收过程结束。
在步骤(2)中,由于读写请求的执行将导致空闲页比例、有效页比例、无效页比例的变化,重新计算空闲页比例、调整T和H;并判断是否要产生垃圾回收请求。
在步骤(3)中,每次执行一个不可中断的垃圾回收请求,具体包括数据迁移操作和块擦除操作。执行完毕后,会将该请求从请求队列中取下并销毁。同时,由于垃圾回收请求的执行,导致空闲页比例、无效页比例的变化,需要调整T和H。
在步骤(4)中,每个可中断垃圾回收请求包括需顺序执行的多个数据迁移操作和一个块擦除操作,步骤(4)每次只执行一个请求的一个操作,然后跳出,请求本身会记录该请求已执行到了哪一步。与步骤(3)相似,步骤(4)也需要调整T和H。
另外,如果由于固态存储设备磨损均衡算法的需要而把整个存储空间划分为多个区域,每个区域独立的进行垃圾回收,那么上述的Nf、Ni、Nv和Nt需要重新定义。这种情况下,Nf指的是一个分区内的空闲页数目,Ni是这个分区内的无效物理页数目,Nv是这个分区内的有效物理页数目,而Nt是这个分区内总的物理页数目。f的计算方法以及垃圾回收的触发条件不变。垃圾回收请求在产生时需要填写一部分区域信息以指示该请求是针对哪个特定分区的垃圾回收请求。每个独立的垃圾回收区域都应该维持自己的可中断垃圾回收队列和不可中断的垃圾回收队列。
垃圾回收触发阈值设置的越高,垃圾回收被触发的时间越早。但是如果将垃圾回收阈值设置的过高,则有可能由于垃圾回收被触发时,系统中无效数据较少,造成所选择的要被回收的目标块中无效页较少,而有效页较多。一方面,块中较多的有效页意味着有更多的数据迁移操作,整个垃圾回收过程会被延长。另一方面,块中较少的无效页意味着垃圾回收完成后,系统增加的空闲页数目较少,即垃圾回收的效率不高。
垃圾回收触发阈值设置的越低,垃圾回收被触发的时间越晚。此时系统中无效数据页占总物理页数目的比例较高,所选择的要擦除的物理块中无效数据页较多,而有效数据页较少。一次垃圾回收操作的耗时减小而回收的空闲页数目增多,即垃圾回收的效率较高。但是较小的垃圾回收触发阈值将使系统中的空闲页数目降到一个较低的水平,有可能导致垃圾回收在某段时间集中爆发。对固态存储设备的性能也会产生严重影响。
本发明中,不可中断垃圾回收请求的优先级高于普通的读写请求,可中断垃圾回收请求的优先级低于普通的读写请求。系统根据请求的优先级进行仲裁,优先响应优先级高的请求。与可中断的垃圾回收过程相比,由于不可中断的垃圾回收过程对系统读、写性能的影响较大,所以应尽可能多地使用可中断的垃圾回收,避免不可中断的垃圾回收。只有在系统中的空闲页数目严重不足而需要急迫地进行垃圾回收时,才使用不可中断的垃圾回收方法。所以不可中断的垃圾回收触发阈值应该尽可能的小,但又不会造成垃圾回收的集中爆发。
本发明由于实现了垃圾回收触发阈值的动态设置,可以根据固态存储设备的状态,及时触发垃圾回收,同时还避免了在设备快写满时进行不必要的垃圾回收;本发明可以利用读写请求之间的空闲时间段来执行可中断的垃圾回收请求。当有读写请求到达时,可以迅速停止可中断垃圾回收请求的执行,响应读写请求。当固态存储设备中的空闲页数目很少时,可以通过执行不可中断的垃圾回收请求迅速回收空闲页。通过合理的阈值设计和优先级设置,既能利用系统中较短的空闲时段进行垃圾回收,避免了垃圾回收请求的集中爆发,又将垃圾回收操作对读写请求的影响降到了最低。
附图说明
图1为本发明实施例的流程示意图;
图2为产生垃圾回收请求步骤的流程示意图;
图3为判断步骤的流程示意图;
图4为执行不可中断请求步骤的流程示意图;
图5为执行可中断请求步骤的流程示意图。
具体实施方式
下面结合附图和实施例对本发明进一步详细描述,以下实施例仅是说明性的,并不构成是对本发明的限定。
如图1所示,本发明的实施例,包括产生垃圾回收请求步骤、判断步骤、执行不可中断请求步骤以及执行可中断请求步骤。
本实施例中的固态存储设备物理容量为512GB,逻辑容量为480GB,则额外空间比例E=(512GB-480GB)/512GB=0.0625;每个物理块有64个物理页,每个物理页4KB,则整个固态存储设备总物理页数目Nt=128×220(512GB/4KB),开始时所有的物理页都是空闲的,因此空闲物理页数目Nf=128×220,有效物理页数目Nv=0,无效物理页数目Ni=0;同时在实施列中阈值H与T的计算公式中的各个系数:比例系数δ=0.3、比例系数ε=0.1、比例系数α=0.5、比例系数β=0.3、比例系数γ=0.2;
(1)产生垃圾回收请求步骤,如图2所示,包括下述子步骤:
(1.1)置有效页比例V=0,置无效页比例I=0,置空闲页分配数目C=0,进行子步骤(1.2);
(1.2)判断是否C≥n,是则置C=0,转子步骤(1.3);否则转步骤(2);本实施例中,每个物理块中物理页的数目n为64,此处C不等于n,转步骤(2);
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,转子步骤(2.2)。
(2.2)假设进入此步骤时,存储系统存在写请求,因此转子步骤(2.3);
(2.3)执行读请求或写请求:
执行写请求时,每为写请求分配一个空闲页后,置C=C+1;假设该写请求的大小为32个页,因此该写请求执行完毕时C=32,转子步骤(1.2);
(1.2)判断是否C≥n,此时C<64,转步骤(2);
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,因此转子步骤(2.2)。
(2.2)假设进入此步骤时,系统存在写请求,因此转子步骤(2.3);
(2.3)执行读请求或写请求:
执行写请求时,每为写请求分配一个空闲页后,置C=C+1;假设该写请求的大小为40个页,因此该写请求执行完毕时此时C值为72;转子步骤(1.2);
(1.2)判断是否C≥n,此时C=72≥64,则置C=0,转子步骤(1.3);
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
假定在某时刻,进入此步骤时Nf为12×220,有效物理页数目Nv为64×220,无效页数目Ni为52×220;
f=Nf/Nt=12×220/128×220=0.09375;
V=Nv/Nt=64×220/128×220=0.5;
I=Ni/Nt=52×220/128×220=0.40625;
H=δE+ε(1-V)=0.3×0.0625+0.1×(1-0.5)=0.059375;
T=αE+β(1-V)+γI=0.5×0.0625+0.3×(1-0.5)+0.2×0.40625=0.1485;
计算完毕进行子步骤(1.4);
(1.4)判断是否f<H,是则转子步骤(1.5),否则转子步骤(1.6);进入此步骤时,f=0.09375,H=0.059375;此时判断条件f<H不成立,转子步骤(1.6)。
(1.6)判断是否f<T,是则转子步骤(1.7);否则转步骤(2);进入本子步骤时,f=0.09375,T=0.1485,转子步骤(1.7);
(1.7)生成一个可中断垃圾回收请求Q1,并初始化该请求,将该请求的物理页号置为0;将其挂载到可中断请求队列的尾部,转步骤(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,因此转子步骤(2.2)。
(2.2)假定进入此步骤时,系统不存在读请求和写请求,因此转子步骤(2.4);
(2.4)进入此步骤时,可中断请求队列上有一个请求Q1,因此转步骤(4);
(4)执行可中断请求步骤,如图5所示,包括下述子步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求Q1,进行子步骤(4.2);
(4.2)此时该请求Q1的物理页号为初始值0,小于物理块中的物理页数目64,转子步骤(4.3);
(4.3)假设进入该步骤时所属物理页号0所指示的目标物理块中的第1页为有效页,转子步骤(4.4);
(4.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中所述物理页号加1,数据迁移操作完毕,所属物理页号值为1;转步骤(2);
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,转子步骤(2.2)。
(2.2)假定进入此步骤时,系统不存在读请求和写请求,转子步骤(2.4);
(2.4)进入此步骤时,可中断请求队列上有一个请求Q1,转步骤(4);
(4)执行可中断请求步骤,如图5所示,包括下述子步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求Q1,进行子步骤(4.2);
(4.2)此时该请求Q1的物理页号为1,小于物理块中的物理页数目64,转子步骤(4.3);
(4.3)假设进入该步骤时所属物理页号1所指示的目标物理块中的第2页为无效页,转子步骤(4.5);
(4.5)将所述垃圾回收请求中所述物理页号加1,此时其值为2;转子步骤(4.3);
(4.3)假设进入该步骤时所属物理页号2所指示的目标物理块中的第3页为有效页,转子步骤(4.4);
(4.4)对所述物理页号所指示的页进行数据迁移,数据迁移操作完毕,将所述垃圾回收请求中所述物理页号加1,此时其值为3,转步骤(2);
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,转子步骤(2.2)。
(2.2)假定此时进入此步骤时,系统存在写请求,转子步骤(2.3)
(2.3)执行读请求或写请求:
执行写请求时,每为写请求分配一个空闲页后,置C=C+1,假设该写请求执行完毕时此时C值为64;转子步骤(1.2);
(1.2)判断C值,此时C=64,则置C=0,转子步骤(1.3);
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
假定在某时刻,进入此步骤时Nf为6×220,有效物理页数目Nv为68×220,无效页数目Ni为54×220;
f=Nf/Nt=6×220/128×220=0.046875;
V=Nv/Nt=68×220/128×220=0.53125;
I=Ni/Nt=54×220/128×220=0.421875;
H=δE+ε(1-V)=0.3×0.0625+0.1×(1-0.53125)=0.065625;
T=αE+β(1-V)+γI=0.5×0.0625+0.3×(1-0.53125)+0.2×0.421875=0.25625;
计算完毕进行子步骤(1.4);
(1.4)进入此步骤时,f=0.046875,H=0.065625;判断条件f<H成立,转步骤(1.5)。
(1.5)生成一个不可中断垃圾回收请求P1,将其挂载到不可中断请求队列的尾部,转步骤(2);所述不可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;其中,物理页号用于记录请求执行的断点,该字段初始值置为0,表示指向被回收物理块的第一个页;目标物理块号用于记录请求所指似的要回收的目标物理块;
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列不为空,因此转子步骤(3)。
(3)执行不可中断请求步骤,如图4所示,包括下述子步骤:
(3.1)取不可中断请求队列位于队首的垃圾回收请求P1,进行子步骤(3.2);
(3.2)所述垃圾回收请求中的物理页号为0,小于物理页数目64,转子步骤(3.3);
(3.3)假设进入该步骤时所属物理页号0所指示的目标物理块中的第1页为有效页,转子步骤(3.4);
(3.4)对所述物理页号0所指示的页进行数据迁移,将所述垃圾回收请求中物理页号加1,其值为1,转子步骤(3.2);
(3.2)所述垃圾回收请求中的物理页号为1,小于物理页数目64,转子步骤(3.3);
3.3)假设进入该步骤时所属物理页号1所指示的目标物理块中的第2页为无效页,转子步骤(3.5);
(3.5)将所述垃圾回收请求中物理页号加1,此时该值为2,转子步骤(3.2);
……
依次在子步骤(3.2)和子步骤(3.5)之间判断和循环执行,直到某时刻进入子步骤(3.2)时,所属物理页号值为64,等于物理块中的页数目,转子步骤(3.6)
(3.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(3.7);
(3.7)从不可中断请求队列中删除该垃圾回收请求P1,转子步骤(1.3);
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
假定在某时刻,进入此步骤时Nf为24×220,有效物理页数目Nv为68×220,无效页数目Ni为36×220;
f=Nf/Nt=24×220/128×220=0.1875;
V=Nv/Nt=68×220/128×220=0.53125;
I=Ni/Nt=36×220/128×220=0.28125;
H=δE+ε(1-V)=0.3×0.0625+0.1×(1-0.53125)=0.065625;
T=αE+β(1-V)+γI=0.5×0.0625+0.3×(1-0.53125)+0.2×0.28125=0.228125;
计算完毕进行子步骤(1.4);
(1.4)进入此步骤时,f=0.1875,H=0.065625;判断条件f<H不成立,转到步骤(1.6)。
(1.6)进入此步骤时,f=0.1875,T=0.228125;判断条件f<T成立,转子步骤(1.7);
(1.7)生成一个可中断垃圾回收请求Q2,并初始化该请求,将该请求的物理页号置为0;将其挂载到可中断请求队列的尾部,转步骤(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;
(2)判断步骤,如图3所示,包括下述子步骤:
(2.1)进入此步骤时,不可中断请求队列为空,转子步骤(2.2)。
(2.2)假设进入此步骤时,系统不存在读请求和写请求,转子步骤(2.4);
(2.4)进入此步骤时,可中断请求队列上有一个请求Q1,因此转步骤(4);
(4)执行可中断请求步骤,如图5所示,包括下述子步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求Q1,进行子步骤(4.2);
(4.2)此时该请求Q1的物理页号为3,小于物理块中的物理页数目64,转子步骤(4.3);
(4.3)假设进入该步骤时所属物理页号3所指示的目标物理块中的第4页为无效页,转子步骤(4.5);
(4.5)将所述垃圾回收请求中所述物理页号加1,此时其值为4;转子步骤(4.3);
(4.3)假设进入该步骤时所属物理页号4所指示的目标物理块中的第5页为无效页,转子步骤(4.5);
(4.5)将所述垃圾回收请求中所述物理页号加1,此时该物理页号为5,转子步骤(4.3);
……
假设在该块中都没有有效页,某时刻进入子步骤(4.2)时所述垃圾回收请求中的物理页号等于物理块中的物理页数目64,转子步骤(4.6);
(4.6)对所述垃圾回收请求Q1中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(4.7);
(4.7)从可中断请求队列中删除该垃圾回收请求Q1;转子步骤(1.3)。
……
继续执行,直至固态存储设备掉电或正常停止工作。
Claims (4)
1.一种固态存储设备的垃圾回收方法,适用于基于闪存的固态存储设备,包括产生垃圾回收请求步骤、判断步骤、执行不可中断请求步骤和执行可中断请求步骤,其特征在于:
(1)产生垃圾回收请求步骤,包括下述子步骤:
(1.1)置有效页比例V=0,置无效页比例I=0,置空闲页分配数目C=0,进行子步骤(1.2);
(1.2)判断是否C≥n,是则置C=0,转子步骤(1.3);否则转步骤(2);n为每个物理块中物理页的数目;
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
f=Nf/Nt,其中,Nf为当前固态存储设备中空闲物理页的数目,从存储系统中直接获得;Nt是固态存储设备中物理页的总数目;
V=Nv/Nt,其中,Nv为当前固态存储设备中有效物理页数目,从存储系统中直接获得;
I=Ni/Nt,其中,Ni为当前固态存储设备中无效物理页数目,从存储系统中直接获得;
H=δE+ε(1-V);
T=αE+β(1-V)+γI;
其中,额外空间比例E为设备厂商出厂时提供,通常为5%~20%;比例系数δ取值范围为0.3~0.5、比例系数ε取值范围为0.1~0.3、比例系数α取值范围为0.5~0.7、比例系数β取值范围为0.1~0.4、比例系数γ取值范围为0.1~0.3,且0<H<T<1;
计算完毕进行子步骤(1.4);
(1.4)判断是否f<H,是则转子步骤(1.5),否则转子步骤(1.6);
(1.5)生成一个不可中断垃圾回收请求,将其挂载到不可中断请求队列的尾部,转步骤(2);所述不可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;其中,物理页号用于记录请求执行的断点,其初始值置为0,表示指向被回收物理块的第一个页;目标物理块号用于记录垃圾回收请求所指示的要回收的目标物理块;
(1.6)判断是否f<T,是则转子步骤(1.7);否则转步骤(2);
(1.7)生成一个可中断垃圾回收请求,将其挂载到可中断请求队列的尾部,转步骤(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态,其具体含义与不可中断垃圾回收请求相同;
(2)判断步骤,包括下述子步骤:
(2.1)判断不可中断请求队列是否为空,是则转子步骤(2.2),否则转步骤(3);
(2.2)判断是否存在读请求或写请求,是则转子步骤(2.3),否则转子步骤(2.4);
(2.3)执行读请求或写请求:
读请求执行完毕,转子步骤(1.2);
执行写请求时,每为写请求分配一个空闲页后,置C=C+1,写请求执行完毕,转子步骤(1.2);
(2.4)判断可中断请求队列是否为空,是则转子步骤(2.1),否则转步骤(4);
(3)执行不可中断请求步骤,包括下述子步骤:
(3.1)取不可中断请求队列位于队首的垃圾回收请求,进行子步骤(3.2);
(3.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转子步骤(3.3),否则转子步骤(3.6);
(3.3)判断所述垃圾回收请求中物理页号所指示的页是否为有效页,是则转子步骤(3.4),否则转子步骤(3.5);
(3.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中物理页号加1,转子步骤(3.2);
(3.5)将所述垃圾回收请求中物理页号加1,转子步骤(3.2);
(3.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(3.7);
(3.7)从不可中断请求队列中删除该垃圾回收请求,转子步骤(1.3);
(4)执行可中断请求步骤,包括下述子步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求,进行子步骤(4.2);
(4.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转子步骤(4.3),否则转子步骤(4.6);
(4.3)判断所述物理页号所指示的页是否为有效页,是则转子步骤(4.4),否则转子步骤(4.5);
(4.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中所述物理页号加1,转步骤(2);
(4.5)将所述垃圾回收请求中所述物理页号加1,转子步骤(4.3);
(4.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转子步骤(4.7);
(4.7)从可中断请求队列中删除该垃圾回收请求;转子步骤(1.3)。
2.如权利要求1所述的垃圾回收方法,其特征在于:
所述执行不可中断请求步骤的子步骤(3.4)和执行可中断请求步骤的子步骤(4.4)中,所述数据迁移,包括如下过程:
A1.判断该物理页是否为有效物理页,是则转过程B1;否则结束;
B1.找寻一个空闲物理页,将所述有效物理页中的数据复制到所述空闲物理页中,转过程C1;
C1.修改固态存储设备映射表中相关的项,将原映射表项中物理页地址修改为所述空闲页的物理地址,数据迁移完成;
所述执行不可中断请求步骤的子步骤(3.6)和执行可中断请求步骤的子步骤(4.6)中,所述擦除操作,包括如下过程:
A2.将目标物理块中所有物理页的各数据位复位,擦除操作完毕,转过程B2;
B2.修改该物理块中各物理页对应的状态寄存器,将所有状态寄存器中的状态位标记为空闲。
3.一种适用权利要求1所述的垃圾回收方法的垃圾回收系统,适用于基于闪存的固态存储设备,包括产生垃圾回收请求模块、判断模块、执行不可中断请求模块和执行可中断请求模块,其特征在于:
(1)产生垃圾回收请求模块,其可配置为执行下述步骤:
(1.1)置有效页比例V=0,置无效页比例I=0,置空闲页分配数目C=0,进行步骤(1.2);
(1.2)判断是否C≥n,是则置C=0,转步骤(1.3);否则转入模块(2);n为每个物理块中物理页的数目;
(1.3)计算空闲页比例f、有效页比例V、无效页比例I、不可中断阈值H和可中断阈值T:
f=Nf/Nt,其中,Nf为当前固态存储设备中空闲物理页的数目,从存储系统中直接获得;Nt是固态存储设备中物理页的总数目;
V=Nv/Nt,其中,Nv为当前固态存储设备中有效物理页数目,从存储系统中直接获得;
I=Ni/Nt,其中,Ni为当前固态存储设备中无效物理页数目,从存储系统中直接获得;
H=δE+ε(1-V);
T=αE+β(1-V)+γI;
其中,额外空间比例E为设备厂商出厂时提供,通常为5%~20%;比例系数δ取值范围为0.3~0.5、比例系数ε取值范围为0.1~0.3、比例系数α取值范围为0.5~0.7、比例系数β取值范围为0.1~0.4、比例系数γ取值范围为0.1~0.3,且0<H<T<1;
计算完毕进行步骤(1.4);
(1.4)判断是否f<H,是则转步骤(1.5),否则转步骤(1.6);
(1.5)生成一个不可中断垃圾回收请求,将其挂载到不可中断请求队列的尾部,转模块(2);所述不可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态;其中,物理页号用于记录请求执行的断点,其初始值置为0,表示指向被回收物理块的第一个页;目标物理块号用于记录垃圾回收请求所指示的要回收的目标物理块;
(1.6)判断是否f<T,是则转步骤(1.7);否则转入模块(2);
(1.7)生成一个可中断垃圾回收请求,将其挂载到可中断请求队列的尾部,转模块(2);所述可中断垃圾回收请求包含以下项:目标物理区域、目标物理块号、物理页号、优先级和请求状态,其具体含义与不可中断垃圾回收请求相同;
(2)判断模块,其可配置为执行下述步骤:
(2.1)判断不可中断请求队列是否为空,是则转步骤(2.2),否则转入模块(3);
(2.2)判断是否存在读请求或写请求,是则转步骤(2.3),否则转步骤(2.4);
(2.3)执行读请求或写请求:
读请求执行完毕,转步骤(1.2);
执行写请求时,每为写请求分配一个空闲页后,置C=C+1,写请求执行完毕,转步骤(1.2);
(2.4)判断可中断请求队列是否为空,是则转步骤(2.1),否则转入模块(4);
(3)执行不可中断请求模块,其可配置为执行下述步骤:
(3.1)取不可中断请求队列位于队首的垃圾回收请求,进行步骤(3.2);
(3.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转步骤(3.3),否则转步骤(3.6);
(3.3)判断所述垃圾回收请求中物理页号所指示的页是否为有效页,是则转步骤(3.4),否则转步骤(3.5);
(3.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中物理页号加1,转步骤(3.2);
(3.5)将所述垃圾回收请求中物理页号加1,转步骤(3.2);
(3.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转步骤(3.7);
(3.7)从不可中断请求队列中删除该垃圾回收请求,转步骤(1.3);
(4)执行可中断请求模块,其可配置为执行下述步骤:
(4.1)取可中断请求队列中位于队首的垃圾回收请求,进行步骤(4.2);
(4.2)判断所述垃圾回收请求中的物理页号是否小于物理块中的物理页数目,是则转步骤(4.3),否则转步骤(4.6);
(4.3)判断所述物理页号所指示的页是否为有效页,是则转步骤(4.4),否则转步骤(4.5);
(4.4)对所述物理页号所指示的物理页进行数据迁移,将所述垃圾回收请求中所述物理页号加1,转入模块(2);
(4.5)将所述垃圾回收请求中所述物理页号加1,转步骤(4.3);
(4.6)对所述垃圾回收请求中目标物理块号所指示的物理块执行擦除操作,操作完毕,转步骤(4.7);
(4.7)从可中断请求队列中删除该垃圾回收请求;转步骤(1.3)。
4.如权利要求3所述的垃圾回收系统,其特征在于:
所述执行不可中断请求模块的步骤(3.4)和执行可中断请求模块的步骤(4.4)中,所述数据迁移,包括如下过程:
A1.判断该物理页是否为有效物理页,是则转过程B1;否则结束;
B1.找寻一个空闲物理页,将所述有效物理页中的数据复制到所述空闲物理页中,转过程C1;
C1.修改固态存储设备映射表中相关的项,将原映射表项中物理页地址修改为所述空闲页的物理地址,数据迁移完成;
所述执行不可中断请求模块的步骤(3.6)和执行可中断请求模块的步骤(4.6)中,所述擦除操作,包括如下过程:
A2.将目标物理块中所有物理页的各数据位复位,擦除操作完毕,转过程B2;
B2.修改该物理块中各物理页对应的状态寄存器,将所有状态寄存器中的状态位标记为空闲。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310248150.XA CN103336744B (zh) | 2013-06-20 | 2013-06-20 | 一种固态存储设备的垃圾回收方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310248150.XA CN103336744B (zh) | 2013-06-20 | 2013-06-20 | 一种固态存储设备的垃圾回收方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336744A CN103336744A (zh) | 2013-10-02 |
CN103336744B true CN103336744B (zh) | 2015-11-04 |
Family
ID=49244914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310248150.XA Active CN103336744B (zh) | 2013-06-20 | 2013-06-20 | 一种固态存储设备的垃圾回收方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336744B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102343246B1 (ko) * | 2014-12-12 | 2021-12-27 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9679658B2 (en) * | 2015-06-26 | 2017-06-13 | Intel Corporation | Method and apparatus for reducing read latency for a block erasable non-volatile memory |
CN107203552B (zh) | 2016-03-17 | 2021-12-28 | 阿里巴巴集团控股有限公司 | 垃圾回收方法及装置 |
CN106528438B (zh) * | 2016-10-08 | 2019-08-13 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN106527971B (zh) * | 2016-10-08 | 2019-11-26 | 华中科技大学 | 一种提升ssd在垃圾回收期间读性能的方法 |
US10628306B2 (en) * | 2017-02-01 | 2020-04-21 | Microsoft Technology Licensing, Llc | Garbage collector |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
CN107301132A (zh) * | 2017-06-09 | 2017-10-27 | 华中科技大学 | 一种闪存垃圾回收优化方法 |
CN109491588B (zh) * | 2017-09-13 | 2022-05-31 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
KR20190030790A (ko) * | 2017-09-14 | 2019-03-25 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN109558333B (zh) * | 2017-09-27 | 2024-04-05 | 北京忆恒创源科技股份有限公司 | 具有可变额外存储空间的固态存储设备命名空间 |
EP4099177A1 (en) | 2017-10-09 | 2022-12-07 | Huawei Technologies Co., Ltd. | Garbage data scrubbing method, and device |
CN108595112A (zh) * | 2018-03-14 | 2018-09-28 | 深圳忆联信息系统有限公司 | 一种优化触发机制的ssd垃圾回收方法及固态硬盘 |
KR20200004656A (ko) * | 2018-07-04 | 2020-01-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11048625B2 (en) * | 2018-09-20 | 2021-06-29 | SK Hynix Inc. | Memory system and operating method thereof |
CN109343796B (zh) * | 2018-09-21 | 2022-03-01 | 新华三技术有限公司 | 一种数据处理方法和装置 |
CN111124254B (zh) * | 2018-10-30 | 2023-09-29 | 伊姆西Ip控股有限责任公司 | 调度存储空间回收请求的方法、电子设备和程序产品 |
CN109947664A (zh) * | 2019-02-22 | 2019-06-28 | 珠海妙存科技有限公司 | 一种通过系统两端交互提高emmc的垃圾回收执行效果的方法 |
CN110569201B (zh) * | 2019-08-23 | 2021-09-10 | 苏州浪潮智能科技有限公司 | 一种固态硬盘GC下降低写latency的方法及装置 |
CN111159059B (zh) * | 2019-12-27 | 2022-03-04 | 深圳大普微电子科技有限公司 | 一种垃圾回收方法、装置及非易失性的存储设备 |
CN112433676A (zh) * | 2020-11-24 | 2021-03-02 | 合肥康芯威存储技术有限公司 | 一种固态硬盘的垃圾回收处理方法及系统 |
CN114281247B (zh) * | 2021-11-29 | 2022-10-14 | 深圳三地一芯电子有限责任公司 | 一种基于混合介质的flash带宽分配方法及装置 |
CN115292052B (zh) * | 2022-09-27 | 2023-08-08 | 荣耀终端有限公司 | 内存回收方法、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054533A (zh) * | 2009-10-27 | 2011-05-11 | 西部数据技术公司 | 隔离顺序、随机和系统数据以减少垃圾回收的针对基于页映射的非易失性半导体存储器 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN102768644A (zh) * | 2011-05-06 | 2012-11-07 | 创惟科技股份有限公司 | 闪存系统及其闪存无效数据页信息的管理方法与回收方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10329680A1 (de) * | 2003-07-01 | 2005-02-10 | Universität Stuttgart | Prozessorarchitektur für exakte Zeigeridentifizierung |
-
2013
- 2013-06-20 CN CN201310248150.XA patent/CN103336744B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102054533A (zh) * | 2009-10-27 | 2011-05-11 | 西部数据技术公司 | 隔离顺序、随机和系统数据以减少垃圾回收的针对基于页映射的非易失性半导体存储器 |
CN102768644A (zh) * | 2011-05-06 | 2012-11-07 | 创惟科技股份有限公司 | 闪存系统及其闪存无效数据页信息的管理方法与回收方法 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
Non-Patent Citations (2)
Title |
---|
《A Semi-Preemptive Garbage Collector for Solid State Drives》;Junghee Lee, etal.;《Electrical Computer Engineering》;20111231;全文 * |
《Flash存储技术》;郑文静 等;《计算机研究与发展》;20101231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103336744A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336744B (zh) | 一种固态存储设备的垃圾回收方法及其系统 | |
CN106528438B (zh) | 一种固态存储设备的分段式垃圾回收方法 | |
CN100590609C (zh) | 一种基于非连续页的动态内存管理方法 | |
CN101458613B (zh) | 一种混合分级阵列的实现方法、混合分级阵列和存储系统 | |
CN101169760B (zh) | 电子硬盘的存储空间的管理方法 | |
EP2115595B1 (en) | Memory device performance enhancement through pre-erase mechanism | |
CN103246613B (zh) | 缓存装置及用于缓存装置的缓存数据获取方法 | |
CN109471594B (zh) | 一种mlc闪存读写方法 | |
CN104008061A (zh) | 内存回收方法及装置 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN102609218B (zh) | 并行闪存转换层方法与系统 | |
CN109671458A (zh) | 管理闪存模块的方法及相关的闪存控制器 | |
CN101968755B (zh) | 一种自适应应用负载变化的快照生成方法 | |
CN107515728A (zh) | 发挥闪存设备内部并发特性的数据管理方法和装置 | |
CN103914398B (zh) | 用以管理具有实体地址空间的存储器使用率的方法及装置 | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN102063943A (zh) | Nand闪存参数自动检测系统 | |
CN103294604A (zh) | 闪存器件和使用闪存器件的电子设备 | |
CN104699424A (zh) | 一种基于页面热度的异构内存管理方法 | |
CN101634967A (zh) | 用于闪存的区块管理方法、储存系统与控制器 | |
CN106598501A (zh) | 用于存储自动分层的数据迁移设备及方法 | |
CN102880553B (zh) | 一种基于mcu的片外flash文件系统的读写方法 | |
CN104111896A (zh) | 大数据处理中的虚拟内存管理方法及其装置 | |
CN101866320A (zh) | 数据管理方法及使用此方法的闪存储存系统与控制器 | |
CN111078143B (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 |