一种固态存储设备快速TRIM方法及其系统与流程

文档序号:15850857发布日期:2018-11-07 09:53阅读:196来源:国知局
一种固态存储设备快速TRIM方法及其系统与流程

本发明涉及固态存储设备领域,更具体地说是指一种固态存储设备快速trim方法及其系统。

背景技术

现有ssd系统中,trim(ata命令集的命令,用于通知设备哪些逻辑地址不再被占用)的实现方式可能是采用同步方式实现,即在接收到trim命令时,根据trim命令指定的逻辑地址空间,更新映射表,然后将更新过的映射表写入nand完成trim命令处理。同步处理方式的缺点是,当trim命令指定的逻辑地址空间很大时,更新映射表及存储更新后的映射表都会花费较长时间,使得trim命令响应时间过长。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种固态存储设备快速trim方法及其系统。

为实现上述目的,本发明采用以下技术方案:

一种固态存储设备快速trim方法,包括以下步骤;

s1,判断主机当前是否有请求需要处理;若是,则进入s2,若不是,则进入s4;

s2,执行trim命令,将trim区间按tu划分,非tu对齐的部分更新映射表,其余部分转换为trim表中相应的比特;

s3,将更新的trim表和映射表写入nand;

s4,扫描trim表,逐个对tu处理;当tu处理到一定数量时,将更新的trim表和映射表写入nand。

其进一步技术方案为:所述s2具体包括以下步骤:

s21,执行trim命令,将trim区间按tu划分;

s22,判断是否获取一个待处理的tu;若是,则进入s23,若不是,则进入s3;

s23,判断tu是否完整;若是,则进入s25,若不是,则进入s24;

s24,根据tu更新映射表,并返回s22;

s25,将tu转换为trim表中相应的比特,并返回s22。

其进一步技术方案为:所述s3步骤之后还包括:

发送trim信息通知至主机。

其进一步技术方案为:所述s4具体包括以下步骤:

s41,判断是否从trim表中获取一个tu;若是,则进入s42,若不是,则进入s45;

s42,根据tu更新映射表,将tu对应trim表中的比特设置为0;

s43,判断tu处理数量是否达到预设值;若是,则进入s44,若不是,则返回s1;

s44,将更新的trim表和映射表写入nand;

s45,结束trim后台处理。

其进一步技术方案为:所述s42具体包括以下步骤:

s421,根据tu更新映射表;

s422,清除tu对应trim表中的比特。

其进一步技术方案为:所述s43中,tu处理数量的预设值为5-50个。

一种固态存储设备快速trim系统,包括主机判断单元,执行划分单元,更新写入单元,以及扫描更新单元;

所述主机判断单元,用于判断主机当前是否有请求需要处理;

所述执行划分单元,用于执行trim命令,将trim区间按tu划分,非tu对齐的部分更新映射表,其余部分转换为trim表中相应的比特;

所述更新写入单元,用于将更新的trim表和映射表写入nand;

所述扫描更新单元,用于扫描trim表,逐个对tu处理;当tu处理到一定数量时,将更新的trim表和映射表写入nand。

其进一步技术方案为:所述执行划分单元包括执行模块,待处理判断模块,tu完整性判断模块,更新模块,以及转换模块;

所述执行模块,用于执行trim命令,将trim区间按tu划分;

所述待处理判断模块,用于判断是否获取一个待处理的tu;

所述tu完整性判断模块,用于判断tu是否完整;

所述更新模块,用于根据tu更新映射表;

所述转换模块,用于将tu转换为trim表中相应的比特。

其进一步技术方案为:所述扫描更新单元包括获取判断模块,更新清除模块,预设值判断模块,写入模块,以及处理模块;

所述获取判断模块,用于判断是否从trim表中获取一个tu;

所述更新清除模块,用于根据tu更新映射表,清除tu对应trim表中的比特;

所述预设值判断模块,用于判断tu处理数量是否达到预设值;

所述写入模块,用于将更新的trim表和映射表写入nand;

所述处理模块,用于结束trim后台处理。

其进一步技术方案为:所述tu处理数量的预设值为5-50个。

本发明与现有技术相比的有益效果是:通过判断主机当前是否有请求需要处理;执行trim命令,将trim区间按tu划分,非tu对齐(即上述所说的不完整的tu)的部分直接更新映射表,其余部分转换为trim表中相应的比特;将更新的trim表和映射表写入nand;扫描trim表,逐个对tu处理;当tu处理到一定数量时,将更新的trim表和映射表写入nand;采用标准化存储trim命令及trim后台处理方法,极大降低了ssd响应主机trim命令的时间。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为本发明一种固态存储设备快速trim方法的流程图;

图2为图1中s2的具体步骤流程图;

图3为图1中s4的具体步骤流程图;

图4为图3中s42的具体步骤流程图;

图5为映射表及trim表在ram中的布局及trim命令执行后对表的更新示意图;

图6为写命令导致映射表和trim表更新的示意图;

图7为本发明一种固态存储设备快速trim系统的方框图。

10主机判断单元20执行划分单元

21执行模块22待处理判断模块

23tu完整性判断模块24更新模块

25转换模块30更新写入单元

40扫描更新单元41获取判断模块

42更新清除模块43预设值判断模块

44写入模块45处理模块

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

如图1到图7所示的具体实施例,其中,如图1至图6所示,本发明公开了一种固态存储设备快速trim方法,包括以下步骤;

s1,判断主机当前是否有请求需要处理;若是,则进入s2,若不是,则进入s4;

s2,执行trim命令,将trim区间按tu划分,非tu对齐的部分更新映射表,其余部分转换为trim表中相应的比特;

s3,将更新的trim表和映射表写入nand;

s4,扫描trim表,逐个对tu处理;当tu处理到一定数量时,将更新的trim表和映射表写入nand。

具体地,如图2所示,s2具体包括以下步骤:

s21,执行trim命令,将trim区间按tu划分;

s22,判断是否获取一个待处理的tu;若是,则进入s23,若不是,则进入s3;

s23,判断tu是否完整;若是,则进入s25,若不是,则进入s24;

s24,根据tu更新映射表,并返回s22;

s25,将tu转换为trim表中相应的比特,并返回s22。

其中,在s3步骤之后还包括:发送trim信息通知至主机。

具体地,如图3所示,s4具体包括以下步骤:

s41,判断是否从trim表中获取一个tu;若是,则进入s42,若不是,则进入s45;

s42,根据tu更新映射表,将tu对应trim表中的比特设置为0;

s43,判断tu处理数量是否达到预设值;若是,则进入s44,若不是,则返回s1;

s44,将更新的trim表和映射表写入nand;

s45,结束trim后台处理。

具体地,如图4所示,s42具体包括以下步骤:

s421,根据tu更新映射表;

s422,清除tu对应trim表中的比特。

其中,s43中,tu处理数量的预设值为5-50个。

其中,tu处理数量的预设值是个变量,可根据s44花费时间及写入数据量权衡:若一次处理的tu过少,则s44总的写入数据量会多(因每次写入都有额外的overhead);若一次处理tu过多,则s44耗时过长,可能影响在此期间对主机命令的响应。

其中,在本发明中,将trim信息的标准化存储,将整个逻辑地址空间划分为固定大小的片段(简称为tu,trimunit),每个片段用1个比特描述该片段的逻辑地址空间是否需要被trim,每个片段描述的逻辑地址空间大小可根据系统ram大小确定,在系统ram中保存整个位图信息,称此位图为trim表;trim表的存储方式和映射表存储方式相同,并与映射表一起存入映射块中;将trim命令转换为标准的trim表中的位图,既方便多个主机trim命令的合并,亦便于trim信息和映射表采用同样的格式存储处理,无需新增额外的处理逻辑。

具体地,图5给出了一个有1tb逻辑地址空间ssd的映射表和trim表在ram的布局及nand中存储示例;

其中,lbn:logicalblocknumber,用户读写基本单元,常见大小为512bytes;

lpn:logicalpagenumber,映射单元,通常为4kb;

mpn:mappingpagenumber,映射表存储单元,本示例中为4kb;

ppn:physicalpagenumber,nand页号,本示例中页大小为8kb

其中,1tb的逻辑地址空间划分为256mlpn,对应256k的mpn;相应的trim表大小为32kb,分配的mpn为256k-256k+7。在收到trimlbn8184-16383的命令后,其中,对lbn8192-16383的trim转换为trim表中的第二个比特,对lbn8184-8191的trim则转换为将映射表中的lpn1023处的表项设置为无映射值,然后将更新的mpn0和mpn256k写入nand,就可向主机报告trim命令处理完成。

其中,如图1至图4中的trim命令的执行过程,ssd接收到trim命令后,将非tu对齐的部分直接更新映射表,其余部分转换为trim表中相应的比特,在将更新的trim表和映射表写入nand后即可通知主机trim命令完成;如此使得trim命令处理过程需要更新的映射表和写入nand的数据都能保持在一个较低的水平,达到快速响应主机trim命令的目的。当主机没有请求需要处理时,系统会在后台根据trim表中的trim信息将对应的映射表项设置为无映射值,直至清空trim表

其中,如图1至图4中的trim命令的后台处理流程,当主机没有请求需要处理时,扫描trim表,逐个tu处理;当处理到一定数量时,保存映射表和trim表,防止因异常掉电导致过多的重复处理;当系统非空闲时,退出后台处理。

其中,在写命令处理过程中,对于写命令涉及的每个lpn,若其对应的tu在trim表置位,则先根据tu更新映射表,然后清除tu在trim表中对应的比特。待后续保存映射表时,同时保存更新过的trim表部分。

如图6所示,描述了写命令导致映射表和trim表更新的示例,当收到用户写lbn8192-8199(对应lpn1024)命令时,检查到该写入区间对应的tu在trim表中已被标记,故先将该tu对应的映射表(lpn1024-2047)项设置为无映射值,并清除trim表中相应的标记,后再处理用户的写命令(lpn1024映射到新分配的写入地址),之后待系统内部发起保存映射表时,上述被更新的mpn1和mpn256k也会被写入nand。

其中,读命令的执行过程,对于读命令涉及的每个lpn,若其对应的tu在trim表置位,则表示该lpn无映射,返回固定的数据给主机即可,否则进行正常的读处理。

如图3所示,本发明还公开了一种固态存储设备快速trim系统,包括主机判断单元10,执行划分单元20,更新写入单元30,以及扫描更新单元40;

主机判断单元10,用于判断主机当前是否有请求需要处理;

执行划分单元20,用于执行trim命令,将trim区间按tu划分,非tu对齐的部分直接更新映射表,其余部分转换为trim表中相应的比特;

更新写入单元30,用于将更新的trim表和映射表写入nand;

扫描更新单元40,用于扫描trim表,逐个对tu处理;当tu处理到一定数量时,将更新的trim表和映射表写入nand。

其中,执行划分单元20包括执行模块21,待处理判断模块22,tu完整性判断模块23,更新模块24,以及转换模块25;

执行模块21,用于执行trim命令,将trim区间按tu划分;

待处理判断模块22,用于判断是否获取一个待处理的tu;

tu完整性判断模块23,用于判断tu是否完整;

更新模块24,用于根据tu更新映射表;

转换模块25,用于将tu转换为trim表中相应的比特。

其中,扫描更新单元40包括获取判断模块41,更新清除模块42,预设值判断模块43,写入模块44,以及处理模块45;

获取判断模块41,用于判断是否从trim表中获取一个tu;

更新清除模块42,用于根据tu更新映射表,清除tu对应trim表中的比特;

预设值判断模块43,用于判断tu处理数量是否达到预设值;

写入模块44,用于将更新的trim表和映射表写入nand;

处理模块45,用于结束trim后台处理。

进一步地,tu处理数量的预设值为5-50个。

本发明采用标准化存储trim命令及trim后台处理方法,极大降低了ssd响应主机trim命令的时间。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

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