SSD访问加速方法、装置、计算机设备及存储介质与流程

文档序号:25585366发布日期:2021-06-22 17:00阅读:119来源:国知局
SSD访问加速方法、装置、计算机设备及存储介质与流程

本发明涉及固态硬盘技术领域,特别是涉及一种ssd访问加速方法、装置、计算机设备及存储介质。



背景技术:

目前,随着固态硬盘技术的发展,ssd(solidstatedisk,固态硬盘)已经被广泛应用于各种场合,在pc市场已经逐步替代传统的hdd(harddiskdrive,硬盘驱动器),从可靠性和性能方面为用户提供较好的体验。

在传统技术中,一般可以将nand(计算机闪存设备)根据其cell类型分为slc/mlc/tlc/qlc等,其中slc的读写性能最高。因此,在现有的ssd实现中,其内的物理块会分为两种类型区域,包括:normal区域(即tlc/qlc),enhance区域(slc)。在现有的ssd方案,为了获取较高的性能,一般在ssd内部将部分物理块转换为slc模式,用于主机数据写入,从而获得较高的性能。但由于转换为slc模式会伴随物理容量的损失(例如tlc转换为slc,可用容量为原来1/3),所以当slc空间不足时,ssd内部后台会将数据从slc搬移到tlc区域,以便为后续的主机写入提供空间。而在某些应用场景下,主机经常需要读取某些特定的数据,该数据由于总会被ssd内部从slc搬移到tlc,所以其读取性能相对较低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种可以提高ssd读性能的ssd访问加速方法、装置、计算机设备及存储介质。

一种ssd访问加速方法,所述方法包括:

将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;

在所述写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据;

定义主机交互命令,所述主机交互命令用于将指定区域的数据从所述主存储区搬移至所述读缓冲区;

主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能。

在其中一个实施例中,所述主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能的步骤还包括:

当无主机访问请求时,将写缓冲区数据搬移到主存储区;

当主机发送特定的主机交互命令时,根据所述主机交互命令将指定区域中的用户数据从所述主存储区加载到读缓冲区。

在其中一个实施例中,所述在所述写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据的步骤还包括:

当主机新写入数据时,判断ssd中enhanced区是否有剩余空间;

若enhanced区有剩余空间,则将数据直接写入所述写缓冲区;若enhanced区无剩余空间,则将数据直接写入所述主存储区。

在其中一个实施例中,所述定义主机交互命令,所述主机交互命令用于将指定区域的数据从所述主存储区搬移至所述读缓冲区的步骤包括:

定义所述主机交互命令的数据传输字段为01b用于表述主机需要传输数据到ssd;

通过定义一个定长字符串用于描述待加载到缓冲区的范围,所述定长字符串的前n个字节用于描述起始lba地址,所述定长字符串的后m个字节用于描述起始lba数量,所述n和m为自然数;

定义所述定长字符串全为0的特殊情形用于表示加载范围描述截止。

一种ssd访问加速装置,所述装置包括:

划分模块,所述划分模块用于将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;

数据存储模块,所述数据存储模块用于在所述写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据;

命令定义模块,所述命令定义模块用于定义主机交互命令,所述主机交互命令用于将指定区域的数据从所述主存储区搬移至所述读缓冲区;

数据加载模块,所述数据加载模块用于主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能。

在其中一个实施例中,所述数据加载模块还用于:

当无主机访问请求时,将写缓冲区数据搬移到主存储区;

当主机发送特定的主机交互命令时,根据所述主机交互命令将指定区域中的用户数据从所述主存储区加载到读缓冲区。

在其中一个实施例中,所述数据存储模块还用于:

当主机新写入数据时,判断ssd中enhanced区是否有剩余空间;

若enhanced区有剩余空间,则将数据直接写入所述写缓冲区;若enhanced区无剩余空间,则将数据直接写入所述主存储区。

在其中一个实施例中,所述命令定义模块还用于:

定义所述主机交互命令的数据传输字段为01b用于表述主机需要传输数据到ssd;

通过定义一个定长字符串用于描述待加载到缓冲区的范围,所述定长字符串的前n个字节用于描述起始lba地址,所述定长字符串的后m个字节用于描述起始lba数量,所述n和m为自然数;

定义所述定长字符串全为0的特殊情形用于表示加载范围描述截止。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。

上述ssd访问加速方法、装置、计算机设备及存储介质通过将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;在写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据;定义主机交互命令,用于将指定区域的数据从所述主存储区搬移至所述读缓冲区;主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能。本发明保留了slc读缓冲区域,并定义了一种主机命令接口,通过该命令主机可以指定一些经常读取的数据,通知ssd将其加载到读缓存区中。ssd在接收到该命令后,可以实时或者后台将对应的数据从normal区域加载到enhance区域,当主机后续读取对应的数据时可以获得较高的性能。

附图说明

图1为传统技术中ssd内部物理块的划分示意图;

图2为本发明中ssd内部物理块的划分示意图;

图3为一个实施例中ssd访问加速方法的流程示意图;

图4为另一个实施例中ssd访问加速方法的流程示意图;

图5为又一个实施例中ssd访问加速方法的流程示意图;

图6为一个实施例中主机命令格式的定义示意图;

图7为一个实施例中主机与ssd交互的流程示意图;

图8为一个实施例中ssd访问加速装置的结构框图;

图9为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

目前,如图1所示,为一个典型的使用tlcnand的ssd内部物理块分类以及主机数据写入通路。其中,物理块分类如下包括:enhanced-系统数据,主要用来存放ssd内部管理数据,如坏块表、映射表等信息;enhanced-写缓冲区,主要用来加速主机写入性能,空间小;normal-主存储区:存放用户数据,空间大。

用户数据写入通路存在场景包括:主机新写入数据时,如果enhanced区有剩余空间,则数据会直接写入enhanced区写缓冲区。主机新写入数据时,如果enhanced区无剩余空间,则数据会直接写入normal区主存储区。无主机访问请求时,ssd内部会把enhanced区写缓冲区数据搬移到normal区主存储区,从而释放高速区,为后续主机新写入数据准备空间。在上述方案中,由于转换为slc模式会伴随物理容量的损失(例如tlc转换为slc,可用容量为原来1/3),所以当slc空间不足时,ssd内部后台会将数据从slc搬移到tlc区域,以便为后续的主机写入提供空间。而在某些应用场景下,主机经常需要读取某些特定的数据,该数据由于总会被ssd内部从slc搬移到tlc,所以其读取性能相对较低。

基于此,本发明提供了一种ssd访问加速方法,在该方法中对物理块分布进行了重新划分。具体地,可参考图2所示包括:enhanced-系统数据,主要用来存放ssd内部管理数据,如坏块表、映射表等信息;enhanced-写缓冲区,主要用来加速主机写入性能,空间小;normal-主存储区,存放用户数据,空间大;enhanced-读缓冲区,主要用来加速主机经常访问的数据读取性能。

在一个实施例中,如图3所示,提供了一种ssd访问加速方法,该方法包括:

步骤302,将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;

步骤304,在写缓冲区和读缓冲区中采用enhance模式存储数据,在主存储区中采用normal模式存储数据;

步骤306,定义主机交互命令,主机交互命令用于将指定区域的数据从主存储区搬移至读缓冲区;

步骤308,主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到读缓冲区中以提升后续的读取性能。

在本实施例中,提供了一种ssd访问加速方法,该方法可以应用于如图2所示的物理块划分中,将ssd内部物理区域划分为写缓冲区、读缓冲区及主存储区。其中,对于写缓冲区/读缓冲区,采用enhance模式(slc)存储数据,以满足读写性能需求;对于主存储区以normal模式存储(tlc/qlc…),以满足数据足容量存储需求。

具体地,在本实施例中用户数据写入通路存在的场景包括:主机新写入数据时,如果enhanced区有剩余空间,则数据会直接写入enhanced区写缓冲区。主机新写入数据时,如果enhanced区无剩余空间,则数据会直接写入normal区主存储区。无主机访问请求时,ssd内部会把enhanced区写缓冲区数据搬移到normal区主存储区,从而释放高速区,为后续主机新写入数据准备空间。主机发送特定的命令,指示ssd将某个/些区域的用户数据从normal区主存储区加载到enhanced读缓冲区。

此外,在本实施例中还定义一种主机交互命令,将指定的数据区域从主存储区移动到读缓冲区。主机根据访问需求,可以发送相应的命令将经常访问的数据加载到读缓冲区,提升后续的读取性能。

在一个实施例中,定义主机交互命令,主机交互命令用于将指定区域的数据从主存储区搬移至所述读缓冲区的步骤包括:

定义主机交互命令的数据传输字段为01b用于表述主机需要传输数据到ssd;通过定义一个定长字符串用于描述待加载到缓冲区的范围,定长字符串的前n个字节用于描述起始lba地址,定长字符串的后m个字节用于描述起始lba数量,n和m为自然数;定义定长字符串全为0的特殊情形用于表示加载范围描述截止。

在一个具体的实施例中,参考图6所示的主机命令格式,以nvme协议为例,其中关于io命令定义了命令字段各个位段的含义,部分为规范已使用的定义,在其保留区域(用户自定义)我们定义了一种新的命令(fbh),用以让主机通知ssd将指定的数据区域加载到enhanced读缓冲区。

具体地,其数据传输字段设置为01b,表述主机需要传输数据到ssd。进一步,对其传输的数据格式做了一种定义。每12个bytes描述一个待加载到enhanced读缓冲区的范围,依次为1/2/3…。该12个bytes中前8个bytes用于描述起始lba地址。该12个bytes中后4个bytes用于描述起始lba数量。最后,定义12个bytes全为0的特殊情形,表示加载范围描述截止。

在上述实施例中,通过将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;在写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据;定义主机交互命令,用于将指定区域的数据从所述主存储区搬移至所述读缓冲区;主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能。上述方案中保留了slc读缓冲区域,并定义了一种主机命令接口,通过该命令主机可以指定一些经常读取的数据,通知ssd将其加载到读缓存区中。ssd在接收到该命令后,可以实时或者后台将对应的数据从normal区域加载到enhance区域,当主机后续读取对应的数据时可以获得较高的性能。

在一个实施例中,如图4所示,提供了一种ssd访问加速方法,该方法中主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到读缓冲区中以提升后续的读取性能的步骤还包括:

步骤402,当无主机访问请求时,将写缓冲区数据搬移到主存储区;

步骤404,当主机发送特定的主机交互命令时,根据主机交互命令将指定区域中的用户数据从主存储区加载到读缓冲区。

在一个实施例中,如图5所示,提供了一种ssd访问加速方法,该方法中在写缓冲区和读缓冲区中采用enhance模式存储数据,在主存储区中采用normal模式存储数据的步骤还包括:

步骤502,当主机新写入数据时,判断ssd中enhanced区是否有剩余空间;

步骤504,若enhanced区有剩余空间,则将数据直接写入写缓冲区;若enhanced区无剩余空间,则将数据直接写入主存储区。

在一个实施例中,提供了一个完整的ssd访问加速方法,该方法中ssd与主机的交互过程可参考图7所示,具体包括:

s0:主机写入数据到enhance写缓冲区区域:(lba_1,count_1),(lba_2,count_2),…(lba_n,count_n)。

s1:主机闲置,ssd内部后台将enhance写缓冲区数据搬移到normal主存储区。

s2:主机读取之前写入的数据,其已经被搬移到normal区,性能较低。

s3:主机多次读取之前写入的数据,性能较低。

s4:主机根据访问频率以及性能,识别需要加速访问的区域,发送加载到读缓冲区命令给ssd。

s5:ssd根据主机命令指定的范围,启动将对应区域的数据从normal主存储区加载到enhance读缓冲区。期间如果有主机命令的访问,优先处理主机新命令,完成后则后台继续处理加载任务。

s6:主机访问,优先处理,且中断ssd内部的数据加载到读缓冲区。

s7:主机读取访问加速的数据,其已经被搬移到enhanced读缓冲区,性能较高。

s8:主机多次读取访问加速的数据,性能较高。

在本实施例中,主机可以根据数据访问的频率、性能要求,通知ssd将对应的数据加载到enhanced读缓冲区,进而可以获得更高的性能。

应该理解的是,虽然图1-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,提供了一种ssd访问加速装置800,该装置包括:

划分模块801,用于将ssd内部物理区域进行划分,包括写缓冲区、读缓冲区及主存储区;

数据存储模块802,用于在所述写缓冲区和读缓冲区中采用enhance模式存储数据,在所述主存储区中采用normal模式存储数据;

命令定义模块803,用于定义主机交互命令,所述主机交互命令用于将指定区域的数据从所述主存储区搬移至所述读缓冲区;

数据加载模块804,用于主机根据访问需求,通过发送相应的主机交互命令将经常访问的数据加载到所述读缓冲区中以提升后续的读取性能。

在一个实施例中,数据加载模块804还用于:

当无主机访问请求时,将写缓冲区数据搬移到主存储区;

当主机发送特定的主机交互命令时,根据所述主机交互命令将指定区域中的用户数据从所述主存储区加载到读缓冲区。

在一个实施例中,数据存储模块802还用于:

当主机新写入数据时,判断ssd中enhanced区是否有剩余空间;

若enhanced区有剩余空间,则将数据直接写入所述写缓冲区;若enhanced区无剩余空间,则将数据直接写入所述主存储区。

在一个实施例中,命令定义模块803还用于:

定义所述主机交互命令的数据传输字段为01b用于表述主机需要传输数据到ssd;

通过定义一个定长字符串用于描述待加载到缓冲区的范围,所述定长字符串的前n个字节用于描述起始lba地址,所述定长字符串的后m个字节用于描述起始lba数量,所述n和m为自然数;

定义所述定长字符串全为0的特殊情形用于表示加载范围描述截止。

关于ssd访问加速装置的具体限定可以参见上文中对于ssd访问加速方法的限定,在此不再赘述。

在一个实施例中,提供了一种计算机设备,其内部结构图可以如图9所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种ssd访问加速方法。

本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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