一种数据处理方法及装置与流程

文档序号:17130643发布日期:2019-03-16 01:09阅读:168来源:国知局
一种数据处理方法及装置与流程

本申请涉及存储技术领域,尤其涉及一种数据处理方法及装置。



背景技术:

在大数据、云计算的潮流下,数据存储的重要性日益凸显。从目前来看,全闪产品是存储系统发展的必然趋势。随着固态硬盘(solidstatedrives,ssd)技术的飞速发展,ssd盘的性能飙升,底层闪存带宽越来越宽,介质访问延时越来越低,存储系统性能瓶颈已经由底层转移到上层的接口和协议处。

高级主机控制器接口(advancedhostcontrollerinterface,ahci)和串行高级技术附件(serialadvancedtechnologyattachment,sata)已经不能满足高性能和低延时ssd的需求,因此ssd迫切需要更快、更高效的协议和接口,即非易失性内存主机控制器接口规范(non-volatilememoryexpress,nvme)。

但是,nvmessd形成的闪存簇(justbunchofflash,jbof)连接到主机上需要占用主机的地址总线bus,而主机的地址总线往往是有限的,例如linux系统主机的bus总共只有256个,除系统设备及外插的输入输出(input/output,io)卡占用以外,没剩多少bus可以分给ssd使用,而且针对nvmessd的热插拔操作十分复杂,热插拔操作失误导致系统崩溃、数据丢失的风险较高。虽然各大厂商分别推出了nvmeoverfabrics(nvme-of)的方案以解决上述技术问题,但是其开发难度较大,不易实现。因此,业界亟需提供一种数据处理方法,克服bus占用以及热插拔的缺陷,实现对nvmessd的数据处理。



技术实现要素:

有鉴于此,本申请提供了一种数据处理方法,该方法采用非透明桥ntb连接主机和闪存簇,利用ntb的非透明特性屏蔽闪存簇对bus的占用,完成nvne协议数据的传输,从而实现对nvmessd的数据处理,并且ntb能够较好地支持热插拔,从而实现了高性能的闪存簇。对应地,本申请还提供了一种数据处理装置。

本申请第一方面提供了一种数据处理方法,所述方法包括:

配置非透明桥的目标端口,使能所述非透明桥;

设置所述目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存;

当接收到针对所述对端闪存簇的数据处理请求时,通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作。

可选的,所述设置所述目标端口的基地址寄存器指向的空间地址包括:

设置目标端口的基地址寄存器指向的空间的初始地址和大小。

可选的,所述设置翻译地址包括:

配置地址翻译寄存器,将所述目标端口的基地址寄存器指向的空间解析为对端闪存簇中一块物理地址连续的内存。

可选的,所述数据处理请求包括写数据请求;

则所述通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作包括:

将所述写数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述写数据请求,执行对应的写数据操作。

可选的,所述数据处理请求包括读数据请求;

则所述通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作包括:

将所述读数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述读数据请求获取对应的数据,并将所述数据通过基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入主机的内存中;

从所述主机的内存中读取对应的数据。

本申请第二方面提供了一种数据处理装置,所述装置包括:

配置模块,用于配置非透明桥的目标端口,使能所述非透明桥;

设置模块,用于设置所述目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存;

处理模块,用于当接收到针对所述对端闪存簇的数据处理请求时,通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作。

可选的,所述设置模块在设置所述目标端口的基地址寄存器指向的空间地址时,具体用于:

设置目标端口的基地址寄存器指向的空间的初始地址和大小。

可选的,所述设置模块在设置翻译地址时,具体用于:

配置地址翻译寄存器,将所述目标端口的基地址寄存器指向的空间解析为对端闪存簇中一块物理地址连续的内存。

可选的,所述数据处理请求包括写数据请求;

则所述处理模块具体用于:

将所述写数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述写数据请求,执行对应的写数据操作。

可选的,所述数据处理请求包括读数据请求;

则所述处理模块具体用于:

将所述读数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述读数据请求获取对应的数据,并将所述数据通过基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入主机的内存中;

从所述主机的内存中读取对应的数据。

从以上技术方案可以看出,本申请实施例具有以下优点:

本申请实施例中提供了一种数据处理方法,通过配置非透明桥的目标端口,使能所述非透明桥,然后设置目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存,如此,通过非透明桥,形成了基于基地址寄存器指向的空间地址以及翻译地址的传输链路,该传输链路将主机与闪存簇隔离,相互之间除基地址寄存器指向的空间映射的地址外,无法感知到对方,如此可以屏蔽闪存簇对bus号的占用,实现本端主机与对端闪存簇之间nvme协议的数据传输。并且,该非透明桥能够较好地支持热插拔,具有较高的带宽,因此,基于该非透明桥可以发挥闪存簇的高性能。其既能维持闪存簇的高扩展性、高性能,又可以避免nvmeof的高投入,利用存储系统中普遍使用的非透明桥实现闪存簇。

附图说明

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

图1为本申请实施例中一种数据处理方法的流程图;

图2为本申请实施例中一种数据处理装置的结构示意图。

具体实施方式

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

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

针对现有技术中nvme设备占用bus以及热插拔操作复杂等问题,本申请提供了一种数据处理方法,通过配置非透明桥的目标端口,使能所述非透明桥,然后设置目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存,如此,通过非透明桥,形成了基于基地址寄存器指向的空间地址以及翻译地址的传输链路,该传输链路将主机与闪存簇隔离,相互之间除基地址寄存器指向的空间映射的地址外,无法感知到对方,如此可以屏蔽闪存簇对bus号的占用,实现本端主机与对端闪存簇之间nvme协议的数据传输。

并且,该非透明桥能够较好地支持热插拔,具有较高的带宽,因此,基于该非透明桥可以发挥闪存簇的高性能。其既能维持闪存簇的高扩展性、高性能,又可以避免nvmeof的高投入,利用存储系统中普遍使用的非透明桥实现闪存簇。

接下来,将结合附图对本申请实施例提供的数据处理方法进行详细介绍。

参见图1所示的数据处理方法的流程图,该方法包括:

s101:配置非透明桥的目标端口,使能所述非透明桥。

非透明桥(non-transparentbridge,ntb)是一种具有非透明特性的桥片。非透明桥两边连接的设备或处理器具有独立的地址空间。在本实施例中,采用ntb连接主机host和闪存簇jbof,其中,host可以作为本端,jbof可以作为对端。

本端host不能看到ntb另一边的jbof的完整地址,本端host与对端jbof通过ntb进行通信。在具体实现时,host通过ntb的端口与对端jbof通信,该端口即为ntb的目标端口,记作ntport。在使用ntb时,需要先对其目标端口ntport进行配置,以使能所述ntb。

s102:设置所述目标端口的基地址寄存器指向的空间地址以及翻译地址。

本端host和对端jbof分属不同外设部件互联标准(peripheralcomponentinterconnect,pci)总线域,为了实现host对jbof的访问,ntb需要对不同pci总线域的地址进行转换,即需要将host端的地址翻译为对端jbof的地址。

在具体实现时,可以设置ntport的bar指向的空间地址也即bar空间地址和翻译地址。基于高速串行计算机扩展总线标准(peripheralcomponentinterconnectexpress,pcie)的设备具有自己独立的一套内部空间,不仅仅是配置空间,其还包括该设备的输入输出i/o地址空间和内衬地址空间,而bar即是用于表征这些地址空间的。bar空间地址可以用于路由寻址。而翻译地址则是与bar空间地址相对应的对端地址,其能够用于访问对端闪存簇的内存。

通过设置bar空间地址以及翻译地址,可以实现从本地的配置空间看到对端的配置空间,将本端的bar空间地址映射到对端内存,如此,访问本端的bar空间地址即想到与访问对端的内存。

在本申请实施例一些可能的实现方式中,可以通过设置ntport的基地址寄存器bar指向的空间的初始地址和大小,实现对基地址寄存器指向的空间地址的设置。例如,其初始地址可以设置为0x1000-0000,大小为256兆字节(mb)。

在设置bar空间地址后,可以配置地址翻译寄存器,将目标端口ntport的基地址寄存器指向的空间也即bar空间,解析为对端jbof中一块物理地址连续的内存。如此,可以实现bar空间向对端内存空间的映射,当访问bar空间时,即相当于访问对端内存。

s103:当接收到针对所述对端闪存簇的数据处理请求时,通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作。

当接收到针对对端jbof的数据处理请求,如读数据请求或写数据请求,则可以通过bar空间地址以及翻译地址,执行与该数据处理请求对应的数据操作,如读数据或写数据。

下面将对读数据和写数据的过程进行详细说明。

在本申请实施例一些可能的实现方式中,当数据处理请求为写数据请求时,本端host可以将所述写数据请求通过bar空间地址以及翻译地址形成的传输链路写入对端jbof的内存,以使对端jbof根据所述写数据请,执行对应的写数据操作。

需要说明的是,jbof接收到host发送的写数据请求,将数据写入本地nvme盘,如本地nvmessd时,还可以通过ntb返回写盘成功消息至host端,以提示host端写数据操作成功。

在本申请实施例另一些可能的实现方式中,当数据处理请求为读数据请求时,本端host将所述读数据请求通过所述基地址寄存器指向的空间地址即bar空间地址以及翻译地址形成的传输链路写入所述对端bof的内存,以使所述对端jbof根据所述读数据请求获取对应的数据,并将所述数据通过基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入host的内存中;然后,本端host从自身内存中读取对应的数据。

在本实施例中,jbof将数据通过通过基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入host的内存的具体实现,与host通过bar空间地址以及翻译地址形成的传输链路写入jbof的内存相似,可以参见上文相关内容描述,在此不再赘述。

还需要说明的是,host发送针对jbof中nvmessd的读数据请求,将该该请求通过bar空间写入jbof内存,jbof可以轮询nvme盘的读数据请求,将该读数据请求写入到nvmessd的寄存器中,从而获取数据,然后返回成功读盘的消息,并将获取到的数据通过bar空间写到host的内存中,host轮询到成功读盘的消息,则获取内存中的数据。

以上为本申请实施例提供的一种数据处理方法的具体实现方式,基于此,本申请实施例还提供了对应的数据处理装置,下面将结合附图,从功能模块化的角度对本申请实施例提供的装置进行介绍。

参见图2所示的数据处理装置的结构示意图,该装置包括:

配置模块210,用于配置非透明桥的目标端口,使能所述非透明桥;

设置模块220,用于设置所述目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存;

处理模块230,用于当接收到针对所述对端闪存簇的数据处理请求时,通过所述基地址寄存器指向的空间地址以及翻译地址执行与所述数据处理请求对应的数据操作。

可选的,所述设置模块220在设置所述目标端口的基地址寄存器指向的空间地址时,具体用于:

设置目标端口的基地址寄存器指向的空间的初始地址和大小。

可选的,所述设置模块220在设置翻译地址时,具体用于:

配置地址翻译寄存器,将所述目标端口的基地址寄存器指向的空间解析为对端闪存簇中一块物理地址连续的内存。

可选的,所述数据处理请求包括写数据请求;

则所述处理模块230具体用于:

将所述写数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述写数据请求,执行对应的写数据操作。

可选的,所述数据处理请求包括读数据请求;

则所述处理模块230具体用于:

将所述读数据请求通过所述基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入所述对端闪存簇的内存,以使所述对端闪存簇根据所述读数据请求获取对应的数据,并将所述数据通过基地址寄存器指向的空间地址以及翻译地址形成的传输链路写入主机的内存中;

从所述主机的内存中读取对应的数据。

由上可知,本申请实施例提供了一种数据处理装置,在该装置中,通过配置非透明桥的目标端口,使能所述非透明桥,然后设置目标端口的基地址寄存器指向的空间地址以及翻译地址,所述翻译地址能够用于访问对端闪存簇的内存,如此,通过非透明桥,形成了基于基地址寄存器指向的空间地址以及翻译地址的传输链路,该传输链路将主机与闪存簇隔离,相互之间除基地址寄存器指向的空间映射的地址外,无法感知到对方,如此可以屏蔽闪存簇对bus号的占用,实现本端主机与对端闪存簇之间nvme协议的数据传输。

并且,该非透明桥能够较好地支持热插拔,具有较高的带宽,因此,基于该非透明桥可以发挥闪存簇的高性能。其既能维持闪存簇的高扩展性、高性能,又可以避免nvmeof的高投入,利用存储系统中普遍使用的非透明桥实现闪存簇。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文缩写:rom)、随机存取存储器(英文全称:randomaccessmemory,英文缩写:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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