用于将应用函数卸载到装置的系统和方法与流程

文档序号:21317964发布日期:2020-06-30 20:48阅读:139来源:国知局
用于将应用函数卸载到装置的系统和方法与流程

相关申请的交叉参考

本申请要求2018年12月21日申请且名称为“用于将应用函数卸载到装置的系统和方法”的美国临时专利申请第62/784,275号的优先权和权益,所述申请的全部内容特此以引用的方式明确地并入。

根据本公开的实施例的一个或多个方面涉及一种用于将应用函数卸载到装置的系统和方法。



背景技术:

在现代信息技术(informationtechnology;it)基础设施中,可通过各种装置和工艺产生相对大量的数据。这些数据产生器的一些实例包含智能装置(例如,iphone、ipad等)、自动驾驶车辆、社交网络以及物联网(internetofthings;iot)装置。正在开发人工智能(artificialintelligence;ai)和机器学习(machinelearning;ml)算法以分析和使用收集到的数据,以实现更高的应用效率和生产率。鉴于it基础设施的近期发展,可能需要处理和分析数据。

背景技术章节中的以上信息仅用于增进对所述技术的背景的理解,且因此所述信息不应理解为对现有技术的存在性或相关性的承认。



技术实现要素:

本公开的目标

本公开的实施例的实例可提供一种用于将应用函数卸载到装置的系统和方法。

本公开的示例实施例的方面涉及一种用于将应用函数卸载到装置的系统和方法。根据本公开的一些示例实施例,一种系统包含:主机装置;存储装置,包含嵌入式处理器;以及桥接器内核装置,包含桥接器内核硬件和桥接器内核固件,其中桥接器内核装置配置成从主机装置接收多个变量参数且将多个变量参数传输到嵌入式处理器以用于数据处理。

在一些实施例中,桥接器内核装置的实现对主机装置透明,其中桥接器内核装置对主机装置与桥接器内核装置之间的输送机构不可知,其中输送机构是外围组件互连快速(peripheralcomponentinterconnectexpress;pcie)或以太网连接中的一个。在一些实施例中,存储装置是固态驱动器(solidstatedrive;ssd),且嵌入式处理器是现场可编程门阵列(fieldprogrammablegatearray;fpga)处理器或ssd控制器或分立协处理器,其中:嵌入式处理器包含配置成在嵌入式处理器上执行的经卸载应用函数,嵌入式处理器进一步包含桥接器内核固件,桥接器内核装置将从主机装置接收到的多个变量参数传输到经卸载应用函数,且桥接器内核装置提取从主机装置的主机寄存器接口接收到的多个变量参数。

在一些实施例中,存储装置进一步包含先进先出(firstin,firstout;fifo)寄存器和动态随机存取存储器(dynamicrandom-accessmemory;dram),dram包含多个数据缓冲器和握手区以存储从主机装置接收到的多个变量参数,且其中fifo寄存器和dram以通信方式耦合到桥接器内核硬件。在一些实施例中,fifo寄存器配置成将多个变量参数传送到并入有经卸载应用函数的嵌入式处理器以用于数据处理。在一些实施例中,桥接器内核硬件配置成将从主机装置接收到的多个变量参数暂时存储到dram的握手区中。在一些实施例中,桥接器内核装置配置成充当在主机装置的客户应用模块上运行的主机应用的代理,其中主机应用对在何处或如何实现经卸载应用函数不可知。

在一些实施例中,主机装置包含客户应用模块和开放计算语言(opencomputinglanguage;opencl)模块,且其中主机装置配置成与存储装置建立外围组件互连快速(pcie)或以太网连接。在一些实施例中,桥接器内核硬件包含多个硬件内核且桥接器内核固件包含多个软件内核,多个软件内核配置成在嵌入式处理器上运行,其中在主机装置的客户应用模块上运行的主机应用配置成通过opencl模块与多个软件内核和/或硬件内核介接。在一些实施例中,桥接器内核装置配置成基于成本函数从多个硬件内核和多个软件内核当中选择一个或多个内核以用于数据处理。

在一些实施例中,桥接器内核装置配置成基于使用从主机装置接收到的多个变量参数和存储参数或联网参数的成本函数来选择一个或多个内核以用于数据处理,其中从主机装置接收到的存储参数或联网参数包含提交队列标识符(submissionqueueidentifier;sqid)、完成队列标识符(completionqueueidentifier;cqid)、流id、主机id、逻辑块地址(logicalblockaddress;lba)范围、网络服务id(networkserviceid;nsid)、媒体存取控制(mediaaccesscontrol;mac)id、传输控制协议(transmissioncontrolprotocol;tcp)/互联网协议(internetprotocol;ip)字段、应用类型、应用标识符或与主机装置相关联的时间和日期中的至少一个。在一些实施例中,桥接器内核装置配置成使用fifo寄存器从多个硬件内核和多个软件内核当中选择一个或多个内核以用于数据处理。在一些实施例中,桥接器内核固件配置成提取dram的握手区中的多个变量参数且使用从主机装置接收到的多个变量参数来调用经卸载应用函数。在一些实施例中,经卸载应用函数配置成使用多个变量参数以用于数据处理。

根据本公开的一些示例实施例,一种方法包含:通过存储装置中的桥接器内核装置从连接存储装置的主机装置接收触发;通过桥接器内核装置提取从主机装置接收到的多个变量参数,其中桥接器内核装置配置成从主机寄存器接口提取多个变量参数;通过桥接器内核装置将多个变量参数存储在存储装置的动态随机存取存储器(dram)中,其中在dram的握手区中存储多个变量参数;通过桥接器内核装置在dram中设定就绪标志,其中在dram的握手区中设定就绪标志;基于桥接器内核装置确定基于多个变量参数对存储装置的嵌入式处理器中的桥接器内核装置的固件中的经卸载函数的处理完成,通过桥接器内核装置来在dram中轮询完成标志,其中在dram的握手区中轮询完成标志;以及通过桥接器内核装置在主机寄存器接口中设定就绪标志。

在一些实施例中,方法进一步包含:通过桥接器内核装置基于检测dram的握手区中的完成标志来从dram的握手区读取错误或状态;以及通过桥接器内核装置将错误或状态更新到主机寄存器接口中。在一些实施例中,方法进一步包含:通过桥接器内核装置的固件在dram中轮询就绪标志;通过桥接器内核装置的固件提取dram的握手区中的多个变量参数;通过桥接器内核装置的固件使用多个变量参数来调用存储装置的嵌入式处理器中的经卸载应用函数以用于数据处理;通过经卸载应用函数基于数据处理的完成来使调用返回到桥接器内核装置的固件;以及通过桥接器内核装置的固件在dram的握手区中设定完成标志。

根据本公开的一些示例实施例,一种系统包含:存储装置,包含嵌入式处理器;以及桥接器内核装置,配置成从主机装置接收多个变量参数且将多个变量参数传输到嵌入式处理器以用于数据处理。在一些实施例中,桥接器内核装置包含桥接器内核硬件和桥接器内核固件,其中存储装置是固态驱动器(ssd),且嵌入式处理器是现场可编程门阵列(fpga)处理器或ssd控制器或分立协处理器,其中嵌入式处理器包含配置成在嵌入式处理器上执行的经卸载应用函数,嵌入式处理器进一步包含桥接器内核固件,且其中桥接器内核装置将从主机装置接收到的多个变量参数传输到配置成在嵌入式处理器上执行的经卸载应用函数,其中桥接器内核装置从主机寄存器接口提取从主机装置接收到的多个变量参数。

在一些实施例中,存储装置进一步包含先进先出(fifo)寄存器和动态随机存取存储器(dram),其中dram进一步包含多个数据缓冲器和握手区,其中fifo寄存器和dram以通信方式耦合到桥接器内核硬件,其中桥接器内核硬件包含多个硬件内核且桥接器内核固件包含多个软件内核,多个软件内核配置成在嵌入式处理器中运行,其中桥接器内核装置配置成基于使用从主机装置接收到的多个变量参数和存储参数或联网参数的成本函数来从多个硬件内核和多个软件内核当中选择一个或多个内核以用于数据处理,其中从主机装置接收到的存储参数或联网参数是提交队列标识符(sqid)、完成队列标识符(cqid)、流id、主机id、逻辑块地址(lba)范围、网络服务id(nsid)、媒体存取控制(mac)id、传输控制协议(tcp)/互联网协议(ip)字段、应用类型、应用标识符或与主机装置相关联的时间和日期中的至少一个,且其中桥接器内核装置配置成使用fifo寄存器从多个硬件内核和多个软件内核当中选择一个或多个内核以用于数据处理。

本公开的效果

本发明可使用基于软件的经卸载函数来重复使用已经在主机上执行那些函数的软件代码。此外,本发明可可保持主机软件堆栈与经卸载内核之间的接口与软件内核相同以及与任何其它形式的内核实现相同。因此,可以软件内核形式执行初始快速卸载,且稍后可在不显著改变或破坏总体主机软件堆栈和/或系统架构的情况下在硬件中实现经卸载函数。通过使快速卸载启动和运行,可在正在开发更多高性能内核的同时进行其它系统活动(例如,系统集成、检核、特征化等)。

换句话说,本发明可将应用函数卸载到例如具有嵌入式处理器的ssd的计算存储装置以用于高效且有成本效益的数据处理。

附图说明

将参考本说明书、权利要求书以及附图来了解并理解本公开的一些示例实施例的这些特征和其它特征,其中:

图1a示出包含桥接器内核的系统的实例框图。

图1b示出通过桥接器内核对不同内核的基于成本的路由进程。

图2a到图2b示出主机应用与经卸载内核介接的实例流程。

图3示出通过桥接器内核向主机呈现的寄存器接口的实例。

图4示出如图1a中所绘示的握手区的布局的实例。

图5示出使用桥接器内核硬件作为状态机的方法。

图6示出桥接器内核固件操作。

附图标号说明

100:系统;

102:主机;

104:存储装置;

106:用户应用;

108:开放计算语言模块;

110:桥接器内核硬件;

112:嵌入式处理器;

114:经卸载应用函数;

116:桥接器内核固件;

118:先进先出寄存器;

120:动态随机存取存储器;

122:数据缓冲器;

124:握手区;

126(1)、126(m)、126(n)、126(n+1):内核;

128:“就绪”标志;

130:“完成”标志;

132:错误和/或其它状态;

134:主机应用软件;

136:主机上层软件;

200、500:方法;

201、202、203、204、205、206、207、208、501、502、503、505、507、509、511、601、603、605、607、609、611:步骤;

300:寄存器接口;

608:实例。

具体实施方式

下文结合附图阐述的具体实施方式意图作为对根据本公开提供的用于将应用函数卸载到装置的系统和方法的一些示例实施例的描述,且不意图表示本公开可建构或利用的唯一形式。所述描述结合所示出的实施例来阐述本公开的特征。然而,将理解,可通过不同实施例来实现相同或等效的功能和结构,所述不同实施例也意图涵盖在本公开的范围内。如本文中其它地方所指示,相同元件编号意图指示相同元件或特征。

在一些系统架构中,可将数据从永久存储提取到相对高性能的服务器,所述服务器可使用高性能网络连接到存储。就所消耗能量的量以及部署的计算和网络资源而言,将这种大量原始数据移动到中央处理单元(centralprocessingunit;cpu)以用于处理和分析可能是昂贵的。这种大量原始数据的移动可增大资源(例如网络带宽、cpu周期以及cpu存储器)上的负担。将大量原始数据移动到服务器以用于处理还可能增大由在服务器上运行的应用经历的延时。

在一些情况下,在完成处理和作出决策之前,应用可能首先需要等待将数据提取到服务器。这些所添加的资源要求可导致较高资本支出和运营成本花费。因此,尽可能在存储装置(例如,固态驱动器(ssd))内处理原始数据可表示许多数据分析使用情况(例如,针对增长的原始数据量的货币化的使用情况)的有成本效益的解决方案。另外,通过减少数据移动,可改善系统运行应用的响应延时。

此外,采用数据分析任务的系统可经常读取相对大量的数据、处理所述数据且通过过滤和其它数据简化操作来简化所述数据。这些和许多其它类似任务可使用基于ssd的服务来实现,这是因为这些任务可利用装置(例如,ssd)内的较高可用带宽,且通过仅移动简化的结果来节省ssd与cpu之间的有限带宽(例如,外围组件互连快速(pcie)接口或在远程直接附接存储(remotedirectattachedstorage;rdas)的情况下的网络结构接口)。因此,用于处理更靠近存储装置(例如,ssd)或所述存储装置内部的数据的技术合乎高效且有成本效益的数据处理的需要。

本公开的一些实施例包含用于将应用函数卸载到计算存储装置(例如,具有嵌入式处理器的ssd)的方法和系统,其可在一些实例中产生高效且有成本效益的数据处理解决方案。智能存储装置(例如,具有嵌入式处理器的ssd)可提供用于执行可以其它方式通过主机cpu处理器执行的数据处理功能的至少一部分的平台。就能量消耗、网络带宽、cpu周期、存储器等而言,在智能ssd或类似存储装置内部执行那些数据处理功能可为存储网络提供益处。

在一些实例中,可使用具有嵌入式处理器(例如,fpga或ssd控制器或分立协处理器)的存储装置中的寄存器传输级(register-transferlevel;rtl)逻辑、高级合成(high-levelsynthesis;hls)或现场可编程门阵列(fpga)逻辑来实现经卸载函数,以提高性能且减小存储网络的功耗。然而,使用rtl或hls的高性能经卸载函数的较长开发周期可阻碍或显著减缓系统开发的其它活动。本公开的一些实施例可使得能够在嵌入式处理器上(例如,在ssd中)执行经卸载函数作为软件(也称为固件)函数。通过执行作为软件的经卸载函数,可实现快速开发时间。基于软件的经卸载函数还可使得能够重复使用已经在主机(例如,主机cpu)上执行那些函数的软件代码。

在存储装置或ssd的嵌入式处理器中执行经卸载函数作为软件或固件可保持主机软件堆栈与经卸载内核之间的接口与软件内核相同,以及与任何其它形式的内核实现相同。因此,可以软件内核形式进行初始快速卸载,且稍后可在不显著改变或破坏总体主机软件堆栈和/或系统架构的情况下在硬件中实现经卸载函数。通过使快速卸载启动和运行,可在正在开发更多高性能内核的同时进行其它系统活动(例如,系统集成、检核、特征化等)。

如上文所提及,本公开的一些实施例包含用于将应用函数卸载到计算存储装置(例如具有嵌入式处理器(例如fpga或ssd控制器或分立协处理器)的ssd)的方法和系统以用于高效且有成本效益的数据处理。一些实施例可包含可代表经卸载函数充当主机(例如,主机cpu)的代理的基于fpga硬件的桥接器内核。桥接器内核可从主机驱动器接受变量参数且可将那些变量参数(例如,参数值、存储器指针等)传输到将在嵌入式处理器(例如,fpga或ssd控制器或分立协处理器)上作为软件内核执行的经卸载函数。其它实施例中的硬件和固件片段可充当在主机和软件内核上运行的应用之间的桥接器。这种软件内核可接着在稍后时刻处移动到硬件中以获得对主机透明的高性能。因此,可在不进行进一步修改的情况下使用桥接器内核主机接口,这可使得计算存储装置(例如,智能ssd)的用户能够例如通过将其现有应用函数编码基数移植到存储装置中的嵌入式处理器(例如,fpga或ssd控制器或分立协处理器)来快速开发使用情况。

智能ssd的使用情况开发的这一易化可准许用户更快地采用本文中所描述的技术。使用hls和rtl的高性能内核可耗费相对大量的开发时间和资源。本公开的示例实施例可使得用户能够在后台正在开发高性能内核的同时执行各种任务(例如,系统集成、客户演示、系统检核以及其它任务)。另外,桥接器内核可执行到不同内核的基于成本的路由。也就是说,桥接器内核可基于从主机接收到的变量参数和配置在具有嵌入式处理器的存储装置中的各种存储参数或联网参数的一些函数来叫用(invoke)不同内核。举例来说,在一些实施例中,基于在运行时间期间从主机接收到的变量参数,桥接器内核可在适当时叫用不同性能级的内核。

图1a示出包含桥接器内核的系统的实例框图。系统100包含主机102和存储装置104(例如智能ssd,例如具有fpga处理器的跨结构非易失性存储快速(non-volatilememoryexpress;nvme)(non-volatilememoryexpressoverfabrics;nvme-of)相容的以太网ssd(ethernetssd;essd),或具有加速能力的nvmessd)。主机102包含用户应用106的模块和开放计算语言(opencl)模块108。opencl模块108可用于表示计算卸载应用编程接口(例如,这可应用于主机102与存储装置104(例如,ssd)之间的任何计算卸载接口)。主机102可使用外围组件互连快速(pcie)或以太网连接来建立与存储装置104的连接。

存储装置104包含桥接器内核。在一些实施例中,桥接器内核可包含桥接器内核硬件110和桥接器内核固件116。存储装置104进一步包含嵌入式处理器112、先进先出(fifo)寄存器118以及动态随机存取存储器(dram)。dram120包含数据缓冲器122和握手区124。嵌入式处理器112包含经卸载应用函数114和桥接器内核固件116。

在一些实施例中,系统100中的主机102可进一步包含操作系统(operatingsystem;os)和文件系统(filesystem;fs),以及nvme-of驱动器。在一些实施例中,存储装置104可以在包含以太网交换机、主板管理控制器(baseboardmanagementcontroller;bmc)以及pcie交换机的机箱(未绘示)内部。以太网交换机提供通过中板与存储装置104(例如,智能ssd)的以太网连接,且pcie交换机提供通过中板对存储装置104的管理接口。bmc可根据由系统管理员给出的指令来对存储装置104进行编程。bmc可管理包含以太网交换机、pcie交换机以及存储装置104的机箱的内部组件。bmc可支持pcie和/或用于系统管理的系统管理总线(systemmanagementbus;smbus)接口。bmc可配置存储装置104且对以太网交换机进行编程。在一些实施例中,以太网交换机提供主机102与存储装置104之间的网络连接性。

图1b示出通过桥接器内核(例如,桥接器内核硬件110)对经卸载函数的不同内核的基于成本的路由进程。在一些实施例中,系统100使得能够将经卸载函数(例如,经卸载应用函数114)相对快速地移植到例如智能ssd(例如,存储装置104)的存储装置。在一些实施例中,在主机(例如,主机102)的cpu上运行的用户应用106可受益于将函数中的一些卸载到智能ssd(例如,存储装置104)。通常,处理存储在ssd(例如,存储装置104)中的大量数据的函数可受益于这种卸载。经卸载函数(例如,经卸载应用函数114)可称为“内核”(例如,内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m))。

在图1b中,内核126(1)、…、内核126(n)是软件内核且内核126(n+1)、…、内核126(m)是硬内核或硬件内核。内核126(1)……内核126(n)当中的软件内核可在嵌入式处理器112上运行。(例如,在用户应用106中运行的)主机应用可通过主机102侧上的由类似opencl(例如,opencl模块108)的语言提供的接口且通过存储装置104侧上的桥接器内核硬件110与内核(例如,内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m))介接。

在一些实施例中,内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m)当中的多个内核可以是高性能内核(例如,高性能内核可具有高于设定或预定阈值的性能度量),且内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m)当中的其它多个内核可以是低性能内核(例如,低性能内核可具有低于设定或预定阈值的性能度量)。桥接器内核(例如,桥接器内核硬件110)可从内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m)当中进行一个或多个内核的选择以用于数据处理。

在一些实施例中,桥接器内核可基于成本函数来进行内核的选择以用于数据处理。在一些实施例中,可基于从主机102接收到的变量参数和从主机102接收到的存储参数或联网参数来确定成本函数。存储参数或联网参数的实例可包含但不限于提交队列标识符(sqid)、完成队列标识符(cqid)、流id、主机id、逻辑块地址(lba)范围、网络服务id(nsid)、媒体存取控制(mac)id、传输控制协议(tcp)/互联网协议(ip)字段、应用类型、应用标识符、与主机102相关联的时间和/或日期、其组合和/或类似物。

举例来说,可将变量参数从主机102的应用侧传送到桥接器内核(例如,主机102的应用可将成本函数卸载到桥接器内核硬件110)。桥接器内核可计算使用给定内核的成本。桥接器内核可接着基于成本函数和从主机102接收到的存储参数或联网参数的组合来选择最佳内核。在一些实施例中,例如,存储装置104可实现两个数据压缩内核,一个设计用于更好的吞吐量且另一个设计用于更好的压缩比。针对来自主机102的对压缩的给定运行时间叫用,桥接器内核可检查长度变量参数,且每当长度大于例如64千字节时都可选择更好的压缩比内核,且可为其余部分选择其它类型的压缩内核。在一些实施例中,桥接器内核硬件110可从内核126(1)、…、内核126(n)、内核126(n+1)、…、内核126(m)当中选择最佳内核以用于使用fifo寄存器的数据处理。

图2a到图2b示出主机应用(例如,用户应用106)与经卸载内核介接的实例流程,例如方法200。在步骤201处,桥接器内核(例如,桥接器内核驱动器)可从上层(例如,主机上层软件136,如图4中所绘示)接收调用或叫用。在步骤202处,桥接器内核(例如,桥接器内核驱动器)可将主机变量参数(例如,变量参数-1……变量参数-n)存储到主机寄存器接口(例如,图3的主机寄存器接口300)中。在步骤203处,桥接器内核(例如,桥接器内核驱动器)可分配缓冲器(例如,数据缓冲器122)以用于数据处理。在步骤204处,桥接器内核(例如,桥接器内核驱动器)可初始化由经卸载应用函数114所需的其它变量参数。在步骤205处,桥接器内核(例如,桥接器内核驱动器)可将数据提取到缓冲器中以用于处理。在步骤206处,桥接器内核(例如,桥接器内核驱动器)可叫用处理内核。一旦数据处理完成,系统100就可在步骤207处执行净化操作。在步骤208处,通过桥接器内核(例如,桥接器内核驱动器),经卸载应用函数114可使调用返回到上层应用软件。

在一些实施例中,桥接器内核可向主机102提供通用寄存器接口。图3示出通过桥接器内核向主机102呈现的寄存器接口300的实例。寄存器接口300可位于存储装置104中。系统100可使用寄存器接口300(例如,如图3中所绘示)向(例如,在用户应用106中运行的)主机应用呈现内核以将变量参数传送到经卸载函数(例如,经卸载应用函数114)且检索返回的值或状态。在一些实施例中,系统100可使用opencl模块108的平台以便于内核的缓冲分配。

图4示出图1a的dram120的握手区124的布局的实例。如图4中所示出,在一些实施例中,桥接器内核硬件110可将从主机102接收到的变量参数(例如,变量参数-1……变量参数-n)暂时存储到存储装置104(例如,智能ssd)的dram120中的设定或预定存储器位置中。在一些实施例中,片上fifo寄存器118的结构可用于将变量参数传送到并入经卸载应用函数114、固件以及桥接器内核固件116的嵌入式处理器112,而不是dram120。

可将寄存器接口300的内容(例如变量参数-1到变量参数-n)暂时存储到dram120的握手区124中。一旦将变量参数暂时存储在dram120中,桥接器内核硬件110就可在dram120的握手区124中设定“就绪”标志128。在所述时刻处,桥接器内核硬件110可等待在固件(例如,桥接器内核固件116)上运行的经卸载函数完成处理。因此,为了确定经卸载函数处理的完成,桥接器内核硬件110可在dram120的握手区124中轮询“完成”标志130。

一旦桥接器内核硬件110检测到“完成”标志130,桥接器内核硬件110就可从dram120的握手区124读取任何错误或其它状态。桥接器内核硬件110将错误和/或其它状态132更新到寄存器接口300(如图3中所绘示)的对应寄存器中。桥接器内核硬件110可接着设定“完成”标志130的寄存器,这可继而通过主机应用软件134轮询以指示经卸载函数调用的完成。

图5示出使用桥接器内核硬件作为状态机的方法500。桥接器内核硬件可以是图1a的桥接器内核硬件110。

在步骤501处,桥接器内核硬件110保持在空闲状态下。在步骤502处,桥接器内核硬件110从主机102接收触发。在步骤503处,桥接器内核硬件110从主机寄存器接口(例如,图3的主机寄存器接口300)提取从主机102接收到的变量参数(例如,变量参数-1……变量参数-n)。在步骤505处,桥接器内核硬件110将从主机102接收到的变量参数(例如,变量参数-1……变量参数-n)暂时存储在dram120的握手区124中。一旦将变量参数暂时存储在dram120中,桥接器内核硬件110就在步骤507处在dram120的握手区124中设定“就绪”标志128。

在所述时刻处,桥接器内核硬件110基于变量参数等待固件(例如,桥接器内核固件116)中的经卸载函数完成其处理。为了所述目的,在步骤509处,桥接器内核硬件110在dram120的握手区124中轮询“完成”标志130。在一些实施例中,一旦桥接器内核硬件110检测到“完成”标志130,桥接器内核硬件110就可从dram120的握手区124读取任何错误或其它状态。桥接器内核硬件110将所述错误和/或其它状态132更新到寄存器接口300(如图3中所绘示)的适合的寄存器中。桥接器内核硬件110接着设定“完成”标志130的寄存器,这继而通过主机应用软件134轮询以指示经卸载函数调用的完成。

在步骤511处,桥接器内核硬件110在主机寄存器接口(例如,图3的主机寄存器接口300)中设定就绪标志。在步骤511之后,桥接器内核硬件110返回到步骤501。

图6示出桥接器内核固件操作。桥接器内核固件可以是图1a的桥接器内核固件116。

在步骤601处,桥接器内核固件116保持在空闲状态下。在步骤603处,通过在嵌入式处理器112上运行的桥接器内核固件116轮询dram120中的“就绪”标志128。换句话说,桥接器内核固件116充当使用适合的变量参数来叫用经卸载函数(例如,经卸载应用函数114)的卸载管理器。当桥接器内核固件116检测到设定“就绪”标志时,桥接器内核固件116在步骤605处提取暂时存储在dram120的握手区124中的变量参数(例如,变量参数-1……变量参数-n)。在步骤607处,桥接器内核固件116使用主机102的变量参数调用经卸载应用函数114。经卸载应用函数114使用变量参数(例如,变量参数-1……变量参数-n)且按照设计执行数据处理功能。经卸载应用函数114的实例绘示在实例608处。一旦数据处理完成,经卸载应用函数114就在步骤609处使调用返回到桥接器内核固件116。在步骤611处,桥接器内核固件116在dram120中的握手区124中设定“完成”标志。如早先所描述,“完成”标志继而通过桥接器内核硬件110轮询以便将完成发送回主机102。在步骤611之后,桥接器内核固件116返回到步骤601。

在一些实施例中,桥接器内核充当(例如,在用户应用106中运行的)主机应用的代理。举例来说,(例如,在用户应用106中运行的)主机应用对在何处或如何实现经卸载函数不可知。在一些实施例中,内核实现可对主机102透明。在一些实施例中,内核可在嵌入式处理器(例如,嵌入式处理器112)上作为软件内核实现。然而,在一些实施例中,内核可在硬件门(例如,桥接器内核硬件110)中实现。

在一些实施例中,桥接器内核自身可对经卸载函数(例如,经卸载应用函数114)不可知,这可实现用户保密性(例如,ip地址保密性)。因此,用户可在不对存储装置用户显露的情况下创建其自己的经卸载函数作为软件内核或硬件内核。也就是说桥接器内核机构的示例实施例可充当可由用户用以将其私有加速函数卸载到存储装置的平台。在一些实施例中,与内核和/或经卸载函数的主机接口可以不改变(例如,内核可在没有显著主机侧改变的情况下升级到高性能版本)。在这种情况下,桥接器内核(例如,桥接器内核硬件110)rtl可向主机应用(例如,用户应用106)提供标准或商定接口。

在一些实施例中,桥接器内核(例如,桥接器内核硬件110)可使用fpgadram(例如,dram120)存储器来与桥接器内核固件116进行握手。在其它实施例中,桥接器内核硬件110可使用片上fifo(例如,fifo寄存器118)来与桥接器内核固件116进行握手。在一些实施例中,桥接器内核(例如,桥接器内核硬件110)的rtl可使用fpgadram(例如,dram120)来将变量参数传送到在嵌入式处理器112上运行的经卸载函数。

在一些实施例中,桥接器内核(例如,桥接器内核硬件110)可以是相对于下层输送机构(例如,pcie、以太网等)不可知的,所述下层输送机构用于在主机102与存储装置104之间建立连接。在一些实施例中,包含桥接器内核(例如,桥接器内核硬件110)的系统100可通过相较于不具有桥接器内核的系统而提供相对快速的移植或开发选项来提供相对快速的用户参与,增加通过用户对现有编码基数的重复使用,且可使得系统能够在开发高性能内核的同时进行其它活动。在一些实施例中,包含桥接器内核(例如,桥接器内核硬件110)的系统100还可提供系统集成、检核、测试、演示等。

在一些实施例中,桥接器内核可使用通过主机传送(和/或通过装置设定)的变量参数来决定叫用哪个经卸载函数(例如,内核)。在一些实施例中,桥接器内核可叫用软内核、硬内核或各种性能水平的一个或多个内核。在一些实施例中,桥接器内核可基于变量参数使用成本函数来选择特定内核。在一些实施例中,内核选择是基于配置参数,例如应用类型、应用标识符、命名空间标识符、主机标识符、lba地址范围、nvm设定标识符、nvme提交队列标识符、完成队列标识符、流标识符、以太网mac标识符、tcp/ip地址和其它输送/网络参数,以及类似日期和时间的普通参数等。

应理解,尽管本文中可使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区、层和/或区段,但这些元件、组件、区、层和/或区段不应受这些术语限制。这些术语仅用于区分一个元件、组件、区、层或区段与另一元件、组件、区、层或区段。因此,本文中所论述的第一元件、组件、区、层或区段可称为第二元件、组件、区、层或区段,而并不脱离本发明构思的精神和范围。

为易于描述,本文中可使用例如“在……之下”、“在……下方”、“下部”、“在……下”、“上方”、“上部”以及类似物的空间相对术语来描述如图中所示出的一个元件或特征与另一元件或特征的关系。应理解,除图中所描绘的定向之外,这种空间相对术语意图涵盖装置在使用或操作中的不同定向。举例来说,如果图中的装置倒过来,那么描述为“在”其它元件或特征“下方”或“之下”或“下”的元件将定向“在”其它元件或特征“上方”。因此,实例术语“在……下方”和“在……下”可涵盖在上方和在下方的定向。装置可以其它方式定向(例如,旋转90度或处于其它定向),且本文中所使用的空间相对描述词应相应地进行解译。此外,还将理解,当层称作“在”两个层“之间”时,其可以是两个层之间的唯一层,或也可存在一个或多个插入层。

本文中所使用的术语仅出于描述特定实施例的目的,且并不意图限制本发明构思。如本文所使用,术语“实质上”、“约”以及类似术语用作近似术语且不用作程度术语,且意图考虑将由本领域的技术人员识别出的测量值或计算值的固有偏差。

如本文中所使用,除非上下文另作明确指示,否则单数形式“一(a/an)”也意图包含复数形式。应进一步理解,当用于本说明书中时,术语“包括(comprises/comprising)”指定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组。如本文中所使用,术语“和/或”包含相关联的所列项中的一个或多个的任何以及所有组合。当在元件列表之前时,例如“中的至少一个”的表达修饰元件的整个列表并且不修饰列表中的个别元件。另外,当描述本发明构思的实施例时,使用“可”是指“本公开的一个或多个实施例”。此外,术语“示范性”意图指代实例或图示。如本文中所使用,术语“使用(use)”、“正使用(using)”、“被使用(used)”可视为分别与术语“利用(utilize)”、“正利用(utilizing)”、“被利用(utilized)”同义。

应理解,当元件或层称作“在”另一元件或层“上”、“连接到”、“耦合到”或“邻近于”所述另一元件或层时,其可直接在另一元件或层上、连接到、耦合到或邻近于所述另一元件或层,或可存在一个或多个介入元件或层。相比之下,当元件或层称作“直接在”另一元件或层“上”、“直接连接到”、“直接耦合到”或“紧邻”所述另一元件或层时,不存在介入元件或层。

本文中所述的任何数值范围意图包含所述范围内归入的相同数值精度的所有子范围。举例来说,范围“1.0到10.0”意图包含所述最小值1.0与所述最大值10.0之间的所有子范围(且包含所述最小值和所述最大值),也就是说,具有等于或大于1.0的最小值和等于或小于10.0的最大值,例如2.4到7.6。本文中所述的任何最大数值限制都意图包含归入于其中的所有更低数值限制,且本说明书中所述的任何最小数值限制都意图包含归入于其中的所有更高数值限制。

在一些实施例中,可将本公开的方法和系统的不同实施例的一个或多个输出发送到耦合到显示装置或具有显示装置的电子件装置,所述显示装置用于显示一个或多个输出或关于本公开的方法和系统的不同实施例的一个或多个输出的信息。

本文中所描述的根据本公开的实施例的电子或电气装置和/或任何其它相关装置或组件可利用任何合适的硬件、固件(例如,专用集成电路)、软件或软件、固件以及硬件的组合来实现。举例来说,这些装置的各种组件可在一个集成电路(integratedcircuit;ic)芯片上或在独立ic芯片上形成。另外,这些装置的各种组件可在柔性印刷电路膜、载带封装(tapecarrierpackage;tcp)、印刷电路板(printedcircuitboard;pcb)上实现或在一个衬底上形成。另外,这些装置的各种组件可以是在一个或多个处理器上运行、位于一个或多个计算装置中、执行计算机程序指令以及与其它系统组件交互以用于执行本文中所描述的各种功能的进程或线程。计算机程序指令可存储在使用例如随机存取存储器(randomaccessmemory;ram)的标准存储器装置在计算装置中实现的存储器中。计算机程序指令也可存储在例如cd-rom、闪存驱动器或类似物的其它非暂时性计算机可读介质中。此外,本领域的技术人员应认识到可将各种计算装置的功能性组合或集成到单个计算装置中,或可将特定计算装置的功能性分布于一个或多个其它计算装置上而不脱离本公开的示范性实施例的精神和范围。

尽管本文中已具体描述和示出了用于将应用函数卸载到装置的系统和方法的示范性实施例,但许多修改和变化对于本领域的技术人员而言将是显而易见的。因此,应理解,根据本公开的原理建构的用于将应用函数卸载到装置的系统和方法可以不同于本文中所具体描述的方式实施。本发明构思也定义于以上权利要求书和其等效物中。

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