CN111352666A - 用于将应用函数卸载到装置的系统和方法 - Google Patents
用于将应用函数卸载到装置的系统和方法 Download PDFInfo
- Publication number
- CN111352666A CN111352666A CN201911311441.2A CN201911311441A CN111352666A CN 111352666 A CN111352666 A CN 111352666A CN 201911311441 A CN201911311441 A CN 201911311441A CN 111352666 A CN111352666 A CN 111352666A
- Authority
- CN
- China
- Prior art keywords
- bridge
- host
- kernel
- variable parameters
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006870 function Effects 0.000 title claims abstract description 104
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 49
- 230000006855 networking Effects 0.000 claims description 13
- 239000000872 buffer Substances 0.000 claims description 9
- 239000007787 solid Substances 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 7
- 239000000284 extract Substances 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 230000007723 transport mechanism Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000011161 development Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000013403 standard screening design Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
- Bus Control (AREA)
Abstract
本发明提供一种用于将应用函数卸载到装置的系统和方法。系统包含:主机装置;存储装置,包含嵌入式处理器;以及桥接器内核装置,包含桥接器内核硬件和桥接器内核固件,其中桥接器内核装置配置成从主机装置接收多个变量参数且将多个变量参数传输到嵌入式处理器以用于数据处理。
Description
相关申请的交叉参考
本申请要求2018年12月21日申请且名称为“用于将应用函数卸载到装置的系统和方法”的美国临时专利申请第62/784,275号的优先权和权益,所述申请的全部内容特此以引用的方式明确地并入。
技术领域
根据本公开的实施例的一个或多个方面涉及一种用于将应用函数卸载到装置的系统和方法。
背景技术
在现代信息技术(information technology;IT)基础设施中,可通过各种装置和工艺产生相对大量的数据。这些数据产生器的一些实例包含智能装置(例如,iPhone、iPad等)、自动驾驶车辆、社交网络以及物联网(internet of things;IOT)装置。正在开发人工智能(Artificial intelligence;AI)和机器学习(machine learning;ML)算法以分析和使用收集到的数据,以实现更高的应用效率和生产率。鉴于IT基础设施的近期发展,可能需要处理和分析数据。
背景技术章节中的以上信息仅用于增进对所述技术的背景的理解,且因此所述信息不应理解为对现有技术的存在性或相关性的承认。
发明内容
本公开的目标
本公开的实施例的实例可提供一种用于将应用函数卸载到装置的系统和方法。
本公开的示例实施例的方面涉及一种用于将应用函数卸载到装置的系统和方法。根据本公开的一些示例实施例,一种系统包含:主机装置;存储装置,包含嵌入式处理器;以及桥接器内核装置,包含桥接器内核硬件和桥接器内核固件,其中桥接器内核装置配置成从主机装置接收多个变量参数且将多个变量参数传输到嵌入式处理器以用于数据处理。
在一些实施例中,桥接器内核装置的实现对主机装置透明,其中桥接器内核装置对主机装置与桥接器内核装置之间的输送机构不可知,其中输送机构是外围组件互连快速(peripheral component interconnect express;PCIe)或以太网连接中的一个。在一些实施例中,存储装置是固态驱动器(solid state drive;SSD),且嵌入式处理器是现场可编程门阵列(field programmable gate array;FPGA)处理器或SSD控制器或分立协处理器,其中:嵌入式处理器包含配置成在嵌入式处理器上执行的经卸载应用函数,嵌入式处理器进一步包含桥接器内核固件,桥接器内核装置将从主机装置接收到的多个变量参数传输到经卸载应用函数,且桥接器内核装置提取从主机装置的主机寄存器接口接收到的多个变量参数。
在一些实施例中,存储装置进一步包含先进先出(first in,first out;FIFO)寄存器和动态随机存取存储器(dynamic random-access memory;DRAM),DRAM包含多个数据缓冲器和握手区以存储从主机装置接收到的多个变量参数,且其中FIFO寄存器和DRAM以通信方式耦合到桥接器内核硬件。在一些实施例中,FIFO寄存器配置成将多个变量参数传送到并入有经卸载应用函数的嵌入式处理器以用于数据处理。在一些实施例中,桥接器内核硬件配置成将从主机装置接收到的多个变量参数暂时存储到DRAM的握手区中。在一些实施例中,桥接器内核装置配置成充当在主机装置的客户应用模块上运行的主机应用的代理,其中主机应用对在何处或如何实现经卸载应用函数不可知。
在一些实施例中,主机装置包含客户应用模块和开放计算语言(open computinglanguage;OpenCL)模块,且其中主机装置配置成与存储装置建立外围组件互连快速(PCIe)或以太网连接。在一些实施例中,桥接器内核硬件包含多个硬件内核且桥接器内核固件包含多个软件内核,多个软件内核配置成在嵌入式处理器上运行,其中在主机装置的客户应用模块上运行的主机应用配置成通过OpenCL模块与多个软件内核和/或硬件内核介接。在一些实施例中,桥接器内核装置配置成基于成本函数从多个硬件内核和多个软件内核当中选择一个或多个内核以用于数据处理。
在一些实施例中,桥接器内核装置配置成基于使用从主机装置接收到的多个变量参数和存储参数或联网参数的成本函数来选择一个或多个内核以用于数据处理,其中从主机装置接收到的存储参数或联网参数包含提交队列标识符(Submission QueueIdentifier;SQID)、完成队列标识符(Completion Queue Identifier;CQID)、流ID、主机ID、逻辑块地址(Logical Block Address;LBA)范围、网络服务ID(Network Service ID;NSID)、媒体存取控制(Media Access Control;MAC)ID、传输控制协议(TransmissionControl Protocol;TCP)/互联网协议(Internet Protocol;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:实例。
具体实施方式
下文结合附图阐述的具体实施方式意图作为对根据本公开提供的用于将应用函数卸载到装置的系统和方法的一些示例实施例的描述,且不意图表示本公开可建构或利用的唯一形式。所述描述结合所示出的实施例来阐述本公开的特征。然而,将理解,可通过不同实施例来实现相同或等效的功能和结构,所述不同实施例也意图涵盖在本公开的范围内。如本文中其它地方所指示,相同元件编号意图指示相同元件或特征。
在一些系统架构中,可将数据从永久存储提取到相对高性能的服务器,所述服务器可使用高性能网络连接到存储。就所消耗能量的量以及部署的计算和网络资源而言,将这种大量原始数据移动到中央处理单元(central processing unit;CPU)以用于处理和分析可能是昂贵的。这种大量原始数据的移动可增大资源(例如网络带宽、CPU周期以及CPU存储器)上的负担。将大量原始数据移动到服务器以用于处理还可能增大由在服务器上运行的应用经历的延时。
在一些情况下,在完成处理和作出决策之前,应用可能首先需要等待将数据提取到服务器。这些所添加的资源要求可导致较高资本支出和运营成本花费。因此,尽可能在存储装置(例如,固态驱动器(SSD))内处理原始数据可表示许多数据分析使用情况(例如,针对增长的原始数据量的货币化的使用情况)的有成本效益的解决方案。另外,通过减少数据移动,可改善系统运行应用的响应延时。
此外,采用数据分析任务的系统可经常读取相对大量的数据、处理所述数据且通过过滤和其它数据简化操作来简化所述数据。这些和许多其它类似任务可使用基于SSD的服务来实现,这是因为这些任务可利用装置(例如,SSD)内的较高可用带宽,且通过仅移动简化的结果来节省SSD与CPU之间的有限带宽(例如,外围组件互连快速(PCIe)接口或在远程直接附接存储(remote direct attached storage;RDAS)的情况下的网络结构接口)。因此,用于处理更靠近存储装置(例如,SSD)或所述存储装置内部的数据的技术合乎高效且有成本效益的数据处理的需要。
本公开的一些实施例包含用于将应用函数卸载到计算存储装置(例如,具有嵌入式处理器的SSD)的方法和系统,其可在一些实例中产生高效且有成本效益的数据处理解决方案。智能存储装置(例如,具有嵌入式处理器的SSD)可提供用于执行可以其它方式通过主机CPU处理器执行的数据处理功能的至少一部分的平台。就能量消耗、网络带宽、CPU周期、存储器等而言,在智能SSD或类似存储装置内部执行那些数据处理功能可为存储网络提供益处。
在一些实例中,可使用具有嵌入式处理器(例如,FPGA或SSD控制器或分立协处理器)的存储装置中的寄存器传输级(register-transfer level;RTL)逻辑、高级合成(high-level synthesis;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-VolatileMemory express;NVMe)(Non-Volatile Memory express over Fabrics;NVMe-oF)相容的以太网SSD(Ethernet SSD;eSSD),或具有加速能力的NVMe SSD)。主机102包含用户应用106的模块和开放计算语言(OpenCL)模块108。OpenCL模块108可用于表示计算卸载应用编程接口(例如,这可应用于主机102与存储装置104(例如,SSD)之间的任何计算卸载接口)。主机102可使用外围组件互连快速(PCIe)或以太网连接来建立与存储装置104的连接。
存储装置104包含桥接器内核。在一些实施例中,桥接器内核可包含桥接器内核硬件110和桥接器内核固件116。存储装置104进一步包含嵌入式处理器112、先进先出(FIFO)寄存器118以及动态随机存取存储器(DRAM)。DRAM 120包含数据缓冲器122和握手区124。嵌入式处理器112包含经卸载应用函数114和桥接器内核固件116。
在一些实施例中,系统100中的主机102可进一步包含操作系统(operatingsystem;OS)和文件系统(file system;FS),以及NVMe-oF驱动器。在一些实施例中,存储装置104可以在包含以太网交换机、主板管理控制器(baseboard management controller;BMC)以及PCIe交换机的机箱(未绘示)内部。以太网交换机提供通过中板与存储装置104(例如,智能SSD)的以太网连接,且PCIe交换机提供通过中板对存储装置104的管理接口。BMC可根据由系统管理员给出的指令来对存储装置104进行编程。BMC可管理包含以太网交换机、PCIe交换机以及存储装置104的机箱的内部组件。BMC可支持PCIe和/或用于系统管理的系统管理总线(system management bus;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的DRAM 120的握手区124的布局的实例。如图4中所示出,在一些实施例中,桥接器内核硬件110可将从主机102接收到的变量参数(例如,变量参数-1……变量参数-n)暂时存储到存储装置104(例如,智能SSD)的DRAM 120中的设定或预定存储器位置中。在一些实施例中,片上FIFO寄存器118的结构可用于将变量参数传送到并入经卸载应用函数114、固件以及桥接器内核固件116的嵌入式处理器112,而不是DRAM 120。
可将寄存器接口300的内容(例如变量参数-1到变量参数-n)暂时存储到DRAM 120的握手区124中。一旦将变量参数暂时存储在DRAM 120中,桥接器内核硬件110就可在DRAM120的握手区124中设定“就绪”标志128。在所述时刻处,桥接器内核硬件110可等待在固件(例如,桥接器内核固件116)上运行的经卸载函数完成处理。因此,为了确定经卸载函数处理的完成,桥接器内核硬件110可在DRAM 120的握手区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)暂时存储在DRAM 120的握手区124中。一旦将变量参数暂时存储在DRAM 120中,桥接器内核硬件110就在步骤507处在DRAM 120的握手区124中设定“就绪”标志128。
在所述时刻处,桥接器内核硬件110基于变量参数等待固件(例如,桥接器内核固件116)中的经卸载函数完成其处理。为了所述目的,在步骤509处,桥接器内核硬件110在DRAM 120的握手区124中轮询“完成”标志130。在一些实施例中,一旦桥接器内核硬件110检测到“完成”标志130,桥接器内核硬件110就可从DRAM 120的握手区124读取任何错误或其它状态。桥接器内核硬件110将所述错误和/或其它状态132更新到寄存器接口300(如图3中所绘示)的适合的寄存器中。桥接器内核硬件110接着设定“完成”标志130的寄存器,这继而通过主机应用软件134轮询以指示经卸载函数调用的完成。
在步骤511处,桥接器内核硬件110在主机寄存器接口(例如,图3的主机寄存器接口300)中设定就绪标志。在步骤511之后,桥接器内核硬件110返回到步骤501。
图6示出桥接器内核固件操作。桥接器内核固件可以是图1A的桥接器内核固件116。
在步骤601处,桥接器内核固件116保持在空闲状态下。在步骤603处,通过在嵌入式处理器112上运行的桥接器内核固件116轮询DRAM 120中的“就绪”标志128。换句话说,桥接器内核固件116充当使用适合的变量参数来叫用经卸载函数(例如,经卸载应用函数114)的卸载管理器。当桥接器内核固件116检测到设定“就绪”标志时,桥接器内核固件116在步骤605处提取暂时存储在DRAM 120的握手区124中的变量参数(例如,变量参数-1……变量参数-n)。在步骤607处,桥接器内核固件116使用主机102的变量参数调用经卸载应用函数114。经卸载应用函数114使用变量参数(例如,变量参数-1……变量参数-n)且按照设计执行数据处理功能。经卸载应用函数114的实例绘示在实例608处。一旦数据处理完成,经卸载应用函数114就在步骤609处使调用返回到桥接器内核固件116。在步骤611处,桥接器内核固件116在DRAM 120中的握手区124中设定“完成”标志。如早先所描述,“完成”标志继而通过桥接器内核硬件110轮询以便将完成发送回主机102。在步骤611之后,桥接器内核固件116返回到步骤601。
在一些实施例中,桥接器内核充当(例如,在用户应用106中运行的)主机应用的代理。举例来说,(例如,在用户应用106中运行的)主机应用对在何处或如何实现经卸载函数不可知。在一些实施例中,内核实现可对主机102透明。在一些实施例中,内核可在嵌入式处理器(例如,嵌入式处理器112)上作为软件内核实现。然而,在一些实施例中,内核可在硬件门(例如,桥接器内核硬件110)中实现。
在一些实施例中,桥接器内核自身可对经卸载函数(例如,经卸载应用函数114)不可知,这可实现用户保密性(例如,IP地址保密性)。因此,用户可在不对存储装置用户显露的情况下创建其自己的经卸载函数作为软件内核或硬件内核。也就是说桥接器内核机构的示例实施例可充当可由用户用以将其私有加速函数卸载到存储装置的平台。在一些实施例中,与内核和/或经卸载函数的主机接口可以不改变(例如,内核可在没有显著主机侧改变的情况下升级到高性能版本)。在这种情况下,桥接器内核(例如,桥接器内核硬件110)RTL可向主机应用(例如,用户应用106)提供标准或商定接口。
在一些实施例中,桥接器内核(例如,桥接器内核硬件110)可使用FPGA DRAM(例如,DRAM 120)存储器来与桥接器内核固件116进行握手。在其它实施例中,桥接器内核硬件110可使用片上FIFO(例如,FIFO寄存器118)来与桥接器内核固件116进行握手。在一些实施例中,桥接器内核(例如,桥接器内核硬件110)的RTL可使用FPGA DRAM(例如,DRAM 120)来将变量参数传送到在嵌入式处理器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。本文中所述的任何最大数值限制都意图包含归入于其中的所有更低数值限制,且本说明书中所述的任何最小数值限制都意图包含归入于其中的所有更高数值限制。
在一些实施例中,可将本公开的方法和系统的不同实施例的一个或多个输出发送到耦合到显示装置或具有显示装置的电子件装置,所述显示装置用于显示一个或多个输出或关于本公开的方法和系统的不同实施例的一个或多个输出的信息。
本文中所描述的根据本公开的实施例的电子或电气装置和/或任何其它相关装置或组件可利用任何合适的硬件、固件(例如,专用集成电路)、软件或软件、固件以及硬件的组合来实现。举例来说,这些装置的各种组件可在一个集成电路(integrated circuit;IC)芯片上或在独立IC芯片上形成。另外,这些装置的各种组件可在柔性印刷电路膜、载带封装(tape carrier package;TCP)、印刷电路板(printed circuit board;PCB)上实现或在一个衬底上形成。另外,这些装置的各种组件可以是在一个或多个处理器上运行、位于一个或多个计算装置中、执行计算机程序指令以及与其它系统组件交互以用于执行本文中所描述的各种功能的进程或线程。计算机程序指令可存储在使用例如随机存取存储器(randomaccess memory;RAM)的标准存储器装置在计算装置中实现的存储器中。计算机程序指令也可存储在例如CD-ROM、闪存驱动器或类似物的其它非暂时性计算机可读介质中。此外,本领域的技术人员应认识到可将各种计算装置的功能性组合或集成到单个计算装置中,或可将特定计算装置的功能性分布于一个或多个其它计算装置上而不脱离本公开的示范性实施例的精神和范围。
尽管本文中已具体描述和示出了用于将应用函数卸载到装置的系统和方法的示范性实施例,但许多修改和变化对于本领域的技术人员而言将是显而易见的。因此,应理解,根据本公开的原理建构的用于将应用函数卸载到装置的系统和方法可以不同于本文中所具体描述的方式实施。本发明构思也定义于以上权利要求书和其等效物中。
Claims (20)
1.一种用于将应用函数卸载到装置的系统,包括:
主机装置;
存储装置,包含嵌入式处理器;以及
桥接器内核装置,包含桥接器内核硬件和桥接器内核固件,其中所述桥接器内核装置配置成从所述主机装置接收多个变量参数且将所述多个变量参数传输到所述嵌入式处理器以用于数据处理。
2.根据权利要求1所述的系统,其中所述桥接器内核装置的实现对所述主机装置透明,其中所述桥接器内核装置对所述主机装置与所述桥接器内核装置之间的输送机构不可知,其中所述输送机构是外围组件互连快速或以太网连接中的一个。
3.根据权利要求1所述的系统,其中所述存储装置是固态驱动器,且所述嵌入式处理器是现场可编程门阵列处理器或固态驱动器控制器或分立协处理器,其中:
所述嵌入式处理器包含配置成在所述嵌入式处理器上执行的经卸载应用函数,所述嵌入式处理器进一步包含所述桥接器内核固件,
所述桥接器内核装置将从所述主机装置接收到的所述多个变量参数传输到所述经卸载应用函数,且
所述桥接器内核装置提取从所述主机装置的主机寄存器接口接收到的所述多个变量参数。
4.根据权利要求3所述的系统,其中所述存储装置进一步包含先进先出寄存器和动态随机存取存储器,所述动态随机存取存储器包含多个数据缓冲器和握手区以存储从所述主机装置接收到的所述多个变量参数,且其中所述先进先出寄存器和所述动态随机存取存储器以通信方式耦合到所述桥接器内核硬件。
5.根据权利要求4所述的系统,其中所述先进先出寄存器配置成将所述多个变量参数传送到并入有所述经卸载应用函数的所述嵌入式处理器以用于数据处理。
6.根据权利要求4所述的系统,其中所述桥接器内核硬件配置成将从所述主机装置接收到的所述多个变量参数暂时存储到所述动态随机存取存储器的所述握手区中。
7.根据权利要求4所述的系统,其中所述桥接器内核装置配置成充当在所述主机装置的客户应用模块上运行的主机应用的代理,其中所述主机应用对在何处或如何实现所述经卸载应用函数不可知。
8.根据权利要求4所述的系统,其中所述主机装置包含客户应用模块和开放计算语言模块,且其中所述主机装置配置成与所述存储装置建立外围组件互连快速或以太网连接。
9.根据权利要求8所述的系统,其中所述桥接器内核硬件包含多个硬件内核且所述桥接器内核固件包含多个软件内核,所述多个软件内核配置成在所述嵌入式处理器上运行,其中在所述主机装置的所述客户应用模块上运行的主机应用配置成通过所述开放计算语言模块与所述多个软件内核和所述多个硬件内核中的至少一个介接。
10.根据权利要求9所述的系统,其中所述桥接器内核装置配置成基于成本函数从所述多个硬件内核和所述多个软件内核当中选择一个或多个内核以用于数据处理。
11.根据权利要求10所述的系统,其中所述桥接器内核装置配置成基于使用从所述主机装置接收到的所述多个变量参数和存储参数或联网参数的所述成本函数来选择所述一个或多个内核以用于数据处理,其中从所述主机装置接收到的所述存储参数或所述联网参数包含提交队列标识符、完成队列标识符、流标识符、主机标识符、逻辑块地址范围、网络服务标识符、媒体存取控制标识符、传输控制协议/互联网协议字段、应用类型、应用标识符或与所述主机装置相关联的时间和日期中的至少一个。
12.根据权利要求11所述的系统,其中所述桥接器内核装置配置成使用所述先进先出寄存器从所述多个硬件内核和所述多个软件内核当中选择一个或多个内核以用于数据处理。
13.根据权利要求12所述的系统,其中所述桥接器内核固件配置成提取所述动态随机存取存储器的所述握手区中的所述多个变量参数且使用从所述主机装置接收到的所述多个变量参数来调用所述经卸载应用函数。
14.根据权利要求13所述的系统,其中所述经卸载应用函数配置成使用所述多个变量参数以用于数据处理。
15.一种用于将应用函数卸载到装置的方法,包括:
通过存储装置中的桥接器内核装置从连接到所述存储装置的主机装置接收触发;
通过所述桥接器内核装置提取从所述主机装置接收到的多个变量参数,其中所述桥接器内核装置配置成从主机寄存器接口提取所述多个变量参数;
通过所述桥接器内核装置将所述多个变量参数存储在所述存储装置的动态随机存取存储器中,其中在所述动态随机存取存储器的握手区中存储所述多个变量参数;
通过所述桥接器内核装置在所述动态随机存取存储器中设定第一就绪标志,其中在所述动态随机存取存储器的所述握手区中设定所述第一就绪标志;
基于所述桥接器内核装置确定基于所述多个变量参数对所述存储装置的嵌入式处理器中的所述桥接器内核装置的固件中的经卸载函数的处理完成,通过所述桥接器内核装置来在所述动态随机存取存储器中轮询完成标志,其中在所述动态随机存取存储器的所述握手区中轮询所述完成标志;以及
通过所述桥接器内核装置在所述主机寄存器接口中设定第二就绪标志。
16.根据权利要求15所述的方法,还包括:
通过所述桥接器内核装置基于检测所述动态随机存取存储器的所述握手区中的所述完成标志来从所述动态随机存取存储器的所述握手区读取错误或状态;以及通过所述桥接器内核装置将所述错误或所述状态更新到所述主机寄存器接口中。
17.根据权利要求15所述的方法,还包括:
通过所述桥接器内核装置的所述固件在所述动态随机存取存储器中轮询所述第一就绪标志;
通过所述桥接器内核装置的所述固件提取所述动态随机存取存储器的所述握手区中的多个变量参数;
通过所述桥接器内核装置的所述固件使用所述多个变量参数来调用所述存储装置的所述嵌入式处理器中的经卸载应用函数以用于数据处理;
通过所述经卸载应用函数基于所述数据处理的完成来使通过所述桥接器内核装置的所述固件调用的所述经卸载应用函数返回到所述桥接器内核装置的所述固件;以及
通过所述桥接器内核装置的所述固件在所述动态随机存取存储器的所述握手区中设定完成标志。
18.一种用于将应用函数卸载到装置的系统,包括:
存储装置,包含嵌入式处理器;以及
桥接器内核装置,配置成从主机装置接收多个变量参数且将所述多个变量参数传输到所述嵌入式处理器以用于数据处理。
19.根据权利要求18所述的系统,其中所述桥接器内核装置包含桥接器内核硬件和桥接器内核固件,
其中所述存储装置是固态驱动器,且所述嵌入式处理器是现场可编程门阵列处理器或固态驱动器控制器或分立协处理器,
其中所述嵌入式处理器包含经卸载应用函数和所述桥接器内核固件,且
其中所述桥接器内核装置将从所述主机装置接收到的所述多个变量参数传输到配置成在所述嵌入式处理器上执行的所述经卸载应用函数,其中所述桥接器内核装置从主机寄存器接口提取从所述主机装置接收到的所述多个变量参数。
20.根据权利要求19所述的系统,其中所述存储装置还包含先进先出寄存器和动态随机存取存储器,其中所述动态随机存取存储器还包含多个数据缓冲器和握手区,其中所述先进先出寄存器和所述动态随机存取存储器以通信方式耦合到所述桥接器内核硬件,
其中所述桥接器内核硬件包含多个硬件内核且所述桥接器内核固件包含多个软件内核,所述多个软件内核配置成在所述嵌入式处理器中运行,
其中所述桥接器内核装置配置成基于使用从所述主机装置接收到的所述多个变量参数和存储参数或联网参数的成本函数来从所述多个硬件内核和所述多个软件内核当中选择一个或多个内核以用于数据处理,
其中从所述主机装置接收到的所述存储参数或联网参数是提交队列标识符、完成队列标识符、流标识符、主机标识符、逻辑块地址范围、网络服务标识符、媒体存取控制标识符、传输控制协议/互联网协议字段、应用类型、应用标识符或与所述主机装置相关联的时间和日期中的至少一个,且
其中所述桥接器内核装置配置成使用所述先进先出寄存器从所述多个硬件内核和所述多个软件内核当中选择所述一个或多个内核以用于数据处理。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862784275P | 2018-12-21 | 2018-12-21 | |
US62/784,275 | 2018-12-21 | ||
US16/543,264 US11204819B2 (en) | 2018-12-21 | 2019-08-16 | System and method for offloading application functions to a device |
US16/543,264 | 2019-08-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111352666A true CN111352666A (zh) | 2020-06-30 |
Family
ID=71096874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911311441.2A Pending CN111352666A (zh) | 2018-12-21 | 2019-12-18 | 用于将应用函数卸载到装置的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11204819B2 (zh) |
JP (1) | JP7506472B2 (zh) |
KR (1) | KR20200078331A (zh) |
CN (1) | CN111352666A (zh) |
TW (1) | TW202042059A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114035842A (zh) * | 2022-01-07 | 2022-02-11 | 飞腾信息技术有限公司 | 固件配置方法、计算系统配置方法、计算装置以及设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11016755B2 (en) * | 2019-07-31 | 2021-05-25 | Dell Products L.P. | System and method to secure embedded controller flashing process |
KR20210113859A (ko) * | 2020-03-09 | 2021-09-17 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그 동작 방법 |
CN113051206A (zh) * | 2020-05-04 | 2021-06-29 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
US11687276B2 (en) | 2021-01-26 | 2023-06-27 | Seagate Technology Llc | Data streaming for computational storage |
JP2022143959A (ja) | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、方法及びデータ処理システム |
US11675540B2 (en) | 2021-08-05 | 2023-06-13 | Seagate Technology Llc | In-line data flow for computational storage |
US20230114636A1 (en) * | 2021-10-12 | 2023-04-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for accessing a device program on a storage device |
US20230214269A1 (en) * | 2022-01-05 | 2023-07-06 | Dell Products L.P. | Method and system for performing computational offloads for composed information handling systems |
US11728979B2 (en) | 2022-01-05 | 2023-08-15 | Dell Products L.P. | Method and system for performing telemetry services for composed information handling systems |
US20230229497A1 (en) * | 2022-01-17 | 2023-07-20 | Xilinx, Inc. | Transparent and remote kernel execution in a heterogeneous computing system |
CN115145592A (zh) * | 2022-09-01 | 2022-10-04 | 新华三技术有限公司 | 离线模型部署方法和装置、网络设备、分析器 |
CN116541336B (zh) * | 2023-07-04 | 2024-06-11 | 南方电网数字电网研究院有限公司 | 多核芯片、协处理器的软件运行方法 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US7870384B2 (en) * | 2002-11-06 | 2011-01-11 | International Business Machines Corporation | Offload processing for secure data transfer |
US20060143506A1 (en) | 2004-12-29 | 2006-06-29 | Lsi Logic Corporation | RAID storage controller assist circuit, systems and methods |
WO2006110952A1 (en) * | 2005-04-19 | 2006-10-26 | Fairlight.Au Pty Ltd | Media processing system and method |
US8151323B2 (en) | 2006-04-12 | 2012-04-03 | Citrix Systems, Inc. | Systems and methods for providing levels of access and action control via an SSL VPN appliance |
US8019929B2 (en) * | 2006-09-13 | 2011-09-13 | Rohm Co., Ltd. | Data processing apparatus and data control circuit for use therein |
US7958280B2 (en) * | 2006-10-27 | 2011-06-07 | Stec, Inc. | Parallel data transfer in solid-state storage |
KR20090102789A (ko) | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
US7660933B2 (en) * | 2007-10-11 | 2010-02-09 | Broadcom Corporation | Memory and I/O bridge |
JP4839489B2 (ja) | 2008-02-06 | 2011-12-21 | Necシステムテクノロジー株式会社 | ディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラム |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
JP5225010B2 (ja) | 2008-10-14 | 2013-07-03 | キヤノン株式会社 | プロセッサ間通信方法、マルチプロセッサシステム及びプロセッサ。 |
US20110283059A1 (en) * | 2010-05-11 | 2011-11-17 | Progeniq Pte Ltd | Techniques for accelerating computations using field programmable gate array processors |
CN103415844B (zh) * | 2011-01-18 | 2016-04-20 | 希捷科技有限公司 | 用于高级冗余信息计算的系统和方法 |
US20120331278A1 (en) * | 2011-06-23 | 2012-12-27 | Mauricio Breternitz | Branch removal by data shuffling |
US20140059278A1 (en) | 2011-11-14 | 2014-02-27 | Lsi Corporation | Storage device firmware and manufacturing software |
US8848741B2 (en) | 2012-06-21 | 2014-09-30 | Breakingpoint Systems, Inc. | High-speed CLD-based TCP segmentation offload |
KR20140067737A (ko) | 2012-11-27 | 2014-06-05 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
WO2014113056A1 (en) | 2013-01-17 | 2014-07-24 | Xockets IP, LLC | Offload processor modules for connection to system memory |
US20150052280A1 (en) * | 2013-08-19 | 2015-02-19 | Emulex Design & Manufacturing Corporation | Method and system for communications-stack offload to a hardware controller |
US10326448B2 (en) * | 2013-11-15 | 2019-06-18 | Scientific Concepts International Corporation | Code partitioning for the array of devices |
US10332229B2 (en) * | 2014-05-12 | 2019-06-25 | Palo Alto Research Center Incorporated | System and method for high performance k-means clustering on GPU with smart kernels |
WO2015193947A1 (ja) | 2014-06-16 | 2015-12-23 | 株式会社日立製作所 | 物理計算機及び仮想計算機移行方法 |
US11099918B2 (en) * | 2015-05-11 | 2021-08-24 | Xilinx, Inc. | Accelerating algorithms and applications on FPGAs |
US10075524B1 (en) * | 2015-09-29 | 2018-09-11 | Amazon Technologies, Inc. | Storage bridge device for communicating with network storage |
JP2017102552A (ja) | 2015-11-30 | 2017-06-08 | 日本電気株式会社 | コンピュータシステム |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
US20180115496A1 (en) * | 2016-10-21 | 2018-04-26 | Advanced Micro Devices, Inc. | Mechanisms to improve data locality for distributed gpus |
US10235202B2 (en) * | 2016-11-08 | 2019-03-19 | International Business Machines Corporation | Thread interrupt offload re-prioritization |
US10545860B2 (en) * | 2017-08-10 | 2020-01-28 | Samsung Electronics Co., Ltd. | Intelligent high bandwidth memory appliance |
WO2019043710A1 (en) * | 2017-08-31 | 2019-03-07 | Rail Vision Ltd | SYSTEM AND METHOD FOR IMPROVING FLOW IN NUMEROUS CALCULATIONS |
US10445118B2 (en) * | 2017-09-22 | 2019-10-15 | Intel Corporation | Methods and apparatus to facilitate field-programmable gate array support during runtime execution of computer readable instructions |
US10719474B2 (en) | 2017-10-11 | 2020-07-21 | Samsung Electronics Co., Ltd. | System and method for providing in-storage acceleration (ISA) in data storage devices |
US10896139B2 (en) * | 2018-03-15 | 2021-01-19 | Western Digital Technologies, Inc. | Methods and apparatus for host register access for data storage controllers for ongoing standards compliance |
US20200301898A1 (en) * | 2018-06-25 | 2020-09-24 | BigStream Solutions, Inc. | Systems and methods for accelerating data operations by utilizing dataflow subgraph templates |
US10719462B2 (en) * | 2018-09-25 | 2020-07-21 | Intel Corporation | Technologies for computational storage via offload kernel extensions |
US11074101B2 (en) * | 2018-10-23 | 2021-07-27 | International Business Machines Corporation | Automated switching between interrupt context I/O processing and thread context I/O processing |
-
2019
- 2019-08-16 US US16/543,264 patent/US11204819B2/en active Active
- 2019-11-22 TW TW108142424A patent/TW202042059A/zh unknown
- 2019-12-03 KR KR1020190159399A patent/KR20200078331A/ko active Search and Examination
- 2019-12-18 CN CN201911311441.2A patent/CN111352666A/zh active Pending
- 2019-12-20 JP JP2019229993A patent/JP7506472B2/ja active Active
-
2021
- 2021-12-15 US US17/552,276 patent/US20220107857A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114035842A (zh) * | 2022-01-07 | 2022-02-11 | 飞腾信息技术有限公司 | 固件配置方法、计算系统配置方法、计算装置以及设备 |
CN114035842B (zh) * | 2022-01-07 | 2022-04-08 | 飞腾信息技术有限公司 | 固件配置方法、计算系统配置方法、计算装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
TW202042059A (zh) | 2020-11-16 |
US11204819B2 (en) | 2021-12-21 |
KR20200078331A (ko) | 2020-07-01 |
US20200201692A1 (en) | 2020-06-25 |
US20220107857A1 (en) | 2022-04-07 |
JP7506472B2 (ja) | 2024-06-26 |
JP2020102218A (ja) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352666A (zh) | 用于将应用函数卸载到装置的系统和方法 | |
US10877766B2 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
CN107003955B (zh) | 用于在根复合体中集成设备的方法、装置和系统 | |
US8954997B2 (en) | Resource affinity via dynamic reconfiguration for multi-queue network adapters | |
KR102593583B1 (ko) | Ssd들 상에서의 가속된 데이터 처리를 위한 시스템 및 방법 | |
US11086812B2 (en) | Platform environment control interface tunneling via enhanced serial peripheral interface | |
CN111695672A (zh) | 用于提高ai引擎mac利用率的方法 | |
JP5669851B2 (ja) | 論理的にパーティション化されたシステムにおいてパーティション間の効率的なコミュニケーションを行うための装置、方法、及びコンピュータ・プログラム | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
KR20180105554A (ko) | 지역 베이스보드 관리 제어기를 이용하여 패브릭 시스템에 걸쳐 불휘발성 메모리 익스프레스 내에서 공유된 그래픽 처리부 자원들을 할당하는 방법 | |
CN114691354A (zh) | 动态分解及线程分配 | |
EP2690558A1 (en) | Semiconductor device | |
US20110055831A1 (en) | Program execution with improved power efficiency | |
US11347512B1 (en) | Substitution through protocol to protocol translation | |
US20190042456A1 (en) | Multibank cache with dynamic cache virtualization | |
US11366690B2 (en) | Scheduling commands in a virtual computing environment | |
US11281482B2 (en) | I/O emulation with abortion in virtualized environments including transfer of portions of non-real time I/O emulation to work threads prior to switching contexts | |
US11119787B1 (en) | Non-intrusive hardware profiling | |
CN113439260A (zh) | 针对低时延存储设备的i/o完成轮询 | |
US11907144B1 (en) | Early semaphore update | |
US20230195664A1 (en) | Software management of direct memory access commands | |
US20230333879A1 (en) | System for the Remote Execution of Applications | |
US20230333921A1 (en) | Input/output (i/o) virtualization acceleration | |
KR20220077484A (ko) | 능동적 스케줄링 방법과 컴퓨팅 장치 | |
CN117631975A (zh) | 控制参数地址虚拟化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |