计算存储装置与基于网络化的系统

文档序号:1866274 发布日期:2021-11-19 浏览:8次 >En<

阅读说明:本技术 计算存储装置与基于网络化的系统 (Computing storage device and networking-based system ) 是由 S·高 S·马 M·M·胡尔 J·卡明斯 于 2020-03-27 设计创作,主要内容包括:描述与计算存储装置相关的方法、系统及装置。举例来说,加速器可存取的存储装置可在主机及所述加速器之间共享并且可由所述主机及所述加速器中的任一者存取。计算存储系统可包含提供可由主机及由所述计算存储系统的加速器逻辑存取的共享文件系统的一部分的存储装置。主机接口逻辑可经配置以从所述主机接收存储命令以在创建数据时将所述数据存储在所述存储装置上。所述主机接口逻辑可进一步经配置以从所述主机接收存储命令以使所述加速器逻辑使用在所述存储装置上的所述所存储数据执行计算任务。所述加速器逻辑可使用在所述存储装置上的所述所存储数据执行所述计算任务。(Methods, systems, and devices related to computing storage are described. For example, accelerator accessible storage may be shared between a host and the accelerator and accessible by either of the host and the accelerator. A computing storage system may include a storage device that provides a portion of a shared file system accessible by a host and by accelerator logic of the computing storage system. Host interface logic may be configured to receive a storage command from the host to store data on the storage device when the data is created. The host interface logic may be further configured to receive a storage command from the host to cause the accelerator logic to perform a computing task using the stored data on the storage device. The accelerator logic may perform the computing task using the stored data on the storage device.)

计算存储装置与基于网络化的系统

相关申请案的交叉参考

本申请案依据35U.S.C.§119主张2019年3月29日申请的序列号为62/826,591的美国临时申请案的较早申请日期的权益,所述申请案的全部内容出于任何目的特此以引用的方式以其全文并入本文中。

技术领域

本文描述的实例大体上涉及计算存储装置及系统。

背景技术

异构计算单元(通常称为加速器)通常具有不同于一般CPU的架构及指令集。一些加速器可具有并行工作的浮点计算核心,且一些加速器可具有定制的计算逻辑以使某些应用程序加速。为将加速器并入应用程序中,程序员可剖析应用程序并识别计算密集型任务,然后将应用程序划分为主机代码及加速器代码。在执行期间,主机应用程序将输入数据传送到加速器,且加速器经编程以对输入数据执行操作,且接着将结果写回到主机。

发明内容

本文描述实例设备。设备的一些实例包含主机接口及经配置以经由所述主机接口与主机连接并执行从所述主机传达的计算任务的逻辑。耦合到所述逻辑的存储控制器经配置以与包括非易失性存储器的存储装置通信,其中所述存储装置形成所述逻辑与所述主机之间的共享文件系统的部分,且其中驻留在所述存储装置上的数据可由所述逻辑存取以用于从所述主机装置传达的所述计算任务。

在一些实例中,所述数据可响应于来自所述主机的命令而创建,并且所述数据可在创建所述数据时存储在所述存储装置上。

在一些实例中,所述共享文件系统可进一步由一或多个额外主机共享。

在一些实例中,所述逻辑可包含专用集成电路(ASIC)。

在一些实例中,所述逻辑可包含现场可编程门阵列(FPGA),其中逻辑可经配置以从所述主机接收指令以配置所述逻辑以执行所述计算任务。

一些实例可进一步包含耦合到所述主机接口及所述逻辑的存储器控制器。

在一些实例中,所述存储器控制器可经配置以从所述主机接收额外数据并将所述额外数据传达到所述逻辑。

在一些实例中,所述逻辑可进一步经配置以将所述计算任务的结果写入所述存储装置。

一些实例可进一步包含第二存储装置,其经配置以提供可由所述主机及由所述逻辑存取的所述共享文件系统的第二部分。

本文描述方法的实例。一些实例方法包含在耦合到存储控制器的逻辑处从主机接收计算任务,其中所述存储控制器经配置以与包括非易失性存储器的存储装置通信,存取驻留在所述存储装置上的数据,其中所述存储装置形成在所述主机与所述逻辑之间的共享文件系统的部分,及在经由所述存储控制器存取所述数据时使用所述数据执行所述计算任务。

在一些实例中,第二存储装置可形成所述共享文件系统的第二部分,并且执行所述计算任务进一步包括使用驻留在所述第二存储装置上的第二数据。

在一些实例中,所述存储控制器可耦合到主机接口逻辑以提供所述主机对所述存储装置的存取。

一些实例方法可进一步包含将作为所述计算任务的结果产生的数据写入所述存储装置。

在一些实例中,从所述主机接收的所述计算任务可包含用于定制所述逻辑以用于执行所述计算任务的指令。

本文描述系统的实例。一些实例系统可包含:存储装置,其包括非易失性存储器,其中所述存储装置经配置以提供可由主机及由耦合到经配置以与所述存储装置通信的存储控制器的逻辑存取的共享文件系统的一部分;主机接口,其耦合到所述逻辑,其中所述主机接口经配置以从所述主机接收存储命令以在创建数据时将所述数据存储在所述存储装置上,其中所述主机接口进一步经配置以从所述主机接收任务以使所述逻辑使用所述存储装置上的所述所存储数据执行计算任务,其中所述逻辑经配置以使用在所述存储装置上的所述所存储数据执行所述计算任务。

在一些实例中,所述逻辑可进一步经配置以将所述计算任务的结果写入所述存储装置。

在一些实例中,所述逻辑可进一步经配置以从所述主机接收指令以配置所述逻辑以执行所述计算任务。

一些实例系统可进一步包含第二存储装置,其经配置以提供可由所述主机及由所述逻辑存取的所述共享文件系统的第二部分。

在一些实例中,所述计算任务可进一步使用驻留在所述第二存储装置上的第二数据,且所述逻辑进一步经配置以使用在所述存储装置上的所述所存储数据及在所述第二存储装置上的所述第二数据来执行所述计算任务。

附图说明

图1是根据本文描述的实例的环境100的示意图。

图2是根据本文描述的实例的加速架构200的示意图。

图3是根据本文描述的实例的计算存储系统300的示意图。

图4说明根据本文描述的实例的方法400。

图5说明根据本文描述的实例的方法500。

图6说明根据本文描述的实例的数据分组600。

具体实施方式

随着数据分析变得越来越复杂,其包含机器学习、人工智能及一般来说大型数据集,可通过使用加速器来提高计算速度。加速器通常是指为执行指定计算任务而提供的硬件(例如,电路系统)。举例来说,加速器可包含可经设计以执行特定计算的一或多个现场可编程门阵列(FPGA)及/或专用电路(ASIC)。计算密集型任务可从主机CPU卸载并由加速器执行,使得主机CPU可自由地继续执行其它任务。然而,将计算任务卸载到加速器通常包含将计算任务中使用的数据(例如,由任务分析的数据)从主机CPU发送到可由加速器存取的临时存储器(例如,DRAM缓冲器)。从主机CPU检索数据并将数据发送到加速器存储器所使用的时间及能量对通过使用加速器而不是利用主机CPU来完成复杂计算任务实现的时间及能量节省具有重大影响。

本文描述的计算存储系统的实例通常提供加速器可存取的存储装置,所述存储装置形成在主机与加速器之间共享的共享申请系统的部分。因为主机及加速器两者都可存取存储装置上的数据,所以当数据第一次进入系统时(举例来说,通过从外部源收集或下载、或通过由主机产生),主机可将所述数据存储在存储装置上。为利用存储装置上的数据执行任务,主机可向加速器发送一或多个命令(例如,一系列API调用),以存取存储装置上的数据并执行由主机识别的计算任务。因为数据是共享文件系统的部分,所以主机可发送指向数据的指针,而不是通过主机与加速器之间的接口发送数据本身,从而节省时间及资源。用于执行任务的加速器中的逻辑与存储装置之间的接口可与主机与加速器之间的接口不同,并且在一些实例中可比主机与加速器之间的接口更快。以此方式,使用加速器逻辑与存储装置之间的接口存取数据可比通过主机接口接收供加速器逻辑使用的数据更可取。

图1说明计算存储系统100的实例使用。如在图1中展示,主机106及服务器102经由网络104连接。服务器102包含计算存储系统300。举例来说,计算存储系统300可为位于服务器102的机架中的离散硬件,使得计算存储系统300的加速器逻辑及计算存储系统300的存储装置可物理连接。在其它实施方案中,计算存储系统300的组件可位于服务器102的单独部分中,或在通过可网络104存取的额外服务器处。图1中展示的组件仅为示范性的。在其它实例中可使用额外、更少及/或不同组件。

在各种实施例中,可使用因特网、局域网(LAN)、广域网(WAN)及/或其它网络来实施网络104。除传统的数据联网协议之外,在一些实施例中,数据可根据包含近场通信(NFC)、蓝牙、蜂窝网络及类似者的协议及/或标准来通信。此外,网络104可包含图1中展示的各种装置与组件之间的不同连接。举例来说,主机106可通过WAN连接连接到服务器102及计算存储系统300,通过因特网连接到第三方存储装置110,并通过蜂窝网络连接到数据收集装置108。主机106、服务器102及其它组件可经由物理连接(例如外围组件互连快速(PCIe)接口)连接到网络104。

本文描述的实例可包含主机及/或可与主机(例如主机106)一起使用。主机106可使用任何数目个计算装置来实施,其包含(但不限于)计算机、膝上型计算机、平板计算机、移动电话、智能电话、智能扬声器、交通工具(例如,汽车)或器具。一般来说,主机106可包含一或多个处理器,例如中央处理单元(CPU)及/或图形处理单元(GPU)。主机106通常可通过使用处理器执行可执行指令(例如,软件)来执行操作。如本文描述,在一些实例中,主机106可与一或多个服务器及/或计算存储系统通信以获得某些计算任务的加速。

本文描述的实例可包含数据收集装置,例如图1的数据收集装置108。虽然描绘单个数据收集装置108,但在本文描述的系统中可包含任何数目个。任何数目个装置可用于实施数据收集装置108—包含无人机、智能手机、智能扬声器、计算机、传感器、摄像机、照相机、麦克风等。

本文描述的实例可包含存储装置,例如图1的第三方存储装置110。举例来说,第三方存储装置110可为可经由因特网或其它网络104存取的数据库、服务器或其它数据存储库。第三方存储装置110可包含多于一个物理装置,并且在一些实施方案中可包含属于多于一个不同第三方的存储组件及装置。

本文的实例可包含服务器或与服务器一起利用,例如图1的服务器102,包含计算存储系统,例如图1的计算存储系统300。计算存储系统300广义地包含经配置以执行计算任务及存储的加速器逻辑。计算存储系统300的存储装置可为非易失性存储器,并且存储系统可包含其它易失性或非易失性存储器,其经配置以存储用以实施本文描述的过程的各种实施例计算机可读数据及指令。加速器逻辑可包含可配置逻辑(例如,一或多个FPGA),或可为存储在计算存储系统300内的易失性或非易失性存储器上的计算机可执行指令。

使用图1中展示的系统,主机106可启动通过数据收集装置108收集数据并引导使用计算存储系统300分析所收集的数据。主机106还可从第三方存储装置110存取用于分析的数据,并引导使用计算存储系统300分析所述数据。

在图1中展示的一个实例中,主机106引导通过数据收集装置108采集数据及使用计算存储系统300分析所采集的数据。数据收集装置108被展示为收集图像数据的无人驾驶飞行器(UAV),但其它数据收集装置可由主机106引导,其包含例如卫星、其它有人或无人航空器、气象站、医疗传感器、医疗成像装置、基因组测序器、射电望远镜或类似者。在本文描述的实例中,数据收集装置108捕获大陆地区域上方的航空图像数据供主机106在最大似然分类(MLC)中使用,以确定包含在由数据收集装置108捕获的图像数据中的陆地区域的陆地覆盖特征。

主机106可通过提供例如(举例来说)陆地覆盖的坐标、高度、图像分辨率等输入来引导数据收集装置108收集数据。在其它实施方案中,数据收集装置108可启动数据收集并将所收集数据传达到主机106。一旦数据由数据收集装置108收集,主机106就可引导数据收集装置108将数据存储在服务器102处的计算存储系统300上。由于计算存储系统300的存储装置可由主机106直接寻址,因此主机106可向数据收集装置108提供共享文件系统内的特定位置以存储数据。举例来说,共享文件系统可为包含主机的存储器上的数据、位于计算存储系统300的存储装置上的数据以及在一些实施方案中存储在其它物理位置中的数据的文件系统。存储在共享文件系统内的数据可由主机及计算存储系统300的加速器逻辑两者寻址。

为使用由数据收集装置108收集的数据运行计算任务(例如,MLC),主机106可向计算存储系统300的加速器逻辑发送一系列命令(例如,API调用)以对图像数据执行MLC。举例来说,主机106可初始化加速器逻辑,将参数传递到加速器逻辑,并在加速器逻辑处发起任务。由主机106传递到加速器逻辑的参数通常包含指向计算存储系统300上的数据的指针及数据大小。在一些实施方案中,在加速器逻辑是可重新配置的情况下,例如现场可编程门阵列(FPGA),主机106可向加速器逻辑发送配置信息。在其它实施方案中,在加速器逻辑是专用集成电路(ASIC)的情况下,主机106可向加速器逻辑发送针对任务的编译指令。当主机106向计算存储系统300发送API调用以在加速器逻辑处发起任务时,加速器逻辑通过从计算存储系统300上的存储装置存取数据来执行针对图像数据的MLC。

一旦加速器逻辑已执行由主机106请求的任务,所述任务的结果就可存储在计算存储系统300上,传回到主机106,在主机106的显示器上显示,发送到不同的存储位置,或先前选项的任一组合,如由主机106指示。

计算存储系统300可类似地用于对最初存储在第三方存储装置110上的数据进行分析。举例来说,主机106可存取由各种研究实体或其它方收集的、存储在第三方存储装置110上并且可经由因特网或其它网络104存取的图像数据的共享数据存储库。为在第三方存储装置110上下载数据,主机106可启动包含计算存储系统300的共享文件系统内的下载位置的下载请求。对于由数据收集装置108收集的数据,可以与上文描述相同的方式对下载的数据进行分析。

在一些实施方案中,多于一个主机106可连接到服务器102并共享计算存储系统300。此外,服务器102可包含多于一个计算存储系统300,并且多个计算存储系统的存储组件可一起形成可由对共享数据执行分析的多个主机存取的共享文件系统。举例来说,加速系统可包含一或多个计算存储系统及其它异构计算系统以由与服务器102通信的主机使用。

主机106、数据收集装置108、第三方存储装置110及其它计算装置可使用数据分组(例如图6中展示的分组600)与计算存储系统300通信。分组600包含路由信息602、分组类型604、配置信息606及有效负载608。取决于分组的类型,分组可包含额外或不同信息。分组600通常是用于主机106或数据收集装置108与计算存储系统300之间的通信的实例分组。

路由信息602识别计算存储装置,并可进一步包含源标识符或网络流控制。在示范性实施方案中,路由信息602是包含指定端口的IP地址。分组类型602识别分组600的类型或用途。举例来说,分组600可为纯数据分组、控制或命令分组或配置分组。一般来说,控制及命令分组不包含配置606或有效负载608。

配置分组包含配置606,配置606例如可为配置计算存储系统300的逻辑以执行任务的信息。在计算存储系统300的逻辑包含FPGA的情况下,配置606可为位流。在计算存储系统300的逻辑包含ASIC的情况下,配置606可为编译指令。纯数据分组通常包含有效负载608。有效负载608通常是由分组600传达的数据。一些分组600可为包含配置606及有效负载608两者的配置分组及存储分组的组合。在一些实施方案中,配置606及有效负载608可为将计算存储系统300指向外部位置(例如,第三方存储装置110)的指针,使得计算存储系统300可从外部位置检索其配置或有效负载数据。

图2是根据本文描述的实例布置的加速架构200的示意图。图2包含与加速系统202通信的主机106。主机106包含耦合到外围接口240的主机CPU 204、主机存储器206及主机存储装置208。外围接口耦合到加速系统210的交换机210。加速系统210包含耦合到外围接口242的异构计算系统212、计算存储系统300及计算存储系统214。异构计算系统212包含耦合到处理器216的存储器218。计算存储系统300包含耦合到处理器220的存储装置224。计算存储系统214包含耦合到处理器222的存储装置226。图2中展示的元件仅仅是示范性的。其它实例中可使用额外、不同及/或更少组件。

尽管图2的主机106使用与图1的主机106相同的参考数字来说明,但在一些实例中应理解,图1的主机106可用不同于图2中具体展示的变型的变型来实施。类似地,尽管使用与图1的计算存储系统300相同的参考数字来说明图2的计算存储系统300,但在一些实例中应理解,图1的计算存储系统300可用不同于图2中具体展示的变型的变型来实施。

本文的实例可包含主机及/或与主机一起利用,例如主机106。主机106可使用任何数目个计算装置来实施,其包含(但不限于)计算机、膝上型计算机、平板计算机、移动电话、智能电话、智能扬声器、交通工具(例如,汽车)或器具。一般来说,主机106可包含一或多个处理器,例如CPU 204及/或图形处理单元(GPU)。主机106通常可通过使用处理器执行可执行指令(例如,软件)来执行操作。如本文描述,在一些实例中,主机106可与一或多个服务器及/或计算存储系统通信以获得某些计算任务的加速。

本文中的实例可包含加速系统及/或与加速系统一起利用,例如加速系统202。加速系统202可为单个硬件,使得异构计算系统212、计算存储系统300及计算存储系统214物理耦合,或异构计算系统212、计算存储系统214及计算存储系统300可通信连接(例如,作为服务器上的或通过网络链接的单独服务器上的独立元件)。

本文的加速系统202的实例可包含异构计算系统212、计算存储系统300及计算存储系统214。在一些实施方案中,异构计算系统212、计算存储系统214及计算存储系统300可具有类似或相同硬件组件,并且可取决于从主机106接收的命令充当计算存储系统或异构计算系统。举例来说,计算存储系统300及212可包含类似于存储器218的存储器。

本文描述的实例计算存储系统300及212以及实例异构计算系统可包含或利用处理器(例如,图2的处理器216、220及222)。处理器216、220及222可实施为用于执行计算任务的处理逻辑。举例来说,处理器216、220及222可通过可配置逻辑实施,例如一或多个FPGA,或可实施为存储在易失性或非易失性存储器上的计算机可读指令。

实例计算存储系统300及212可包含或利用存储装置,例如存储装置224及存储装置226。存储装置224及226可为非易失性存储组件,其包含(但不限于)SSD、NVMe SSD、持久存储器、机械驱动器及其它类型的非易失性存储器或非易失性存储装置。

主机106连接到外围接口240,并使用外围接口240向加速系统202发送数据及命令。外围接口240通信地连接(例如,物理或无线连接)到加速系统202的交换机210,交换机210将从外围接口240接收的数据交换到加速系统202的外围接口242。异构计算系统212、计算存储系统214及计算存储系统300连接到外围接口242以从主机106接收命令及数据。在一些实施方案中,外围接口240及外围接口242是PCIe接口,但考虑其它类型的接口。

图2中展示的加速架构200可以若干方式支持数据的分析。主机CPU 204可执行针对存储在主机存储装置208上的数据的计算任务。异构计算系统212的处理器216还可用于通过向异构计算系统212发送数据来执行针对存储在主机存储装置208上的数据的计算任务。可由主机存储装置208使用计算存储系统300的处理器220来执行针对存储在计算存储系统300的存储装置224或计算存储系统214的存储装置226上的数据的任务。

为分析存储在主机存储装置208上的数据,数据沿路径228从主机存储装置208移动到主机存储器206并沿路径230从主机存储器206移动到主机CPU 204。结果数据可沿路径230从主机CPU 204移动到主机存储器206并沿路径228从主机存储器206移动到主机存储装置208。使用主机CPU 204分析主机存储装置208的数据去除主机106与加速系统202之间的数据移动。然而,对于计算密集型任务,分析可能完全利用主机CPU 204,或由于主机CPU204并行执行其它任务而可能需要很长时间。

异构计算系统212的处理器216还可用于分析存储在主机存储装置208上的数据。数据沿路径228从主机存储装置208移动到主机存储器206,且接着沿路径232(通常通过外围接口240、交换机210及外围接口242)从主机存储器206移动到异构计算系统212的存储器218。最后,数据从异构计算系统212的存储器218移动到处理器216以进行处理。对于一些数据密集型任务,此数据移动循环可发生多于一次以执行单个命令。举例来说,用作针对计算任务的输入的数据可使用比异构计算系统212的存储器218上可用的存储空间更多的存储空间。主机106与异构计算系统212之间的数据移动(尤其是重复移动)可减慢具有大量输入数据的任务的总计算时间。

如关于图1描述,主机106可在创建或收集数据供稍后分析时,将计算存储系统300的存储装置224及计算存储系统214的存储装置226用作共享文件系统的部分。在其中数据存储在计算存储系统300的存储装置224上的实例中,主机106可发送一系列API调用或其它命令,以指示计算存储系统300的处理器220执行命令以分析数据。数据沿路径236从存储装置224移动到处理器220以使处理器220执行命令。数据不在加速系统202与主机106之间移动,从而节省时间及数据传送资源。

在其中数据存储在计算存储系统214的存储装置226上的实例中,主机106可指示计算存储系统300的处理器220执行任务以分析数据。因为计算存储系统214及计算存储系统300两者都连接到外围接口242,所以来自存储装置226的数据可沿路径238从存储装置226传送到处理器220,从而绕过主机106并最小化数据传送。这在指示处理器220使用多于一个数据子集执行计算任务的情况下可能特别有用,其中一些数据存储在存储装置224上,且一些数据存储在存储装置226上。

对于所有实施方案,所得数据可使用与输入数据相同或不同的路径传输到存储装置。举例来说,异构计算系统212的处理器216可使用来自主机存储装置208的输入数据执行计算任务。如果用户希望稍后使用异构计算系统212作为计算存储系统来运行对结果数据的额外分析,那么结果数据可存储在异构计算系统212的存储装置上(图2中未展示)。替代地,结果数据可存储在计算存储系统300的存储装置224、计算存储系统214的存储装置226上,或沿路径232传回到主机106用于存储在主机存储装置208处。类似地,来自处理器220、处理器222或主机CPU 204的结果数据可被传输以存储在加速系统202内的任何存储组件上。

图3说明计算存储系统300。如上文关于图1及图2描述,计算存储系统300可在服务器(例如,服务器102)中个别地实施,作为分布式组件,或作为加速系统(例如,加速系统202)的部分。尽管计算存储系统300被展示包含存储装置314,但在一些实施方案中,计算存储系统300可包含形成一或多个主机(例如,主机106)与计算存储系统300的加速器逻辑308之间的共享文件系统的多个存储组件。计算存储系统300可实施为单个硬件(例如,在单个板上具有所有组件),或可经实施成其中存储装置314通过物理地或无线地连接到计算存储系统300的存储外围接口316连接到计算存储系统300的其它组件。

尽管使用与图1及2的计算存储系统300相同的参考数字来说明图3的计算存储系统300,但在一些实例中应理解,图1及2的计算存储系统300可用不同于图3中具体展示的变型的变型来实施。

本文的实例可包含主机接口逻辑及/或与主机接口逻辑一起利用,例如图3的主机接口逻辑302。主机接口逻辑302可以各种方式实施以向主机106提供直接存储器存取(DMA)能力。举例来说,主机接口逻辑106可实施为基于流的分散-集中DMA引擎。主机接口逻辑106还可实施为网络接口,从而使计算存储系统300能够直接连接到网络。主机接口逻辑106还可作为计算存储系统300的通用逻辑嵌入加速器逻辑309内。

本文的实例可包含加速器逻辑及/或与加速器逻辑一起利用,例如图3的加速器逻辑308。加速器逻辑308可实施为可重新配置逻辑,例如FPGA,其可在执行计算任务之前通过来自主机(例如,主机106)的命令来重新配置。重新配置允许加速器逻辑308在任务执行之前通过重新配置用于各种计算任务。在其它实施方案中,加速器逻辑308可为配置用于重复执行特定计算任务的静态逻辑。

本文的实例可包含存储器控制器及/或与存储器控制器一起利用,例如图3的存储器控制器306。存储器控制器306可为双数据速率(DDR)存储器控制器,其经由主机接口逻辑302为加速器逻辑308及主机提供对DDR存储器的存取。

本文的实例可包含存储装置及/或与存储装置一起利用,例如图3的存储装置314,其由存储控制器(例如图3的存储控制器304)管理。存储控制器304接收读取及写入操作并将读取及写入操作引导到存储装置314。在一个实施方案中,存储控制器304是非易失性存储器快速(NVMe)控制器,存储外围接口316是PCIe接口,且存储装置314是NVMe SSD。在其它实施方案中,存储装置314可为另一类型的非易失性存储器。在一些实施方案中,计算存储系统300可包含可由加速器逻辑308及主机106两者存取的额外存储控制器及存储组件。

命令(例如,来自主机106的命令)通过外围接口242进入计算存储系统300。来自主机106(以及使用计算存储系统300的任何其它主机)的命令通常经格式化以存取存储控制器304、加速器逻辑308或存储器控制器306中的一或多者。举例来说,命令可从主机106格式化为除常规流参数之外还包含特定资源的专用流ID及存储器映射的流。举例来说,来自主机106的用以在存储装置314上存储数据的流将包含所述流内的识别存储控制器304的标头。举例来说,AXI存储器映射协议可用于识别存储控制器304。

主机接口逻辑302从外围接口242接收通信,并通过解析嵌入在从主机106接收的流中的资源地址,将通信引导到存储控制器304、加速器逻辑308或存储器控制器306中的一或多者。主机接口逻辑302向主机106提供DMA能力,从而允许主机106通过将例如命令或数据的通信从主机接口逻辑302引导到存储控制器304来存取存储控制器304(并相应地存取存储装置314)。主机接口逻辑302可以各种方式实施以向主机106提供DMA能力。在一个实施方案中,主机接口逻辑302实施为基于流的分散-集中DMA引擎,从而允许多个流同时存取存储控制器304、加速器逻辑308及存储器控制器306。基于所接收流,主机接口逻辑302将从主机接收到的流经由主机存储器路径322引导到存储器控制器306,经由主机加速器路径320引导到加速器逻辑308,或经由主机存储路径318引导到存储控制器304。

加速器逻辑308可通过加速器存储路径326耦合到存储器控制器306,并通过加速器存储路径324耦合到存储控制器304。加速器存储路径324及加速器存储器路径326两者都可为存储器映射接口(例如,AXI存储器映射接口),以允许加速器逻辑308直接存取存储装置314及可通过存储器控制器306存取的DDR存储器。因为加速器逻辑308包含到存储器控制器306及存储控制器304两者的连接,所以加速器逻辑308可用于分析存储在存储装置314上的数据(CSS模式)或从主机发送并临时存储在可由存储器控制器306存取的DDR存储器上的数据。

在实例中,计算存储系统300从主机(例如,图2的主机106)接收通信以使用计算存储系统300存储及分析数据。

如上文描述,主机106可用加速器逻辑308存取作为共享文件系统的部分的存储装置314。共享文件系统可支持通过来自主机106及加速器逻辑308的命令的基本文件操作,如Open()、Close()、Write()及Read()。

主机106可存取存储控制器304以存储数据或存取先前存储在存储装置314上的数据。主机106还可使用存储控制器304存取共享文件系统,以引导将数据(例如,从外部数据源检索的或使用数据收集装置收集的数据)存储在存储装置314上。主机106通常向主机接口逻辑302发送识别存储控制器304的流。流通常包含额外信息,例如用于传送到存储装置314的数据或指向存储装置314的共享文件系统中的新文件的指针。当流被接收时,主机接口逻辑302在流中定位存储控制器304识别,并将流传输到存储控制器304。在一个实例中,在存储装置314上的共享文件系统内创建新文件,使得主机106可将由数据收集装置收集的数据的存储引导到新创建的文件。

主机可进一步使用加速器逻辑308分析存储在存储装置314上的数据,其中分析由主机106启动。主机可向主机接口逻辑302发送请求,所述请求格式化为具有指向存储装置314上的数据的指针的流。所述请求可包含包括用以重新配置加速器逻辑308以执行由主机请求的计算任务的重新配置信息的额外流。包含重新配置信息及识别用作计算任务输入的数据的流可包含识别加速器逻辑308的标识符。主机接口逻辑302接收通信406,解析标识符,并将流发送到加速器逻辑。在一些实施方案中,主机接口逻辑302可同时将其它流从主机106发送到例如存储器控制器306。

在请求包含针对加速器逻辑308的重新配置信息的情况下,加速器逻辑308经重新配置以执行计算任务。加速器逻辑308可发送用于任务执行的一些信息,包含重新配置信息到存储器控制器306用于由加速器逻辑308临时存储及存取。加速器逻辑308将包含指向存储装置314上的数据的指针的流的部分发送到存储器控制器304。存储控制器304检索所请求数据并将数据传回到加速器逻辑308。在加速器逻辑308被重新配置之后并且在加速器逻辑308正经由存储器控制器306存取关于计算任务的信息时加速器逻辑308可检索所请求数据,使得加速器逻辑308在接收数据时执行计算任务。

在由加速器逻辑308执行计算任务之后,在一些实施方案中,加速器逻辑308可通过将结果发送到存储控制器304来将结果存储在共享文件系统上。计算任务的结果可同时传回到主机106,用于在主机106上显示或存储。在其它实施方案中,任务的结果可直接传回到主机106,而无需将结果传达到存储控制器304。替代地,可通过与存储控制器304通信而将结果存储在存储装置314上,而不将结果传回到给主机106。结果还可存储在计算存储系统300内或外部的另一存储组件上,或传回到能够存取计算存储系统300的另一主机。

图4说明根据本文描述的实例的方法。例程400通常由形成计算存储系统(例如,计算存储系统300)部分的加速器逻辑(例如,加速器逻辑308)执行。在框402中,例程400经由提供加速器与管理存储装置的存储控制器之间的接口的加速器存储路径存取驻留在存储装置上的数据。在框404中,在经由加速器存储路径存取数据时,例程400使用所述数据执行计算任务。框402及框504可并行发生。在框406中,例程400将作为计算任务的结果产生的数据传回到存储装置。在一些实施方案中,可向例程400添加额外框。

在一些实施方案中,加速器逻辑是可重新配置的,使得计算存储系统可用于执行若干不同的计算任务。举例来说,可重新配置加速器逻辑可为FPGA。在这些实施方案中,主机可向加速器逻辑发送配置数据以针对特定计算任务定制加速器逻辑。

框402经由提供加速器与管理存储装置的存储控制器之间的接口的加速器存储路径存取驻留在存储装置上的数据。存储装置形成在加速器逻辑与连接到计算存储系统的主机(例如,主机106)之间共享的共享文件系统的一部分。因此,可响应于由加速器逻辑从主机接收到用以使用存储在存储装置上的数据执行计算任务的命令来执行框402。来自主机的请求通常包含指向共享文件系统内的数据的位置的指针。加速器逻辑通过提供指向存储控制器的指针经由加速器存储路径来直接存取数据。经由加速器存储路径直接存取数据通常意味着加速器逻辑在开始使用数据作为输入的计算任务之前不会将数据移动到另一存储器位置。而是,加速器逻辑可在经由加速器存储路径存取数据时执行计算任务。

在一些实施方案中,计算存储系统可与也可由主机存取的其它类似计算存储系统联网。举例来说,如在图2中展示,多个计算存储系统可通过PCIe接口连接。因此,共享文件系统可使用经由接口连接的多个计算存储系统上的多个存储组件来实施,并且除框402的操作之外加速器逻辑还可额外地经由连接计算存储系统的接口存取驻留在其它计算存储系统的存储组件上的数据。此外,在一些实施方案中,包含执行计算任务的加速器逻辑的计算存储系统可包含若干存储组件,并且加速器逻辑可与框402的操作并行或循序地存取额外存储组件上的数据。

框404在经由加速器存储路径存取数据时使用数据执行计算任务。当在经由加速器存储路径存取数据时使用数据执行计算任务时,加速器逻辑在使用数据执行计算任务之前不会将数据传送到另一存储位置(例如,存储DRAM存储)。因此,数据在加速器逻辑与存储装置之间移动(由存储控制器引导),并且可绕过需要数据的移动的复制、下载或类似操作。

框406将作为计算任务的结果产生的数据传回到存储装置。在一些实施方案中,存储装置上的位置(例如,在共享文件系统内)与来自主机的初始计算任务一起由加速器逻辑接收。加速器逻辑还可将所产生数据传回到主机以用于显示、存储或在由主机CPU执行的进一步计算任务中使用;传回到由主机可存取的另一计算存储系统以用于存储或用于执行进一步计算任务;传回到可存取计算存储系统的共享文件系统的另一主机;或传回到由加速器逻辑及主机共享的网络内部或外部的其它位置。在一些实施方案中,传回到上文描述的替代位置可替代将所产生数据传回到存储装置而发生。

图5说明根据本文描述的实例的方法。例程500通常由主机(例如,主机106)使用计算存储系统(例如,计算存储系统300)执行计算密集型任务来执行。在框502中,例程500识别外部数据以用于稍后分析。在框504中,例程500启动在计算存储系统的存储装置上存储数据。在框506中,例程500产生命令以对数据执行分析。在框508中,例程500将所产生命令传输到计算存储系统的主机接口。在框510中,例程500存取从分析产生的结果数据。在一些实施方案中,可向例程500添加额外块。

框502识别外部数据以用于稍后分析。外部数据可为使用数据收集装置(例如,数据收集装置108)在主机的引导下收集的数据。外部数据可额外地为存储在第三方存储装置(或包含主机的直接网络外部的其它存储装置)中的数据,并且可经由因特网或其它通信网络由主机存取。在一些实施方案中,所识别数据可包含在主机的引导下由数据收集装置处收集的数据及存储在第三方存储装置中的数据两者。

框504启动在计算存储系统的存储装置上存储数据。在一些实施方案中,框502及框504的操作可并行发生。举例来说,当引导通过数据收集装置的数据收集时,主机可包含到数据收集装置的用以将所收集数据导出或以其它方式传送到计算存储系统的数据存储装置的指令。当从另一存储位置收集数据时,主机将引导将数据下载到计算存储系统的存储装置。在一些实施方案中,主机可请求将来自多于一个位置的数据存储在存储装置上。此外,数据可存储在相同或不同计算存储系统上的形成共享文件系统一部分的多个存储装置上。主机可存取共享文件系统并创建对象,例如共享文件系统内的用于存储数据的文件夹或目录。

框506产生命令以对数据执行分析。所述命令可作为主机上运行的较大程序的部分产生。从主机卸载到计算存储系统的加速器逻辑的分析的实例包含(但不限于)最大似然分类、自然语言处理、机器学习算法及其它处理器密集型算法。所述命令可作为对加速器逻辑的一系列API调用产生,并可包含加速器逻辑的配置信息、存储装置的标识符、指向共享文件系统内的数据位置的指针、如何存储或导出结果数据的指令、以及在执行计算任务时有用的其它信息。

框508将所产生命令传输到计算存储系统的主机接口。所产生命令可作为一或多个流从主机传输到计算存储系统的主机接口。传输可通过经由PCIe接口的网络(例如,网络104)、LAN、WLAN、因特网或连接计算存储系统与主机的其它网络发生。一般来说,主机接口解析所述命令以确定所述命令希望用于计算存储系统的哪个或那些组件。一旦命令被传输到加速器逻辑,加速器逻辑可使用例程400或类似的过程以分析数据并将结果传回到主机或其它存储装置。

框510存取从分析产生的结果数据。在一些实施方案中,将结果数据传回到主机用于在由主机执行的程序中进一步使用或用于存储在主机CPU上。在其它实施方案中,主机可经由共享文件系统从存储装置或其它位置存取结果数据。

从前述内容将认了解,尽管本文已出于说明的目的描述特定实施例,但可进行各种修改,同时保留所主张技术的范围。本文阐述某些细节以提供对技术的所描述实施例的理解。然而,可在没有各种这些特定细节的情况下实践其它实例。在一些例子中,为避免不必要地模糊所描述实施例,未详细展示众所周知的电路、控制信号、时序协议、存储器装置及/或软件操作。在不脱离此处呈现的标的物的精神及范围的情况下,可利用其它实施例,并且可进行其它改变。

本文描述的实例可将各种组件称为“耦合的”,或将信号称为“提供到”某些组件或“从”某些组件“接收”。应理解,在一些实例中,组件彼此直接耦合,而在其它实例中,组件与安置在其之间的中间组件耦合。类似地,信号可直接提供到所陈述组件及/或直接从所陈述组件接收而无需中间部件,但也可通过中间组件提供到某些组件及/或从某些组件接收。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:针对电子邮件文件内容的图形用户接口

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!