一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

虚拟计算存储设备的制作方法

2022-12-07 02:51:45 来源:中国专利 TAG:

虚拟计算存储设备
1.相关申请的交叉引用
2.本技术要求获得于2021年6月2日提交的名称为

虚拟计算存储设备

的第63/196,081号美国临时申请的优先权和其权益,该申请的全部内容通过引用并入本文。
技术领域
3.本公开一般涉及用于虚拟计算存储设备的系统和方法。


背景技术:

4.计算存储设备提供计算功能和数据存储。因此,主机设备可以在计算存储设备处存储数据,并且将计算交给计算存储设备。然而,计算系统可能包括不支持计算功能的存储设备。
5.在本背景技术部分公开的上述信息仅用于加强对本公开的背景技术的理解,因此可能包含不构成现有技术的信息。


技术实现要素:

6.在各个实施例中,本文描述的主题包括与虚拟计算存储设备相关的系统、方法和装置。
7.一种系统,包括:虚拟计算存储仿真模块,其被配置为提供虚拟计算存储设备。该系统还包括存储元件,其中,虚拟计算存储仿真模块被配置为在存储元件处存储与虚拟计算存储设备关联的数据。该系统还包括计算元件。虚拟计算存储仿真模块被配置为将与虚拟计算存储设备关联的计算请求发送到计算元件。
8.一种方法,包括:在虚拟计算存储设备仿真模块处提供虚拟计算存储设备。与虚拟计算存储设备关联的数据被存储在存储元件处。该方法还包括在虚拟计算存储设备仿真模块处接收对于虚拟存储设备的计算请求。该方法还包括将计算请求的翻译发送到计算元件。
9.一种系统,包括:第一设备的计算元件和第二设备的存储元件。该系统还包括计算存储客户端和处理器。处理器被配置为从计算存储客户端接收计算请求。处理器还被配置为将计算请求的翻译发送到第一设备的计算元件。处理器还被配置为从计算存储客户端接收存储请求。处理器还被配置为将存储请求的翻译发送到第二设备的存储元件。
附图说明
10.在结合附图阅读本技术时,将更好地理解本技术的上述方面和其他方面,其中,相似的附图标记表示类似或相同的元素。
11.图1a是用于提供虚拟计算存储设备的系统的框图。
12.图1b是在用于提供虚拟计算存储设备的系统中的存储请求处理的框图。
13.图1c是描绘在用于提供虚拟计算存储设备的系统中的命令翻译的框图。
14.图2a是用于提供由一个以上的存储元件支持的虚拟计算存储设备的系统的框图。
15.图2b是用于提供由一个以上的计算元件支持的虚拟计算存储设备的系统的框图。
16.图3a是用于提供一个以上的虚拟计算存储设备的系统的框图。
17.图3b是用于提供共享存储元件的一个以上的虚拟计算存储设备的系统的框图。
18.图3c是用于提供共享计算元件的一个以上的虚拟计算存储设备的系统的框图。
19.图4a是用于提供由执行虚拟机管理器(hypervisor)的计算设备的组件支持的虚拟计算存储设备的系统的框图。
20.图4b是用于提供由物理计算存储设备支持的虚拟计算存储设备的系统的框图。
21.图4c是用于提供由执行虚拟机管理器的计算设备的外部的组件支持的虚拟计算存储设备的系统的框图。
22.图4d是用于提供由各种组件支持的虚拟计算存储设备的系统的框图。
23.图5a是提供支持计算请求的虚拟计算存储设备的方法的流程图。
24.图5b是提供支持存储请求的虚拟计算存储设备的方法的流程图。
25.图5c是提供以计算存储格式返回命令结果的虚拟计算存储设备的方法的流程图。
26.图6是用于提供虚拟计算存储设备的计算系统的框图。
27.虽然本技术容许各种修改和替代形式,但是本技术的特定实施例在附图中以示例方式示出,并且将在本文得到描述。附图可能不是按比例绘制的。然而,应该理解,附图及其详细描述不是为了将本技术限制于所公开的特定形式,相反,是为了涵盖落入由所附的权利要求限定的本技术的精神和范围内的所有修改、等同物和替代物。
具体实施方式
28.本文描述的主题的一个或多个实施例的细节在附图和下面的描述中进行了阐述。本主题的其他特征、方面和优点将从描述、附图和权利要求变得明显。
29.现在,在下文中,将参考附图更充分地描述本公开的各种实施例,其中,示出了一些实施例,但不是所有的实施例。实际上,本公开可以以许多不同的形式实现,而不应被理解为限制于本文阐述的实施例;相反,提供这些实施例是为了使本公开满足适用的法律要求。在本文中,除非另有说明,否则术语



既用于替代含义,也用于结合含义。术语

说明性



示例

用作没有表示质量水平的示例。在整个说明书中,相似附图标记是指相似元素。每个附图中的箭头描绘双向数据流和/或双向数据流的能力。在本文中,术语

路径



途径



路线

可互换使用。
30.本公开的实施例可以以各种方式实现,包括作为具有制造物的计算机程序产品。计算机程序产品可以包括存储应用、程序、程序组件、脚本、源代码、程序代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等(在本文中,也称为可执行指令、用于执行的指令、计算机程序产品、程序代码和/或在本文中可互换使用的类似术语)的非暂时性计算机可读存储介质。这种非暂时性计算机可读存储介质包括所有计算机可读介质(包括易失性和非易失性介质)。
31.在一个实施例中,非易失性计算机可读存储介质可以包括软盘、软磁盘(flexible disk)、硬盘、固态存储装置(sss)(例如,固态驱动器(ssd))、固态卡(ssc)、固态组件(ssm)、企业闪存驱动器、磁带或任何其他非暂时性磁介质等。非易失性计算机可读存储介质还可
以包括打孔卡、纸带、光学标记片(或者具有孔的图案或其他光学可识别标志的任何其他物理介质)、光盘只读存储器(cd-rom)、光盘可重写(cd-rw)、数字多功能光盘(dvd)、蓝光光盘(bd)、任何其他非暂时性光学介质等。这种非易失性计算机可读存储介质还可以包括只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存存储器(例如,串行、nand、nor等)、多媒体存储卡(mmc)、安全数字(sd)存储卡、智能媒介(smartmedia)卡、紧凑式闪存(cf,compactflash)卡、记忆棒等。此外,非易失性计算机可读存储介质还可以包括导电桥接随机存取存储器(cbram)、相变随机存取存储器(pram)、铁电随机存取存储器(feram)、非易失性随机存取存储器(nvram)、磁阻式随机存取存储器(mram)、电阻式随机存取存储器(rram)、硅-氧化物-氮-氧化物-硅存储器(sonos)、浮动结栅(floatingjunction gate)随机存取存储器(fjg ram)、薄膜(millipede)存储器、赛道(racetrack)存储器等。
32.在一个实施例中,易失性计算机可读存储介质可以包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、快速页面模式动态随机存取存储器(fpm dram)、扩展数据输出动态随机存取存储器(edo dram)、同步动态随机存取存储器(sdram)、双数据率同步动态随机存取存储器(ddr sdram)、双数据率类型二同步动态随机存取存储器(ddr2 sdram)、双数据率类型三同步动态随机存取存储器(ddr3sdram)、rambus动态随机存取存储器(rdram)、双晶体管ram(ttram)、晶闸管ram(t-ram)、零电容(z-ram)、rambus直插式存储器组件(rimm)、双列直插式存储器组件(dimm)、单列直插式存储器组件(simm)、视频随机存取存储器(vram)、高速缓存存储器(包括各种级别)、闪存存储器、寄存器存储器等。可以理解,在将实施例描述为使用计算机可读存储介质的情况下,其他类型的计算机可读存储介质可以替代上述计算机可读存储介质,或在其之外使用。
33.应当理解,本公开的各种实施例也可以被实现为方法、装置、系统、计算设备、计算实体等。因此,本公开的实施例可以采取执行存储在计算机可读存储介质上的指令,以执行特定步骤或操作的装置、系统、计算设备、计算实体等的形式。因此,本公开的实施例也可以采取执行特定步骤或操作的完全是硬件的实施方式、完全是计算机程序产品的实施方式、和/或包括计算机程序产品和硬件的组合的实施方式的形式。
34.下面,将参考框图和流程图说明来描述本公开的实施例。因此,应当理解,框图和流程图中的每个块说明可以用计算机程序产品、完全是硬件实施方式、硬件和计算机程序产品的组合、和/或执行在用于执行的计算机可读存储介质上的指令、操作、步骤和可互换使用的类似词语(例如,可执行指令、用于执行的指令、程序代码等)的装置、系统、计算设备、计算实体等的形式来实现。例如,代码的检索、加载和执行可以依次执行,以便一次检索、加载和执行一条指令。在一些示例实施例中,检索、加载和/或执行可以并行执行,以便一起检索、加载和/或执行多条指令。因此,这种实施例可以产生专门配置的机器,其执行框图和流程图说明中指定的步骤或操作。因此,框图和流程图说明支持用于执行指定指令、操作或步骤的实施例的各种组合。
35.如本文所使用的,计算存储设备是指支持计算任务的存储设备。例如,计算存储设备可以包括存储元件(例如,非易失性存储器,诸如闪存存储器等)和计算元件(例如,中央处理器单元(cpu)、图形处理器单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)(诸如张量处理单元)、处理器核心等),并且被配置为支持在计算元件处存储数据和在计算
元件处执行计算任务。因此,计算存储设备可以向计算存储客户端(例如,计算设备)提供存储能力,并且可以支持将计算任务从计算存储客户端交给计算存储设备。参考图1a,示出了描绘用于提供虚拟计算存储设备的系统100的框图。
36.系统100包括虚拟计算存储仿真模块102、计算元件106、存储元件108和计算存储客户端104。虚拟计算存储仿真模块102可以对应于可由计算设备(例如,服务器设备)的处理设备(未示出)执行以提供对虚拟计算存储设备110的访问的软件(例如,虚拟机管理器)。虚拟计算存储设备110可以是逻辑构造,而不是物理计算存储设备。虚拟计算存储仿真模块102通过仿真(例如,重现)物理计算存储设备的功能来提供虚拟计算存储设备110。虚拟计算存储设备110的功能由计算元件106和存储元件108实现。如本文进一步描述的,虚拟计算存储仿真模块102被配置为仿真物理计算存储设备,以提供存储请求翻译,并提供计算请求翻译。计算元件106和存储元件108可以是物理计算存储设备或者一个或多个其他类型的设备的组件。
37.计算元件106可以对应于cpu、gpu、fpga、asic、处理器核心、另一类型的处理器元件、或其组合。存储元件108可以对应于固态驱动器、硬盘驱动器、另一类型的非易失性存储器、或其组合。计算元件106和存储元件108可以对应于不同的设备或单个设备。例如,计算元件106和存储元件108可以对应于物理计算存储设备。在一些实施方式中,计算元件106和存储元件108在执行虚拟计算存储仿真模块102的设备的内部。在一些实施方式中,计算元件106和存储元件108在执行虚拟计算存储仿真模块102的设备的外部。虽然所示出的是单个计算元件和单个存储元件,但是系统100可以包括额外的计算元件和额外的存储元件。此外,虽然虚拟计算存储设备110被示为由单个计算元件和单个存储元件支持,但是虚拟计算存储设备110可以由一个以上的计算元件和/或一个以上的存储元件支持。此外,虚拟计算存储仿真模块102可以提供一个以上的虚拟计算存储设备。虚拟计算存储仿真模块102与计算元件106和存储元件108之间的通信可以通过以下方式之一来进行:外围组件互连(pci)链接、pci快速(pcie)链接、串行先进技术附件(sata)链接、串行连接小型计算机系统接口(scsi)链路、光纤通道、以太网链接、电气与电子工程师协会(ieee)802.11链接、另一类型的链接、或其组合。虚拟计算存储仿真模块102与计算元件106和存储元件108之间的通信可以包括非易失性存储器快速(nvme)通信。
38.计算存储客户端104对应于被配置为向虚拟计算存储仿真模块102发出计算请求和存储请求的计算设备或软件。在计算存储客户端104对应于软件的实施方式中,计算存储客户端104可以对应于由在计算元件(例如,计算元件106)处执行指令以仿真计算设备的虚拟机管理器提供的虚拟计算设备。计算存储客户端104和虚拟计算存储仿真模块102之间的通信可以通过以下方式之一来进行:外围组件互连(pci)链接、pci快速(pcie)链接、串行先进技术附件(sata)链接、串行连接小型计算机系统接口(scsi)链路、光纤通道、以太网链接、电气与电子工程师协会(ieee)802.11链接、另一类型的链接、或其组合。虚拟计算存储仿真模块102与计算元件106和存储元件108之间的通信可以包括非易失性存储器快速(nvme)通信。
39.在操作中,存储元件108存储与虚拟计算存储设备110关联的数据112,并且计算元件106执行与虚拟计算存储设备110关联的计算请求。响应于来自计算存储客户端104的请求,可以由虚拟计算存储仿真模块102将数据112写入到存储元件108。如图1a所示,虚拟计
算存储仿真模块102提供计算请求翻译。
40.在所示出的示例中,计算存储客户端104将计算请求114发送到虚拟计算存储仿真模块102。计算请求114可以被寻址到虚拟计算存储设备110。虚拟计算存储仿真模块102可以保持虚拟计算存储设备110到计算元件106的映射,并且相应地将计算请求114翻译为用于计算元件106的请求。因此,虚拟计算存储仿真模块102可以将计算请求114转发到计算元件106。应当注意,虽然上述示例将计算请求114描述为被转发到计算元件106,但是在实践中,向计算元件106发送的消息可能不同于虚拟计算存储仿真模块102从计算存储客户端104接收的消息。例如,计算请求114可能对应于诸如加载和/或执行程序的nvme命令的nvme请求(或其他类型的请求),但是计算元件106可能不支持nvme(或其他类型的协议)。因此,虚拟计算存储仿真模块102可以将计算请求114翻译为由计算元件106支持的协议的翻译消息。虚拟计算存储仿真模块102可以将翻译的消息转发到计算元件106,而不是转发计算请求114。如上所述,虚拟计算存储仿真模块102可以支持物理计算存储设备的仿真。计算请求的翻译可以包括该仿真的一个方面。
41.在一些实施方式中,虚拟计算存储设备110可以对应于一个以上的计算元件。在这种情况下,虚拟计算存储仿真模块102可以基于负载平衡算法,选择将计算请求114转发到哪个计算元件。附加或可替换地,虚拟计算存储仿真模块102可以基于由计算请求114针对的数据的地址,选择要将计算请求114转发到其的计算元件。例如,虚拟计算存储仿真模块102可以响应于确定计算请求114针对存储在特定计算存储设备上的数据,将计算请求114转发到特定计算存储设备。
42.计算元件106可以直接或通过虚拟计算存储仿真模块102将计算请求114的结果(未示出)返回到计算存储客户端104。类似地,计算元件106可以直接或通过虚拟计算存储仿真模块102与存储元件108通信。例如,计算请求114可以针对数据112。计算元件106可以直接从存储元件108检索数据112,或者虚拟计算存储仿真模块102可以从存储元件108检索数据112,并通过计算请求114将数据112转发到计算元件106。在计算元件106通过虚拟计算存储仿真模块102返回结果的实施例中,虚拟计算存储仿真模块可以将结果翻译为由计算存储客户端104支持的协议(例如。配置为支持计算存储客户端和计算存储设备之间的通信的协议)。如上所述,虚拟计算存储仿真模块102可以支持物理计算存储设备的仿真。计算请求结果的翻译可以包括该仿真的一个方面。
43.图1b示出系统100的虚拟计算存储仿真模块102提供存储请求翻译的示例。在所示出的示例中,计算存储客户端104将存储请求116发送到虚拟计算存储仿真模块102。存储请求116可以对应于读取请求或写入请求。在一些实施方式中,存储请求116对应于nvme请求。存储请求116被引导到虚拟计算存储设备110。虚拟计算存储仿真模块102保持虚拟计算存储设备和存储元件之间的映射。基于该映射,虚拟计算存储仿真模块102可以将存储请求116转发到存储元件108。应当注意,虽然上述示例将存储请求116描述为被转发到存储元件108,但是在实践中,向存储元件108发送的消息可能不同于虚拟计算存储仿真模块102从计算存储客户端104接收的消息。例如,存储请求116可能对应于nvme请求(或其他类型的请求),但是存储元件108可能不支持nvme(或其他类型的协议)。因此,虚拟计算存储仿真模块102可以将存储请求116翻译为由存储元件108支持的协议的翻译的消息。虚拟计算存储仿真模块102可以将翻译的消息转发到存储元件108,而不是转发存储请求116。如上所述,虚
拟计算存储仿真模块102可以支持物理计算存储设备的仿真。存储请求的翻译可以包括该仿真的一个方面。
44.在一些实施方式中,虚拟计算存储设备110可以对应于一个以上的存储元件。在这种情况下,虚拟计算存储仿真模块102可以基于由存储请求116针对的地址(例如,逻辑块地址(lba)),选择要将存储请求116转发到其的存储元件。例如,对于每个虚拟计算存储设备,虚拟计算存储仿真模块102可以保持存储元件到地址(例如,lba)范围的映射。在存储请求116对应于写入请求的示例中,虚拟计算存储仿真模块102可以基于负载平衡算法,选择将存储请求116转发到哪个存储元件。虚拟计算存储仿真模块102可以更新地址到存储元件的映射,以反映写入请求被发送到哪个存储元件。例如,响应于将用于lba a的写入发送到第一存储元件,虚拟计算存储仿真模块102可以更新映射,以表示lba a与第一存储元件关联。
45.计算元件106可以直接或通过虚拟计算存储仿真模块102将存储请求116的结果(未示出)返回到计算存储客户端104。例如,存储元件108可以响应读取请求而将数据112发送到计算存储客户端104。作为另一示例,存储元件108可以响应于写入请求而将读取请求发送到计算存储客户端104(可替换地,虚拟计算存储仿真模块102可以将读取请求发送到计算存储客户端104)。在通过虚拟计算存储仿真模块102返回结果的示例中,虚拟计算存储仿真模块102可以将结果翻译为由计算存储客户端104使用的协议。如上所述,虚拟计算存储仿真模块102可以支持物理计算存储设备的仿真。存储请求结果的翻译可以包括该仿真的一个方面。进一步地,将参考图1c来描述仿真。
46.在一些示例中,存储请求116对应于将数据112写入到存储元件108的请求。虚拟计算存储仿真模块102可以翻译存储请求116,并且将其转发到如上所述的存储元件108。
47.图1c描绘提供计算存储设备的仿真的系统100的示例。在所示出的示例中,计算存储客户端104和虚拟计算存储仿真模块102根据由计算存储设备(例如,nvme)支持的协议来通信。虚拟计算存储仿真模块102被配置为根据由计算元件106和存储元件108支持的一个或多个协议,在这些计算存储消息和消息之间翻译。
48.在所示的示例中,计算存储客户端104将计算存储(csd)命令118(例如,计算命令、存储命令或其他类型的命令)发送到虚拟计算存储仿真模块102。csd命令118符合由计算存储客户端104和虚拟计算存储仿真模块102支持的csd协议(例如,nvme)。虚拟计算存储仿真模块102将csd命令118翻译为符合由计算元件106使用的协议的硬件命令120,并且将硬件命令120发送到计算元件106。翻译的部分可能包括将在csd命令118中标识的地址翻译为与存储元件108关联的地址。例如,虚拟计算存储设备110的lba a可以被映射到在存储元件108处的lba b。在一些实施方式中,虚拟计算存储仿真模块102可以基于翻译的地址从存储元件108提取数据,并且将提取的数据包括在硬件命令120中。虽然前面的示例将虚拟计算存储设备和存储元件108两者描述为支持lba,但是虚拟计算存储设备110和存储元件108可以支持不同类型的寻址方案(例如,键值)。虚拟计算存储仿真模块102可以在由虚拟计算存储设备110呈现的寻址方案和由存储元件108支持的寻址方案之间翻译。响应于硬件命令120,计算元件106生成硬件结果122,并且将硬件结果122发送到虚拟计算存储仿真模块102。虚拟计算存储仿真模块102将硬件结果122翻译为符合由计算存储客户端104使用的csd协议的csd结果124,并且将csd结果124传输到计算存储客户端104。
49.虽然图1c描绘csd命令118对应于计算命令的示例,但是应当注意,虚拟计算存储
仿真模块102可以提供类似的存储命令翻译。例如,csd命令118可以对应于存储请求。因此,虚拟计算存储仿真模块102可以将csd命令118翻译为硬件命令120,并且将硬件命令120发送到存储元件108。如上所述,csd命令118和硬件命令120可以属于不同的协议和/或使用不同的寻址方案。在这种情况下,存储元件108可以将硬件结果122(例如,包括数据112的硬件结果122)返回到虚拟计算存储仿真模块102,并且虚拟计算存储仿真模块102可以将硬件结果122翻译为csd结果124,并将csd结果124发送到计算存储客户端104。因此,虚拟计算存储仿真模块102可以提供寻址到虚拟计算存储设备的计算命令和存储命令两者的翻译。
50.除了提供计算存储设备消息的翻译之外,虚拟计算存储仿真模块102可以仿真计算存储设备的其他功能。例如。虚拟计算存储仿真模块102可以在执行虚拟计算存储仿真模块的计算设备的存储器(未示出)中保持与计算存储设备关联的一个或多个提交队列(或其他数据结构)。作为另一示例,虚拟计算存储仿真模块102可以根据csd协议,将计算存储设备的可用性公布(advertise)到计算存储客户端104。应当注意,公布能力可以对应于仿真能力。也就是说,虚拟计算存储仿真模块102可以公布硬件能力,并且可以在软件中实现所公布的硬件能力。
51.因此,图1a-图1c示出用于提供虚拟计算存储设备的系统。该系统支持存储设备翻译和转发、计算设备翻译和转发、以及计算存储设备的其他功能的仿真。如下面进一步描述的,由虚拟计算存储仿真模块102使用来提供虚拟计算存储设备的底层硬件可以采取许多形式。因此,图1a-图1c的系统100可以在各种各样的硬件设置下,将计算存储设备的功能提供给计算存储客户端。
52.如上所述,由虚拟计算存储仿真模块102提供的虚拟计算存储设备可以由一个以上的存储元件和/或一个以上的计算元件支持。图2a-图2b示出虚拟计算存储设备由额外的物理组件支持的不同示例。
53.图2a示出虚拟计算存储设备110对应于替代存储元件108的第一存储元件202和第二存储元件204的系统100的示例。第一存储元件202存储与虚拟计算存储设备110关联的第一数据206,并且第二存储元件204存储与虚拟计算存储设备110关联的第二数据208。
54.计算存储客户端104可以将第一存储请求210发送到虚拟计算存储仿真模块102。第一存储请求210可以标识第一地址212(例如,第一lba)。虚拟计算存储仿真模块102可以基于第一地址212将第一存储请求210路由到第一存储元件202。例如,虚拟计算存储仿真模块102可以存储虚拟计算存储设备110的地址到第一存储元件202和第二存储元件204的地址的映射。在一些实施方式中,第一存储请求210可以对应于写入请求,并且虚拟计算存储仿真模块102可以基于负载平衡算法,将第一存储请求210发送到第一存储元件202。例如,虚拟计算存储仿真模块102可以在存储元件之间以轮询方式(或根据一些其他算法)分配写入请求。响应于将用于特定虚拟存储设备地址的数据写入存储元件的特定地址,虚拟计算存储仿真模块102可以更新虚拟计算存储设备地址到存储元件地址的映射,以表示特定虚拟存储设备地址被映射到存储元件的特定地址。
55.在所示的示例中,计算存储客户端104发出标识第二地址216的第二存储请求214,并且将第二存储请求214转发到第二存储元件204。虚拟计算存储仿真模块102可以使用相对于第一存储请求210的上述技术标识第二存储元件204,以接收第二存储请求214。应当注意,与上述存储请求116一样,第一存储请求210和第二存储请求214可以由虚拟计算存储仿
真模块102翻译为符合由第一存储元件202和第二存储元件204使用的一个或多个协议的消息。第一存储元件202和第二存储元件204可以支持不同的协议。
56.图2b示出虚拟计算存储设备110对应于替代计算元件106的第一计算元件218和第二计算元件220的系统100的示例。在所示的示例中,计算存储客户端104将第一计算请求224和第二计算请求228发送到虚拟计算存储仿真模块102。第一计算请求224和第二计算请求228两者被引导到虚拟计算存储设备110。第一计算请求224标识第一地址226,并且第二计算请求228标识第二地址230。虚拟计算存储仿真模块102将第一计算请求224转发到第一计算元件218,并且将第二计算请求228转发到第二计算元件220。虚拟计算存储仿真模块102可以基于第一地址226将第一计算请求224路由到第一计算元件218。例如,虚拟计算存储仿真模块102可以管理虚拟计算存储设备地址到计算元件的映射。在另一示例中,虚拟计算存储仿真模块102可以根据负载平衡算法来路由计算请求。如上所述,虚拟计算存储仿真模块102可以在转发到计算元件218、计算元件220之前,将计算请求224、计算请求228翻译为不同的协议。在一些实施方式中,虚拟计算存储仿真模块102从存储元件108检索与第一地址226关联的数据,并且通过第一计算请求224将该数据转发到第一计算元件218。类似地,虚拟计算存储仿真模块102可以从存储元件108检索与第二地址230关联的数据,并且通过第二计算请求228将该数据转发到第二计算元件220。
57.应当注意,虚拟计算存储设备可以对应于一个以上的计算元件和一个以上的存储元件。此外,虽然图2a-图2b分别示出具有2个存储元件的示例和具有2个计算元件的示例,但是其他数量的存储元件和/或计算元件可以由虚拟计算存储仿真模块102用来提供虚拟计算存储设备。此外,虚拟计算存储仿真模块102可以支持一个以上的虚拟计算存储设备。在图3a-图3c中,示出了虚拟计算存储仿真模块102支持一个以上的虚拟计算存储设备的示例。
58.在图3a中,虚拟计算存储仿真模块102提供替代虚拟计算存储设备110的第一虚拟计算存储设备302和第二虚拟计算存储设备304。第一虚拟计算存储设备302由第一计算元件306和第一存储元件308支持。第一存储元件308存储与第一虚拟计算存储设备302关联的第一数据310。第二虚拟计算存储设备304由第二计算元件312和第二存储元件314支持。第二存储元件314存储与第二虚拟计算存储设备304关联的第二数据316。
59.虚拟计算存储仿真模块102被配置为针对第一虚拟计算存储设备和第二虚拟计算存储设备提供计算请求翻译、存储请求翻译和虚拟计算存储设备仿真,如上面参考虚拟计算存储设备110描述的。虚拟计算存储仿真模块102可以将用于第一虚拟计算存储设备302的存储命令路由(并翻译存储命令)到支持第一虚拟计算存储设备302的存储元件(例如,第一存储元件308)。虚拟计算存储仿真模块102可以将用于第一虚拟计算存储设备302的计算命令路由(并翻译计算命令)到支持第一虚拟计算存储设备302的计算元件(例如,第一计算元件306)。类似地,虚拟计算存储仿真模块102可以将用于第二虚拟计算存储设备304的计算命令和存储命令路由(并翻译)到支持第二虚拟计算存储设备304的设备(例如,第二计算元件312和第二存储元件314)。此外,如上所述,虚拟计算存储仿真模块102可以仿真第一虚拟计算存储设备302和第二虚拟计算存储设备304的其他功能。例如,虚拟计算存储仿真模块102可以保持与虚拟计算存储设备302、虚拟计算存储设备304关联的提交队列,公布虚拟计算存储设备302、虚拟计算存储设备304的可用性,等等。
60.虽然图3a示出由唯一的底层物理设备支持的虚拟计算存储设备,但是应当注意,物理设备可以在虚拟计算存储设备之间共享。图3b示出第一虚拟计算存储设备302和第二虚拟计算存储设备304共享存储元件330的示例。因此,虚拟计算存储仿真模块102可以将用于第一虚拟计算存储设备302的第一存储请求332和用于第二虚拟计算存储设备304的第二存储请求334转发(和/或翻译)到存储元件330。
61.图3c示出第一虚拟计算存储设备302和第二虚拟计算存储设备304共享计算元件350的示例。因此,虚拟计算存储仿真模块102可以将用于第一虚拟计算存储设备302的第一计算请求352和用于第二虚拟计算存储设备304的第二计算请求354转发(和/或翻译)到计算元件350。因此,图3a-图3c示出虚拟计算存储仿真模块102支持一个以上的虚拟计算存储设备的不同的示例。如图所示,不同的虚拟计算存储设备可以由不同的底层物理设备支持,或者可以共享底层物理设备。
62.应当注意,虽然本文描述的示例包括单个主机,但是虚拟计算存储仿真模块102可以支持一个以上的主机。在一些示例中,虚拟计算存储设备专属于主机。在其他示例中,虚拟计算存储设备在主机之间共享。还应当注意,虚拟计算存储仿真模块102可以支持具有不同功能的虚拟计算存储设备。例如,虚拟计算存储仿真模块102可以提供能够压缩/解压缩的第一虚拟计算存储设备和能够加密/解密的第二虚拟计算存储设备。虚拟计算存储仿真模块102可以对于与第一虚拟计算存储设备关联的请求执行数据的压缩/解压缩,以作为仿真第一虚拟计算存储设备的部分。此外,虚拟计算存储仿真模块102可以对于与第二虚拟计算存储设备关联的请求执行数据的加密/解密,以作为仿真第二虚拟计算存储设备的部分。
63.如上所述,系统100可以使用来自各种来源的计算元件和存储元件提供虚拟计算存储设备。参考图4,一种用于提供虚拟计算存储设备的系统400。系统400包括计算设备402。计算设备402包括计算元件404和存储元件406。计算元件404可以包括处理设备,并且可以对应于上述的计算元件106、第一计算元件218、第二计算元件220、第一计算元件306或第二计算元件312。存储元件406可以包括非易失性存储设备,并且可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308或第二存储元件314。计算设备402被配置为执行包括虚拟计算存储仿真模块410的虚拟机管理器408。虚拟机管理器408可以在计算元件404处或在计算设备402的另一处理器处执行。虚拟计算存储仿真模块410可以对应于上述的虚拟计算存储仿真模块102。
64.虚拟机管理器408被配置为提供第一虚拟机412和第二虚拟机416。在一些实施方式中,第一虚拟机412或第二虚拟机416对应于计算存储客户端104。虚拟计算存储仿真模块410被配置为将第一虚拟计算存储设备414呈现给第一虚拟机412,并且将第二虚拟计算存储设备418呈现给第二虚拟机416。第一虚拟计算存储设备414可以对应于虚拟计算存储设备110、第一虚拟计算存储设备302或第二虚拟计算存储设备304。第二虚拟计算存储设备418可以对应于虚拟计算存储设备110、第一虚拟计算存储设备302或第二虚拟计算存储设备304。
65.虚拟计算存储仿真模块410被配置为使用计算设备402的组件来提供虚拟计算存储设备414、虚拟计算存储设备418的功能。因此,如上所述,虚拟计算存储仿真模块410可以将用于虚拟计算存储设备414、虚拟计算存储设备418的计算请求翻译为用于计算元件404的计算请求,并且将用于虚拟计算存储设备414、虚拟计算存储设备418的存储请求翻译为
用于存储元件406的存储请求。因此,图4a示出计算设备(例如,服务器)可以使用计算设备的组件提供虚拟计算存储设备功能。
66.参考图4b,示出了计算设备402与第一计算存储设备430和第二计算存储设备432通信(例如,经由pcie或一些其他连接通信)的系统400的替换实施方式。第一计算存储设备430包括第一计算元件434和第一存储元件436。第二计算存储设备432包括第一计算元件438和第二存储元件440。第一计算元件434可以包括处理设备,并且可以对应于上述的计算元件106、第一计算元件218、第二计算元件220、第一计算元件306或第二计算元件312。类似地,第二计算元件438可以包括处理设备,并且可以对应于上述的计算元件106、第一计算元件218、第二计算元件220、第一计算元件306或第二计算元件312。第一存储元件436可以包括非易失性存储设备,并且可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308或第二存储元件314。类似地,第二存储元件440可以包括非易失性存储设备,并且可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308或第二存储元件314。
67.虚拟计算存储仿真模块410被配置为使用计算存储设备430、计算存储设备432的组件来提供虚拟计算存储设备414、虚拟计算存储设备418的功能。因此,如上所述,虚拟计算存储仿真模块410可以将用于虚拟计算存储设备414、虚拟计算存储设备418的计算请求翻译为用于第一计算存储设备430的组件和/或第二计算存储设备432的组件的计算请求。因此,图4b示出物理计算存储设备的组件可以由所公开的系统虚拟化。
68.参考图4c,示出了计算设备402与计算元件450和存储元件452通信(例如,经由pcie或一些其他连接通信)的系统400的替换实施方式。计算元件450可以包括处理设备(例如,fpga),并且可以对应于上述的计算元件106、第一计算元件218、第二计算元件220、第一计算元件306或第二计算元件312。存储元件452可以包括非易失性存储设备(例如,非计算存储设备),并且可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308或第二存储元件314。
69.虚拟计算存储仿真模块410被配置为使用外部的计算元件450和存储元件452来提供虚拟计算存储设备414、虚拟计算存储设备418的功能。因此,如上所述,虚拟计算存储仿真模块410可以将用于虚拟计算存储设备414、虚拟计算存储设备418的计算请求翻译为用于计算元件450的计算请求,并且将用于虚拟计算存储设备414、虚拟计算存储设备418的存储请求翻译为用于存储元件452的存储请求。因此,图4c示出计算设备(例如,服务器)可以使用外部组件提供虚拟计算存储设备功能。
70.图4d示出虚拟计算存储仿真模块410可以使用参考图4a-图c描述的设备的任何组合来提供虚拟计算存储设备。因此,虚拟计算存储仿真模块410可以提供与内部(在执行虚拟计算存储仿真模块的设备的内部的)处理元件、内部存储设备、外部(在执行虚拟计算存储仿真模块的设备的外部的)处理元件、外部存储设备、物理计算存储设备或其任何组合对应的虚拟计算设备。
71.图5a是用于提供虚拟计算存储设备的方法500的流程图。方法500可以由虚拟计算存储仿真模块(例如,由执行这种模块的一个或多个处理器)(诸如虚拟计算存储仿真模块102或虚拟计算存储仿真模块410)执行。方法500包括:在502中,在虚拟计算存储设备仿真模块处提供虚拟计算存储设备,其中,与虚拟计算存储设备关联的数据被存储在存储元件
处。例如,虚拟计算存储仿真模块102可以提供虚拟计算存储设备110。虚拟计算存储设备110的数据112可以被存储在存储元件108处。在另一示例中,虚拟计算存储设备的第一数据206可以被存储在第一存储元件202处,并且第二数据208可以被存储在第二存储元件204处。在另一示例中,虚拟计算存储仿真模块102可以提供第一虚拟计算存储设备302和第二虚拟计算存储设备304。第一虚拟计算存储设备302的第一数据310可以被存储在第一存储元件308处,并且第二虚拟计算存储设备304的第二数据316可以被存储在第二存储元件314处。在另一示例中,第一虚拟计算存储设备302的第一数据310和第二虚拟计算存储设备304的第二数据316可以被存储在存储元件330处。
72.方法500还包括:在504中,在虚拟计算存储设备仿真模块处接收用于虚拟存储设备的计算请求。例如,虚拟计算存储仿真模块102可以从计算存储客户端104接收计算请求114、csd命令118、第一计算请求224、第二计算请求228、第一计算请求352或第二计算请求354。
73.方法500还包括:在506中,将计算请求的翻译发送到计算元件。例如,虚拟计算存储仿真模块102可以将计算请求114、第一计算请求224、第二计算请求228、第一计算请求352或第二计算请求354的翻译(例如,硬件命令120)发送到计算元件106、第一计算元件218、第二计算元件220、第一计算元件306或第二计算元件312。生成的翻译可以包括将在第一协议(例如,nvme)下的请求映射到在第二协议(例如,由处理元件支持的协议)下的请求。
74.因此,方法500可以提供一种用于计算存储设备的虚拟化的技术。因此,计算存储客户端可以在具有各种各样的底层物理组件的系统中享受计算存储设备的好处。
75.在一些示例中,方法500还包括:初始化虚拟计算存储设备。例如,虚拟计算存储仿真模块102或虚拟计算存储仿真模块410可以生成虚拟计算存储设备到物理组件的一个或多个映射表。映射表可以将虚拟计算存储设备的地址映射到物理存储设备的地址。映射表还可以将虚拟计算存储设备映射到计算元件。物理组件可以被分配给虚拟计算存储设备,并且映射表可以基于来自计算存储客户端的命令、基于负载平衡算法或其组合进行设置。
76.图5b是提供支持存储请求的虚拟计算存储设备的方法510的流程图。方法510可以由虚拟计算存储仿真模块(例如,由执行这种模块的一个或多个处理器)(诸如虚拟计算存储仿真模块102或虚拟计算存储仿真模块410)执行。方法510包括:在512中,在虚拟计算存储设备仿真模块处提供虚拟计算存储设备,其中,与虚拟计算存储设备关联的数据被存储在存储元件处。例如,虚拟计算存储仿真模块102可以提供虚拟计算存储设备110。虚拟计算存储设备110的数据112可以被存储在存储元件108处。在另一示例中,虚拟计算存储设备的第一数据206可以被存储在第一存储元件202处,并且第二数据208可以被存储在第二存储元件204处。在另一示例中,虚拟计算存储仿真模块102可以提供第一虚拟计算存储设备302和第二虚拟计算存储设备304。第一虚拟计算存储设备302的第一数据310可以被存储在第一存储元件308处,并且第二虚拟计算存储设备304的第二数据316可以被存储在第二存储元件314处。在另一示例中,第一虚拟计算存储设备302的第一数据310和第二虚拟计算存储设备304的第二数据316可以被存储在存储元件330处。
77.方法510还包括:在514中,在虚拟计算存储设备仿真模块处接收用于虚拟存储设备的存储请求。例如,虚拟计算存储仿真模块102可以从计算存储客户端104接收存储请求116、csd命令118、第一存储请求210、第二存储请求214、第一存储请求332或第二存储请求
334。
78.方法510还包括:在516中,将存储请求的翻译发送到存储元件。例如,虚拟计算存储仿真模块102可以将存储请求116、csd命令118、第一存储请求210、第二存储请求214、第一存储请求332或第二存储请求334的翻译(例如,硬件命令120)发送到存储元件108、第一存储元件202、第二存储元件204、第一存储元件308或第二存储元件314。生成的翻译可以包括将在第一协议(例如,nvme)下的请求映射到在第二协议(例如,由存储元件支持的协议)下的请求。
79.因此,方法510可以提供一种用于支持存储命令的计算存储设备的虚拟化的技术。因此,计算存储客户端可以在具有各种各样的底层物理组件的系统中享受计算存储设备的好处。
80.图5c是提供以计算存储格式返回命令结果的虚拟计算存储设备的方法520的流程图。方法520可以由虚拟计算存储仿真模块(例如,由执行这种模块的一个或多个处理器)(诸如虚拟计算存储仿真模块102或虚拟计算存储仿真模块410)执行。该方法包括:在524中,在虚拟计算存储设备仿真模块处从硬件设备接收命令结果。例如,虚拟计算存储仿真模块102可以从计算元件106(或存储元件108)接收硬件结果122。硬件结果122可以对应于响应于计算命令或存储命令而生成的消息。例如,硬件结果122可以包括来自计算元件106的计算的结果或从存储元件108检索的数据。
81.方法520还包括:在526中,将硬件结果的翻译发送到计算存储客户端。例如,虚拟计算存储仿真模块102可以将csd结果124发送到计算存储客户端104。csd结果124可以对应于硬件结果122的翻译版本。在一些实施方式中,csd结果124是符合nvme协议的消息,尽管硬件结果122可能符合不同的协议。
82.因此,方法520可以提供一种用于将命令的结果返回到计算存储客户端的计算存储设备的虚拟化的技术。因此,计算存储客户端可以在具有各种各样的底层物理组件的系统中享受计算存储设备的好处。应当注意,方法500、方法510、方法520(或其方面)中的一个或多个可以被组合和/或由相同设备执行。
83.图6是可提供虚拟计算存储设备的计算系统600的框图。计算系统600包括计算设备602。计算设备602可以对应于上述的计算设备402。计算设备602包括处理器设备606和存储器设备608。处理器设备606可以包括cpu、cpu核、另一类型的处理器设备或其组合。
84.存储器设备608可以包括非易失性存储器、易失性存储器或其组合。如本文使用的,存储器设备608是制造物。存储器设备608存储可由处理器设备606执行以提供虚拟计算存储设备的虚拟计算存储设备(csd)指令610。虚拟csd指令可以对应于虚拟计算存储仿真模块102、虚拟机管理器408、虚拟计算存储仿真模块410或其组合。虚拟csd指令610可由处理器设备606执行以执行方法500、方法510、方法520中的一个或多个。
85.计算系统600还包括存储设备612。存储设备612可以对应于非易失性存储设备,诸如固态驱动器或其他存储设备。
86.存储设备还包括通信接口614,其被配置为与外部组件通信。通信接口614可以对应于以太网接口、ieee 802.11接口、pcie接口、sata接口、sas接口、另一类型的接口或其组合。在一些实施方式中,通信接口614可以被配置为将消息发送到计算存储客户端(诸如计算存储客户端104)和/或从其接收消息。
87.通信接口614连接到计算存储设备616、存储设备618和处理器设备620。虚拟csd指令610可由处理器设备606执行以提供使用一个或多个计算元件和一个或多个存储元件的虚拟计算存储设备。一个或多个计算元件可以包括处理器设备606、计算存储设备616、处理器设备620或其组合。一个或多个存储元件可以包括存储设备612、计算存储设备616、存储设备618或其组合。处理器设备606可以对应于计算元件106、第一计算元件218、第二计算元件220、第一计算元件306、第二计算元件312、计算元件404、第一计算元件434、第二计算元件438、计算元件450或其组合。计算存储设备616可以对应于计算元件106、第一计算元件218、第二计算元件220、第一计算元件306、第二计算元件312、第一计算存储设备430、第二计算存储设备432或其组合。处理器设备620可以对应于计算元件106、第一计算元件218、第二计算元件220、第一计算元件306、第二计算元件312、计算元件450或其组合。
88.在一些实施方式中,存储器设备608还包括可由处理器设备606执行以提供计算存储客户端(诸如计算存储客户端104、第一虚拟机412、第二虚拟机416或其组合)的指令。
89.存储设备612可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308、第二存储元件314、存储元件330、第一存储元件308、第二存储元件314、存储元件406或其组合。计算存储设备616可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308、第二存储元件314、存储元件330、第一存储元件308、第一计算存储设备430、第二计算存储设备432或其组合。存储设备618可以对应于存储元件108、第一存储元件202、第二存储元件204、第一存储元件308、第二存储元件314、存储元件330、第一存储元件308、存储元件452或其组合。
90.因此,如本文描述的,计算系统600可以提供计算存储设备的虚拟化。计算系统600可以包括更多或更少的所示出的组件。为了说明,一些示例可以不包括计算存储设备616、存储设备618、处理器设备620或其任何组合。
91.特定实施例可以在硬件、固件和软件中的一个或组合中实现。其他实施例还可以被实现为存储在计算机可读存储设备上的指令,其可以由至少一个处理器读取和执行以执行本文描述的操作。计算机可读存储设备可以包括用于以机器(例如,计算机)可读的形式存储信息的任何非暂时性存储器机构。例如,计算机可读存储设备可以包括只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、闪存存储器设备、以及其他存储设备和介质。
92.在本文中,词语

示例性

是指

作为示例、实例或说明

。本文描述为

示例性

的任何实施例不一定被理解为比其他实施例更优选或更有利。本文使用的术语

计算设备



用户装置



通信站







手持设备



移动设备



无线设备



用户设备

(ue)是指无线通信设备,诸如蜂窝电话、智能手机、平板计算机、上网本、无线终端、膝上型计算机、微蜂窝、高数据率(hdr)用户站、接入点、打印机、销售点设备、接入终端或其他个人通信系统(pcs)设备。该设备可以是移动或固定的。
93.如本文档中使用的,术语

通信

旨在包括传输、或接收、或者传输和接收两者。当描述由一个设备传输并由另一设备接收的数据组织时,上述术语在权利要求中可能特别有用,因为仅需要这些设备之一的功能就会侵犯权利要求。类似地,两个设备之间的双向数据交换(在交换期间,两个设备都传输和接收)可以被描述为

通信

,此时仅要求这些设备之一的功能。本文使用的针对无线通信信号的术语

通信

包括传输无线通信信号和/或接收
无线通信信号。例如,能够传送无线通信信号的无线通信单元可以包括无线传输器和/或无线通信接收器,其中,无线传输器将无线通信信号传输到至少一个其他无线通信单元,并且无线通信接收器从至少一个其他无线通信单元接收无线通信信号。
94.一些实施例可以与各种设备和系统结合使用,例如,个人计算机(pc)、台式计算机、移动计算机、膝上型计算机、便携式计算机、平板计算机、服务器计算机、手持计算机、手持设备、个人数字助理(pda)设备、手持pda设备、机载设备、非机载设备、混合设备、车载设备、非车载设备、移动或便携设备、消费者设备、非移动或非便携式设备、无线通信站、无线通信设备、无线接入点(ap)、有线或无线路由器、有线或无线调制解调器、视频设备、音频设备、音频视频(a/v)设备、有线或无线网络、无线区域网络、无线视频区域网络(wvan)、局域网(lan)、无线lan(wlan)、个人区域网络(pan)、无线pan(wpan)等。
95.一些实施例可以与以下各项之一结合使用:单向和/或双向无线电通信系统、蜂窝无线电电话通信系统、移动电话、蜂窝电话、无线电话、个人通信系统(pcs)设备、包含无线通信设备的pda设备、移动或便携式全球定位系统(gps)设备、包含gps接收器或收发器或芯片的设备、包含rfid元件或芯片的设备、多输入多输出(mimo)收发器或设备、单输入多输出(simo)收发器或设备、多输入单输出(miso)收发器或设备、包含一个或多个内部天线和/或外部天线的设备、数字视频广播(dvb)设备或系统、多标准无线电设备或系统、有线或无线手持设备(例如,智能手机、无线应用协议(wap)设备)等。
96.一些实施例可以与遵循一个或多个无线通信协议的一种或多种类型的无线通信信号和/或系统结合使用,其中,无线通信协议是,例如,射频(rf)、红外(ir)、频分复用(fdm)、正交fdm(ofdm)、时分复用(tdm)、时分多址(tdma)、扩展tdma(e-tdma)、通用分组无线电服务(gprs)、扩展gprs、码分多址(cdma)、宽带cdma(wcdma)、cdma 2000、单载波cdma、多载波cdma、多载波调制(mdm)、离散多音(dmt)、蓝牙
tm
、全球定位系统(gps)、wi-fi、wi-max、zigbee
tm
、超宽带(uwb)、全球移动通信系统(gsm)、2g、2.5g、3g、3.5g、4g、第五代(5g)移动网络、3gpp、长期演进(lte)、lte高级(lte advanced)、gsm演进增强数据率(edge)等。其他实施例可以用于各种其他设备、系统和/或网络。
97.尽管上面已经描述示例处理系统,但是本文描述的主题和功能操作的实施例可以在其他类型的数字电子电路中实现,或在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实现,或在它们中的一个或多个的组合中实现。
98.本文描述的主题和操作的实施例可以在数字电子电路中实现,或在包括本说明书中公开的结构及其结构等同物的计算机软件、固件或硬件中实现,或在它们中的一个或多个的组合中实现。本文描述的主题的实施例可以被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个组成部分,其被编码在计算机存储介质上,以由信息/数据处理装置执行或控制信息/数据处理装置的操作。可替换或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其生成是为了编码信息/数据,以便传输到合适的接收器装置,以由信息/数据处理装置执行。计算机存储介质可以是或者可以被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的来源或目的地。计算机存储介质还可以是或可以被包括在一个或多个单独的物理组件或介质(例如,多个cd、磁盘
或其他存储设备)中。
99.本文描述的操作可以被实现为由信息/数据处理装置对存储在一个或多个计算机可读存储设备上或从其他来源接收的信息/数据执行的操作。
100.术语

数据处理装置

包括用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机、片上系统、或者前述中的多个或组合。该装置可以包括特殊用途的逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为有关计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境可以实现各种不同的计算模型基础架构,诸如网络服务、分布式计算和网格计算架构等。
101.计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译或解释语言、声明性或程序性语言)编写,并且它可以以任何形式部署,包括作为独立的程序或作为适合在计算环境下使用的部分、组件、子程序、对象或其他单元。计算机程序可以但不一定对应于文件系统中的文件。程序可以被存储在保持其他程序或信息/数据的文件的部分(例如,存储在标记语言文件中的一个或多个脚本)中,被存储在专门用于有关程序的单个文件中,或被存储在多个协调文件(例如,存储一个或多个组件、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上执行,或者可以被部署为在多个计算机上执行,其中,所述多个计算机位于一个站点,或者分布在多个站点上,并通过通信网络来相互连接。
102.本文描述的过程和逻辑流可以通过以下方式执行:一个或多个可编程处理器执行一个或多个计算机程序,以通过对输入信息/数据进行操作并生成输出来执行动作。举例来说,适合执行计算机程序的处理器包括通用微处理器和专用的微处理器,以及任何种类的数字计算机的任何一个或多个处理器。一般来说,处理器将从只读存储器或随机存取存储器或两者接收指令和信息/数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。一般来说,计算机还包括或者可操作地耦合到用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘),以从其接收信息/数据和/或将信息/数据传输到其上。然而,计算机不一定具有这种设备。适合存储计算机程序指令和信息/数据的设备包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如,eprom、eeprom和闪存存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及cd rom盘和dvd-rom盘。处理器和存储器可以由特殊用途的逻辑电路补充,或被并入其中。
103.为了提供与用户的互动,本文描述的主题的实施例可以在具有用于向用户显示信息/数据的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可以用来向计算机提供输入的键盘和指向设备(例如,鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的互动;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语言或触觉输入。此外,计算机可以通过将文件发送到由用户使用的设备和从其接收文件来与用户互动;例如,通过响应于从网络浏览器接收的请求而将网页发送到用户的客户端设备上的网络浏览器。
104.本文描述的主题的实施例可以在包括后端组件的计算系统中实现(例如,作为信息/数据服务器),或在包括中间件组件的计算系统中实现(例如,应用服务器),或在包括前端组件的计算系统中实现(例如,具有用户可以通过其与本文描述的主题的实施例进行交互的图形用户界面或网络浏览器的客户端计算机),或在一个或多个这种后端组件、中间件组件或前端组件中的任何组合中实现。系统的组件可以通过数字信息/数据通信的任何形式或介质来相互连接,例如,通信网络。通信网络的示例包括局域网(

lan

)和广域网(

wan

)、互联网络(例如,互联网)和对等网络(例如,自组织对等网络)。
105.计算系统可以包括客户端和服务器。客户端和服务器一般彼此远离,并且通常通过通信网络进行互动。客户端和服务器的关系是由于在相应计算机上运行且彼此之间具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将信息/数据(例如,html页面)传输到客户端设备(例如,为了将信息/数据显示给与客户端设备互动的用户并从用户接收用户输入)。在客户端设备处生成的信息/数据(例如,用户交互的结果)可以在服务器处从客户端设备上接收。
106.虽然本说明书包含许多具体的实施例细节,但是这些细节不应被理解为对任何实施例的范围或可能要求保护的内容的限制,而是应当被理解为对专属于特定实施例的特征的描述。在单独的实施例的上下文中描述的特定特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合实现。此外,尽管上述特征可能被描述为在特定组合中起作用,甚至最初也是如此要求保护的,但是在一些情况下,可以从所要求保护的组合中去除一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
107.类似地,虽然附图按特定的顺序描绘操作,但是这不应被理解为要求以所示的特定顺序或依次执行这些操作,或要求执行所有示出的操作以达到期望结果。在特定情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应理解为在所有实施例中需要这种分离,应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中,或被打包为多个软件产品。
108.因此,已经描述了本主题的特定实施例。其他实施例也落入所附的权利要求的范围内。在一些情况下,权利要求中阐述的动作可以按不同顺序执行,并且仍然可以达到期望结果。此外,附图中描绘的过程不一定需要所示的特定顺序或依次顺序来实现期望结果。在特定实施例中,多任务和并行处理可能是有利的。
109.对于这些实施例相关的领域的技术人员来说,在受益于前述描述和关联附图所呈现的教导的情况下,会想到本文所阐述的公开的许多修改和其他实施例。因此,应当理解,这些实施例不限于所公开的具体实施例,并且修改和其他实施例也被包括在所附的权利要求的范围内。尽管本文采用特定的术语,但是这些术语仅在通用和描述性的意义上使用,而不是为了限制的目的。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献