桥接装置及提供接近存储计算的方法与流程

文档序号:17473452发布日期:2019-04-20 05:58阅读:205来源:国知局
本申请主张在2017年10月11日提出申请的序列号为第62/571,064号及第62/571,061号的美国临时专利申请的权利及优先权,所述美国临时专利申请的公开内容全文并入本申请供参考。本公开大体来说涉及数据存储系统,且更具体来说,涉及一种使用桥接装置提供接近存储计算的系统及方法。
背景技术
::固态驱动器(solid-statedrive,ssd)正快速地取代传统的存储装置(例如,硬盘驱动器(harddiskdrive,hdd)迅速变成现代数据中心基础设施的主要存储元件。ssd提供低延迟、高数据读取/写入吞吐量及对用户数据的可靠的持久存储。基于网络结构的非易失性存储快速(non-volatilememoryexpress,nvme)(nvmeoverfabric,nvme-of)是新兴的技术,其使得成百上千的ssd能够通过网络结构网络(fabricnetwork)(例如,以太网、光纤信道及无限宽频(infiniband))进行连接。nvme-of协议能够实现远程直接附接存储(remotedirect-attachedstorage,rdas),所述远程直接附接存储使得大量的nvmessd能够通过所建立的网络结构网络连接到远程主机。nvme-of协议还支持远程直接存储器存取(remotedirectmemoryaccess,rdma)以提供可靠的传送服务来通过网络载送nvme命令、数据及响应。iwarp、rocev1及rocev2是提供rdma服务的传送协议的一些实例。使用分解数据存储装置(disaggregateddatastoragedevice)(例如,nvme-of-可兼容ssd,在本文中也称为nvme-ofssd或缩写为essd)的数据存储系统可为在主机计算机上运行的应用提供大的存储容量。所述应用可从分解数据存储装置收集大量数据(大数据)并对它们进行分析。由于大数据处理的规模非常大,因此用于执行有意义的大数据挖掘的基础设施可能成本过高,需要大量计算资源、大的系统存储器、高带宽网络以及用于存储所述大数据的大的及高性能的数据存储装置。期望将一些数据处理挖掘任务从主机计算机卸载到数据存储装置并使从数据存储装置到主机计算机的数据移动最小化。技术实现要素:根据一个实施例,一种桥接装置包括:第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;第二接口,被配置成将所述第二组命令提供到数据存储装置;以及计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。根据另一个实施例,一种提供接近存储计算的方法包括:通过第一接口从在主机计算机上运行的应用接收第一组命令;对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;通过第二接口将所述第二组命令提供到数据存储装置;以及在运行所述应用的同时,发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据及向所述数据存储装置写入数据。现将参照附图更具体地阐述包括实施方式的新颖细节及事件组合在内的以上及其他优选特征,且以上及其他优选特征在权利要求书中指出。应理解,本文所述具体系统及方法仅作为例示示出且不作为限制。如所属领域中的技术人员应理解,本文所述原理及特征可用于各种各样的实施例中,而此并不背离本公开的范围。附图说明作为本说明书的一部分而包括在内的各个附图示出当前优选的实施例,且与以上所给出的大体说明及以下所给出的对优选实施例的详细说明一起用于解释及教示本文所述原理。图1示出根据一个实施例的示例性数据存储系统的方块图。图2示出根据一个实施例的示例性nvme-of桥接装置的方块图。图3示出根据一个实施例的示例性专用命令单元(specialcommandunit,scu)模块的方块图。图4示出根据一个实施例的转换命令识别符的示例性过程。图5是示出根据一个实施例的对管理提交队列及管理完成队列的共享的方块图。图6示出根据一个实施例的远程主机与接近存储计算(nearstoragecompute,nsc)处理器之间对输入/输出提交队列(input/outputsubmissionqueue,i/osq)的共享。图7是示出根据一个实施例的桥接装置内的本地数据移动的图。各个图未必是按比例绘制的,且出于说明目的,在所有图中具有相似结构或功能的元件一般是由相同的参考编号表示的。各个图仅旨在方便说明本文所述各种实施例。各个图并不阐述本文所公开教示内容的每一方面且并不限制权利要求书的范围。具体实施方式本文所公开的特征及教示内容中的每一者可单独使用或结合其他特征及教示内容来使用以提供用于提供接近存储计算的桥接装置。参照附图更详细地阐述代表性实例,这些代表性实例单独地使用及组合地使用这些附加特征及教示内容中的许多特征及教示内容。此详细说明仅旨在向所属领域中的技术人员教示用于实践本教示内容的各个方面的进一步细节,而并非旨在限制权利要求书的范围。因此,在本详细说明中以上所公开特征的组合可能未必是在最广泛意义上实践本教示内容所必需的,而是相反,仅是为了具体阐述本教示内容的代表性的实例而教示。在以下说明中,仅出于解释目的来阐述特定术语以提供对本公开的透彻理解。然而,对于所属领域中的技术人员而言将显而易见,这些特定细节并非是实践本公开的教示内容所必需的。本文的详细说明的一些部分是以算法及对计算机存储器内的数据位进行的操作的符号表示法来呈现。这些算法描述及表示法被数据处理领域中的技术人员用于向所属领域中的其他技术人员有效地传达其工作的实质。算法在此处且一般而言均被视为能得到所期望结果的步骤的自洽序列(self-consistentsequence)。所述步骤需要对物理量进行实体操纵。通常(尽管未必一定如此),这些量会呈能够被存储、传输、组合、比较及以其他方式被操纵的电信号或磁信号的形式。已证明,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、项、数字等有时是便利的。然而,应记住,这些用语中的所有用语及所有相似用语均与适宜的物理量相关联且仅作为应用于这些量的便利标记。除非通过阅读以下论述显而易见地另有具体说明,否则应理解,在本说明通篇中,使用例如“处理(processing)”、“计算(computing)”、“运算(calculating)”、“判断(determining)”、“显示(displaying)”等用语进行的论述是指计算机系统或相似电子计算装置的动作及进程,所述计算机系统或相似电子计算装置操纵在计算机系统的寄存器及存储器内被表示为物理(电子)量的数据并将所述数据转换成在计算机系统存储器或寄存器或者其他这种信息存储装置、信息传输装置或信息显示装置内被相似地表示为物理量的其他数据。另外,代表性实例及附属权利要求的各个特征可以并未具体地及明确地枚举的方式加以组合以提供本教示内容的附加的有用实施例。还应明确注意,出于原始公开内容的目的以及出于限制所主张主题的目的,所有值范围或对实体的群组的指示均用于公开每个可能的中间值或中间实体。还应明确注意,图中所示各组件的尺寸及形状被设计成有助于理解如何实践本教示内容,而并非旨在限制实例中所示尺寸及形状。本公开阐述一种用于将数据处理及挖掘任务从主机计算机卸载到存储装置以使从存储装置到分解数据存储系统中的主机计算机的数据移动最小化的系统及方法。根据一个实施例,本系统及方法允许在存储装置附近或存储装置内处理数据,这在本文中分别被称为接近存储计算(nsc)及存储器内加速(in-storageacceleration,isa)。本系统及方法非常适用于使用nvme-of标准的分解存储装置。另外,本系统及方法可在直接附接nvme至nvme桥接装置(directattachednvme-to-nvmebridgedevice)中使用。主机计算机可将自身的一些数据挖掘任务卸载到nvme-ofssd以通过nvme-of网络减小主机计算机与nvme-ofssd之间的数据移动,从而节省能量及网络基础设施成本。图1示出根据一个实施例的示例性数据存储系统的方块图。数据存储系统100包括主机110及机架160(在本文中也称为essd机架),机架160含有一个或多个可兼容nvme-of的以太网ssd(essd)。举例来说,机架160包括24个essd或48个essd。机架160中的essd分别被表示为essd170a到essd170n(在本文中统称为essd170)。主机110包括应用111、操作系统(operatingsystem,os)及文件系统(filesystem,fs)112以及nvme-of驱动器113。主机110的初启程序(initiator)(例如,应用111)可利用nvme-of驱动器113建立基于以太网150的与essd170的nvme-of连接。机架160包括以太网交换机(ethernetswitch)161、基板管理控制器(baseboardmanagementcontroller,bmc)162及外围组件互连快速(peripheralcomponentinterconnectexpress,pcie)交换机163。以太网交换机161通过中性面165提供与essd170的以太网连接,且pcie交换机163通过中性面165提供与essd170的管理接口164。bmc162可根据系统管理员给出的指令对essd170进行编程。以太网交换机161在主机110与essd170之间提供网络连接性。以太网交换机161可具有大容量(例如,100gbps)上行链路以连接到一个或多个主机。以太网交换机161还具有用于连接到essd170的多个较低容量(例如,25gbps)下行链路。举例来说,以太网交换机161含有12个100gbps上行链路以及24个或48个25gbps下行链路。以太网交换机161可具有连接到bmc162的专用配置/管理端口。bmc162管理机架160的内部组件,包括以太网交换机161、pcie交换机163及essd170。bmc162可支持用于系统管理的pcie和/或系统管理总线(systemmanagementbus,smbus)接口。bmc162可对essd170进行配置并对以太网交换机161进行编程。类似于基于服务器的全闪存阵列(all-flasharray,afa),essd170一起容纳在无服务器的壳体(即,机架160)中,所述无服务器的壳体含有多个essd、用于将所述多个essd与外界主机进行连接的网络交换机(即,以太网交换机161)以及用于管理所述多个essd的bmc162。bmc162处置引导程序(boot)并控制通往essd装置的路径。与完善的x86中央处理器(computerprocessingunit,cpu)不同,bmc162可能无法完成cpu可处置的所有这些任务,且因此具有最低限度的壳体管理功能。bmc162通过smbus或pcie总线保持对所连接的essd170以及相关硬件进行关于连接性、状况、温度、日志及错误方面的健康情况检查。essd170提供高性能及大容量数据存储解决方案。nvme-of协议使成百上千的分解essd170能够以远程直接附接存储(rdas)方式附接到在主机计算机110上运行的应用111。本系统及方法有利于处理及移动被收集并存储在分解essd中的大量数据。使用传统的主机计算机的这种数据处理可能成本非常高昂。在主机计算机110上运行的应用111可通过提取存储在整个网络(例如,以太网150)上的分解数据存储装置(例如,essd170)中的数据来执行处理(例如,机器学习),处理数据,并将数据处理的结果存储回数据存储装置。包括数据提取、处理及存储的这种进程可能非常低效,会消耗主机计算机上过量的能量资源、计算资源、网络资源及数据存储资源。另外,所述进程可能会对主机计算机上的计算资源及存储器资源施加高成本要求。本系统及方法能够使用接近存储计算或存储器内加速来实现后台数据处理。接近存储计算及存储器内加速使得能够以高效方式在后台对大量数据进行处理。根据一个实施例,与其中存储有待处理数据的数据存储装置耦合的桥接装置可有利于所耦合的数据存储装置附近的后台数据处理。在一个实施例中,桥接装置集成在数据存储装置中。在其他实施例中,桥接装置是连接到数据存储装置的单独的装置。应理解,用语“附近(near)”表示数据处理可不仅在单独装置中进行而且还可在数据存储装置自身内进行,而此并不背离本公开的范围。在一些实施例中,在本文中可将用语“接近存储(near-storage)”与“存储器内(in-storage)”互换使用。所述桥接装置可具有一个或多个硬件组件,所述一个或多个硬件组件可采用对于应用而言透明的方式来构建对存储在数据存储装置中的数据的接近存储计算。桥接装置可为nvme-of至nvme桥接装置及nvme至nvme桥接装置中的一者。与nvme-of标准兼容的nvme-of至nvme桥接装置可通过网络结构网络接收nvme-of命令并为后端数据存储装置提供pcie接口。与nvme标准兼容的nvme至nvme桥接装置可通过pcie总线接收nvme命令并在数据存储装置附近执行数据处理。在下文中,为方便起见,阐述essd作为数据存储装置的实例;然而,应理解,可使用其他类型的数据存储装置及分布式数据存储系统,而此并不背离本公开的范围。在以下实例中,essd被阐述为包括桥接装置及后端ssd二者的装置;然而应理解,数据存储装置(后端ssd)可连接到分立的桥接装置以形成essd,或者essd可指代桥接装置自身或在其他实施例中可指代能够执行桥接装置的接近计算功能的装置。本桥接装置可提取、处理及修改存储在后端ssd上的数据并将经处理数据存储回后端ssd而不会影响主机计算机到ssd的正常数据存取操作。在一个实施例中,桥接装置可具有系统存储器以维持一对输入/输出(i/o)提交队列及输入/输出完成队列并使用所述i/o队列对在后台模式中对后端ssd执行数据存取。桥接装置可共享i/o提交队列及i/o完成队列以处理来自主机计算机的命令及来自桥接装置的接近存储处理器的内部命令二者。另外,桥接装置的系统存储器可维持一对管理队列,所述一对管理队列包括管理提交队列及管理完成队列,其可在主机计算机与nsc处理器之间共享。根据一个实施例,桥接装置可采用nvme-of至nvme协议桥接或nvme至nvme协议桥接,以使得nsc处理器能够存取存储在后端ssd上的数据。例如机器学习(machinelearning,ml)算法等各种进程可在主机计算机上运行以采用对于主机计算机而言不可知的方式在后台模式中执行数据处理。运行机器学习算法的主机计算机可驻留在桥接装置外部但仍可通过桥接装置间接地对存储在essd中的数据进行存取。在一些实施例中,桥接装置和/或主机计算机可与essd驻留在同一机架中但驻留在不同的槽位(例如,u.2槽位)中,或者它们可在实体上驻留在机架外部。尽管以下结合图式加以解释的实例主要阐述nvme-of桥接装置(也被称为nvme-of至nvme桥接装置),然而它们同等地适用于nvme至nvme桥接装置。桥接装置提供接口来接收目的地为后端ssd的主机命令(例如,nvme-of命令)。桥接装置将所接收到的主机命令识别符(commandidentifier,cid)映射到本地标签,产生去往存储有待处理数据的后端ssd的nvme命令,所述nvme命令包含新的cid。后端ssd产生与nvme命令对应的完成条目(completionentry,ce)并将所述完成条目发送到桥接装置。接着,桥接装置对完成条目进行剖析并将完成条目智能地转发到桥接装置的nsc处理器。独立于从主机起始的桥接命令,桥接装置的nsc处理器可采用对于主机计算机而言不可知的方式发出nvme命令到后端ssd。通过使用共享的i/o队列及管理队列,桥接装置可同时地有效处理来自主机计算机与nsc处理器二者的i/o操作而不会对彼此造成干扰。nsc处理器能够在维持其对主机命令进行桥接的能力的同时对存储在后端ssd中的数据进行存取,此使得机器学习应用能够在接近存储计算装置(即,桥接装置)中运行。nsc处理器为机器学习应用提供能量、资源及具有成本效益的数据处理。nvme-of桥接装置可在一侧上提供与远程初启程序(例如,在主机计算机上运行的机器学习应用)的nvme-of接口且可在另一侧上提供与后端ssd的基于标准pcie的nvme接口。远程初启程序经由nvme-of接口通过以太网连接到nvme-of桥接装置。nvme-of桥接装置可将nvme-of协议转换成nvme协议以连接到后端ssd。另一方面,nvme桥接装置可提供与远程初启程序及后端ssd的标准pcie接口。远程初启程序通过pcie总线连接到nvme桥接装置。nvme桥接装置可将nvme主机命令转换成具有不同的命令识别符的另一个nvme命令以使后端ssd将nvme命令看成其仿佛是来自nvme桥接装置而非来自主机计算机一样。根据一个实施例,桥接装置的nvme-of至nvme桥接功能或nvme至nvme桥接功能可实施在现场可编程门阵列(field-programmablegatearray,fpga)或应用专用集成电路(application-specificintegratedchip,asic)中。作为另外一种选择,所述桥接功能可实施在固件程序或软件程序中。图2示出根据一个实施例的示例性nvme-of桥接装置的方块图。nvme-of桥接装置200包括接近存储计算(nsc)处理器211、系统存储器212、命令剖析器213、命令分类器214、及命令处理器215、pcie侧命令提交队列(pcie-sidecommandsubmissionqueue,psq)模块216、pcie应用(pcieapplication,papp)/根复合体模块(rootcomplexmodule)217、nvme-of响应器218、pcie完成条目剖析器219以及pcie侧命令完成队列(pcie-sidecommandcompletionqueue,pcq)模块220。nvme-of桥接装置200通过pcie总线耦合到后端ssd250。在主机计算机上运行的远程初启程序通过网络结构网络(在本实例中为以太网)将nvme-of命令发送到后端ssd250。nvme-of桥接装置200的命令剖析器213拦截目的地为后端ssd250的nvme-of命令,对所述nvme-of命令进行剖析,并将经剖析的nvme-of命令发送到命令分类器214。举例来说,命令剖析器213抽取并剖析各种命令,包括但不限于命令操作码(opcode,opc)、命令识别符(cid)、命名空间识别符(namespaceidentifier,nsid)、逻辑块数目(numberoflogicalblock,nlb)及起始逻辑块地址(startlogicalblockaddress,slba)。命令分类器214将经剖析的nvme-of命令分类成不同的群组并将经分类的nvme-of命令发送到命令处理器215。举例来说,命令分类器214对管理命令(admincommand)、网络结构命令、读取命令、写入命令及专用命令进行分类。不同的命令或不同的nvme-of命令群组可使用命令处理器215的专用命令处理单元来进行处理。举例来说,命令处理器215包括专用命令单元(specialcommandunit,scu)231、网络结构命令单元(fabricscommandunit,fcu)232、管理命令单元(admincommandunit,acu)233、写入命令单元(writecommandunit,wcu)234及读取命令单元(readcommandunit,rcu)235。这些命令处理单元231至235将nvme-of命令转换成nvme命令并将它们放置到psq模块216中。根据一个实施例,psq模块216构建命令提交队列并维持现用的提交队列的头指针(headpointer)及尾指针(tailpointer)不变。psq模块216可检测现用的提交队列并产生指示提交队列是满的还是空的的条件旗标。当将nvme命令放置到提交队列中时,psq模块216可产生门铃事件(提交队列门铃)并通过papp模块217将门铃事件发送到后端ssd250。papp模块217构建通往后端ssd250的pcie传送以通过pcie总线发送门铃事件。papp模块217支持标准pcie交易命令,所述标准pcie交易命令包括nvme-of桥接装置200所需的配置(config)读取、配置写入、存储器写入及存储器读取。另外,papp模块217支持nvme-of桥接装置200的pcie端点所需的pcie存储器读取交易及pcie存储器写入交易。换句话说,papp模块217构建并支持nvme-of桥接装置200的pcie根复合体功能,从而使nvme-of桥接装置200成为pcie根复合体装置。pcq模块220为后端ssd250构建命令完成队列。后端ssd250可为由后端ssd250处理的每一个nvme命令写入命令完成条目(ce)。通常,在命令提交队列与命令完成队列之间存在一对一映射。pcie完成条目剖析器219剖析从pcq模块220接收到的完成条目(ce)并对所述完成条目进行解释。pcie完成条目剖析器219将经剖析的完成条目转发到产生对应的nvme命令的适宜的命令处理单元231至235。适宜的命令处理单元231至235产生与从pcie完成条目剖析器219接收到的pcie完成条目对应的nvme-of完成条目(或nvme完成条目)并将所述nvme-of完成条目转发到nvme-of响应器218以通过nvme-of接口(例如,以太网)将nvme-of完成条目发回到远程初启程序。nvme-of完成条目可位于去往远程初启程序的读取数据传输或写入数据传输之前。作为nvme-of命令桥接的一部分,命令处理单元231至235有利于在后端ssd250与远程初启程序之间进行数据传输。响应于门铃事件,后端ssd250提取从psq模块216接收到的nvme命令并执行所述nvme命令。作为命令执行的一部分,后端ssd250可执行数据传输。这种数据传输可往来于系统存储器212或在nvme-of桥接装置200中可用的芯片上存储器(on-chipmemory)或芯片外存储器(off-chipmemory)之间进行。图3示出根据一个实施例的示例性专用命令单元模块的方块图。专用命令单元231构建与nsc处理器211的接口以向后端ssd250发出专用命令。nsc处理器211可使用此接口在后台中从后端ssd250提取数据或者将数据或结果写入到后端ssd250。fcu232是处置用于nvme-of协议的网络结构(fabrics)类型命令的网络结构命令单元。网络结构命令的实例包括但不限于连接(connect)、性质获得(propertyget)、性质设定(propertyset)等。acu233是管理命令单元。管理命令的实例包括但不限于识别(identify)、获得日志页面(getlogpage)等。wcu234是处置写入命令的写入命令单元。rcu235是处置读取命令的读取命令单元。参照图3,scu231包括入站(inbound,ib)先进先出(firstinputfirstoutput,fifo)332、出站(outbound,ob)先进先出333及用于nvme命令的缓冲器334。ibfifo332及obfifo333是由nsc处理器211使用的用于向后端ssd250发出专用命令的结构。nsc处理器211创建nvme命令,将nvme命令放置在消息中并将所述消息写入到obfifo333。scu231读取消息并将nvme命令发送到后端ssd250。当后端ssd250以完成条目作出响应时,scu231将完成条目放置在消息中并将消息写入到ibfifo332中。nsc处理器211从ibfifo332读取完成条目以进行进一步处理。图4示出根据一个实施例的转换命令识别符(cid)的示例性过程。桥接装置接收含有16位命令识别符(cid)(401)的传入命令(nvme-of命令或nvme命令)。16位cid及提交队列(sq)数目可唯一地识别现用命令。给定命令的完成条目含有相同的16位cid,以使完成条目可通过反向查找来与对应的nvme命令正确地关联,此将在下文中详细论述。在nvme-of桥接装置的情形中,nvme-of桥接装置接收nvme-of命令,并创建用于nvme-of命令的环境并且记录本地命令标签(在本文中也被称为本地标签)。在一个实施例中,nvm-of桥接装置对查找表(lookuptable,lut)(402)进行查找以及将接收到的16位cid映射到12位本地标签(403)。如果查找表已满,则可从执行过程暂停传入命令,从而将现用命令的数目限制为查找表的容量(2^12)。所述12位本地标签还用作去往后端ssd的传出nvme命令的16位nvmecid410的一部分。经转换的nvme命令含有新构建的16位nvmecid410。根据一个实施例,nvmecid410包括两个字段:4位命令处理单元id(cu_id)(404)及12位本地标签(405)。12位本地标签与4位cu_id的分离字段仅为实例,且应理解,这两个字段在其他实施方式中可具有不同的大小,而此并不背离本公开的范围。在本实例中,nvmecid410可使用以下映射方案来构建:nvmecid[15:0]={cu_id[3:0],local_tag[11:0]}。命令处理单元id(cu_id)可根据处理传入nvme-of命令的桥接装置的命令处理单元来确定。表1示出用于命令处理单元id(cu_id)的示例性编码方案。表1命令单元cu_idfcu0acu1wcu2rcu3scu4nvmecid的12位逻辑标签用于映射到在原始nvme-of命令中接收到的nvme-ofcid。除scu231之外的命令处理单元的12位本地标签可以如下方式获得:local_tag[11:0]=lut(nvme-ofcid[15:0]),查找表lut将16位nvme-ofcid映射到12位本地标签。查找表lut是由命令分类器214维持的动态实体。当接收到主机命令时,对查找表lut中的条目进行分配。12位条目索引是12位本地标签。原始的16位cid存储在对应的索引处。当命令完成时,将查找表lut中的条目解除分配。scu231的12位本地标签可以如下方式获得:local_tag[11:0]=lut(nsccid[15:0]),其中nsccid是nsc处理器在内部指派的命令id。nsc-cid是指由nsc处理器发出的命令中所含有的16位cid值。用于确定本地标签的以上方程式被用于将来自从主机或nsc处理器接收到的命令的cid映射到12位本地标签。在对12位本地标签进行查找之后,nvmecid的其余4位cu_id有助于执行从后端ssd250接收到的nvme完成条目(ce)的反向查找。nvme完成条目用于将nvmecid与桥接装置的各处理单元中产生对应的nvme命令的处理单元相关联。参照图2,pcie完成条目剖析器219从通过papp模块217从后端ssd250接收到的nvmecid提取4位cu_id,并确定完成条目所属的处理单元。一旦将所接收到的nvme完成条目递送到适宜的命令处理单元,pcie完成条目剖析器219便执行另一反向查找以将12位本地标签映射到原始nvme-ofcid。在scu231的情形中,这种反向查找将使用nsc-cid而不使用如上所述nvme-ofcid。通过利用这种nvme-of至nvme映射(或nvme至nvme映射),nvme-of桥接装置200可支持多个命令处理单元向后端ssd250发出nvme命令。举例来说,nvme-of桥接装置200对于给定的提交队列sq(12位深度的本地标签)而言可支持最多达4096(212)个现用nvme命令(即,队列深度)。scu231使用这种机制来通过nsc处理器向后端ssd250发出各种nvme命令而不会干涉主机命令。举例来说,nsc处理器通过发出nvme读取命令来从后端ssd提取数据块,处理所提取的数据,并通过发出nvme写入命令将结果存储回后端ssd。应注意,可使用nvme-cid的不同大小的cu_id及本地标签分量,且这种nvme-cid配置可提供不同的最大队列深度。图5是示出根据一个实施例的对管理提交队列及管理完成队列的共享的方块图。后端ssd可与本桥接装置共享包括管理sq531及管理cq532的管理队列对。管理sq531用于向后端ssd发出管理命令。在远程主机501上运行的应用可为需要对后端ssd中的数据存储装置进行存取的数据中心应用(例如,机器学习应用)。nvme-of桥接装置的nvme-of至nvme命令转换器521(例如,图2所示fcu232及acu233)将从远程初启程序接收到的nvme-of管理命令转换成nvme管理命令并将nvme管理命令放置到管理sq531(例如,图2所示psq模块216)中。nvme-of桥接装置的nsc处理器511也通过管理sq531向后端ssd发出管理命令。nvme-of命令处理单元(例如,fcu、acu、wcu及rcu)中的每一者可具有唯一的4位cu_id。因此,可通过相同的管理sq531从nvme-of主机以及nsc处理器511二者发出管理命令。假设nsc处理器511仅发出不会影响主机可见用户数据的数据完整性或后端ssd的控制数据结构的管理命令。nsc处理器511只可对主机数据进行读取或监视且只对自身拥有的数据进行修改。在一些实施例中,远程主机501与nsc处理器511可通过数据同步来共享存储在后端ssd中的数据。图6示出根据一个实施例的远程主机与nsc处理器之间对i/osq的共享。不同于图5所示管理sq531,可存在大量的i/osq。i/osq可用于发出数据命令,例如读取及写入。i/o命令将数据移动到远程初启程序及后端ssd或者从远程初启程序及后端ssd移出数据,反之亦然。通过使用不同的cu_id值,scu231可将nsc处理器的i/o命令放置到与用于主机i/o命令的i/osq相同的i/osq中。在另一个实施例中,可使用用于nsc处理器的一组专用的i/osq来处理来自nsc处理器611的i/o命令。图6示出其中对nsc处理器611及来自远程初启程序的i/o命令使用两个单独的i/o命令提交队列及i/o命令完成队列的实例。在任一种情形中,pcie完成条目剖析器使用cu_id来将从后端ssd接收到的完成条目适当地路由到桥接装置的适宜的命令处理单元。假设nsc处理器611发出不会对主机数据进行修改的i/o命令。首先,nsc处理器611将读取由主机601写入的数据以对用于本地处理的读取数据进行处理及分析。由nsc处理器611产生的经修改数据或分析结果可被写入到对于主机601而言可存取或不可存取的单独的存储区域。在一个实施例中,nsc处理器611与在主机601上运行的远程初启程序可高度地同步以共享相同的数据及存储命名空间。图7是示出根据一个实施例的桥接装置内的本地数据移动的图。桥接装置700包括写入数据缓冲器751及读取数据缓冲器752。根据一个实施例,桥接装置700的系统存储器(例如,图3所示系统存储器212)包括写入数据缓冲器751及读取数据缓冲器752。nsc处理器711在后台对ssd数据进行扫描及分析。nsc处理器711可周期性地从后端ssd750提取用户数据并对所述用户数据进行分析。nsc处理器711可将经修改数据和/或数据处理的结果存储回后端ssd750。这些操作需要往来于后端ssd的数据移动。nscnvme命令规定这种数据传输的细节。在一个实施例中,nsc处理器711使用nscnvme命令操作码来表示nvme命令是写入命令还是读取命令。nscnvme命令还可表示写入数据缓冲器751或读取数据缓冲器752的相关联的逻辑块地址(logicalblockaddress,lba)。对于nsc写入命令而言,数据从桥接装置700的系统存储器移动到后端ssd750。对于nsc读取命令而言,数据从后端ssd750移动到桥接装置700的系统存储器。对于主机命令的数据传输而言,可使用写入数据缓冲器751或读取数据缓冲器752中单独的一组缓冲器地址而不将这两种数据移动混合。当nsc处理器711发出nscnvme命令来对存储在后端ssd750中的数据进行处理时,nsc处理器711首先分配读取数据缓冲器752中具有期望大小的空间。nsc处理器711接着使用所分配的读取缓冲器空间的指针来创建nvme读取命令。nsc处理器711在后端ssd750中植入适宜的namespace.lba地址以读取存储在后端ssd750中的数据。nsc处理器711接着将所构建的nsc-nvme读取命令放置到桥接装置700的适宜的i/osq中。后端ssd750通过pcie总线提取nsc-nvme读取命令并使用读取数据缓冲器752中的所分配的读取缓冲器空间的指针来对系统存储器执行所请求数据的dma写入操作。后端ssd750接着向桥接装置700发送nsc-nvme读取命令完成条目。桥接装置700可将nsc-nvme读取完成条目智能地转发到nsc处理器711。此时,nsc处理器711继续处理或分析所提取的数据。nsc处理器711可对所提取的数据进行修改。作为数据处理的结果,nsc处理器711也可产生新数据。在某一时刻,nsc处理器711可通过对后端ssd750执行写入操作来保持这种数据。nsc处理器711使用需要被写入到后端ssd750的数据的地址来构建nsc-nvme写入命令。nsc处理器711接着插入适宜的namespace.lba存储位置,数据将在所述namespace.lba存储位置处被写入到后端ssd750内。nsc处理器711接着将新构建的nsc-nvme写入命令放置到桥接装置700的i/osq中。后端ssd750通过pcie总线提取nsc-nvme写入命令并执行所述nsc-nvme写入命令。后端ssd750执行dma操作以将数据从系统存储器写入到在nsc-nvme写入命令中规定的后端ssd地址。一旦已完成数据dma操作,后端ssd750便会发送nsc-nvme写入命令的完成条目。桥接装置700可将nsc-nvme写入命令完成条目智能地转发到nsc处理器711。此时,nsc处理器可将写入数据缓冲器751中的写入数据丢弃。根据一个实施例,一种桥接装置包括:第一接口,被配置成从在主机计算机上运行的应用接收第一组命令;一个或多个命令处理器,所述一个或多个命令处理器中的每一者被配置成对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;第二接口,被配置成将所述第二组命令提供到数据存储装置;以及计算处理器,被配置成在运行所述应用的同时发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据以及向所述数据存储装置写入数据。所述数据存储装置可为与非易失性存储快速(nvme)标准兼容的固态驱动器。所述数据存储装置可为与基于网络结构的非易失性存储快速(nvme-of)标准兼容的固态驱动器。所述第一接口可为位于网络结构网络上的nvme-of接口,且至所述数据存储装置的所述第二接口可为pcie接口。所述第一组命令可包括nvme-of命令,且所述第二组命令可包括非易失性存储快速命令。所述网络结构网络可选自以太网、光纤信道及无限宽频。所述桥接装置还可包括命令剖析器及命令分类器。所述命令剖析器可被配置成剖析所述第一组命令并产生经剖析命令,且所述命令分类器可被配置成对所述经剖析命令进行分类并将经分类命令提供到所述一个或多个命令处理器。所述一个或多个命令处理器可包括专用命令单元,所述专用命令单元被配置成处理由所述计算处理器发出的所述第二组命令的命令子集。所述应用可为机器学习(ml)应用。所述第二组命令中的每一者可包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。所述桥接装置还可包括用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。根据另一个实施例,一种提供接近存储计算的方法包括:通过第一接口从在主机计算机上运行的应用接收第一组命令;对所述第一组命令进行转换并基于所述第一组命令产生第二组命令;通过第二接口将所述第二组命令提供到数据存储装置;以及在运行所述应用的同时,发出内部命令来以对于所述主机计算机而言不可知的方式在后台模式中从所述数据存储装置提取数据及向所述数据存储装置写入数据。所述数据存储装置可为与非易失性存储快速(nvme)标准兼容的固态驱动器。所述数据存储装置可为与基于网络结构的非易失性存储快速(nvme-of)标准兼容的固态驱动器。所述第一接口可为位于网络结构网络上的nvme-of接口,且至所述数据存储装置的所述第二接口可为pcie接口。所述第一组命令可包括nvme-of命令,且所述第二组命令可包括nvme命令。所述网络结构网络可选自以太网、光纤信道及无限宽频。所述提供接近存储计算的方法还可包括:剖析所述第一组命令并产生经剖析命令,以及对所述经剖析命令进行分类并将经分类命令提供到一个或多个命令处理器。所述一个或多个命令处理器可包括专用命令单元,所述专用命令单元被配置成处理由计算处理器发出的所述第二组命令的命令子集。所述应用可为机器学习(ml)应用。所述第二组命令中的每一者可包括命令识别符,所述命令识别符包括命令处理单元识别符及本地标签,所述命令处理单元识别符与所述一个或多个命令处理器对应,所述本地标签通过查找表被映射到所述第一组命令。所述提供接近存储计算的方法还可包括:提供用于对去往所述数据存储装置的所述第二组命令进行排队的提交队列及用于对从所述数据存储装置接收的完成条目进行排队的完成队列。上文已阐述以上示例性实施例来示出实施用于提供接近存储计算的桥接装置的各种实施例。所属领域中的普通技术人员将会联想到对所公开示例性实施例的各种修改及相对于所公开示例性实施例的不同之处。在以上权利要求中阐述了旨在落于本发明范围内的主题。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1