一种提升固态硬盘读性能的方法及其系统与流程

文档序号:17089171发布日期:2019-03-13 23:14阅读:228来源:国知局
一种提升固态硬盘读性能的方法及其系统与流程

本发明涉及固态硬盘读性能技术领域,更具体地说是指一种提升固态硬盘读性能的方法及其系统。



背景技术:

ssd(固态硬盘)已经被广泛应用于各种场合,由于其在性能、功耗、环境适应性等方面的优秀指标,正逐步替换传统的硬盘。

由于ssd的内部组成是由多个并发的nand颗粒组成,其可以提供较好的读写性能;当ssd作为系统主盘时,os写入的系统数据以及文件数据会被混合写入到相邻的位置,后续当主机读取文件内容时,由于在并发的条带内混杂了不同类型数据,所以性能有所损失,而且会表现为一定的波动,无法满足需求。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种提升固态硬盘读性能的方法及其系统。

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

一种提升固态硬盘读性能的方法,包括以下步骤:

s1,主机提交写命令到ssd,ssd前端区域将命令进行分割,并提交到命令类型识别区域;

s2,判断识别分割后的命令是文件数据还是系统数据;若是文件数据,则进入s3;若是系统数据,则进入s4;

s3,进入存放文件数据的顺序读写缓冲区,且当文件数据写满顺序读写缓冲区时,发起数据写入到nand的请求;

s4,进入存放系统数据的随机读写缓冲区,且当文件数据写满随机读写缓冲区时,发起数据写入到nand的请求;

s5,根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输,当完成数据传输后,提交操作请求到映射表管理区域;

s6,对操作请求分配相对应的物理地址,并更新对应的映射表项,后端区域根据物理地址发起对nand的写请求;

s7,等待nand操作请求完成,控制操作请求依次返回上层区域,前端区域接收到完成的控制操作请求后,完成命令写请求。

其进一步技术方案为:所述s2中,采用根据命令的访问地址是否连续或根据命令的大小来判断识别映射数据是文件数据还是系统数据。

其进一步技术方案为:所述s5包括:

s51,根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输;

s52,当完成数据传输后,提交操作请求到映射表管理区域。

其进一步技术方案为:所述s6包括:

s61,映射表管理区域对操作请求分配相对应的物理地址,并更新对应的映射表项;

s62,提交操作请求到后端区域,后端区域根据物理地址发起对nand的写请求。

其进一步技术方案为:所述s7包括:

s71,等待nand操作请求完成,控制操作请求依次返回上层区域;

s72,前端区域接收到完成的控制操作请求后,完成命令写请求。

一种提升固态硬盘读性能的系统,包括提交分割单元,判断识别单元,存放单元,建立提交单元,分配发起单元,及返回完成单元;

所述提交分割单元,用于主机提交写命令到ssd,ssd前端区域将命令进行分割,并提交到命令类型识别区域;

所述判断识别单元,用于判断识别分割后的命令是文件数据还是系统数据;

所述存放单元,用于存放数据,且当数据写满缓冲区时,发起数据写入到nand的请求;

所述建立提交单元,用于根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输,当完成数据传输后,提交操作请求到映射表管理区域;

所述分配发起单元,用于对操作请求分配相对应的物理地址,并更新对应的映射表项,后端区域根据物理地址发起对nand的写请求;

所述返回完成单元,用于等待nand操作请求完成,控制操作请求依次返回上层区域,前端区域接收到完成的控制操作请求后,完成命令写请求。

其进一步技术方案为:所述存放单元包括第一存放模块和第二存放模块;

所述第一存放模块,用于进入存放文件数据的顺序读写缓冲区,且当文件数据写满顺序读写缓冲区时,发起数据写入到nand的请求;

所述第二存放模块,用于进入存放系统数据的随机读写缓冲区,且当文件数据写满随机读写缓冲区时,发起数据写入到nand的请求。

其进一步技术方案为:所述建立提交单元包括建立模块和提交模块;

所述建立模块,用于根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输;

所述提交模块,用于当完成数据传输后,提交操作请求到映射表管理区域。

其进一步技术方案为:所述分配发起单元包括分配模块和发起模块;

所述分配模块,用于对操作请求分配相对应的物理地址,并更新对应的映射表项;

所述发起模块,用于后端区域根据物理地址发起对nand的写请求。

其进一步技术方案为:所述返回完成单元包括返回模块和完成模块;

所述返回模块,用于等待nand操作请求完成,控制操作请求依次返回上层区域;

所述完成模块,用于前端区域接收到完成的控制操作请求后,完成命令写请求。

本发明与现有技术相比的有益效果是:通过判断识别分割后的命令类型,写入数据放置到不同的写缓冲区中,当拼凑满一个完整的写缓冲区后,再写入到nand上,将不同类型的数据做有效的并发度隔离,而在不同的并发区域之间,并发性没有损失,可以有效提升os环境下写入的文件后续读取性能,更好地满足了需求。

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

附图说明

图1为ssd内部nand物理组成的示意图;

图2为传统ssd写入模型的流程示意图;

图3为传统ssd写入模型下的数据物理分布示意图;

图4为传统ssd写入的后续读取时的性能曲线图;

图5为本发明一种提升固态硬盘读性能的方法的流程图;

图6为本发明ssd写入模型的流程示意图;

图7为本发明ssd写入数据在物理单元上的分布示意图;

图8为本发明一种提升固态硬盘读性能的系统方框图。

10提交分割单元20判断识别单元

30存放单元31第一存放模块

32第二存放模块40建立提交单元

41建立模块42提交模块

50分配发起单元51分配模块

52发起模块60返回完成单元

61返回模块62完成模块

具体实施方式

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

如图1到图8所示的具体实施例,其中,如图1所示,为ssd内部nand物理组成:

其中,die为可独立并发操作的单元;

block为可独立擦除的单元,也称为物理块,其内各个物理位置的数据写入后在下一次写之前必须要将整个block擦除;

page为读写单元。

进一步地,ssd内部由多个die组成,在任意时刻,每个die上提供一个物理块作为数据写入,从而能够提供并发写入性能,进而也为以后的读出提供并发功能;这些物理块的每个相同page组成了一个并发单元,其可以同时读出或写入。

其中,图2为传统ssd写入模型的流程示意图:

1、主机提交写命令到ssd;

2、ssd前端模块将命令分割成映射单元(典型如4kb),提交到读写缓冲区模块;

3、读写缓冲区管理模块从memory中(典型如dram)分配空间,注意到此时只存在一份活动的写缓冲区,故对于时间邻近的命令,数据会混合在一起,如图中所示的128kb命令和其他命令数据混合在一个写缓冲区中;

4、根据所分配的缓冲区空间,建立前端与主机的数据传输;

5、完成数据传输后,提交操作请求到映射表管理模块;

6、映射表管理模块负责为对应请求分配物理地址,并更新对应的映射表项;

7、提交操作请求到后端模块,后端模块根据物理地址发起对nand写请求;

8、等待nand操作请求完成,控制操作请求依次返回上层模块;

9、前端模块接收到完成的控制操作请求后,完成命令写请求。

其中,如图3至图4所示,传统ssd写入模型下的数据物理分布以及后续读取时候的性能曲线;传统ssd内部读写缓冲区的分配策略不区分数据类型,只是把时间上邻近的数据写入到相同的缓冲区中,进而混合写入到相同的并发单元中,如图中所示,在并发单元1/2/4中,部分page中存放的是系统数据,当主机读取附近的用户数据时,并不是所有的die都在工作,所以导致性能下降。

进一步地,图4中的性能低点即对应单一并发单元内混合了系统数据的情形,而高点区域则全部为有效文件数据。

如图5至图7所示,本发明公开了一种提升固态硬盘读性能的方法,包括以下步骤:

s1,主机提交写命令到ssd,ssd前端区域将命令进行分割,并提交到命令类型识别区域;

s2,判断识别分割后的命令是文件数据还是系统数据;若是文件数据,则进入s3;若是系统数据,则进入s4;

s3,进入存放文件数据的顺序读写缓冲区,且当文件数据写满顺序读写缓冲区时,发起数据写入到nand的请求;

s4,进入存放系统数据的随机读写缓冲区,且当文件数据写满随机读写缓冲区时,发起数据写入到nand的请求;

s5,根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输,当完成数据传输后,提交操作请求到映射表管理区域;

s6,对操作请求分配相对应的物理地址,并更新对应的映射表项,后端区域根据物理地址发起对nand的写请求;

s7,等待nand操作请求完成,控制操作请求依次返回上层区域,前端区域接收到完成的控制操作请求后,完成命令写请求。

其中,在s2中,采用根据命令的访问地址是否连续或根据命令的大小来判断识别映射数据是文件数据还是系统数据。

进一步地,在本实施例中,以windows系统中典型应用为例,其文件写入的命令大小一般为整齐的128kb,而偶发的系统数据(日志/文件系统等)则非128kb对齐;根据该特征,可以识别出文件数据还是系统数据,完成识别后,将请求提交到读写缓冲区模块。

其中,读写缓冲区管理区域从memory中(典型如dram)分配空间,与传统的ssd内部仅有一份活跃的缓冲区不同,此处创建了俩份缓冲区;一个专门存放文件数据(128kb),称为顺序读写缓冲区,一个专门存放系统数据,称为随机读写缓冲区,当数据写满缓冲区时,则发起数据写入到nand的请求。

进一步地,缓冲区的大小一般为并发单元的整数倍,从而可以保证俩种类型的数据不会出现在同一并发单元内。

其中,s5包括:

s51,根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输;

s52,当完成数据传输后,提交操作请求到映射表管理区域。

其中,s6包括:

s61,映射表管理区域对操作请求分配相对应的物理地址,并更新对应的映射表项;

s62,提交操作请求到后端区域,后端区域根据物理地址发起对nand的写请求。

其中,s7包括:

s71,等待nand操作请求完成,控制操作请求依次返回上层区域;

s72,前端区域接收到完成的控制操作请求后,完成命令写请求。

其中,图7为本发明的数据在物理单元上的分布,每一行为并发单元,其为可以同时被读取的最大单元,由于本发明采用文件数据和系统数据分离策略,作为一个典型案例,在物理nand上呈现如下的序列:

并发单元0,其内存放来自顺序写缓冲区0的数据;

并发单元1,其内存放来自顺序写缓冲区1的数据;

并发单元2,其内存放来自顺序写缓冲区2的数据;

并发单元3,其内存放来自随机写缓冲区0的数据;

并发单元4,其内存放来自顺序写缓冲区3的数据;

并发单元5,其内存放来自顺序写缓冲区4的数据;

并发单元6,其内存放来自顺序写缓冲区5的数据;

并发单元7,其内存放来自随机写缓冲区1的数据;

…..

当主机后续读取文件时,将依次读取“并发单元0”–>“并发单元1”–>“并发单元2”–>“并发单元4”–>“并发单元5”–>“并发单元6”…….

且在每个并发单元内,均为文件数据,所以其读性能可以一直保持在高性能,不会出现并发单元内混合系统数据导致的阶段性性能下降。

如图8所示,本发明还公开了一种提升固态硬盘读性能的系统,包括提交分割单元10,判断识别单元20,存放单元30,建立提交单元40,分配发起单元50,及返回完成单元60;

提交分割单元10,用于主机提交写命令到ssd,ssd前端区域将命令进行分割,并提交到命令类型识别区域;

判断识别单元20,用于判断识别分割后的命令是文件数据还是系统数据;

存放单元30,用于存放数据,且当数据写满缓冲区时,发起数据写入到nand的请求;

建立提交单元40,用于根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输,当完成数据传输后,提交操作请求到映射表管理区域;

分配发起单元50,用于对操作请求分配相对应的物理地址,并更新对应的映射表项,后端区域根据物理地址发起对nand的写请求;

返回完成单元60,用于等待nand操作请求完成,控制操作请求依次返回上层区域,前端区域接收到完成的控制操作请求后,完成命令写请求。

其中,存放单元30包括第一存放模块31和第二存放模块32;

第一存放模块31,用于进入存放文件数据的顺序读写缓冲区,且当文件数据写满顺序读写缓冲区时,发起数据写入到nand的请求;

第二存放模块32,用于进入存放系统数据的随机读写缓冲区,且当文件数据写满随机读写缓冲区时,发起数据写入到nand的请求。

其中,建立提交单元40包括建立模块41和提交模块42;

建立模块41,用于根据所分配的缓冲区空间,建立前端区域与主机之间的数据传输;

提交模块42,用于当完成数据传输后,提交操作请求到映射表管理区域。

其中,分配发起单元50包括分配模块51和发起模块52;

分配模块51,用于对操作请求分配相对应的物理地址,并更新对应的映射表项;

发起模块52,用于后端区域根据物理地址发起对nand的写请求。

其中,返回完成单元60包括返回模块61和完成模块62;

返回模块61,用于等待nand操作请求完成,控制操作请求依次返回上层区域;

完成模块62,用于前端区域接收到完成的控制操作请求后,完成命令写请求。

本发明,在ssd运行过程中判断识别主机写入数据为系统数据还是文件数据,在内存中创建俩份写缓冲区,分别存放系统数据和文件数据内容,当写缓冲区满后,写入到对应的nand区域,保障了其空间内聚性,当主机后续读取文件时,基于其空间内聚性,可以实现完全并发的读,进而提升了读性能。

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

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