一种处理NVME协议读写命令的方法、系统及相关装置与流程

文档序号:17356829发布日期:2019-04-09 21:45阅读:318来源:国知局
一种处理NVME协议读写命令的方法、系统及相关装置与流程

本申请涉及存储设备技术领域,特别涉及一种处理nvme协议读写命令的方法、系统、固态硬盘及计算机可读存储介质。



背景技术:

在存储领域,固态硬盘时常需要进行数据块的读写操作。相关技术中,主机将满足nvme协议的读写命令下发给ssd,ssd解析读写命令后,得到待读写的各个数据块分别对应的地址,最后根据上述地址将各个数据块依次读写至ssd中的一个cpu中。但是,将主机中的数据块依次读写至ssd中的一个cpu中,导致读写速度缓慢,降低工作效率。

因此,如何将主机中的数据块并发读写至ssd的多个cpu中,加快读写速度,提高工作效率是本领域技术人员需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种处理nvme协议读写命令的方法、系统、固态硬盘及计算机可读存储介质,能够将主机中的数据块并发读写至ssd的多个cpu中,加快读写速度,提高工作效率。

为解决上述技术问题,本申请提供一种处理nvme协议读写命令的方法,包括:

对接收到的主机发送的读写命令进行解析,得到所述主机中预设数量的数据块分别对应的地址;

根据ssd中目标cpu的数量,对各个所述数据块对应的地址进行分组处理,得到与所述目标cpu的所述数量对应的地址组;

根据各所述目标cpu的id顺序,将各个所述地址组依次发送至对应的目标cpu;

将各个所述地址组对应的数据块读写至对应的目标cpu中。

优选地,所述根据ssd中目标cpu的数量,对各个所述数据块对应的地址进行分组处理,得到与所述目标cpu的所述数量对应的地址组,包括:

对各个所述数据块对应的地址进行排序,得到各个所述地址对应的整数序号;

利用所述目标cpu的所述数量,对各个所述整数序号进行取模运算,得到各个所述地址对应的模;

根据所述模的数值类型,将各个所述地址进行分组,得到与所述目标cpu的所述数量对应的地址组。

优选地,所述根据各所述目标cpu的id顺序,将各个所述地址组依次发送至对应的目标cpu,包括:

根据各所述目标cpu的所述id顺序,依次建立各所述目标cpu与所述地址组之间的映射关系;

根据所述映射关系,将各个所述地址组依次发送至对应的目标cpu。

优选地,所述将各个所述地址组对应的数据块读写至对应的目标cpu中,包括:

接收各个所述目标cpu发送的响应消息;

根据所述响应消息,将各个所述地址组对应的数据块读写至对应的目标cpu中。

本申请还提供一种处理nvme协议读写命令的系统,包括:

读写命令解析模块,用于对接收到的主机发送的读写命令进行解析,得到所述主机中预设数量的数据块分别对应的地址;

地址分组模块,用于根据ssd中目标cpu的数量,对各个所述数据块对应的地址进行分组处理,得到与所述目标cpu的所述数量对应的地址组;

地址组发送模块,用于根据各所述目标cpu的id顺序,将各个所述地址组依次发送至对应的目标cpu;

数据块读写模块,用于将各个所述地址组对应的数据块读写至对应的目标cpu中。

优选地,所述地址分组模块,包括:

地址排序单元,用于对各个所述数据块对应的地址进行排序,得到各个所述地址对应的整数序号;

取模运算单元,用于利用所述目标cpu的所述数量,对各个所述整数序号进行取模运算,得到各个所述地址对应的模;

地址分组单元,用于根据所述模的数值类型,将各个所述地址进行分组,得到与所述目标cpu的所述数量对应的地址组。

优选地,所述地址组发送模块,包括:

映射关系建立单元,用于根据各所述目标cpu的所述id顺序,依次建立各所述目标cpu与所述地址组之间的映射关系;

地址组发送单元,用于根据所述映射关系,将各个所述地址组依次发送至对应的目标cpu。

优选地,所述数据块读写模块,包括:

响应消息接收单元,用于接收各个所述目标cpu发送的响应消息;

数据块读写单元,用于根据所述响应消息,将各个所述地址组对应的数据块读写至对应的目标cpu中。

本申请还提供一种固态硬盘,包括:

存储器和处理器;其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现上述所述的处理nvme协议读写命令的方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的处理nvme协议读写命令的方法的步骤。

本申请所提供的一种处理nvme协议读写命令的方法,包括:对接收到的主机发送的读写命令进行解析,得到所述主机中预设数量的数据块分别对应的地址;根据ssd中目标cpu的数量,对各个所述数据块对应的地址进行分组处理,得到与所述目标cpu的所述数量对应的地址组;根据各所述目标cpu的id顺序,将各个所述地址组依次发送至对应的目标cpu;将各个所述地址组对应的数据块读写至对应的目标cpu中。

该方法先是对主机发送的读写命令进行解析,得到主机中预设数量的数据块分别对应的地址,然后根据ssd中目标cpu的数量,对各个所述数据块对应的地址进行分组处理,得到与所述目标cpu的所述数量对应的地址组,再根据各所述目标cpu的id顺序,将各个所述地址组依次发送至对应的目标cpu,最后将各个所述地址组对应的数据块读写至对应的目标cpu中。可见,该方法将各个待诊断数据块对应的地址进行分组,得到多个地址组并发送至对应的目标cpu,进而实现了将主机中的数据块并发读写至ssd的多个cpu中,加快了读写速度,提高了工作效率。本申请还提供一种处理nvme协议读写命令的系统、固态硬盘及计算机可读存储介质,均具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种处理nvme协议读写命令的方法的流程图;

图2为本申请实施例所提供的一种处理nvme协议读写命令的系统的结构框图。

具体实施方式

本申请的核心是提供一种处理nvme协议读写命令的方法,能够将主机中的数据块并发读写至ssd的多个cpu中,加快读写速度,提高工作效率。本申请的另一核心是提供一种处理nvme协议读写命令的系统、固态硬盘及计算机可读存储介质。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在存储领域,固态硬盘时常需要进行数据块的读写操作。相关技术中,主机将满足nvme协议的读写命令下发给ssd,ssd解析读写命令后,得到待读写的各个数据块分别对应的地址,最后根据上述地址将各个数据块依次读写至ssd中的一个cpu中。但是,将主机中的数据块依次读写至ssd中的一个cpu中,导致读写速度缓慢,降低工作效率。本申请实施例能够将主机中的数据块并发读写至ssd的多个cpu中,加快读写速度,提高工作效率。具体请参考图1,图1为本申请实施例所提供的一种处理nvme协议读写命令的方法的流程图,该处理nvme协议读写命令的方法具体包括:

s101、对接收到的主机发送的读写命令进行解析,得到主机中预设数量的数据块分别对应的地址;

本申请实施例中固态硬盘与主机相连,可以进行数据的传输。首先,对接收到的主机发送的读写命令进行解析,得到主机中预设数量的数据块分别对应的地址。数据块的数量是预设的,具体数值多少在此不作限定,应由本领域技术人员根据实际情况作出相应的设定。每一个数据块对应一个地址,该地址通常包括数据块的物理地址和逻辑地址。在此,对读写命令进行解析的方式也不作具体限定,但是需保证解析的结果为主机中预设数量的数据块分别对应的地址。

s102、根据ssd中目标cpu的数量,对各个数据块对应的地址进行分组处理,得到与目标cpu的数量对应的地址组;

本申请实施例在得到主机中预设数量的数据块分别对应的地址后,根据ssd中目标cpu的数量,对各个数据块对应的地址进行分组处理,得到与目标cpu的数量对应的地址组。在此对于ssd中目标cpu的数量不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。由上文得到与目标cpu的数量对应的地址组可知,地址组的数量与目标cpu的数量之间存在着映射关系,具体为何种映射关系在此不作限定,应由本领域技术人员根据实际情况作出相应的设定,例如可以是一个目标cpu对应一个地址组,也可为一个目标cpu对应多个地址组。进一步地,由于目标cpu的数量不作具体限定,故地址组的数量在此也不作具体限定,地址组的数量取决于目标cpu的数量和与目标cpu的数量之间的映射关系。例如,若一个目标cpu对应一个地址组,则地址组的数量和目标cpu的数量相等;若一个目标cpu对应两个地址组,则地址组的数量是目标cpu的数量的两倍。

进一步地,对于根据ssd中目标cpu的数量,对各个数据块对应的地址进行分组处理,得到与目标cpu的数量对应的地址组的过程,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,该过程通常包括:对各个数据块对应的地址进行排序,得到各个地址对应的整数序号;利用目标cpu的数量,对各个整数序号进行取模运算,得到各个地址对应的模;根据模的数值类型,将各个地址进行分组,得到与目标cpu的数量对应的地址组。例如,假设数据块的数量为8,故各个数据块对应的地址数量也为8,对该8个地址进行排序得到各个地址对应的整数序号分别为:1,2,3,4,5,6,7,8;假设目标cpu的数量为3,对上述整数序号进行取模运算得到各个地址对应的模分别为:1,2,0,1,2,0,1,2;根据模的数值类型(0,1,2)可以将8个地址分成与目标cpu的数量对应的3个地址组,即第一地址组中包含序号3、6分别对应的地址,第二地址组中包含序号1、4、7分别对应的地址,第三地址组中包含序号2、5、6分别对应的地址。

s103、根据各目标cpu的id顺序,将各个地址组依次发送至对应的目标cpu;

本申请实施例在得到与目标cpu的数量对应的地址组后,根据各目标cpu的id顺序,将各个地址组依次发送至对应的目标cpu。固态硬盘中各个目标cpu均会有各自的id号码,将各个id号码根据预设的排序方式进行排序会得到id顺序。在此对各个id号码的呈现形式和排序方式均不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,例如id号码可以以序列号的形式呈现,也可以以条形码、二维码的形式呈现;排序方式可以按从大到小的顺序进行排序,也可以按从小到大的顺序进行排序。

进一步地,对于根据各目标cpu的id顺序,将各个地址组依次发送至对应的目标cpu的过程,在此也不作具体限定,该过程通常包括:根据各目标cpu的id顺序,依次建立各目标cpu与地址组之间的映射关系;根据映射关系,将各个地址组依次发送至对应的目标cpu。其中,对于各目标cpu与地址组之间的映射关系,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。例如,若目标cpu的数量为3,可以将3个目标cpu按照id号码从小到大的顺序进行排序,然后依次与上述的三个地址组建立一一对应的映射关系;还可以将3个目标cpu按照id号码从大到小的顺序进行排序,然后依次与上述的三个地址组建立一一对应的映射关系。

s104、将各个地址组对应的数据块读写至对应的目标cpu中。

本申请实施例在将各个地址组依次发送至对应的目标cpu后,将各个地址组对应的数据块读写至对应的目标cpu中。对于将各个地址组对应的数据块读写至对应的目标cpu中的过程,在此不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,该过程通常包括:接收各个目标cpu发送的响应消息;根据响应消息,将各个地址组对应的数据块读写至对应的目标cpu中。

本申请实施例先是对主机发送的读写命令进行解析,得到主机中预设数量的数据块分别对应的地址,然后根据ssd中目标cpu的数量,对各个数据块对应的地址进行分组处理,得到与目标cpu的数量对应的地址组,再根据各目标cpu的id顺序,将各个地址组依次发送至对应的目标cpu,最后将各个地址组对应的数据块读写至对应的目标cpu中。可见,该方法将各个待诊断数据块对应的地址进行分组,得到多个地址组并发送至对应的目标cpu,进而实现了将主机中的数据块并发读写至ssd的多个cpu中,加快了读写速度,提高了工作效率。

下面对本申请实施例提供的一种处理nvme协议读写命令的系统、固态硬盘及计算机可读存储介质进行介绍,下文描述的处理nvme协议读写命令的系统、固态硬盘及计算机可读存储介质与上文描述的处理nvme协议读写命令的方法可相互对应参照。

请参考图2,图2为本申请实施例所提供的一种处理nvme协议读写命令的系统的结构框图;该处理nvme协议读写命令的系统包括:

读写命令解析模块201,用于对接收到的主机发送的读写命令进行解析,得到主机中预设数量的数据块分别对应的地址;

地址分组模块202,用于根据ssd中目标cpu的数量,对各个数据块对应的地址进行分组处理,得到与目标cpu的数量对应的地址组;

地址组发送模块203,用于根据各目标cpu的id顺序,将各个地址组依次发送至对应的目标cpu;

数据块读写模块204,用于将各个地址组对应的数据块读写至对应的目标cpu中。

基于上述实施例,本实施例中地址分组模块202,通常包括:

地址排序单元,用于对各个数据块对应的地址进行排序,得到各个地址对应的整数序号;

取模运算单元,用于利用目标cpu的数量,对各个整数序号进行取模运算,得到各个地址对应的模;

地址分组单元,用于根据模的数值类型,将各个地址进行分组,得到与目标cpu的数量对应的地址组。

基于上述实施例,本实施例中地址组发送模块203,通常包括:

映射关系建立单元,用于根据各目标cpu的id顺序,依次建立各目标cpu与地址组之间的映射关系;

地址组发送单元,用于根据映射关系,将各个地址组依次发送至对应的目标cpu。

基于上述实施例,本实施例中数据块读写模块204,通常包括:

响应消息接收单元,用于接收各个目标cpu发送的响应消息;

数据块读写单元,用于根据响应消息,将各个地址组对应的数据块读写至对应的目标cpu中。

本申请还提供一种固态硬盘,包括:

存储器和处理器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序时实现上述任意实施例的处理nvme协议读写命令的方法的步骤。

本申请还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的处理nvme协议读写命令的方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种处理nvme协议读写命令的方法、系统、固态硬盘及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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