CN111194437B - 使用存储中代码执行的数据处理卸载 - Google Patents
使用存储中代码执行的数据处理卸载 Download PDFInfo
- Publication number
- CN111194437B CN111194437B CN201880063143.3A CN201880063143A CN111194437B CN 111194437 B CN111194437 B CN 111194437B CN 201880063143 A CN201880063143 A CN 201880063143A CN 111194437 B CN111194437 B CN 111194437B
- Authority
- CN
- China
- Prior art keywords
- storage device
- portable code
- data processing
- storage
- code
- 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.)
- Active
Links
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了用于使用存储中代码执行来卸载数据处理任务的系统和方法。例如,数据存储系统,包括一个或多个处理器、非暂态存储介质以及可由所述一个或多个处理器执行以执行操作的存储逻辑,所述操作包括:接收被配置为执行数据处理卸载任务的可移植代码,所述可移植代码包括用于处理所述存储介质中存储的数据的一个或多个可翻译的、硬件中立指令,所述指令包括:使用设置在所述存储逻辑中的翻译和执行引擎来翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立的指令,以执行所述数据处理卸载任务;确定所述可移植代码的使用已结束;以及响应于确定所述可移植代码的使用已结束来释放所述可移植代码。
Description
背景技术
本公开涉及用于分布式数据处理的系统和方法。具体地,本公开涉及用于使用存储中代码执行来卸载数据处理任务的方法。
有许多应用程序需要某种数据处理,例如,扫描数据集以查找某模式、数据排序、索引构建、数据压缩等。这些包括涉及MapReduce任务的“大数据”应用程序。执行此类应用程序的主机设备可能需要从存储设备读取整个数据集以用于数据处理,然后在数据处理完成之后将新生成的所得数据集写回存储装置。此类活动通常在主机与存储装置之间的总线或网络上生成大量流量,给主机造成不必要的负担,并且消耗显著量的电力。
当前用于克服以上问题的方法可包括将数据处理任务从主机设备卸载到存储设备。在这种方法中,主机编译数据处理任务的源代码,并且向存储设备发送所得编译的二进制代码,以在存储设备内执行。然而,这种用于将数据处理任务卸载到存储设备的方法有很多缺陷。第一,数据处理任务可仅被卸载到具有与所编译的二进制代码兼容的特定硬件架构的有限范围的存储设备。第二,从主机发送至存储设备的二进制代码可能易受安全性问题的影响,该安全性问题需要在存储设备上使用复杂而资源密集的措施(例如,挖隧道、容器)以保护数据处理任务的完整性。第三,由于无法考虑到执行期间在存储设备上可能发生的实时操作条件,数据处理任务可能无法在存储设备上最佳地运行。
因此,需要一种方法和系统,例如以提供最佳性能的灵活、安全和资源有效的方式将数据处理任务卸载到存储系统上。
发明内容
本公开涉及用于使用存储中代码执行来卸载数据处理任务的系统和方法。
根据一个创新方面,一种数据存储系统包括一个或多个处理器、非暂态存储介质以及可由一个或多个处理器执行以执行操作的存储逻辑,该操作包括:接收被配置为执行数据处理卸载任务的可移植代码,可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理存储介质上存储的数据;使用设置在存储逻辑中的翻译和执行引擎来翻译和执行可移植代码的一个或多个可翻译的、硬件中立指令,以执行数据处理卸载任务;确定可移植代码的使用已结束;以及响应于确定可移植代码的使用已结束来释放可移植代码。
根据另一个创新方面,一种方法包括接收被配置为执行数据处理卸载任务的可移植代码,可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理非暂态存储介质上存储的数据;使用设置在数据存储系统中的翻译和执行引擎来翻译和执行可移植代码的一个或多个可翻译的、硬件中立指令,以执行数据处理卸载任务;确定可移植代码的使用已结束;以及响应于确定可移植代码的使用已结束来释放可移植代码。
根据另一个创新方面,一种数据存储系统包括一个或多个处理器,非暂态存储介质,用于接收被配置为执行数据处理卸载任务的可移植代码的装置,可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理存储介质上存储的数据,用于翻译和执行可移植代码的一个或多个可翻译的、硬件中立指令以执行数据处理卸载任务的装置,用于确定可移植代码的使用已结束的装置,以及用于响应于确定可移植代码的使用已结束而释放可移植代码的装置。
这些和其他具体实施可各自可选地包括一个或多个以下特征:翻译和执行一个或多个可翻译的、硬件中立指令包括使用翻译和执行引擎中的解译器分别和顺序地执行可移植代码的一个或多个可翻译的、机器中立指令中的每个;可移植代码的一个或多个可翻译的、机器中立指令包括源代码指令;可移植代码的一个或多个可翻译的、机器中立指令包括字节码指令,并且字节码指令被专门配置为执行数据处理卸载任务;翻译和执行一个或多个可翻译的、硬件中立指令包括:使用翻译和执行引擎中的编译器将可移植代码的一个或多个可翻译的、机器中立指令编译成数据存储系统本机的机器码,以及执行机器码;可移植代码包括被配置为执行数据处理卸载任务的过程;由存储逻辑执行的操作还包括确定可移植代码类型,基于所确定的可移植代码类型在翻译和执行引擎中选择翻译器,以及使用所选择的翻译器来翻译可移植代码的可翻译的、硬件中立指令;翻译和执行一个或多个可翻译的、硬件中立指令包括确定数据存储系统的当前操作条件,基于所确定的数据存储系统的当前操作条件来确定是否在翻译和执行期间执行某动作,以及以优化数据存储系统的数据处理卸载任务的性能的对应方式来翻译和执行一个或多个可翻译的、硬件中立指令;用于执行数据处理卸载任务的可移植代码以预编译格式存储在数据存储系统上;数据处理卸载任务包括对非暂态存储介质上存储的一个或多个数据项执行MapReduce、计数、过滤、压缩和加密类型的操作中的一者;一个或多个处理器包括执行存储逻辑的一个或多个操作的一个或多个可编程集成电路;数据存储系统还包括存储设备,该存储设备包括一个或多个处理器、非暂态存储介质、和存储逻辑、以及耦接到存储设备的主机系统,主机系统包括一个或多个第二处理器和可由一个或多个第二处理器执行以执行操作的第二逻辑,该操作包括:将可移植代码加载到存储设备中以供存储设备翻译和执行,检测由存储设备翻译和执行可移植代码的完成,以及从存储设备卸载可移植代码。
本文所述的新型技术的各方面包括各种系统、方法、设备、非暂态存储介质、计算机实现的软件,而其他方面包括若干创新技术的特征和优势,包括但不限于:(1)数据处理系统的性能提高和功耗降低,(2)数据处理任务的可移植性,以及(3)数据处理任务执行中的安全性改善。
例如,技术可通过在执行数据处理任务时有效而优化地使用系统资源来提高数据处理系统的性能并且降低其功耗。一些实施方案可利用存储设备的内部资源和带宽,这些内部资源和带宽在现有数据处理系统的数据处理期间一般未被充分利用。例如,固态驱动(SSD)的内部带宽通常比外部可用带宽大两倍或更多倍,以使得它们可更有效地执行内部垃圾回收活动。因此,如果将数据处理任务被卸载到存储设备中,则这些任务的性能可提高两倍或更多。此外,通过卸载数据处理任务,数据流量可从主机与存储设备之间的总线或网络大幅减少,从而进一步提高总体性能,因为在许多数据中心环境中,网络带宽是主要的性能限制因素。例如,在用于MapReduce类型的加载的“大数据”应用程序中,整个映射阶段可被完全卸载到存储设备中。在一些情况下,Shuffle/Reduce阶段也可被至少部分地卸载。减少数据流量可具有降低数据处理系统功耗的额外益处。
此外,技术可通过平衡所卸载的数据处理任务的执行与由存储设备同时执行的其他活动来提高数据处理系统的性能,如下面进一步详细解释。
在一些情况下,技术可提供数据处理任务的可移植性,以使得它们可被卸载到多种不同的存储平台和设备。数据处理任务的可移植性可通过以可移植代码(例如,源代码或字节码)的形式卸载数据处理过程来实现,该可移植代码可易于移植到多种硬件平台以用于执行。
此外,技术可通过验证所卸载的数据处理过程中所接收的源代码和/或字节码在被执行之前未违反定义的安全性规则来提供数据处理任务执行中的安全性改善。
这些方面中的一个或多个的其他实施方式包括对应的系统、装置和计算机程序,其被配置为执行编码在计算机存储设备上的方法的动作。应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
本文介绍的技术通过示例而非限制的方式在附图中示出,在附图中,相同的附图标记用于指相似的元件。
图1是示例数据处理系统的框图。
图2是被包括在图1的数据处理系统中的示例主机设备的框图。
图3是被包括在图1的数据处理系统中的示例存储设备的框图。
图4是用于由图2的主机设备执行数据处理卸载的示例方法的流程图。
图5是用于由图3的存储设备执行数据处理卸载的示例方法的流程图。
图6A是用于执行图5的翻译和执行可移植代码块的示例方法的流程图,其中翻译器是编译器。
图6B是用于执行图5的翻译和执行可移植代码块的示例方法的流程图,其中翻译器是解译器。
图7是用于执行图5的翻译和执行可移植代码块的示例方法的流程图,该示例方法优化存储设备的性能和/或安全性。
具体实施方式
公开了一种新型数据处理技术,诸如但不限于,用于使用存储中代码执行来卸载数据处理任务的系统、设备和方法。虽然下面在各种情况下的特定系统架构的上下文中描述了这种技术,但是应当理解,系统和方法可应用于硬件的其他架构和组织。
参照附图,图1是示例数据处理系统100的框图。如图所示,除其他部件外,数据处理系统100可包括,一个或多个主机设备106a、…、106n,一个或多个存储设备110a、…、110n,网络102,以及可选地,控制节点120。
主机设备106可包括任何已知的或未来开发的计算机(例如,服务器或客户端),该计算机能够执行数据处理任务并且经由网络102访问一个或多个存储设备110。以举例而非限制的方式,主机设备可包括一个或多个硬件服务器、服务器阵列、存储设备和/或系统等,和/或可以是集中式或分布式/基于云的。在一些实施方案中,主机设备106可包括一个或多个虚拟服务器,该虚拟服务器在主机服务器环境中操作并且经由抽象层(例如,虚拟机管理器)访问主机服务器的物理硬件,包括例如,处理器、存储器、存储装置、网络接口等。
如下面更详细解释,主机设备106可执行各种软件程序诸如系统软件(例如,操作系统、编译器和驱动器)、应用程序等。主机设备106作为其相应操作的一部分,可依赖于向一个或多个存储设备110发送输入/输出(I/O)请求以写入数据、读取数据和/或修改数据等。例如,主机设备106可向一个或多个存储设备110发送I/O请求以写入、读取、存储、通信、传播和/或传输指令、数据、计算机程序、软件、代码、例程等。一个或多个存储设备110可由一个或多个主机设备106访问和/或与一个或多个存储设备110的通信可由一个或多个主机设备106利用一种或多种进程间联网技术通过网络套接字(未示出)发起,尽管其他合适的通信配置和/或协议也是可能的、可应用的和预期的。在一些实施方案中,一个或多个主机设备106和一个或多个存储设备110可包括至少一部分客户端服务器模型。
存储设备110是可存储关于任何类型的可写存储介质(诸如存储类存储器(例如,磁阻随机存取存储器(MRAM)、相变存储器(PCM)、电阻随机存取存储器(ReRAM))、闪存存储器(即,SSD)、磁盘(即,HDD)、光盘、随机存取存储器(RAM)、磁带,和/或适于存储包括软件程序、数据和奇偶校验信息的信息的任何其他类似介质)的信息的数据存储系统。存储设备110可包括用于存储数据的一个或多个非暂态计算机可读介质。
网络102可以是有线或无线计算机网络,诸如局域网(LAN)、广域网(WAN)(例如,互联网、内联网、云网络等)、蜂窝网络,和/或数据处理系统100中的一个或多个主机设备106、一个或多个存储设备110和各种其他设备可在其间通信的其他互连数据路径。网络102可具有很多不同的配置,包括总线配置、星形配置、令牌环配置或其他配置。在一些实施方案中,网络102可以是对等网络。
数据可使用各种有线或无线网络协议、接口和/或其他技术(包括传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、基于HTTP的动态自适应流传输(DASH)、实时流传输协议(RTSP)、实时传输协议(RTP)、RTP控制协议(RTCP)、基于互联网协议的语音(VoIP)、文件传输协议(FTP)、网络套接字(WS)、无线接入协议(WAP)、通用串行总线(USB)、IEEE 1394、集成驱动电子设备(IDE)、增强型IDE(EIDE)、串行高级技术附件(SATA)、小型计算机系统接口(SCSI)、互联网小型计算机系统接口(iSCSI)、串行连接SCSI(SAS)、PCI Express(PCIe)、光纤通道、远程直接内存访问(RDMA)、非易失性内存Express(NVMe)、NVMe over Fabric(NVMe-oF))或者当前可用或未来可用的其他标准或专有协议、接口和/或技术经由网络102来传输。
尽管图1的示例示出了单个网络102,但是实际上,多个网络102可连接系统100的实体。网络102还可耦接或包括部分电信网络,以用于使用多种不同的通信协议来发送数据。
在一些实施方案中,数据处理系统100可包括控制节点120,该控制节点是协调和控制一个或多个存储设备110之间以及与连接到网络102的其他设备诸如一个或多个主机设备106之间的数据流的设备。例如,控制节点120可用作形成包括存储设备110的紧密耦接簇的高性能互连,尽管其他合适的角色也是可能的和预期的。
应当理解,数据处理系统100不限于图1中所示的配置,并且可采用多种不同的和/或修改的系统环境和配置并且该系统环境和配置在本公开的范围内。进一步实施方案可包括附加的或更少的计算设备、服务和/或网络。
图2是图1的数据处理系统100中包括的示例主机设备106的框图。如图所示,除其他部件外,主机设备106可包括接口202、处理器204和用于存储软件和数据的存储器206,该软件和数据包括操作系统208、一个或多个程序210、编译器216(可选)和数据处理卸载器218。主机设备106的包括接口202、处理器204和存储器206的部件使用总线220彼此耦接。总线220用于在这些部件之间传输数据。
接口202将主机设备106耦接到网络102。例如,接口202可包括但不限于,与存储设备110的接口302耦接以使用上述关于网络102的协议来发送和接收数据的输入/输出(I/O)接口电路。
可包括一个或多个处理器的处理器204,可用于执行存储器206中包含的各种软件程序的指令。处理器204可包括一个或多个算术逻辑单元、微处理器、通用控制器、可编程集成电路诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA),或它们的一些组合,以执行存储器206中存储的指令。处理器204可以是物理的或虚拟的,并且可包括单个处理单元或多个处理单元和/或核心。处理器204可基于各种计算架构,包括复杂指令集计算机(CISC)架构,精简指令集计算机(RISC)架构,或实现指令集组合的架构。应当理解,处理器204的其他配置是可能的。
可包括一个或多个非暂态存储设备的存储器206,可存储由处理器204执行的软件程序和/或数据,包括操作系统208、一个或多个程序210、编译器216和数据处理卸载器218。存储器206可包括,例如易失性存储器诸如动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备,非易失性存储器诸如电可擦除可编程只读存储器(EEPROM)或闪存存储器设备,前述的组合和/或一些其他合适类型的数据存储介质。
操作系统208可包括管理主机设备106中的各种硬件和软件资源的软件,诸如系统软件。操作系统208可包括任何商用或专用操作系统诸如基于的OS(例如,)、Microsoft/>MAC/>等,自定义操作系统,或者管理硬件和/或软件资源和/或向设备和/或可执行程序提供服务的任何其他合适的控制系统。
程序210可包括在主机设备106上执行操作的软件,诸如系统软件(例如,设备驱动器)或应用程序软件(例如,“大数据”数据挖掘或分析程序)。在一些情况下,各种不同一个或多个的程序210可在主机设备106上执行或提供各种不同的功能和/或服务。程序210可包括要由处理器204执行的源代码、脚本、对象代码或其他计算机指令集合。在一些实施方案中,一个或多个程序210可包括多个进程,每个进程可由可在系统100中任何给定时间处活动的多个执行线程组成。在一些实施方案中,程序210可包括源代码,该源代码包括高级语言(例如C++、等)的指令集以执行数据处理任务,诸如处理存储设备110上存储的数据。
程序210可包括一个或多个数据处理过程212以用于执行待卸载到存储设备110的相应数据处理任务以用于执行。数据处理过程212包括由主机设备106上运行的程序210的用户以高级语言创建(例如,编写)的软件,以卸载程序210中具体所需的数据处理任务或功能以供存储设备110执行。例如,数据处理卸载任务可包括扫描数据集以查找某模式、数据排序、数据过滤、索引重建和数据压缩。在一些实施方案中,人工智能技术可用于自动生成数据处理过程212。
在一些实施方案中,原始创建的示例数据处理过程212包括高级语言的源代码。高级语言的类型适用于定义用于处理存储系统诸如存储设备110上存储的数据的数据处理任务。
与示例程序210相关联的数据处理过程212的两个示例如下所示:
1)应用程序210需要在数据集中找出包含单词“cat”的记录数量,该记录位于指定的一组块中:
i=0
对于每个块,$B在$S中
对于每个单词,$W在$B中
如果$W=”cat”,则
i+=1
完成
完成
返回i
2)应用程序210需要将数据集过滤为仅包含单词“cat”的那些记录:
对于每个块,$B在$S中
对于每个记录,$R在$B中
如果$R包含”cat”,则
将$R写入至$D
完成
完成
如下面关于图5更详细地描述,根据实施方案,数据处理过程212从主机设备106发送至存储设备110以用于以源代码或字节码形式执行。源代码以高级编程语言编写,该高级编程语言通常在其指令中使用人类可读语言(例如,英语)和数学符号(例如,+、-、%)。然而,源代码需要最终翻译成机器码以供计算机执行。
相比之下,字节码是不同于人类可读源代码的中级计算机语言,一般由对程序对象的类型、范围、嵌套深度的编译器解析和语义分析的结果进行编码的压缩数字代码、常数和引用(例如,数字地址)构成。因此,通常字节码可由计算机更有效地解译和执行,并且其性能比源代码好得多。
在本公开中,源代码和字节码一般被称为“可移植代码”,其中可移植代码包括一个或多个可翻译的、硬件中立指令。源代码和字节码被认为是“可移植的”(例如,独立于平台,在不同操作环境中可执行等),因为它们可易于移植到多种硬件平台以用于执行。相比之下,二进制代码(例如,机器码)是不可移植的,因为它仅由可编译它的特定硬件平台执行。
发送至存储设备110的数据处理过程212的确切形式可根据实现特定配置的存储设备110的最佳性能
必需的内容而变化。在一些实施方案中,程序210中可仅存在一种形式的数据处理过程212。在其他实施方案中,程序210中可存在不止一种形式的数据处理过程,其中每种不同形式可被卸载到与主机设备106相关联的相同或不同的一个或多个存储设备110。
如下面关于图4更详细地描述,编译器216用于将数据处理过程212从源代码编译成字节码格式,以准备卸载到存储设备110。包括将以一种编程语言编写的计算机代码翻译成另一种计算机语言的软件的编译器216,将数据处理过程212的源代码编译成字节码以用于卸载到存储设备110。数据处理过程212被编译成的字节码语言可以是商用的字节码语言诸如Java字节码,或者可以是为了将数据处理任务卸载到数据存储设备而专门设计的字节码语言。其他字节码变型也是可能的和预期的。虽然图2所示的实施方案将编译器216描绘为位于主机设备106中,但是在进一步实施方案中,编译器可位于经由网络102连接至主机设备106的另一个设备中。
编译器216根据其目的和编译器工作的平台,可包括不同类型。在一些实施方案中,编译器216可执行各种操作,包括预处理词汇分析、解析、语义分析、将输入程序转换为中间表示、代码优化和代码生成等。在一些实施方案中,编译器216可将源代码从高级编程语言翻译成更低级语言(例如,字节码、汇编语言、对象代码或机器码)以创建中间程序或可执行程序。
在将数据处理过程212以源代码形式卸载到存储设备110的实施方案中,编译器216可以是不必要的,因为主机设备106直接向存储设备发送数据处理过程212的源代码。
数据处理卸载器218包括控制将数据处理过程212从主机设备106卸载到存储设备110以供存储设备执行的软件。在一些实施方案中,数据处理过程212可以以编译形式存储在存储设备110上,并且可按需要由数据处理卸载器218调用。在一些实施方案中,数据处理卸载器218可通过与主机设备106的其他部件通信来卸载数据处理过程212。例如,数据处理卸载器218可与编译器216通信以确定数据处理过程212是否存在并且准备好被卸载到存储设备110。
数据处理卸载器218可执行预定义的命令集以执行用于控制数据处理过程212的卸载的各种操作。在一些实施方案中,数据处理卸载器218可支持以下命令集:
1.加载过程(LOAD PROCEDURE)-从指定程序210加载数据处理过程212并且返回它的ID(PROC_ID)。
2.卸载过程(UNLOAD PROCEDURE)-卸载具有指定PROC_ID的数据处理过程212。
3.运行过程(RUN PROCEDURE)-运行具有指定PROC_ID和参数的数据处理过程212。返回正在运行的实例ID(RUN_ID)。过程继续在后台运行,直到它被ABORT PROCEDURE命令完成或中止。在前一种情况下,数据处理卸载器218经由POLL PROCEDURE命令轮询存储设备110以获取进度。
4.轮询过程(POLL PROCEDURE)-轮询具有指定RUN_ID的数据处理过程212是仍在运行还是完成。如果过程仍在运行,则返回进度%,或者如果它已完成,则返回代码并且输出参数。
5.中止过程(ABORT PROCEDURE)-中止在存储设备110上执行具有指定RUN_ID的数据处理过程212。
图3是图1的数据处理系统100中包括的示例存储设备110的框图。如图所示,除其他部件外,存储设备110可包括接口302、处理器304、存储介质322、以及用于存储软件和数据的存储器306,该软件和数据包括一个或多个数据处理过程212、一个或多个预编译过程310、翻译和执行引擎312、以及存储控制器316。然而,应当理解,存储设备110可包括可替代的、较少的和/或附加的部件,这取决于诸如省略预编译过程310、组合元件、以硬件与软件实现元件等的配置。存储设备110的包括接口302、处理器304、存储介质322和存储器306的部件使用在这些部件之间传输数据的总线320彼此耦接。
存储设备110的接口302、处理器304和存储器306可包括分别具有与主机设备106的接口202、处理器204和存储器206相同或类似的特性和/或属性的物理部件,如以上关于图2所述,并且因此,此处不再重复这些部件的描述。
存储介质322提供数据的物理存储,并且可包括一个或多个闪存存储器设备、磁盘、光盘,或适用于存储数据的任何类型的非易失性存储介质。根据存储设备110的类型,数据可在存储介质322中作为文件、块或对象被访问。
存储器306可存储由处理器304执行的程序和/或数据。如图3所示,存储器306可包含一个或多个程序,该程序包括从主机设备106接收的一个或多个数据处理过程212、一个或多个预编译过程310、翻译和执行引擎312、和/或存储控制器316,尽管应当理解,数据和/或程序的进一步组合和/或类型可根据实施方案存储,诸如但不限于省略一个或多个预编译过程310的那些。
在一些实施方案中,存储器306可包含以机器码格式预加载到存储器306中的预编译过程310。预编译过程310形成预存在的数据处理过程库以用于对存储设备110上存储的数据执行常见功能诸如压缩、加密或解密。在一些实施方案中,一个或多个预编译过程310可存储在使用软件容器实现的存储器306中。应当理解,软件容器可包括安全运行时环境,该安全运行时环境使用沙盒或其他数据安全性技术来管理二进制(即,机器码)的执行。
翻译和执行引擎312可以是由处理器304执行的逻辑(例如,软件、固件等),该处理器304管理由存储设备110对所接收的数据处理过程212的翻译和执行。
翻译和执行引擎312包括一个或多个翻译器314a、…、314n,该翻译器翻译数据处理过程212的源代码或字节码指令,以使得它们随后可由处理器304执行。一个或多个翻译器314可包括一个或多个编译器、一个或多个解译器,或两者的某种组合。在一些实施方案中,如下面关于图7更详细地描述,翻译器314优化由存储设备110对数据处理过程212的翻译和执行,是为了提高存储设备110执行数据处理卸载任务的性能和/或安全性。翻译器的标准和一般已知方面以引用方式并入本文,而未在本文中进一步描述。
在一些实施方案中,翻译器314可包括用于在数据处理过程212中编译源代码或字节码的编译器,如下面关于图6A更详细地描述。例如,翻译器314可以是即时(JIT)编译器。JIT编译器314可允许在运行时而不是在执行之前的程序执行期间执行编译。通过组合所编译的代码的速度与解译的灵活性,JIT编译从而在执行期间提供了优势。
在一些实施方案中,翻译器314可以是在数据处理过程212中执行所接收的源代码或字节码的解译器,如下面关于图6B更详细地描述。例如,在示例实施方案中,翻译器314可以是解译Java字节码的Java字节码解译器,尽管应当理解,翻译器314可被配置为解译任何合适的字节码语言。在这个示例中,Java字节码解译器可包括被称为字节码校验器的子程序,该子程序验证并且确保所接收的字节码未违反定义的安全性规则,从而使数据处理系统100安全得多。Java字节码解译器还可包括子程序执行引擎,该子程序执行引擎将所验证的字节码转换为机器码以用于执行。
存储控制器316可包括由处理器304执行的软件或固件,该软件或固件控制存储设备110的操作,包括从存储介质322读取数据或将数据写入存储介质322、输入/输出功能、垃圾回收等。存储控制器316可操作地耦接到存储设备110的其他部件,包括处理器304、翻译和执行引擎312、存储介质322和接口302,以便执行这些功能。
在一些实施方案中,存储控制器316可包括控制器逻辑,该控制器逻辑通过将请求转换为存储介质322的内部物理地址来将请求从翻译和执行引擎312传输至存储介质322。在一些实施方案中,除了未压缩数据访问之外或替代未压缩数据访问,存储控制器316可实现允许压缩数据访问的功能。
可以是部分存储控制器316(如图3所示),可以是部分单独部件,或包括独立部件的执行控制器318,控制由存储设备110接收、翻译、执行和释放数据处理过程212。在一些实施方案中,如果存储器306中存储有不止一个数据处理过程,则执行控制器318可确定一个或多个数据处理过程212的队列次序。
在一些实施方案中,执行控制器318可基于多种不同的因素,包括数据处理过程212的指令类型(即,源代码或字节码),来确定和选择翻译和执行引擎312中的特定翻译器314(即,编译器或解译器)以用于翻译和执行数据处理过程212。在一些实施方案中,执行控制器318可基于从主机设备106接收的命令和基于所确定的指令类型来确定数据处理过程212的指令类型,以选择要用于执行数据处理过程212的翻译器314。在一些实施方案中,执行控制器318可直接检查数据处理过程212自身以确定要用于翻译和执行数据处理过程212的翻译器种类。例如,执行控制器318可检查数据处理过程212的标头或与过程相关联的元数据以选择翻译器314。
在以上描述中,一个或多个数据处理过程212、一个或多个预编译过程310、翻译和执行引擎312以及存储控制器316实现为由处理器304执行的软件程序。然而,在进一步实施方案中,一个或多个数据处理过程212、一个或多个预编译过程310、翻译和执行引擎312以及存储控制器316中的一个或多个可在一个或多个硬件逻辑设备诸如ASIC、FPGA等中实现。
图4是用于卸载数据处理(诸如由主机设备106卸载到存储设备110)的示例方法400的流程图。在框402中,如以上结合图2更详细地描述,创建数据处理过程212以用于执行用于处理存储设备110上存储的一个或多个指定数据项的数据处理卸载任务。
在框404中,编译器216将数据处理过程212从源代码编译成字节码,并且将字节码存储到存储器206中。在一些实施方案中,框404中的操作可在主机设备106以字节码形式向存储设备110发送数据处理过程212时执行,并且可在一个或多个数据处理过程212以除了字节码之外的形式发送的各种实施方案中被省略。
在框406中,主机设备106的数据处理卸载器218将数据处理过程212加载到存储设备110中以用于翻译和执行。所加载的数据处理过程212可包括可移植代码,该可移植代码可以是没有编译的源代码,或由编译器216编译的字节码。在一些实施方案中,数据处理卸载器218可通过向存储设备110发出LOAD PROCEDURE命令来执行框406。在这个框期间,数据处理卸载器218可生成唯一地标识所加载的过程212的标识符(例如,PROC_ID)。在一些实施方案中,数据处理卸载器218可加载要由数据处理过程212处理的数据标识符。在存储设备110采用块存储的实施方案中,数据标识符可以是数据的逻辑块地址。在存储设备110采用对象存储的实施方案中,标识符可以是识别待处理对象的全局唯一标识符。在这两个实施方案任一个中,标识符还指示数据处理过程212应被加载到哪个存储设备110。其他合适的数据标识符也是可能的和预期的。
在框408中,数据处理卸载器218可轮询存储设备110以周期性检查卸载过程212在存储设备110上的执行进度。在轮询被省略或执行频率较低的进一步实施方案中,框408中的操作可被省略或执行频率较低。在一些实施方案中,数据处理卸载器218可通过向存储设备110发出POLL PROCEDURE命令来执行框408。基于从存储设备110到POLL PROCEDURE命令的响应,数据处理卸载器218可确定数据处理过程212的执行是否在框410中完成。如果不是,则数据处理卸载器218可通过发出另一个命令以检查进度直到执行完成来重复框408。在一些实施方案中,作为轮询的替代,存储设备110可使用由NVMe协议提供的异步事件请求将过程执行完成信息传递至主机设备106。
在框412中,在一些实施方案中,一旦数据处理过程212的执行完成,数据处理卸载器218就可检索从由存储设备110执行数据处理过程212返回的一个或多个结果(如果有的话),尽管在进一步实施方案中,数据处理卸载器218此刻可放弃框412中的数据检索,并且继续其他操作,诸如框414中的那些。
在框414中,一旦确定数据处理过程212不再活动(例如,将不再由存储设备使用),数据处理卸载器218就可从存储设备110卸载该数据处理过程212。在一些实施方案中,数据处理卸载器218可基于框410中获得的完成状态和/或存储设备110中处理(已经、当前、未来)的其他过程来确定是否应继续使用数据处理过程212。在一些实施方案中,数据处理卸载器218可通过向存储设备110发出UNLOAD PROCEDURE命令来执行框414,从而指定待卸载的特定数据处理过程212的PROC_ID。
图5是用于执行数据处理卸载任务的示例方法的流程图。在框502中,存储控制器316可接收包括可移植代码的数据处理过程212,该可移植代码用于执行数据处理卸载任务以用于处理存储设备110上存储的一个或多个数据项。在一些实施方案中,框502可响应于由主机设备106发出LOAD PROCEDURE命令来执行。在一些实施方案中,所接收的数据处理过程212可以是自身可执行数据处理任务的独立过程。在一些实施方案中,所接收的数据处理过程212可作为链接在一起的过程库的部件被卸载以执行预期的数据处理任务。在一些实施方案中,可跳过框502中的操作。
在框504中,执行控制器318选择要用于翻译数据处理过程212的可移植代码的翻译和执行引擎312中的翻译器314(即,编译器或解译器)。执行控制器318可基于多个因素来选择翻译器314,包括存储设备110的配置、可移植代码本身、数据处理任务的类型和数量。在一些实施方案中,执行控制器318可通过确定所接收的数据处理过程212的可移植代码的类型(即,源代码或字节码)来选择翻译器314。在一些实施方案中,执行控制器318可基于与数据处理过程212相关联的LOAD PROCEDURE命令中包含的信息、数据处理过程212中的标头、数据处理过程212中的元数据标签等来选择翻译器314。执行控制器318将数据处理过程212路由至所选择的翻译器314。在一些实施方案中,单个翻译器314可用于应用程序,或可预定待使用的翻译器314,在这种情况下,可简化对哪个翻译器314的确定和/或可跳过用于选择使用哪个翻译器的操作。
在框506中,翻译器314使用翻译和执行引擎312来翻译和执行数据处理过程212。基于在一些情况下可包括如本文其他地方所述的编译器或翻译器的所选择的翻译器314的类型,翻译和执行引擎312可编译或解译所接收的数据处理过程212,如下面关于图6A和图6B所述。在一些实施方案中,在框506中的翻译和执行过程期间,翻译和执行引擎312可执行如下面关于图7所述的一个或多个执行优化操作。
在框508中,执行控制器318可周期性检查数据处理过程212的执行进度。执行控制器318可与对应的翻译和执行引擎312通信以检查执行是否完成。如果不是,则执行控制器318可再次周期性检查进度,直到执行完成。
在框510中,在一些实施方案中,存储控制器316可将一个或多个结果(如果有的话)从由翻译和执行引擎312执行数据处理过程212发送至主机设备106。例如,对于以上关于图2所述的第一示例过程212,执行数据处理过程212可返回指示在所指定的数据集中包含单词“cat”的记录数量的结果。在进一步实施方案中,一个或多个结果可根据配置在稍后的时间点发送或根本不发送。在一些情况下,确认代码可被发送以替代结果,或可被包括在结果中,以反映处理的输出结果和/或状态。
在框512中,当数据处理过程212不再活动(例如,将不再由存储设备使用)时,存储控制器316可从存储设备110释放该数据处理过程。在一些实施方案中,框512可响应于由主机设备106发出UNLOAD PROCEDURE命令来执行。释放数据处理过程212可释放存储器306中的空间,从而改善存储设备110中有限资源的效率。在一些实施方案中,数据处理过程212未由存储设备110释放,而是被保存以用于未来执行,在这种情况下,可跳过框512中的操作。
图6A是用于翻译和执行数据处理过程的示例方法600的流程图,其中翻译器314是编译器。方法600表示可在图5的框506中执行的处理的示例。在框602中,编译器314将数据处理过程212编译成存储设备110本机的机器码,并且将机器码存储到存储器306中。在框604中,翻译和执行引擎312与处理器304和存储控制器316结合执行编译机器码以用于执行数据处理任务。作为标准和已知的编译器的各方面以引用方式并入,而未在本文中进一步详细描述。
图6B是用于翻译和执行处理过程的示例方法620的流程图,其中翻译器314为解译器。方法600表示可在图5的框506中执行的处理的示例。在框622中,翻译和执行引擎312使用解译器314解析并且执行数据处理过程212的每个指令。根据特定实施方案,解译器314可包括源代码解译器、字节码解译器,或多个源代码解译器和/或字节码解译器。在一些实施方案中,所选择的解译器314可取决于代码类型。例如,所选择的解译器314可基于待解译的数据处理过程212包括源代码还是字节码来确定。在许多典型场景中,字节码解译器比源代码解译器简单而高效得多。作为标准和已知的解译器的各方面以引用方式并入,而未在本文中进一步详细描述。
图7是用于翻译和执行优化存储设备110的性能和/或安全性的数据处理过程的示例方法700的流程图。方法700表示可在图7的框506中执行的处理的示例。在框702中,翻译和执行引擎312和对应的翻译器314可确定存储设备110在翻译和执行操作期间(例如,包括数据处理过程212的解译、编译和/或执行)的当前操作条件。例如,存储设备110的当前操作条件可包括由存储设备110的存储控制器316执行的积压或垃圾回收活动。
在框704中,翻译和执行引擎312可基于框702处的确定来确定在翻译和执行框期间是执行还是不执行某动作。在以上示例中,翻译和执行引擎312可确定由存储设备110执行的数据处理过程212应被暂时停止以允许垃圾回收活动继续。
在框706中,翻译和执行引擎312可基于框704中的确定有条件地执行翻译和执行操作。框706可以以优化存储设备110的数据处理卸载任务的性能的方式来执行。在以上示例中,翻译和执行引擎312可生成异常以停止由存储设备110执行数据处理过程212并且允许垃圾回收活动继续。一旦垃圾回收活动完成,在一些情况下,翻译和执行引擎312可允许数据处理过程212恰好从其被停止的相同点处恢复执行,从而避免必须从过程开始时重新启动过程的执行。
以上示例中可看出,在一些实施方案中,可通过平衡数据处理过程212的执行与由存储设备110同时执行的其他活动来改善存储设备110的性能。在具有解译器的实施方案中,对于数据处理过程212中先前已解译的指令,可通过执行先前生成的机器码而不是再次解译相同的指令来改善翻译和执行过程的效率。
在一些实施方案中,可改善数据处理过程212的性能的安全性。例如,如以上关于图3所论述,翻译器314(例如,Java字节码解译器)可包括子程序,该子程序验证并且确保所接收的源代码和/或字节码未违反定义的安全性规则,从而使数据处理系统100安全得多。
以上描述了用于使用存储中代码执行来卸载数据处理任务的系统和方法。在以上描述中,出于解释的目的,阐述了许多具体细节。然而,将显而易见的是,可以在没有这些具体细节的任何给定子集的情况下实践所公开的技术。在其他情况下,结构和设备以框图形式示出。例如,在上文参考用户界面和特定硬件的一些实施方式中描述了所公开的技术。此外,上文主要在联机服务的上下文中公开了这些技术;但是所公开的技术也适用于其他数据源和其他数据类型(例如,其他资源如图像、音频、网页的集合)。
本说明书中提到的“一个实施方案”或“实施方案”意味着结合实施方案描述的特定的特征、结构或特性被包括在所公开技术的至少一个实施方案或具体实施中。在本说明书中各处出现的短语“在一个实施方案中”不一定全是指同一实施方案或具体实施。
上文的详细描述的一些部分可根据对计算机存储器内的数据位的操作的过程和符号表示来呈现。进程一般可被认为是导致结果的自相一致的操作序列。操作可涉及物理量的物理操纵。这些量采取能够被存储、传输、组合、比较以及以其他方式操纵的电信号或磁信号的形式。这些信号可被称为位、值、元素、符号、字符、术语、数字等的形式。
这些和类似的术语可与适当的物理量相关联,并且可被认为是应用于这些量的标签。除非从先前的讨论中明显地另外明确说明,否则应当理解,在整个描述中,利用术语例如“处理”或“运算”或“计算”或“确定”或“显示”等的讨论可以指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备操纵表示为计算机系统寄存器和存储器中的物理(电子)量的数据,并且将该数据转换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储装置、传送或显示设备中的物理量的其他数据。
所公开的技术还可涉及用于执行本文操作的装置。该装置可以为所需目的而专门构造,或者其可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储介质中,例如但不限于,包括软盘、光盘、CD-ROM和磁盘的任何类型的盘,只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、包括具有非易失性存储器的USB密钥的闪存存储器或适用于存储各自耦接到计算机系统总线的电子指令的任何类型的介质。
所公开的技术可采取完全硬件实现、完全软件实现或包含硬件和软件元素的实现的形式。在一些实施方式中,该技术以软件实现,该软件包括但不限于固件、常驻软件、微代码等。
此外,所公开的技术可采取可从非暂时性计算机可用或计算机可读介质访问的计算机程序产品的形式,该计算机可用或计算机可读介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于该描述的目的,计算机可用或计算机可读介质可以是任何装置,该装置可包含、存储、传送、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用。
适用于存储和/或执行程序代码的计算系统或数据处理系统将包括直接或通过系统总线间接耦接到存储器元件的至少一个处理器(例如,硬件处理器)。存储器元件可包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置、和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储装置检索代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可直接或通过中间I/O控制器耦接到系统。
网络适配器还可耦接到系统,以使得数据处理系统能够通过中间专用或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是当前可用类型的网络适配器中的少数几种。
术语存储介质、存储设备和数据块在通篇本公开中可互换使用,以指存储数据的物理介质。
最后,本文中呈现的过程和显示可能不固有地与任何特定计算机或其他装置相关。根据本文的教导,各种通用系统可与程序一起使用,或者构建更专用的装置以执行所需的方法操作可证明是方便的。从上面的描述中将显而易见的是各种这些系统所需的结构。另外,没有参考任何特定编程语言来描述所公开的技术。应当理解,可以使用各种编程语言来实现如本文所述的技术的教导。
已经出于说明和描述的目的呈现了对本发明技术和科技的实现的前述描述。它并非旨在是穷尽的或将本发明技术和科技限制为所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。意图是本发明技术和科技的范围不受该详细描述的限制。本发明技术和科技可以其他具体形式实现而不背离其精神或基本特征。同样,模块、例程、特征、属性、方法和其他方面的特定命名和划分不是强制性的或重要的,并且实现本发明技术和科技或其特征的机制可具有不同的名称、划分和/或格式。此外,本发明技术的模块、例程、特征、属性、方法和其他方面可被实现为软件、硬件、固件或三者的任何组合。此外,无论部件(其示例是模块)在何处被实现为软件,该部件都可被实现为独立程序,实现为较大程序的一部分,实现为多个单独的程序,实现为静态或动态链接库,实现为内核可加载模块,实现为设备驱动程序,并且/或者以现在或将来在计算机编程中已知的每种和任何其他方式实现。另外,本发明技术和科技绝不限于以任何特定编程语言或用于任何特定操作系统或环境的实现。因此,本发明技术和科技的公开内容旨在说明而非限制。
Claims (39)
1.一种数据存储系统,包括:
存储设备,所述存储设备包括一个或多个处理器、非暂态存储介质以及存储控制器逻辑,
其中所述存储控制器逻辑可由所述一个或多个处理器执行以执行操作,所述操作包括:
从被配置为耦接到所述存储设备的主机设备接收被配置为在所述存储设备中执行数据处理卸载任务的可移植代码,所述可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理所述非暂态存储介质上存储的数据;
使用设置在所述存储控制器逻辑中的翻译和执行引擎来翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令,以在所述存储设备中执行所述数据处理卸载任务;
向所述主机设备发送所述存储设备中的所述数据处理卸载任务的状态的指示;
确定所述可移植代码的使用是否已结束;以及
响应于确定所述可移植代码的使用已结束来从所述存储设备释放所述可移植代码。
2.根据权利要求1所述的数据存储系统,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
使用所述翻译和执行引擎中的解译器分别和顺序地执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令中的每个。
3.根据权利要求2所述的数据存储系统,其中所述可移植代码的所述一个或多个可翻译的、硬件中立指令包括源代码指令。
4.根据权利要求2所述的数据存储系统,其中:
所述可移植代码的所述一个或多个可翻译的、硬件中立指令包括字节码指令;以及
所述字节码指令被专门配置为执行数据处理卸载任务。
5.根据权利要求2所述的数据存储系统,其中所述翻译和执行引擎中的所述解译器被配置为验证所述可移植代码的一个或多个可翻译的、硬件中立指令是否满足定义的安全性规则。
6.根据权利要求1所述的数据存储系统,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
使用所述翻译和执行引擎中的编译器将所述可移植代码的所述一个或多个可翻译的、硬件中立指令编译成所述存储设备本机的机器码;以及
执行所述机器码。
7.根据权利要求1所述的数据存储系统,其中所述可移植代码包括被配置为执行所述数据处理卸载任务的过程。
8.根据权利要求1所述的数据存储系统,其中由所述存储控制器逻辑执行的所述操作还包括:
确定可移植代码类型;
基于所确定的可移植代码类型在所述翻译和执行引擎中选择翻译器;以及
使用所选择的翻译器来翻译所述可移植代码的可翻译的、硬件中立的指令。
9.根据权利要求1所述的数据存储系统,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
确定所述存储设备的当前操作条件;
基于所确定的所述存储设备的当前操作条件来确定在翻译和执行期间是否执行数据处理过程;以及
以优化所述存储设备的所述数据处理卸载任务的性能的对应方式来翻译和执行所述一个或多个可翻译的、硬件中立指令。
10.根据权利要求1所述的数据存储系统,其中用于执行所述数据处理卸载任务的所述可移植代码以预编译格式存储在所述存储设备上。
11.根据权利要求1所述的数据存储系统,其中所述数据处理卸载任务包括:
对所述非暂态存储介质上存储的一个或多个数据项执行MapReduce、计数、过滤、压缩和加密类型的操作中的一者。
12.根据权利要求1所述的数据存储系统,还包括:
主机设备,所述主机设备包括一个或多个第二处理器和可由所述一个或多个第二处理器执行以执行操作的第二逻辑,所述操作包括:
将所述可移植代码加载到所述存储设备中以供所述存储设备翻译和执行;
检测所述存储设备对所述可移植代码的所述翻译和执行的完成;以及
从所述存储设备卸载所述可移植代码。
13.一种在数据存储系统中操作的方法,包括:
由存储设备的存储控制器逻辑从被配置为耦接到所述存储设备的主机设备接收可移植代码,所述可移植代码被配置为在所述存储设备中执行数据处理卸载任务并且包括一个或多个可翻译的、硬件中立指令以用于处理非暂态存储介质上存储的数据;
由所述存储设备的存储控制器逻辑翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令,以使用设置在所述存储控制器逻辑中的翻译和执行引擎在所述存储设备中执行所述数据处理卸载任务;
由所述存储设备的存储控制器逻辑向所述主机设备发送所述存储设备中的所述数据处理卸载任务的状态的指示;
由所述存储设备的存储控制器逻辑确定所述可移植代码的使用是否已结束;以及
响应于确定所述可移植代码的使用已结束,由所述存储设备的存储控制器逻辑从所述存储设备释放所述可移植代码。
14.根据权利要求13所述的方法,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
使用所述翻译和执行引擎中的解译器分别和顺序地执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令中的每个。
15.根据权利要求13所述的方法,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
使用所述翻译和执行引擎中的编译器将所述可移植代码的所述一个或多个可翻译的、硬件中立指令编译成所述存储设备本机的机器码;以及
执行所述机器码。
16.根据权利要求13所述的方法,还包括:
确定可移植代码类型;
基于所确定的可移植代码类型在所述翻译和执行引擎中选择翻译器;以及
使用所选择的翻译器来翻译所述可移植代码的可翻译的、硬件中立的指令。
17.根据权利要求13所述的方法,其中翻译和执行所述一个或多个可翻译的、硬件中立指令包括:
确定所述存储设备的当前操作条件;
基于所确定的所述存储设备的当前操作条件来确定在翻译和执行期间是否执行数据处理过程;以及
以优化所述存储设备的所述数据处理卸载任务的性能的对应方式来翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令。
18.一种数据存储系统,包括存储设备,所述存储设备包括:
一个或多个处理器;
非暂态存储介质;
用于从被配置为耦接到所述存储设备的主机设备接收被配置为在存储设备中执行数据处理卸载任务的可移植代码的装置,所述可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理所述非暂态存储介质上存储的数据;
用于翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令以在所述存储设备中执行所述数据处理卸载任务的装置;
用于向所述主机设备发送所述存储设备中的所述数据处理卸载任务的状态的指示的装置;
用于确定所述可移植代码的使用是否已结束的装置;以及
用于响应于确定所述可移植代码的使用已结束而从所述存储设备释放所述可移植代码的装置。
19.根据权利要求18所述的数据存储系统,其中用于翻译和执行所述一个或多个可翻译的、硬件中立指令的所述装置包括:
用于使用解译器分别和顺序地执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令中的每个的装置。
20.根据权利要求18所述的数据存储系统,其中用于翻译和执行所述一个或多个可翻译的、硬件中立指令的所述装置包括:
用于将所述可移植代码的所述一个或多个可翻译的、硬件中立指令编译成所述存储设备本机的机器码的装置;以及
用于执行所述机器码的装置。
21.一种数据存储系统,包括:
存储设备,所述存储设备包括一个或多个处理器、非暂态存储介质以及存储控制器逻辑,
其中所述存储控制器逻辑可由所述一个或多个处理器执行以执行操作,所述操作包括:
从被配置为耦接到所述存储设备的主机设备接收被配置为在所述存储设备中执行数据处理卸载任务的可移植代码,所述可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理所述非暂态存储介质上存储的数据;
使用设置在所述存储控制器逻辑中的翻译和执行引擎来翻译和执行所述可移植代码的所述一个或多个可翻译的、硬件中立指令,以在所述存储设备中执行所述数据处理卸载任务;
向所述主机设备发送所述存储设备中的所述数据处理卸载任务的状态的指示;
确定是否继续使用可移植代码;以及
响应于确定要继续使用可移植代码,保存所述可移植代码以用于未来执行。
22.一种数据存储系统,包括:
主机设备,包括:
一个或多个处理器;以及
数据处理卸载器逻辑,由所述一个或多个处理器可执行,
以执行包括以下的操作:
创建数据处理过程以在配置为耦合到所述主机设备的存储设备中执行数据处理卸载任务,其中所述存储设备包括:
非暂时性存储介质;以及
存储控制器,所述存储控制器被配置为使用存储在所述非暂时性存储介质中的数据来执行所述数据处理卸载任务;
将所述数据处理过程编译到配置为待加载到所述存储设备中的可移植代码中,其中所述可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理存储在所述存储设备的所述非暂时性存储介质上的数据;
将所述可移植代码加载到所述存储设备中,以由所述存储设备翻译和执行所述可移植代码;
检测由所述存储设备执行所述可移植代码是否已经完成;以及
响应于检测到执行所述可移植代码已经完成,从所述存储设备卸载所述可移植代码。
23.根据权利要求22所述的数据存储系统,其中检测由所述存储设备执行所述可移植代码是否已经完成包括:
轮询所述存储设备以周期性检查由所述存储设备执行所述可移
植代码的进度;以及
从所述存储设备接收所述可移植代码的执行的状态。
24.根据权利要求22所述的数据存储系统,其中响应于检测到执行所述可移植代码已经完成,从所述存储设备接收所述可移植代码的执行的结果。
25.根据权利要求22所述的数据存储系统,其中将所述可移植代码加载到所述存储设备中包括生成唯一地标识所加载的可移植代码的标识符。
26.根据权利要求22所述的数据存储系统,其中将所述可移植代码加载到所述存储设备中包括调用之前以预编译格式存储在所述存储设备上的所述可移植代码。
27.根据权利要求22所述的数据存储系统,其中将所述可移植代码加载到所述存储设备中包括加载一个或多个标识符,所述一个或多个标识符唯一地标识在所述存储设备的非暂时性存储介质上待处理的数据。
28.根据权利要求22所述的数据存储系统,其中:
所述数据处理卸载器逻辑跳过编译所述数据处理过程的源代码
指令;并且
所述可移植代码的一个或多个可翻译的、硬件中立指令包括所
述源代码指令。
29.根据权利要求22所述的数据存储系统,其中:
所述数据处理卸载器逻辑将所述数据处理过程的源代码指令编
译为字节码指令;
所述可移植代码的一个或多个可翻译的、硬件中立指令包括所
述字节码指令;并且
所述字节码指令被专门配置为执行数据处理卸载任务。
30.根据权利要求22所述的数据存储系统,其中由所述存储设备翻译所述可移植代码包括将所述可移植代码的一个或多个可翻译的、硬件中立指令编译为所述存储设备本机的机器代码。
31.根据权利要求22所述的数据存储系统,其中所述数据处理卸载任务包括:
对存储在所述存储设备的非暂时性存储介质上的一个或多个数
据项执行MapReduce、计数、过滤、压缩和加密类型的操作中的一者。
32.根据权利要求22所述的数据存储系统,还包括:
所述存储设备包括:
一个或多个第二处理器;
所述非暂时性存储介质;以及
存储控制器逻辑,所述存储控制器逻辑由所述一个或多个第二处理器可执行,以执行包括以下的操作:
从所述主机设备接收所述可移植代码;
使用设置在所述存储控制器逻辑中的翻译和执行引擎,翻译和执行所述可移植代码的一个或多个可翻译的、硬件中立指令,以在所述存储设备中执行所述数据处理卸载任务;以及
向所述主机设备发送所述存储设备中的所述数据处理卸载任务的状态的指示。
33.一种方法,包括:
由主机设备创建数据处理过程,以在配置为耦接到所述主机设
备的存储设备中执行数据处理卸载任务,其中所述存储设
备包括:
非暂时性存储介质;以及
存储控制器,所述存储控制器被配置为使用存储在所述非暂时
性存储介质中的数据来执行所述数据处理卸载任务;
由所述主机设备将所述数据处理过程编译为配置为加载到所述
存储设备中的可移植代码,其中所述可移植代码包括一个
或多个可翻译的、硬件中立指令以用于处理存储在所述存
储设备的所述非暂时性存储介质上的数据;
由所述主机设备将所述可移植代码加载到所述存储设备中,以
由所述存储设备翻译和执行所述可移植代码;
由所述主机设备检测由所述存储设备执行所述可移植代码是否
已经完成;以及
响应于检测到执行所述可移植代码已经完成,由所述主机设备
从所述存储设备卸载所述可移植代码。
34.如权利要求33所述的方法,其中检测由所述存储设备执行所述可移植代码是否已经完成包括:
轮询所述存储设备以周期性检查由所述存储设备执行所述可移
植代码的进度;以及
从所述存储设备接收所述可移植代码的执行的状态。
35.如权利要求33所述的方法,其中响应于检测到执行所述可移植代码已经完成,从所述存储设备接收所述可移植代码的执行的结果。
36.如权利要求33所述的方法,其中将所述可移植代码加载到所述存储设备中包括生成唯一地标识所加载的可移植代码的标识符。
37.如权利要求33所述的方法,其中将所述可移植代码加载到所述存储设备中包括调用之前以预编译格式存储在所述存储设备上的所述可移植代码。
38.如权利要求33所述的方法,其中将所述可移植代码加载到所述存储设备中包括加载一个或多个标识符,所述一个或多个标识符唯一地标识在所述存储设备的非暂时性存储介质上待处理的数据。
39.一种数据存储系统,包括:
主机设备;以及
存储设备,配置为耦接到所述主机设备且包含非暂时性存储介
质,
其中所述主机设备包括:
用于创建数据处理过程以在所述存储设备中执行数据处理卸载
任务的装置;
用于将所述数据处理过程编译为配置为加载到所述存储设备中的可移植代码的装置,所述可移植代码包括一个或多个可翻译的、硬件中立指令以用于处理存储在所述存储设备的非暂时性存储介质上的数据;
用于将所述可移植代码加载到所述存储设备中以由所述存储设备翻译和执行所述可移植代码的装置;
用于检测由所述存储设备执行所述可移植代码是否已经完成的装置;以及
用于响应于检测到执行所述可移植代码已经完成而从所述存储设备卸载所述可移植代码的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/832,728 US10565014B2 (en) | 2017-12-05 | 2017-12-05 | Data processing offload using in-storage code execution |
US15/832,728 | 2017-12-05 | ||
PCT/US2018/052505 WO2019112676A1 (en) | 2017-12-05 | 2018-09-25 | Data processing offload using in-storage code execution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111194437A CN111194437A (zh) | 2020-05-22 |
CN111194437B true CN111194437B (zh) | 2023-10-17 |
Family
ID=66657637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063143.3A Active CN111194437B (zh) | 2017-12-05 | 2018-09-25 | 使用存储中代码执行的数据处理卸载 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10565014B2 (zh) |
CN (1) | CN111194437B (zh) |
DE (1) | DE112018004247T5 (zh) |
WO (1) | WO2019112676A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10565014B2 (en) * | 2017-12-05 | 2020-02-18 | Western Digital Technologies, Inc. | Data processing offload using in-storage code execution |
US11119803B2 (en) * | 2019-05-01 | 2021-09-14 | EMC IP Holding Company LLC | Method and system for offloading parity processing |
US11294702B2 (en) | 2019-05-01 | 2022-04-05 | EMC IP Holding Company LLC | Method and system for processing data using a processing pipeline and processing units |
JP7473145B2 (ja) * | 2019-05-31 | 2024-04-23 | コネクトフリー株式会社 | ソフトウェア開発装置およびソフトウェア開発プログラム |
WO2022041083A1 (zh) * | 2020-08-27 | 2022-03-03 | 华为数字能源技术有限公司 | 一种数据中心及扩容方法 |
CN111770206B (zh) * | 2020-08-31 | 2020-12-29 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
US11822490B2 (en) * | 2021-10-14 | 2023-11-21 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for accessing a device operating system over an interconnect |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000040007A (ja) * | 1998-06-30 | 2000-02-08 | Sun Microsyst Inc | バイトコ―ド・コンパイラのためのコ―ド生成 |
CN1309787A (zh) * | 1998-05-28 | 2001-08-22 | 艾利森电话股份有限公司 | 改变无线网络中模块终端的功能性 |
CN101036123A (zh) * | 2004-07-20 | 2007-09-12 | 明星游戏株式会社 | 自动翻译程序和程序翻译服务器 |
CN103064720A (zh) * | 2011-09-09 | 2013-04-24 | 微软公司 | 简档导向的jit代码生成 |
US9141360B1 (en) * | 2011-03-16 | 2015-09-22 | Google Inc. | Web application module translation service |
KR20160003485A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050246443A1 (en) * | 2004-03-31 | 2005-11-03 | Intel Corporation | Management of offload operations in a network storage driver |
US8429630B2 (en) | 2005-09-15 | 2013-04-23 | Ca, Inc. | Globally distributed utility computing cloud |
US20080163183A1 (en) * | 2006-12-29 | 2008-07-03 | Zhiyuan Li | Methods and apparatus to provide parameterized offloading on multiprocessor architectures |
US8566502B2 (en) * | 2008-05-29 | 2013-10-22 | Vmware, Inc. | Offloading storage operations to storage hardware using a switch |
US8561037B2 (en) * | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
US10120692B2 (en) | 2011-07-28 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form |
US20140032733A1 (en) | 2011-10-11 | 2014-01-30 | Citrix Systems, Inc. | Policy-Based Application Management |
US9141356B2 (en) * | 2011-12-14 | 2015-09-22 | Microsoft Technology Licensing, Llc | Process for generating dynamic type |
US8990455B1 (en) * | 2012-06-21 | 2015-03-24 | Cypress Semiconductor Corporation | Offloading tasks from a central processing unit to peripheral function engines |
US8959067B1 (en) | 2012-08-08 | 2015-02-17 | Amazon Technologies, Inc. | Data storage inventory indexing |
US8997073B2 (en) * | 2013-04-25 | 2015-03-31 | Nec Laboratories America, Inc. | Semi-automatic restructuring of offloadable tasks for accelerators |
US9021189B2 (en) | 2013-07-24 | 2015-04-28 | NXGN Data, Inc. | System and method for performing efficient processing of data stored in a storage node |
US20150046679A1 (en) | 2013-08-07 | 2015-02-12 | Qualcomm Incorporated | Energy-Efficient Run-Time Offloading of Dynamically Generated Code in Heterogenuous Multiprocessor Systems |
US8819335B1 (en) | 2013-08-30 | 2014-08-26 | NXGN Data, Inc. | System and method for executing map-reduce tasks in a storage device |
WO2015060833A1 (en) | 2013-10-22 | 2015-04-30 | Empire Technology Development, Llc | Sandboxed application data redirection to datacenters |
US10168997B2 (en) | 2014-06-26 | 2019-01-01 | Ngd Systems, Inc. | System and method for executing native client code in a storage device |
US9632831B2 (en) | 2014-09-29 | 2017-04-25 | Samsung Electronics Co., Ltd. | Distributed real-time computing framework using in-storage processing |
US20170353397A1 (en) * | 2016-06-06 | 2017-12-07 | Advanced Micro Devices, Inc. | Offloading Execution of an Application by a Network Connected Device |
US10565014B2 (en) * | 2017-12-05 | 2020-02-18 | Western Digital Technologies, Inc. | Data processing offload using in-storage code execution |
-
2017
- 2017-12-05 US US15/832,728 patent/US10565014B2/en active Active
-
2018
- 2018-09-25 WO PCT/US2018/052505 patent/WO2019112676A1/en active Application Filing
- 2018-09-25 CN CN201880063143.3A patent/CN111194437B/zh active Active
- 2018-09-25 DE DE112018004247.2T patent/DE112018004247T5/de active Pending
-
2020
- 2020-01-09 US US16/739,064 patent/US11275615B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1309787A (zh) * | 1998-05-28 | 2001-08-22 | 艾利森电话股份有限公司 | 改变无线网络中模块终端的功能性 |
JP2000040007A (ja) * | 1998-06-30 | 2000-02-08 | Sun Microsyst Inc | バイトコ―ド・コンパイラのためのコ―ド生成 |
CN101036123A (zh) * | 2004-07-20 | 2007-09-12 | 明星游戏株式会社 | 自动翻译程序和程序翻译服务器 |
US9141360B1 (en) * | 2011-03-16 | 2015-09-22 | Google Inc. | Web application module translation service |
CN103064720A (zh) * | 2011-09-09 | 2013-04-24 | 微软公司 | 简档导向的jit代码生成 |
KR20160003485A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
Also Published As
Publication number | Publication date |
---|---|
US11275615B2 (en) | 2022-03-15 |
US20190171485A1 (en) | 2019-06-06 |
DE112018004247T5 (de) | 2020-05-14 |
US20200142740A1 (en) | 2020-05-07 |
CN111194437A (zh) | 2020-05-22 |
US10565014B2 (en) | 2020-02-18 |
WO2019112676A1 (en) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111194437B (zh) | 使用存储中代码执行的数据处理卸载 | |
US9928050B2 (en) | Automatic recognition of web application | |
US10521447B2 (en) | Container application execution using image metadata | |
US10831722B2 (en) | Disk image introspection for storage systems | |
US20130262405A1 (en) | Virtual Block Devices | |
US10366046B2 (en) | Remote direct memory access-based method of transferring arrays of objects including garbage data | |
US20190087209A1 (en) | Hypervisor-based just-in-time compilation | |
US9558198B2 (en) | File map compression using run length encoding for active blocks | |
US20160378452A1 (en) | Policy-Based Compression of Machine Code Generated by a Virtual Machine | |
US20190391809A1 (en) | Programs with serializable state | |
US10133713B2 (en) | Domain specific representation of document text for accelerated natural language processing | |
US11418555B1 (en) | Systems and methods for streaming an application via object storage | |
US10409762B2 (en) | Remote direct memory access-based on static analysis of asynchronous blocks | |
US11080050B2 (en) | Class data loading acceleration | |
US9411569B1 (en) | System and method for providing a climate data analytic services application programming interface distribution package | |
US9672020B2 (en) | Selectively loading precompiled header(s) and/or portion(s) thereof | |
US11194612B2 (en) | Selective code segment compilation in virtual machine environments | |
US20240220266A1 (en) | Systems, methods, and apparatus for intermediary representations of workflows for computational devices | |
US20230315502A1 (en) | Image management for container runtimes | |
EP4394601A1 (en) | Systems, methods, and apparatus for intermediary representations of workflows for computational devices | |
CN118057306A (zh) | 安装包的生成方法、装置、服务器、介质和程序产品 | |
US20170139689A1 (en) | Caching method types created from method descriptor strings on a per class loader basis |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |