CN117648203A - 多功能装置和用于多功能装置的方法 - Google Patents

多功能装置和用于多功能装置的方法 Download PDF

Info

Publication number
CN117648203A
CN117648203A CN202311072587.2A CN202311072587A CN117648203A CN 117648203 A CN117648203 A CN 117648203A CN 202311072587 A CN202311072587 A CN 202311072587A CN 117648203 A CN117648203 A CN 117648203A
Authority
CN
China
Prior art keywords
storage unit
data
request
computing
connector
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
Application number
CN202311072587.2A
Other languages
English (en)
Inventor
拉姆达斯·卡查瑞
赵冬琬
吉米·刘
路易斯·维托里奥·卡格尼尼
约瑟夫·芬德利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US18/108,575 external-priority patent/US20230195320A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN117648203A publication Critical patent/CN117648203A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Systems (AREA)

Abstract

公开多功能装置和用于多功能装置的方法。所述多功能装置可包括:第一连接器,用于与存储装置通信;第二连接器,用于与第一计算存储单元通信;第三连接器,用于与第二计算存储单元通信;以及第四连接器,用于与主机处理器通信。所述多功能装置被配置为经由第四连接器向主机处理器公开存储装置和第一计算存储单元。

Description

多功能装置和用于多功能装置的方法
本申请要求于2022年9月2日提交的第63/403,679号美国临时专利申请、于2022年9月2日提交的第63/403,682号美国临时专利申请、于2022年12月2日提交的第18/074,360号美国专利申请和于2023年2月10日提交的第18/108,575号美国专利申请的权益,所述美国专利申请出于所有目的通过引用包含于此。
技术领域
公开总体上涉及存储装置,并且更具体地,涉及用于将存储装置与计算存储单元进行集成的装置。
背景技术
随着由存储装置提供的容量的增大,应用可处理越来越多的数据。将大量的数据从存储装置传送到主存储器以供应用进行处理可需要大量的时间。此外,使主机处理器执行命令以处理该数据可对主机处理器施加负担。
对数据进行处理仍然需要改进。
发明内容
公开的实施例包括多功能装置。多功能装置可支持存储装置和/或计算存储单元。计算存储单元可支持对存储装置上的数据进行处理。可向主机隐藏一个或多个计算存储单元。
根据公开的一个方面,一种多功能装置包括:第一连接器,用于与存储装置通信;第二连接器,用于与第一计算存储单元通信;第三连接器,用于与第二计算存储单元通信;以及第四连接器,用于与主机处理器通信;其中,所述多功能装置被配置为:经由第四连接器向主机处理器公开存储装置和第一计算存储单元。
根据公开的一个方面,一种多功能装置包括:第一连接器,用于与存储装置通信;第一计算存储单元,被集成到所述多功能装置中;第二连接器,用于与第二计算存储单元通信;以及第三连接器,用于与主机处理器通信;其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开第一计算存储单元或第二计算存储单元中的至少一个和存储装置。
根据公开的一个方面,一种方法包括:确定存储装置连接到多功能装置;确定第一计算存储单元与多功能装置通信;确定第二计算存储单元连接到多功能装置;向连接到多功能装置的主机处理器公开存储装置;以及选择性地向主机处理器公开第一计算存储单元和第二计算存储单元。
附图说明
以下描述的附图是公开的实施例可如何被实现的示例,并且不意在限制公开的实施例。公开的独立实施例可包括未在特定附图中示出的元件和/或可省略在特定附图中示出的元件。附图意在提供说明,并且可不按比例。
图1示出根据公开的实施例的包括用于支持模块化存储装置和/或计算存储单元的多功能装置的机器。
图2示出根据公开的实施例的图1的机器的细节。
图3示出根据公开的实施例的图1的多功能装置的细节。
图4示出根据公开的实施例的图1的存储装置的细节。
图5A示出根据公开的实施例的图1的计算存储单元的第一示例实施方式。
图5B示出根据公开的实施例的图1的计算存储单元的第二示例实施方式。
图5C示出根据公开的实施例的图1的计算存储单元的第三示例实施方式。
图5D示出根据公开的实施例的图1的计算存储单元的第四示例实施方式。
图6示出根据公开的实施例的使用图1的多功能装置将请求递送到图1的存储装置和/或图1的计算存储单元的示例过程的流程图。
图7示出根据公开的实施例的使用图1的多功能装置来识别图1的存储装置和/或图1的计算存储单元的公开的功能的示例过程的流程图。
图8示出根据公开的实施例的使用图3的异步缓冲器的示例过程的流程图。
图9示出根据公开的实施例的用另外的计算存储单元替换图1的计算存储单元的示例过程的流程图。
图10示出根据公开的实施例的使用图1的多功能装置在附接到图1的多功能装置的装置之间递送请求的示例过程的流程图。
图11A示出根据公开的实施例的附接到图1的多功能装置的装置共享数据的示例过程的流程图。
图11B继续根据公开的实施例的附接到图1的多功能装置的装置共享数据的示例过程的图11A的流程图。
图12示出根据公开的实施例的图1的多功能装置的另一实施例。
图13示出根据公开的实施例的可由图1的多功能装置使用的装置配置的列表的细节。
图14示出根据公开的实施例的图1的多功能装置的又一实施例。
图15示出根据公开的实施例的从源接收请求并将请求递送到目标的图1的多功能装置。
图16示出根据公开的实施例的向图1的处理器公开附接到图1的多功能装置的装置的示例过程的流程图。
图17示出根据公开的实施例的图1的多功能装置确定计算存储单元如何可用的示例过程的流程图。
图18示出根据公开的实施例的图1的多功能装置确定向图1的处理器公开哪些装置的示例过程的流程图。
图19示出根据公开的实施例的图1的多功能装置在连接的装置之间递送消息的示例过程的流程图。
图20示出根据公开的实施例的图1的多功能装置从图1的处理器确定图3、图12和图14的缓冲器的地址范围的示例过程的流程图。
图21示出根据公开的实施例的附接到图1的多功能装置的装置从图3、图12和图14的缓冲器访问数据的示例过程的流程图。
图22示出根据公开的实施例的图3、图12和图14的数据处理器处理图3、图12和图14的缓冲器中的数据的示例过程的流程图。
图23示出根据公开的实施例的图1的多功能装置确定是将请求递送到目标装置还是图3、图12和图14的缓冲器的示例过程的流程图。
图24示出根据公开的实施例的图1的多功能装置处理附接到图1的多功能装置的新装置的示例过程的流程图。
具体实施方式
现在将详细参照公开(disclosure)的实施例,在附图中示出公开的实施例的示例。在下面的具体实施方式中,阐述了许多特定细节,以使得能够彻底理解公开。然而,应理解,本领域普通技术人员可在没有这些特定细节的情况下实践公开。在其他情况下,公知的方法、过程、组件、电路和网络未被详细描述,以免不必要地模糊实施例的方面。
将理解,尽管在此可使用术语第一、第二等来描述不同的元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不脱离公开的范围的情况下,第一模块可被称为第二模块,类似地,第二模块可被称为第一模块。
在公开的描述中使用的术语在此仅出于描述特定实施例的目的,而不意在限制公开。如在公开的描述和所附权利要求中使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,如在此使用的术语“和/或”表示并包含相关所列项中的一个或多个的任何和所有可能的组合。还将理解,术语“包括”和/或“包含”在用在本说明书中时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
随着存储装置容量增加,待由应用处理的数据的量也可增加。在存储装置与主存储器之间传送这样的数据所需的时间可增加,潜在地使应用的执行减慢。此外,使主机处理器执行命令可对主机处理器施加负担,这可减少主机处理器可用于执行其他命令的周期。
公开的实施例利用多功能装置来解决这些问题。多功能装置可支持一个或多个存储装置和一个或多个计算存储单元(CSU)。计算存储单元中的一个或多个可被向主机处理器隐藏,并且由存储装置和/或其他计算存储单元内部地使用。多功能装置可以以使得看起来好像主机处理器正在直接访问存储装置和/或计算存储单元的方式,向主机处理器公开(expose)未向主机处理器隐藏的存储装置和/或计算存储单元。
计算存储单元可经由连接器连接到多功能装置,或者计算存储单元可被集成到多功能装置中。如果存储装置或计算存储单元连接到多功能装置,则存储装置或计算存储单元可以是可更换的。
存储装置和计算存储单元可使用缓冲器来共享数据。通过使用缓冲器,数据可在没有主机管理或参与的情况下被共享。缓冲器可像支持顺序地或并行地访问数据的多个存储装置和/或计算存储单元的共享存储器一样工作。
图1示出根据公开的实施例的包括用于减少数据维度和执行计算的加速器的机器。在图1中,机器105(其也可被称为主机或系统)可包括处理器110、存储器115和存储装置120。处理器110可以是任何种类的处理器。处理器110也可被称为主机处理器。(为了便于说明,处理器110连同以下讨论的其他组件被示出在机器外部:公开的实施例可将这些组件包括在机器内。)虽然图1示出单个处理器110,但是机器105可包括任何数量的处理器,每个处理器可以是单核处理器或多核处理器,每个处理器可实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(包括其他可能性),并且可以以任何期望的组合被混合。
处理器110可结合到存储器115。存储器115可以是任何种类的存储器(诸如,闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、永久随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)(诸如,磁阻式随机存取存储器(MRAM)等))。根据需要,存储器115可以是易失性存储器或非易失性存储器。存储器115还可以是不同存储器类型的任何期望的组合,并且可由存储器控制器125管理。存储器115可用于存储可被称为“短期(short-term)”的数据:即,不期望被长期存储的数据。短期数据的示例可包括临时文件、正在由应用本地使用的数据(其可已经从其他存储位置被复制)等。
处理器110和存储器115还可支持各种应用可在其下运行的操作系统。这些应用可发出用于从任一存储器115读取数据或将数据写入任一存储器115的请求(其也可被称为命令)。当存储装置120用于支持应用经由某种文件系统读取或写入数据时,存储装置120可使用装置驱动器130被访问。虽然图1示出一个存储装置120,但是机器105中可存在任何数量的(一个或多个)存储装置。存储装置120可支持包括例如非易失性存储器快速(NVMe)协议或高速缓存一致性互连协议(诸如,计算快速链路(CXL)协议)的任何期望的一个或多个协议。
虽然图1使用通用术语“存储装置”,但是公开的实施例可包括可受益于计算存储单元的使用的任何存储装置格式,存储装置格式的示例可包括硬盘驱动器和固态驱动器(SSD)。以下对“SSD”的任何引用应被理解为包括公开的这样的其他实施例。
机器105还可包括多功能装置135(其也可被称为加速器或装置)。如以下所讨论的,多功能装置135可支持到存储装置120和计算存储单元140的连接,但是呈现给处理器110,就好像存储装置120和计算存储单元140是单个装置一样。多功能装置135可实现存储装置120和/或计算存储单元14的模块化,因为存储装置120和/或计算存储单元140可在不必替换连接到多功能装置135的其他组件的情况下被添加或替换。
多功能装置135可使用任何期望的硬件来实现。例如,多功能装置135或其组件可使用(仅举出几种可能性)现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、数据处理器(DPU)、神经处理器(NPU)、网络接口卡(NIC)或张量处理器(TPU)来实现。多功能装置135还可使用这些元件的组合来实现多功能装置135。
计算存储单元140可采取任何期望的形式。像多功能装置135一样,计算存储单元140可使用(仅举出几种可能性)FPGA、ASIC、CPU、SoC、GPU、GPGPU、DPU、NPU、NIC或TPU来实现。计算存储单元140可实现任何期望的一个或多个功能。例如,计算存储单元140可实现设计为执行近数据处理(near-data processing)的专用加速器。计算存储单元140还可以是设计为从机器105接收程序以执行近数据处理的通用加速器。计算存储单元140还可实现其他功能(诸如,加密和/或解密、压缩和/或解压缩、或网络接口连接(包括其他可能性))。
可使用计算存储单元140执行的加密和/或解密的特定示例可以是全同态加密(FHE)。FHE可支持在不对加密的数据进行解密的情况下对加密的数据进行分析。因此,FHE可保护客户数据的隐私性和机密性。当计算存储单元140包括用于实现FHE的电路时,机器105可将指令下载到FHE电路的引擎中以实现期望的处理,然后期望的处理可在不将数据传送到存储器115中的情况下在数据附近被执行。
虽然图1示出以上被描述为支持对存储装置120的访问的装置驱动器130,但是机器105还可包括用于计算存储单元140和/或多功能装置135的装置驱动器(未示出)。也就是说,公开的实施例可支持装置驱动器130,装置驱动器130支持存储装置120、计算存储单元140和多功能装置135中的任何一个或全部,并且公开的实施例可包括用于支持这些组件的任何或全部组合的附加的装置驱动器。
在公开的一些实施例中,装置驱动器130(以及(诸如,用于支持计算存储单元140的)其他装置驱动器)可提供用于访问存储装置120和/或计算存储单元140的应用程序编程接口(API)。通过支持现有的装置驱动器,现有的应用可由处理器110执行而不改变应用(尽管公开的实施例可涉及对软件栈中的其他元件的修改)。例如,TPU可具有TPU装置驱动器,或者GPU可具有GPU装置驱动器:访问TPU或GPU的功能的应用可继续使用现有的TPU装置驱动器或GPU装置驱动器。此外,通过支持现有的装置驱动器,计算存储单元140可以是即使由与存储装置120和/或多功能装置135不同的制造商制造的任何计算存储单元。此外,在公开的一些实施例中,装置驱动器130(或其他装置驱动器)可以是专有的。
公开的实施例可包括用于与存储装置120和/或计算存储单元140通信的任何期望的机制。例如,存储装置120和/或计算存储单元140可连接到总线(诸如,外围组件互连快速(PCIe)总线),或者存储装置120和/或计算存储单元140可包括以太网接口或一些其他网络接口。到存储装置120和/或计算存储单元140的其他潜在接口和/或协议可包括NVMe、通过网络的NVMe(NVMe-oF)、CXL、远程直接存储器访问(RDMA)、传输控制协议/互联网协议(TCP/IP)、通用闪存存储(UFS)、嵌入式多媒体卡(eMMC)、InfiniBand、串行附接小型计算机系统接口(SCSI)(SAS)、互联网SCSI(iSCSI)和串行AT附接(SATA)(包括其他可能性)。
机器105可包括存储器115中的可由处理器110、存储装置120和/或计算存储单元140寻址的地址的范围。在公开的一些实施例中,处理器110可分配该地址范围的可与待发送到存储装置120和/或计算存储单元140的命令相关联的子集。此外,处理器110可分配该地址范围的可与用于存储装置120与计算存储单元140之间的对等(peer-to-peer)通信的命令相关联的子集。也就是说,通过将命令与存储器115中的特定地址相关联,确定命令是意在针对存储装置120、计算存储单元140还是针对在存储装置120与计算存储单元140之间传送数据是可行的。注意,存储器115可以不包括足够的存储器来包括这样的物理地址,但是存储器115不一定需要实际上足够的存储器来包括这样的地址。例如,存储器115可包括2千兆字节(GB)的存储器,但是可支持寻址高达4GB的存储器。即使存储器115可不能够处理针对那些特定地址的请求,地址的子集(诸如,2GB与3GB之间的地址的子集)也可用于识别用于对等通信的命令。多功能装置135可基于分配给命令的地址来识别这样的命令,并且可拦截这样的命令进行处理。
处理器110、存储器115、存储装置120、存储器控制器125、多功能装置135和计算存储单元140可使用任何期望的链路和任何期望的协议来以任何期望的方式连接。例如,多功能装置135可使用PCIe总线并使用NVMe协议连接到处理器110、存储器115和存储器控制器125,但是其他总线或链路和其他协议可被使用。存储装置120和计算存储单元140可使用PCIe总线并使用NVMe协议类似地连接到多功能装置135,但是其他总线或链路(例如,小型计算机系统接口(SCSI)、并行AT附接(称为IDE)、超传输(HyperTransport)、Infiniband等)和其他协议可被使用。也不要求使用相同的总线、链路或协议:存储装置120和计算存储单元140可使用其他总线、链路或协议(并且可各自使用不同的总线、链路或协议)连接到多功能装置135。公开的实施例意在包括关于图1的组件如何连接以及图1的组件如何彼此通信的任何和全部变型。
图2示出根据公开的实施例的图1的机器105的细节。在图2中,通常,机器105包括一个或多个处理器110,一个或多个处理器110可包括存储器控制器125和时钟205,一个或多个处理器110可用于协调机器的组件的操作。作为示例,处理器110还可结合到存储器115,存储器115可包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可结合到存储装置120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。除其他组件外,处理器110还可连接到总线215,用户接口220和可使用输入/输出(I/O)引擎225来管理的I/O接口端口可附接到总线215。可使用用户接口220和I/O引擎225来管理的示例组件可包括键盘、鼠标、打印机和显示屏(包括其他可能性)。
图2示出图1中示出的组件中的一些的替代图:图2中未示出的组件(例如,图1的多功能装置135)也可被包括。图2并不意在与图1不同,而是仅呈现示出的各种组件可如何布置的替代图。另外,其他组件可被添加:例如,其他组件可连接到总线215。
图3示出根据公开的实施例的图1的多功能装置135的细节。在图3中,多功能装置135可包括连接器305。连接器305可提供到总线的连接,总线可用于与图1的处理器110通信。例如,连接器305可提供到PCIe总线的连接,但是其他总线也可被使用。
端点(endpoint)310可连接到连接器305(或被实现为连接器305的一部分)。端点310可用作来自图1的处理器110的查询的端点。如以下进一步讨论的,端点310可公开附接到多功能装置135的其他连接器(诸如,连接器315和320)的装置的功能。
异步缓冲器325可连接到端点310和/或连接器305。异步缓冲器325可作为用于待在图1的主机处理器110与连接到多功能装置135的其他装置之间交换的请求、消息和/或数据的着陆点(landing point)。异步缓冲器325可以是异步的,因为异步缓冲器325可与处理器110以不同的时钟周期进行操作。也就是说,图1的处理器110可基于图1的处理器110的时钟周期来发送请求、消息或数据,当从图1的处理器110接收到请求、消息或数据时,请求、消息或数据可被写入异步缓冲器325中;然后请求、消息或数据可在由多功能装置135的时钟周期管控的时间从异步缓冲器325被读取。通过包括异步缓冲器325,多功能装置135可避免需要与处理器110以相同的时钟周期进行操作。
注意,在公开的一些实施例中,多功能装置135可与图1的处理器110使用相同的时钟周期进行操作。在公开的这样的实施例中,异步缓冲器325可完全被省略,或者用同步缓冲器替换(以允许从图1的处理器110接收的或待发送到图1的处理器110的请求、消息和/或数据的临时存储)。
复用器/解复用器330可连接到异步缓冲器325。复用器/解复用器330可从异步缓冲器325访问请求、消息和/或数据。然后,复用器/解复用器330可确定请求、消息或数据意在连接到多功能装置135的哪个装置,并且可相应地路由请求、消息或数据。为了实现该功能,复用器/解复用器330也可连接到桥接器(bridge)335和340,桥接器335和340中的每个可最终将请求、消息或数据递送到连接到多功能装置135的特定装置。在公开的另一实施例中,复用器/解复用器330可与多于两个的桥接器通信。以下进一步讨论复用器/解复用器330可如何确定应该将特定请求递送到哪个桥接器。
桥接器335和340可分别连接到异步缓冲器345和350。像异步缓冲器325一样,异步缓冲器345和350可使多功能装置135能够与连接到连接器315和320的各种装置以不同的时钟周期进行操作。此外,像异步缓冲器325一样,在公开的一些实施例中,多功能装置135可与连接到连接器315和/或320的装置(一个或多个)使用相同的时钟周期进行操作。在公开的这样的实施例中,异步缓冲器345和/或350可完全被省略,或者用同步缓冲器替换(以允许从连接到连接器315和/或320的装置接收的或待发送到连接到连接器315和/或320的装置的请求、消息和/或数据的临时存储)。
根端口355和360可分别连接到异步缓冲器345和350(并且可分别被实现为连接器315和320的一部分)。根端口355和360可分别与连接到连接器315和320的装置通信。例如,图1的存储装置120可连接到连接器315,并且图1的计算存储单元140可连接到连接器320。
根端口355和360可向连接到连接器315和320的装置询问关于这些装置的信息。例如,连接到连接器315或320的装置可公开:识别可由装置做出的请求的各种功能。
在公开的一些实施例中,这些功能可包括一个或多个物理功能(PF)和/或一个或多个虚拟功能(VF)。每个PF可表示资源(诸如,由装置提供的功能)。每个VF可表示与PF相关联但被“虚拟化”的功能:即,针对给定的PF,可存在一个或多个VF。PF和VF可在装置被枚举时被发现:该枚举可由根端口355和360而不是由图1的处理器110执行。虽然PF、VF、端点和根端口是通常与PCIe装置相关联的概念,但是当使用连接到其他总线的装置时,公开的实施例可包括类似的概念。
一旦PF和VF被枚举,该信息就可被提供给桥接器335和340,并且最终被提供回复用器/解复用器330和/或端点310。以这种方式,端点310可以能够公开连接到连接器315和320的各种装置的功能(PF、VF或二者)。如果由连接到连接器315和320的装置公开的功能之间存在任何冲突(例如,相同的功能标识符),则复用器/解复用器330和/或端点310可改变枚举以避免这样的冲突。例如,装置可以从零开始枚举功能:如果连接到连接器315和320的装置都被分配了从零开始的功能编号,则复用器/解复用器330可不能够确定与功能编号“零”相关联的特定请求意在针对哪个装置。因此,例如,如果连接到连接器315的装置具有三个PF,并且连接到连接器320的装置具有两个PF,则复用器/解复用器330可使用数字0、1和2来将PF分配给连接到连接器315的装置(即,使用数字0、1和2来将功能编号分配给连接到连接器315的装置的三个PF),并且可使用数字3和4将PF分配给连接到连接器320的装置(即,使用数字3和4将功能编号分配给连接到连接器320的装置的两个PF)。只要没有两个PF被分配相同的编号,复用器/解复用器330就可以以任何期望的方式映射功能。此外,由连接到连接器315和/或320的装置公开的VF可被公开为VF或PF(即,装置的VF可映射到由多功能装置135公开的PF)。
通过这样理解,现在可理解复用器/解复用器330的操作。在经由连接器305从图1的处理器110接收到请求、消息或数据时,复用器/解复用器330可确定与请求、消息或数据相关的功能的标识符。例如,如果请求是意在针对图1的存储装置120的写入请求,则复用器/解复用器330可识别写入请求中的写入功能,并且可在内部将写入功能映射到图1的存储装置120。然后,复用器/解复用器330可根据哪个桥接器可通向图1的存储装置120而将写入请求路由到桥接器335或桥接器340。关于附接到连接器315和320的装置的公开的功能可如何由多功能装置135进行公开的更多信息可在2020年4月10日提交的现在未决的第16/846,271号美国专利申请(其要求于2020年1月21日提交的第62/964,114号美国临时专利申请和于2019年6月24日提交的第62/865,962号美国临时专利申请的权益)(所有这些美国专利申请出于所有目的通过引用包含于此)中找到。
端点310以及根端口355和360可以是PCIe端口的示例,并且可与关于连接到PCIe总线的多功能装置135的公开的实施例一起使用。在将多功能装置135连接到其他总线的实施例中,端点310以及根端口355和360可用其他等同的组件替换,或者如果端点310以及根端口355和360在该架构中不被需要,则可被省略。
虽然图3将多功能装置135示出为包括可连接到图1的处理器110、图1的存储装置120和图1的计算存储单元140的三个连接器305、315和320,但是公开的实施例可包括任何数量的连接器。例如,多功能装置135可包括四个或更多个连接器:附加的连接器可连接到附加的存储装置和/或计算存储单元。此外,可存在经由连接器(诸如,连接器315和320)连接到多功能装置135的任何数量的(一个或多个)存储装置和/或任何数量的(一个或多个)计算存储单元。不要求连接到多功能装置135的存储装置的数量与连接到多功能装置135的计算存储单元的数量相同。如果多功能装置135包括比连接器315和320更多的连接器,则多功能装置135还可包括用于支持附加的装置的像桥接器335和340一样的附加的桥接器、像异步缓冲器345和350一样的附加的异步缓冲器、以及像根端口355和360一样的附加的根端口。
图3还包括可被置于桥接器340与异步缓冲器350之间的复用器/解复用器365。复用器/解复用器365可用于连接到连接器315和320的装置之间的对等通信。也就是说,使用复用器/解复用器365,附接到连接器320的装置可在不使这样的通信经过图1的处理器110(经由连接器305)的情况下与附接到连接器315的装置通信。为了实现该结果,复用器/解复用器365可将在复用器/解复用器365接收的请求、消息或数据中的信息作为示例。然后,复用器/解复用器365可识别对从连接到连接器320的装置接收的这样的请求、消息或数据的任何响应,并且可将这样的响应返回到发出原始的请求、消息或数据的组件。例如,复用器/解复用器365可确定请求、消息或数据的标识符以及从其接收请求、消息或数据的源。然后,如果复用器/解复用器365从与该标识符相关联的连接到连接器320的装置接收到响应,则复用器/解复用器365可将响应发送到适当的组件。
如上所讨论的,在公开的一些实施例中,连接到连接器315和320的装置可以是PCIe装置。在公开的这样的实施例中,复用器/解复用器365可期望对业务层包(TLP)进行处理。
在支持连接到多功能装置135的多于两个装置的公开的实施例中,可存在与附接到多功能装置135的装置相关联的像复用器/解复用器365一样的复用器/解复用器。在公开的一些实施例中,这样的复用器/解复用器可被置于用于全部装置的像桥接器340一样的桥接器与像异步缓冲器350一样的异步缓冲器之间;在公开的其他实施例中,这样的复用器/解复用器可被置于用于像图1的计算存储单元140一样的计算存储单元的桥接器与异步缓冲器之间,或者被置于用于像图1的存储装置120一样的存储装置的桥接器与异步缓冲器之间。复用器/解复用器也可被置于允许跨组件的通信的各种组件之间。公开的实施例还可包括多于一个复用器/解复用器,以支持用于组件之间的通信的各种不同路径。在公开的一些实施例中,全部组件可以能够与所有其他组件通信;在公开的其他实施例中,仅一些组件可以能够与一些其他组件通信。注意,复用器/解复用器365和类似的复用器/解复用器可连接到像桥接器335和340一样的一些或全部桥接器,以支持各种装置对之间的数据的交换。
注意,复用器/解复用器365可从附接到连接器315的装置以及从附接到连接器305的图1的处理器110接收请求、消息和/或数据。在公开的一些实施例中,由复用器/解复用器365从图1的处理器110和从附接到连接器315的装置接收的请求可包括标识请求的标签。例如,读取请求可包括标识该请求的标签,使得与同一标签相关联的数据可被返回。当仅从一个源接收到这样的带标签的请求时,可预期标签将不冲突:例如,复用器/解复用器365可合理地假设图1的处理器110不会将同一标签分配给两个不同的读取请求。但是当从多个源接收到请求时,除非多个源协调它们对标签的使用,否则可发生从一个源接收的请求可与从另外的源接收的请求具有相同的标签。在从图1的计算存储单元140接收到数据时,复用器/解复用器365可不能够区分哪个装置发起读取请求(这种情况可以是冲突)。
存在可避免这样的冲突的几种方式。一种解决方案可以是:一次仅处理来自一个源(例如,第一源)的请求,并且其他的源可等待,直到没有来自第一源的请求是激活的(active)。但是该解决方案可不提供最佳性能。另一种解决方案可以是:在任何时间仅允许具有唯一标签的请求是激活的。因此,只要一个请求与任何其他激活的请求具有不同的标签,该请求就可被处理;如果新请求重复于与另外的激活的请求相关联的标签,则新请求可被缓冲,直到具有该标签的激活的请求完成。该解决方案提供更好的性能。另一种解决方案可以是:复用器/解复用器365提供可由各种源使用的标签:只要可将不与分配给另外的源的标签的集合相交的标签的集合提供给每个源,标签冲突就可被避免。另一种解决方案可以是:复用器/解复用器365引入将来自每个源的标签映射到(在复用器/解复用器365内部使用的)新标签的间接层(level of indirection)。当接收到请求时,标签可被映射,并且从原始标签到新标签的映射可被存储在复用器/解复用器365中的表中。当请求完成时,复用器/解复用器365可从与响应一起接收的新标签确定原始标签。
为了支持这样的操作,桥接器335还能够将请求、消息或数据(无论是从图1的处理器110接收的(如,经由连接器305接收的)还是从连接到连接器315的装置接收的)引导到复用器/解复用器365。例如,如果附接到连接器315和320的装置可支持直接存储器访问(DMA),则该情况可发生。例如,假设图1的存储装置120连接到连接器315,并且图1的计算存储单元140连接到连接器320。如果图1的计算存储单元140包括存储器(诸如,DRAM),并且图1的存储装置120可发出可将数据写入该存储器的DMA请求,则桥接器335可将DMA请求引导到复用器/解复用器365(而不是复用器/解复用器330)。以该方式,图1的处理器110可被绕过,这可导致请求更迅速地被处理。
虽然使图1的存储装置120或图1的计算存储单元140直接从对方读取或写入数据是有用的,但是这并不总是可行的或实际的。例如,为了支持DMA,一个装置(例如,第一装置)可需要存储器,并且另一装置可需要用于从(第一装置中的)该存储器读取数据或将数据写入(第一装置中的)该存储器的电路。如果缺少任一元件(例如,如果图1的计算存储单元140既不包括存储器也不包括用于对图1的存储装置120中的存储器进行读取或写入的电路),则DMA可以是不可行的。
此外,如果DMA被使用,则装置可需要在不进行处理而是按所存储的那样来操纵数据。如果数据在被使用之前可需要处理,则DMA可以不是一个选项。例如,考虑图1的计算存储单元140进行操作以处理视频数据。如果图1的计算存储单元140期望数据为特定格式(例如,MPEG格式),但数据为另外的格式(例如,WVM格式),那么除非数据首先被转码,否则图1的计算存储单元140可不能够处理数据。或者如果表中的数据以列格式被存储但图1的计算存储单元140期望表中的数据以行格式被存储,则在图1的计算存储单元140可处理数据之前,表可需要被转置。
如果图1的存储装置120包括可处理数据使得数据处于可由图1的计算存储单元140使用的格式的处理器,则图1的存储装置120可在DMA被用于将数据从图1的存储装置120传送到图1的计算存储单元140之前处理数据。但是另一种方法也可被使用。
缓冲器370可用于存储在连接到连接器315和320的装置之间正在被传送的数据。一旦数据被存储在缓冲器370中,数据处理器375就可在数据被传送到目的地装置之前适当地处理数据。一旦缓冲器370中的数据已经由数据处理器375处理,则处理后的数据可被传送到目的地装置。在公开的一些实施例中,DMA可由连接到连接器315和320的装置使用,以将数据写入缓冲器370或从缓冲器370读取数据。缓冲器370可使用任何期望形式的存储设备(例如,DRAM、SRAM等),并且可以是片上的(on-chip)或片外的(off-chip)。
缓冲器370可具有相关联的地址范围,地址范围可由图1的存储装置120或图1的计算存储单元140用于从缓冲器370读取数据或将数据写入缓冲器370,可由多功能装置135本身确定,或者可由图1的处理器110分配。
桥接器335和340可使用缓冲器370的地址范围来确定用于访问地址的特定请求是涉及图1的存储器115还是缓冲器370。因此,例如,当桥接器335接收到用于从特定地址读取数据或将数据写入特定地址的请求时,桥接器335可检查请求,并且确定地址是否与缓冲器370相关联。如果是,则桥接器335可将请求引导到缓冲器370,而不是将请求递送到图1的处理器110。换言之,桥接器335可处理关于缓冲器370中的地址的请求,而不是将请求递送到图1的处理器110并让图1的处理器110来处理请求。由桥接器335处理请求可涉及:确定什么数据将被读取、写入或删除,并且执行适当的动作。桥接器335可通过检查请求来确定是否处理请求本身。例如,如果请求读取、写入或删除与缓冲器370相关联的地址处的数据,则由于数据可在缓冲器370中,因此将请求发送到图1的处理器110或图1的存储器115可使得图1的处理器110或图1的存储器115发回另外的请求。通过处理请求本身,桥接器335可避免向图1的处理器110或图1的存储器115来回发送请求,这可导致图1的机器105的更有效的操作。桥接器340可类似地将请求重新引导到缓冲器370。注意,图1的存储装置120和/或图1的计算存储单元140(或可连接到连接器315和320的任何装置)可以不知道它们的请求已经被重新引导到缓冲器370的事实:就这些装置而言,请求发生在图1的存储器115中。
数据处理器375可对缓冲器370中的数据执行任何期望的处理。数据处理器375可包括用于执行一些期望的处理的电路和/或软件。但是数据处理器375也可足够通用以支持如由图1的处理器110指示的处理。也就是说,图1的处理器110可将程序下载到数据处理器375,然后数据处理器375可对缓冲器370中的数据执行该程序以将数据转换为目的地装置所期望的格式。
如上所讨论的,在公开的一些实施例中,数据处理可被执行,以将数据置于适合于指定为接收该数据的装置的格式。但是在公开的一些实施例中,即使指定为接收该数据的装置可以能够处理该数据,数据处理也可被执行。例如,该数据可已经是目的地装置可接受的格式,但是可存在更优的格式。在公开的这样的实施例中,即使该数据已经是目的地装置可接受的格式,数据处理器375也可处理该数据。
在公开的一些实施例中,图1的处理器110可作为调度器。在公开的这样的实施例中,图1的处理器110可将请求发送到源装置。在接收到来自源装置的响应时,图1的处理器110可随后告知数据处理器375处理缓冲器370中的数据。一旦数据处理器375已经完成缓冲器370中的数据的处理,数据处理器375就可告知图1的处理器110处理完成,在这之后,图1的处理器110可请求目的地装置从缓冲器370读取该数据。
在公开的其他实施例中,数据处理器375可作为用于数据传送的调度器。数据处理器375可将用于要求将数据传送到缓冲器370的请求发送到源装置。注意,桥接器335和340可访问缓冲器370,以实现将数据写入缓冲器370(和从缓冲器370读取数据)。一旦传送完成,源装置就可告知数据处理器375传送完成。然后,数据处理器375可适当地对该数据进行变换。一旦数据处理器375已经完成对缓冲器370中的数据进行变换,数据处理器375就可告知目的地装置该数据准备好用于获取,然后目的地装置可从缓冲器370读取该数据(即,变换后的数据)。数据处理器375可从图1的处理器110接收关于调度的指令(例如,调度指令)。这些指令可使用任何期望的协议被编码:还可设计新的协议以支持这样的调度指令。
当图1的计算存储单元140处理来自图1的处理器110(或在图1的处理器110上运行的应用)的请求时,该处理可使用来自缓冲器370的数据(可能由数据处理器375处理的数据)。但是该处理还可涉及来自处理器110的数据。例如,如果图1的计算存储单元140正在执行图像识别,则来自图1的存储装置120的数据可包括关于如何识别图像的各种特征的信息。但是待处理的图像本身可由图1的处理器110提供。或者,如果图1的计算存储单元140正在处理对数据库的查询,则数据库本身可来自图1的存储装置120,但是查询可由图1的处理器110提供。因此,由图1的计算存储单元140处理的信息可经由多功能装置135来自不同的源。
如上所讨论的,多功能装置135可包括多于两个连接器315和320,并且因此可包括多于两个的附接的装置。在公开的一些实施例中,一些或全部附接的装置可具有对缓冲器370的访问,并且可从缓冲器370读取数据或将数据写入缓冲器370。在公开的其他实施例中,可存在任何数量的(一个或多个)缓冲器370(并且也可能存在多于一个数据处理器375)。例如,可存在与连接到多功能装置135的图1的每个计算存储单元140相关联的缓冲器370。以这种方式,数据可被写入与期望处理该数据的图1的计算存储单元140相关联的缓冲器。注意,缓冲器370还可用于在附接到多功能装置135的图1的两个(或更多个)存储装置120之间或者在图1的两个(或更多个)计算存储单元140之间交换数据:公开的实施例不限于使用缓冲器370在图1的存储装置120与图1的计算存储单元140之间交换数据。还可存在一个或多个数据处理器375:数据处理器375的数量可与缓冲器370的数量一一对应,或者数据处理器375的数量可与缓冲器370的数量不同。
在公开的一些实施例中,对等通信可使用PCIe协议用于通信。也就是说,桥接器335和/或340可使用PCIe协议来向/从连接到连接器315和320的装置传输请求、消息和/或数据。在公开的其他实施例中,对等通信可使用其他协议。在公开的一些实施例中,连接到连接器315和320的装置可使用不同的协议用于通信(尽管在公开的这样的实施例中,协议之间的请求、消息或数据格式和/或协议的一些映射可被需要)。
如上所提及的,图1的计算存储单元140可以是NIC(包括其他可能性)。当NIC连接到连接器320时,图1的存储装置120(当连接到连接器315时)可以能够经由对等通信(使用例如缓冲器370)与NIC通信。因此,多功能装置135可支持图1的存储装置120与NIC之间的通信,而无需这样的通信必须经过图1的处理器110。注意,使用NIC作为图1的计算存储单元140并将NIC连接到连接器320不防止图1的处理器110与NIC通信:图1的处理器110仍然可经由多功能装置135与NIC通信。此外,如果多功能装置135包括附加的连接器,则图1的另外的计算存储单元140也可连接到多功能装置135,也使得图1的该计算存储单元140能够与NIC通信,而无需这样的通信经过图1的处理器110。以这种方式,NIC可被视为计算存储单元,并且与图1的一个或多个存储装置和/或一个或多个其他计算存储单元140组合。
虽然图3示出连接器315和320并且表明连接器315和320可允许附接的装置的替换,但是公开的实施例可包括作为永久连接器的连接器315和320中的一个或多个。此外,公开的一些实施例可包括永久连接器和可交换连接器二者。例如,图1的存储装置120可永久地被固定到连接器315(可能通过焊接),而图1的计算存储单元140可被插入到连接器320中(这可支持拆卸和替换图1的计算存储单元140)。在公开的一些实施例中,交换连接到连接器315或320的装置可被执行为热交换(也就是说,在不使图1的机器105断电的情况下执行替换);在公开的其他实施例中,交换连接到连接器315或320的装置可涉及在替换装置之前使图1的机器105断电。
图4示出根据公开的实施例的图1的存储装置120的细节。在图4中,存储装置120的实施方式被示出为针对固态驱动器。在图4中,存储装置120可包括主机接口层(HIL)405、控制器410和各种闪存芯片415-1至415-8(也称为“闪存存储设备”),各种闪存芯片415-1至415-8可被组织为各种通道420-1至420-4。主机接口层405可管理存储装置120与其他组件(诸如,图1的处理器110)之间的通信。主机接口层405还可管理与远离存储装置120的装置的通信:也就是说,不被认为是图1的多功能装置135的一部分但是(例如通过一个或多个网络连接)与存储装置120通信的装置。这些通信可包括用于从存储装置120读取数据的读取请求、用于将数据写入存储装置120的写入请求、以及用于从存储装置120删除数据的删除请求。
主机接口层405可仅通过单个端口来管理接口,或者主机接口层405可通过多个端口来管理接口。可选地,存储装置120可包括多个端口,每个端口可具有用于通过该端口来管理接口的单独的主机接口层405。发明构思的实施例还可混合可能性(例如,具有三个端口的SSD可具有用于管理一个端口的一个主机接口层和用于管理另外两个端口的第二主机接口层)。
控制器410可使用闪存控制器425来管理对闪存芯片415-1至415-8的读取操作和写入操作以及垃圾收集操作和其他操作。控制器(例如,SSD控制器)410还可包括闪存转换层430、存储器435和/或DMA控制器440。闪存转换层430可管理(如由图1的主机105使用的)逻辑块地址(LBA)到物理块地址(PBA)的映射,在物理块地址(PBA),数据实际被存储在存储装置120上。通过使用闪存转换层430,当数据在存储装置120内从一个块被移动到另一个块时,不需要通知图1的主机105。
存储器435可以是由控制器(例如,存储控制器)410使用的本地存储器(诸如,DRAM)。存储器435可以是易失性存储器或非易失性存储器。存储器435还可经由DMA从除存储装置120之外的装置(例如,图1的计算存储单元140)可被访问。如由存储器435的表示使用虚线所示,存储器435可被省略。
DMA440可以是使存储装置120能够在存储装置120外部的存储器中执行DMA命令的电路。例如,DMA440可使存储装置120能够从图1的存储器115或图1的计算存储单元140中的存储器读取数据或将数据写入图1的存储器115或图1的计算存储单元140中的存储器。如由DMA440的表示使用虚线所示,DMA440可被省略。
虽然图4将存储装置120示出为包括被组织为四个通道420-1至420-4的八个闪存芯片415-1至415-8,但是发明构思的实施例可支持被组织为任何数量的通道的任何数量的闪存芯片。类似地,虽然图4示出SSD的结构,但是其他存储装置(例如,硬盘驱动器)可使用与图4中示出的结构不同的结构来实现以对读取和写入数据进行管理,但是具有类似的潜在益处。
虽然图4将存储装置120示出为仅为存储装置,但是公开的实施例可包括存储装置120内的其他组件。例如,存储装置120可具有可由图1的处理器110(或附接到图1的多功能装置135的其他装置)使用的存储装置120自身的计算存储单元。例如,图1的处理器110或经由图3的连接器320连接到图1的多功能装置135的计算存储单元可使用被包括作为存储装置120的一部分的计算存储单元。
图5A至图5D示出根据公开的实施例的图1的计算存储单元140的示例实施方式。在图5A中,示出存储装置505和计算装置510-1。存储装置505可包括控制器515和存储设备520-1,并且可通过主机协议接口(诸如,主机接口525)而可到达。主机接口525可用于管理存储装置505和控制存储装置505的I/O二者。主机接口525的示例可包括用于提交和完成的队列对,但是使用由存储装置505支持的任何本机主机协议的其他主机接口525也是可行的。
计算装置510-1可与存储装置505配对。计算装置510-1可包括任何数量的(一个或多个)处理器530,(一个或多个)处理器530可提供一个或多个服务535-1和535-2。为了更清楚,每个处理器530可提供任何数量的(一个或多个)服务535-1和535-2(尽管公开的实施例可包括恰好包括两个服务535-1和535-2的计算装置510-1)。每个处理器530可以是单核处理器或多核处理器。计算装置510-1可通过主机协议接口(诸如,主机接口540)而可到达,主机协议接口可用于管理计算装置510-1和/或控制计算装置510-1的I/O。与主机接口525一样,主机接口540可包括用于提交和完成的队列对,但是使用由计算装置510-1支持的任何本地主机协议的其他主机接口540也是可行的。这样的主机协议的示例可包括以太网、RDMA、TCP/IP、InfiniBand、iSCSI、PCIe、SAS和SATA(包括其他可能性)。此外,主机接口540可支持与图1的系统105的其他组件(例如,NIC(如果NIC未连接到图1的多功能装置135))的通信,或者作为NIC进行操作并与本地和/或远程网络/云组件通信。
处理器(一个或多个)530可被认为是近存储处理(near-storage processing):即,比图1的处理器110更靠近存储装置505的处理。因为处理器(一个或多个)530更靠近存储装置505,所以处理器(一个或多个)530可能够比图1的处理器110对存储在存储装置505中的数据执行命令更快地对存储在存储装置505中的数据执行命令。处理器(一个或多个)530可具有相关联的存储器545,存储器545可用于对存储在存储装置505中的数据本地地执行命令。存储器545也可与图4的存储器435类似地被使用,并且可通过DMA从除计算存储单元410-1之外的装置可被访问。存储器545可包括与图1的存储器115类似的本地存储器、片上存储器(其可比诸如图1的存储器115的存储器更快,但生产可能更昂贵)或二者。
计算存储单元410-1还可包括DMA550。DMA550可与图4的DMA440类似地被使用,并且可用于访问除计算存储单元410-1之外的装置中的存储器。
如虚线所示,根据实施方式,存储器545和/或DMA550可被省略。
虽然图5A将存储装置505和计算装置510-1示出为单独地通过网(fabric)555而可到达,但是公开的实施例还可包括串联连接或共享图1的多功能装置135(如图1中所示)的存储装置505和计算装置510-1。也就是说,针对存储装置505和计算装置510-1的命令二者可在到网555的相同物理连接处被接收,并且可经过一个装置(或图1的多功能装置135)到达另一装置。例如,如果计算装置510-1位于存储装置505与网555之间,则计算装置510-1可接收针对计算装置510-1和存储装置505二者的命令:计算装置510-1可处理针对计算装置510-1的命令,并且可将针对存储装置505的命令传递到存储装置505。类似地,如果存储装置505位于计算装置510-1与网555之间,则存储装置505可接收针对存储装置505和计算装置510-1二者的命令:存储装置505可处理针对存储装置505的命令并且可将针对计算装置510-1的命令传递到计算装置510-1。
服务535-1和535-2可提供可对存储在存储装置505中的数据执行的多个不同功能。例如,服务535-1和535-2可提供预定义的功能(诸如,数据的加密、解密、压缩和/或解压缩、擦除编码和/或应用正则表达式)。或者,服务535-1和535-2可提供更通用的功能(诸如,数据搜索功能和/或SQL功能)。服务535-1和535-2还可支持运行专用码。也就是说,使用服务535-1和535-2的应用可提供待使用存储装置505上的数据执行的定制码。服务535-1和535-2还可以是这些功能的任何组合。表1列出可由处理器(一个或多个)530提供的服务的一些示例。
表1:服务类型
压缩
加密
数据库过滤器
擦除编码
RAID
哈希/CRC
正则表达式(模式匹配)
分散聚集(Scatter Gather)
流水线
视频压缩
数据重复删除
操作系统映像加载器(Operating System Image Loader)
容器映像加载器(Container Image Loader)
伯克利包过滤(Berkeley packet filter,BPF)加载器
FPGA比特流加载器
大数据集
处理器(一个或多个)530(和,实际上,计算装置510-1)可以以任何期望的方式来实现。示例实施方式可包括本地处理器(诸如,CPU或一些其他处理器(诸如,FPGA、ASIC或SoC)、GPU、GPGPU、DPU、NPU、NIC或TPU(包括其他可能性))。处理器530(一个或多个)还可使用FPGA或ASIC(包括其他可能性)来实现。如果计算装置510-1包括多于一个处理器530,则每个处理器可如上所述地实现。例如,计算装置510-1可具有CPU、TPU和FPGA各一个,或者计算装置510-1可具有两个FPGA,或者计算装置510-1可具有两个CPU和一个ASIC等。
根据期望的解释,计算装置510-1或处理器530(一个或多个)可被认为是计算存储单元。
公开的一些实施例可包括用于与存储装置505和/或计算装置510-1通信的其他机制。例如,存储装置505和/或计算装置510-1可包括可支持使用以太网、RDMA、TCP/IP、InfiniBand、SAS、iSCSI或SATA(包括其他可能性)与其他装置通信的网络接口560。网络接口560可提供用于与存储装置505和/或计算装置510-1通信的另外的接口。虽然图5A将网络接口560示出为将通信提供给计算装置510-1,但是公开的实施例也可包括到存储装置505的网络接口。此外,在公开的一些实施例中,可使用这样的其他接口来代替主机接口525和/或540(在这种情况下,主机接口525和/或540可被省略)。以下在图5B至图5D中示出的其他变型也可包括这样的接口。
虽然图5A将存储装置505和计算装置510-1示出为单独的装置,但是在图5B中,存储装置505和计算装置510-1可被组合。因此,计算装置510-2可包括控制器515、存储设备520-1、提供服务535-1和535-2的处理器(一个或多个)530、存储器545和/或DMA550。像图5A的存储装置505和计算装置510-1一样,管理和I/O命令可经由主机接口540和/或网络接口560被接收。即使计算装置510-2被示出为包括存储设备和处理器(一个或多个)530二者,图5B仍然可被认为包括与计算存储单元相关联的存储装置。
在图5C中示出的又一变型中,计算装置510-3被示出。计算装置510-3可包括控制器515和存储设备520-1,以及提供服务535-1和535-2的处理器(一个或多个)530、存储器545和/或DMA550。但是即使计算装置510-3可被认为是包括控制器515、存储设备520-1、处理器(一个或多个)530(并且还被认为是与计算存储单元相关联的存储装置)、存储器545和/或DMA550的单个组件,与图5B中示出的实施方式不一样,控制器515和处理器(一个或多个)530可各自包括它们自己的主机接口525和540、和/或网络接口560(同样,主机接口525和540、和/或网络接口560可用于管理和/或I/O)。通过包括主机接口525,控制器515可提供对存储设备520-1的透明的访问(而不是要求全部通信通过处理器(一个或多个)530进行)。
此外,处理器(一个或多个)530可具有到存储设备520-1的代理存储访问单元565。因此,代替通过控制器515路由访问请求,处理器(一个或多个)530可能够直接从存储设备520-1访问数据。
在图5C中,控制器515和代理存储访问单元565二者用虚线被示出以表示它们是可选元件,并且可根据实施方式被省略。
最后,图5D示出又一实施方式。在图5D中,可包括与图5C类似的控制器515、存储器545、DMA550和代理存储访问单元565的计算装置510-4被示出。此外,计算装置510-4可包括一个或多个存储设备(例如,存储元件)520-1至520-4的阵列。虽然图5D示出四个存储元件,但是公开的实施例可包括任何数量的(一个或多个)的存储元件。此外,独立的存储元件可以是其他存储装置(诸如,图5A至图5D中示出的那些存储装置)。
因为计算装置510-4可包括多于一个存储元件520-1至520-4,所以计算装置510-4可包括阵列控制器570。阵列控制器570可管理数据如何被存储在存储元件520-1至520-4上以及数据如何从存储元件520-1至520-4被获取。例如,如果存储元件520-1至520-4被实现为某个等级的独立磁盘冗余阵列(RAID),则阵列控制器570可以是RAID控制器。如果存储元件520-1至520-4使用某种形式的纠删码(Erasure Coding)来实现,则阵列控制器570可以是纠删码控制器。
图6示出根据公开的实施例的使用图1的多功能装置135将请求递送到图1的存储装置120和/或图1的计算存储单元140的示例过程的流程图。在图6中,在框605,图1的多功能装置135可在图3的端点310接收请求。在框610,图3的复用器/解复用器330可从请求识别装置。在框615,图3的复用器/解复用器330可将图3的根端口355或图3的根端口360识别为被连接到从请求识别的装置。在框620,图3的复用器/解复用器330、图3的桥接器335或图3的桥接器340、以及图3的根端口355或图3的根端口360可将请求发送到从请求识别的装置。
图7示出根据公开的实施例的使用图1的多功能装置135来识别图1的存储装置120和/或图1的计算存储单元140的公开的功能的示例过程的流程图。在图7中,在框705,图3的根端口355可识别由连接到图3的连接器315的装置公开的功能。在框710,图3的根端口360可识别由连接到图3的连接器320的装置公开的功能。在框715,图3的端点310可从图1的多功能装置135公开功能。
图8示出根据公开的实施例的使用图3的异步缓冲器的示例过程的流程图。在图8中,在框605,图1的多功能装置135可在图3的端点310接收请求。因为描述的操作是相同的,所以图8的框605与图6的框605使用相同的标识符。在框805,图1的多功能装置135可将请求存储在图3的异步缓冲器325中。
在框810,在稍后的某个时间,图3的复用器/解复用器330可从图3的异步缓冲器325读取请求。在框610,图3的复用器/解复用器330可从请求识别装置。在框615,图3的复用器/解复用器330可将图3的根端口355或图3的根端口360识别为连接到从请求识别的装置。因为描述的操作是相同的,所以图8的框610和615与图6的框610和615使用相同的标识符。在框815,图3的桥接器335或图3的桥接器340可将请求存储在图3的异步缓冲器345或图3的异步缓冲器350中。
在框820,在稍后的某个时间,图3的根端口355可从图3的异步缓冲器345读取请求,或者图3的根端口360可从图3的异步缓冲器350读取请求。在框620,图3的根端口355或图3的根端口360可将请求发送到从请求识别的装置。因为描述的操作是相同的,所以图8的框620与图6的框620使用相同的标识符。
图9示出根据公开的实施例的用另外的计算存储单元替换图1的计算存储单元140的示例过程的流程图。在框905,图1的计算存储单元140可与图3的连接器320断开连接。在框910,新的计算存储单元可连接到图3的连接器320。
图10示出根据公开的实施例的使用图1的多功能装置135在附接到图1的多功能装置135的装置之间递送请求的示例过程的流程图。在框1005,图1的多功能装置135可从连接到图1的多功能装置135的端口的装置接收请求。注意,所讨论的装置可使用图3的根端口355、或图3的根端口360、或连接到其他存储装置或计算存储单元的其他端口(而不是与图3的端点310连接的图1的处理器110)进行连接。在框1010,图3的桥接器335或图3的桥接器340可从请求识别装置。在框1015,图3的桥接器335或图3的桥接器340可将图3的根端口355或图3的根端口360识别为连接到从请求识别的装置。在框1020,图3的桥接器335或图3的桥接器340可将请求发送到从请求识别的装置。最后,在框1025,发送原始请求的装置可将数据提供给从请求识别的装置。
图11A至图11B示出根据公开的实施例的附接到图1的多功能装置135的装置共享数据的示例过程的流程图。在图11A中,在框1105,一个装置可使用图4的DMA440或图5A至图5D的DMA550来将数据写入图4的存储器435或图5A至图5D的存储器545。可选地,在框1110,一个装置可使用图4的DMA440或图5A至图5D的DMA550来从图4的存储器435或图5A至图5D的存储器545读取数据。
可选地,在框1115(图11B),一个装置可将数据写入图3的缓冲器370中。在框1120,图3的数据处理器375可处理图3的缓冲器370中的数据,可能以可由其他装置处理的格式来放置数据。注意,如虚线1125所示,框1120是可选的。最后,在框1130,第二装置可从图3的缓冲器370读取数据。
如以上参照图3所讨论的,公开的一些实施例可支持将多于两个装置连接到图1的多功能装置135。图12和图14示出公开的具有多于两个连接的装置的一些潜在实施例。
在图12中,与图3一样,多功能装置135可包括用于将多功能装置135连接到图1的处理器110、存储装置120和计算存储单元140的连接器305、315和320。(图12省略端点310、异步缓冲器325、345和350、复用器/解复用器330和365以及根端口355和360:这些组件的子集或全部可被包括在公开的一些实施例中,但是在如所示出的公开的其他实施例中可被省略。)多功能装置135还可包括可连接到桥接器1210的连接器1205。桥接器1210可与桥接器335和340类似地起作用:桥接器1210可经由连接器1205将请求、消息或数据递送给连接到多功能装置135的装置。该装置可以是另外的存储装置、另外的计算存储单元(作为特定示例,FHE电路)、或者可使用多功能装置135支持的任何其他类型的装置。
图12未示出桥接器1210与连接器305、桥接器335和340或数据处理器375之间的连接。省略这些用于通信的线并不意在表明桥接器1210不与这些组件通信:相反,为了清楚起见,图12已经省去这些线。可理解,桥接器1210可以以与桥接器335和340类似的方式与连接器305、桥接器335和340以及数据处理器375通信。
在多功能装置135仅支持两个装置(其可以是图1的存储装置120和图1的计算存储单元140)的公开的实施例中,缓冲器370可有效地作为用于在装置之间传递数据的临时存储设备。例如,图1的存储装置120可将数据写入缓冲器370中,然后图1的计算存储单元140可读取并处理该数据。但是在(诸如,图12中示出的)公开的实施例中,当多功能装置135支持使用访问缓冲器370的多个装置(无论它们是存储装置还是计算存储单元)时,缓冲器370可用作共享存储器而不是用作在两个装置之间往返运送(shuttle)数据的缓冲器。也就是说,数据可驻留在缓冲器370中,而各种装置可从缓冲器370访问该数据。例如,图1的存储装置120可将数据复制到缓冲器370中,然后图1的计算存储单元140可处理该数据并用新数据重写该数据,然后新数据可由图1的又一计算存储单元140处理。
作为特定实例,考虑图1的存储装置120存储使用特定编码被编码的视频数据的情况,图1的连接到多功能装置135的一个计算存储单元140是用于对视频数据执行对象检测的TPU或GPU,并且图1的另一计算存储单元140是用于执行视频解码的视频处理单元(VPU)。当图1的主机处理器110要求TPU或GPU执行视频解码时,TPU或GPU可要求图1的存储装置120将数据传送到缓冲器370,然后要求VPU执行视频解码,使得TPU或GPU然后可对视频数据执行对象检测。数据可仍然保留在缓冲器370中,用于TPU或GPU、以及VPU进行的视频解码和对象检测。
关于该示例存在一些其他值得注意的点,这些点推广到公开的实施例。首先,如上所述,缓冲器370可用作共享存储器,而不是用作传输缓冲器,并且图1的存储装置120、TPU或GPU、以及VPU全部访问缓冲器370。在以上的示例中,存储装置120、VPU、以及TPU或GPU各自依次从缓冲器370访问数据,在下一装置接管之前执行它们的操作。但是更一般地,公开的实施例可允许连接到多功能装置135的装置的任何子集或全部装置以事先编排的方式或同时从缓冲器370访问数据(例如,如果不同的装置正在访问不同的数据并且不考虑“一个装置所做的事情影响由另一装置使用的数据”,则两个或更多个装置可同时从缓冲器370访问数据)。
其次,注意,在示例中,图1的主机处理器110仅要求TPU或GPU执行对象检测,并且TPU或GPU向图1的存储装置120和VPU发出请求以执行它们的功能。换言之,附接到多功能装置135的一个控制器可向附接到多功能装置135的另外的控制器发出请求:并非全部请求都必须从图1的处理器110发出。换言之,图1的主机处理器110不需要编制(orchestrate)或管理连接到多功能装置135的多个装置的操作:多个装置本身可触发彼此的功能。
第三,图1的主机处理器110不需要知道VPU连接到多功能装置135。换言之,图1的主机处理器110仅关注正在进行的物体检测:图1的主机处理器110不关注可需要执行哪些附加的处理以完成期望的操作。图1的主机处理器110可保持对如下事实不可知:其他装置的控制器可正在处理由图1的主机处理器110请求的特定操作。
使一个控制器向另外的控制器发出请求并且图1的主机处理器110可不知道特定的控制器连接到多功能装置135的优点在于:可向图1的主机处理器110隐藏一些控制器。继续以上示例,多功能装置135甚至可不将VPU连接到多功能装置通知给图1的主机处理器110。
为了实现该结果,多功能装置135可枚举附接到多功能装置135的各种装置并确定这些装置如何被配置。关于每个装置的配置的信息可指定每个装置提供什么功能,以及向图1的主机处理器110公开哪些装置/控制器。该信息可被存储在装置配置的列表中,装置配置的列表可被存储在存储设备1215中,并且多功能装置135可使用装置配置的列表来选择性地向图1的主机处理器110公开或隐藏各种装置/控制器。
在公开的一些实施例中,多功能装置135可将关于经由连接器315、320和1215连接到多功能装置135的装置的信息通知给图1的存储装置120或图1的计算存储单元140。例如,多功能装置135可枚举全部附接的装置,并且可将关于全部附接的装置的信息(诸如,全部公开的功能)提供给全部附接的装置。在公开的其他实施例中,多功能装置135然而可使用装置的配置,来将关于装置的信息通知给附接的装置。在公开的这样的实施例中,装置可指定是否应该向其他装置报告装置的功能中的每个(或者甚至作为整体的装置)。在公开的一些实施例中,装置不仅可指定是向其他装置公开还是隐藏它们的功能(或该装置本身),而且甚至可选择性地这样做,让一些装置知道该装置的功能并向其他装置隐藏该功能。
图13示出根据公开的实施例的可由图1的多功能装置135使用的装置配置的列表的细节。在图13中,存储设备1215被示出为包括装置配置的列表1305。装置配置的列表1305可包括各种列(诸如,装置标识符(ID)1310、功能1315、以及指示是否向图1的主机处理器110公开装置/控制器的指示符1320。装置配置的列表1305还可包括条目(诸如,条目1325-1、1325-2和1325-3(条目1325-1至1325-3可被统称为条目1325))。每个条目1325可标识特定装置/控制器,列出由该装置/控制器公开的功能,并且指示是否向图1的主机处理器110公开该装置/控制器。例如,条目1325-1指示具有标识符0的装置公开两个物理功能(例如,PF0和PF1)并且将向图1的主机处理器110公开具有标识符0的装置,条目1325-2指示具有标识符1的装置公开一个物理功能(例如,PF0)和一个虚拟功能(例如,VF0)并且将向图1的主机处理器110公开具有标识符1的装置,并且条目1325-3指示具有标识符2的装置公开一个物理功能(例如,PF0)并且将向图1的主机处理器110隐藏具有标识符2的装置。图1的多功能装置135可使用该信息来向图1的主机处理器110公开适当的功能。
虽然图13示出装置配置的列表1305中的三个条目1325,但是公开的实施例可包括任何数量的(一个或多个)条目1325。此外,装置配置的列表1305可包括当前未附接到图1的多功能装置135的装置的配置。也就是说,条目1325可包括关于在一点处连接到图1的多功能装置135但当前未连接的装置的信息。在所讨论的装置稍后再次连接到图1的多功能装置135的情况下,这样的条目1325可被保留,避免需要向装置重新询问它的配置。
条目1325中列出的每个功能1315可表示由标识的装置提供的不同的能力。例如,考虑但是具有内置的计算存储单元的图1的存储装置120。图1的存储装置120可公开两个功能:一个用于启动从图1的存储装置120读取数据或将数据写入图1的存储装置120,并且另一个用于访问内置的计算存储单元。为了避免“由装置提供的特定功能如何被触发”与“装置可公开‘功能’以触发该功能的事实”之间的混淆,对装置的“能力”的任何引用意在表示由装置提供的功能而不是触发该功能的“功能”。
如装置配置的列表1305中所示,不同的装置可提供不同数量的功能。例如,条目1325-1和1325-2示出两个功能被公开的装置,而条目1325-3示出仅一个功能被公开的装置。公开的实施例可包括任何数量的(一个或多个)装置,每个装置具有由该装置公开的任何数量的(一个或多个)功能。
在参照列1315中的物理功能和虚拟功能时,装置配置的列表1305暗示装置是PCIe装置。在公开的一些实施例中,PCIe总线和功能可被使用。但是公开的实施例还可使用除PCIe之外的架构,并且可使用其他机制来使得图1的主机处理器110(或其他控制器)能够触发各种装置内的操作。公开的实施例意在覆盖全部这样的变型,而不管特定的命名。
在图13中,指示符1320表明向图1的主机处理器110公开或还是向图1的主机处理器110隐藏整个装置。在公开的一些实施例中,可向图1的主机处理器110公开或隐藏整个装置。但是在公开的其他实施例中,可选择性地向图1的主机处理器110公开或隐藏装置的不同功能。例如,图1的存储装置120可包括可用作内置于图1的存储装置120中的计算存储单元的压缩电路。用于从图1的存储装置120读取数据或将数据写入图1的存储装置120的请求可自动触发数据的压缩/解压缩,并且因此可向图1的主机处理器110隐藏压缩电路。但是其他计算存储单元可由于其他原因而受益于访问图1的存储装置120的压缩电路,并且使得即使不向图1的主机处理器110公开功能,也可使功能对其他装置可用。为了支持向图1的主机处理器110的功能选择性公开,装置配置的列表1305可包括针对每个装置/功能组合的单独条目1325(以单独地指示哪些功能被公开或隐藏),或者可仅细分功能1315和指示符1320,但是仍然被分组在针对单个装置的单个条目1325中。
可注意到,功能1315示出标识为物理功能0(PF0)的三个不同的功能:每个装置1310一个功能。在公开的一些实施例中,每个装置可从功能0开始列出其功能。当装置由图1的主机处理器110直接访问时,不存在关于哪个功能正在被调用的混淆:仅考虑由该装置公开的功能,并且每个功能通常被唯一地标识。但是当图1的多功能装置135像包括多个装置的功能的单个装置那样起作用时,图1的多功能装置135不应该公开全部被标识为“物理功能0”的多个功能:图1的主机处理器110可以不知道哪个功能触发期望的功能,和/或图1的多功能装置135可以不知道图1的主机处理器110意在触发哪个功能。
为了解决这个问题,图1的多功能装置135可公开单位功能标识符,并且可在内部将由图1的多功能装置135公开的功能映射到由各个装置公开的功能。例如,假设条目1325-1、1325-2和1325-3都表示附接到图1的多功能装置135的装置,则多功能装置135可向图1的主机处理器110公开四个功能:这四个功能可分别映射到装置0的物理功能0(PF0)、装置0的物理功能1(PF1)、装置1的物理功能0和装置1的虚拟功能0(VF0)。这些功能可被分配任何期望的功能标识符(MFD功能ID):在公开的一些实施例中,由图1的多功能装置135向图1的主机处理器110公开的这些功能可被分配从0开始的序号(例如,PF0至PF3)。因此,由图1的多功能装置135管理的功能可映射到如以下表2中所示的各种装置功能。
表2:函数映射
装置ID 功能ID MFD功能ID
0 PF0 PF0
0 PF1 PF1
1 PF0 PF2
1 VF0 PF3
2 PF0 PF4
因此,当图1的多功能装置135接收到涉及例如其公开的功能3的请求时,图1的多功能装置135可转换该请求以触发装置ID 1的虚拟功能0,并且可将该请求传递到图3的适当的桥接器335或340,或者传递到图12的桥接器1210。注意,在公开的一些实施例中,图1的多功能装置135可将请求交由图3的桥接器335或340或图12的桥接器1210来处理到装置的适当功能的映射,而不是自己来转换请求。换言之,图1的多功能装置135可确定哪个装置包括图1的主机处理器110意在触发的功能,识别通向该装置的图3的桥接器335或340或图12的桥接器1210,并且将请求传递到该桥接器,然后该桥接器可适当地映射在请求中识别的功能。
注意,由于没有向图1的主机处理器110公开装置2,因此图1的多功能装置135不需要向图1的主机处理器110公开与装置2的物理功能0(PF0)对应的功能(PF4),尽管可向附接到图1的多功能装置135的其他装置公开这样的功能。
在公开的一些实施例中,表2的映射可与在多功能装置135从任何源(无论是在多功能装置135“上方”的装置(诸如,图1的主机处理器110)还是在多功能装置135“下方”的装置(诸如,图1的存储装置120和/或图1的计算存储单元140))接收的请求一起使用。换言之,表2的映射可用于任何请求,而不管请求源自何处。(在该上下文中,“上方”和“下方”可以是在相对于例如图1的主机处理器110的装置的层次结构中:图1的主机处理器110以及在图1的主机处理器110与多功能装置135之间的任何其他装置可被认为在多功能装置135“上方”,而通过多功能装置135与图1的主机处理器110通信的任何装置可被认为在多功能装置135“下方”。)在公开的其他实施例中,由于连接到多功能装置135的装置(在装置允许其他装置看到它们或它们的功能的程度上)可知道彼此并且可知道它们各自公开什么功能,所以连接到多功能装置135的装置可使用由装置公开的装置标识符和功能标识符,而不是由多功能装置135公开的功能标识符。
存储设备1215可以是任何种类的存储设备。例如,存储设备1215可以是易失性存储设备(诸如,DRAM)或非易失性存储设备(诸如,闪存)。公开的一些实施例可使用图13的装置配置的列表1305来确定向图1的主机处理器110公开哪些装置/控制器:在这样的实施例中,多功能装置135可枚举附接的装置以确定全部附接的装置具有存储在图13的装置配置的列表1305中的配置,并且然后可使用来自图13的装置配置的列表1305的装置配置来确定向图1的主机处理器110公开哪些装置/控制器。
可向图1的主机处理器110隐藏特定装置/控制器的事实不应被理解为表明不可向图1的主机处理器110公开装置/控制器。换言之,图1的多功能装置135可以能够向图1的主机处理器110公开装置/控制器,但是因为配置指示应该向图1的主机处理器110隐藏装置/控制器,所以图1的多功能装置135可选择隐藏装置/控制器。
图14示出根据公开的实施例的图1的多功能装置135的又一实施例。在图14中,多功能装置135与如图3中所示的多功能装置135类似。但是图14的多功能装置135还包括FHE电路1405。在图14中,FHE电路1405可被集成到多功能装置135中。也就是说,FHE电路1405可被实现为多功能装置135的一部分,而不是经由连接器(诸如,图12的连接器315或320或连接器1205)连接到多功能装置。通过将FHE电路1405与多功能装置135集成,发送到FHE电路1405的请求可更快地被处理。多功能装置135可直接公开FHE电路1405的功能,使得FHE电路1405的能力可在不需要映射功能标识符的情况下被触发。将FHE电路1405与多功能装置135集成还意味着桥接器可被省略:由于与FHE电路1405的通信可以是直接的,因此FHE电路1405可不需要桥接器来处理与FHE电路1405的通信。另一方面,通过将FHE电路1405集成到多功能装置135中,FHE电路1405可以不是可替换的:如果FHE电路1405不能正确地起作用或者不再被需要,则多功能装置135可需要被整个替换。像图12的桥接器1210一样,FHE电路1405可包括为了清楚起见而未在附图中示出的到连接器305、桥接器335和/或340以及数据处理器375的连接。
虽然图14示出集成到多功能装置135中的FHE电路1405,但是公开的实施例可包括集成到多功能装置135中的任何期望的计算存储单元(或者甚至存储装置)。此外,虽然图14仅示出集成到多功能装置135中的一个FHE电路1405,但是公开的实施例可将任何数量的装置集成到多功能装置135中,并且集成到多功能装置135中的各种装置可以是相同或不同的装置。最后,虽然图14示出一个连接器320(及其对应的桥接器340和到连接器305、桥接器335、缓冲器370和数据处理器375的连接),但是公开的实施例可包括除连接器315和FHE电路1405之外的附接到多功能装置135的任何数量(零个或更多个)装置。换言之,多功能装置135可仅包括FHE电路1405和用于另外的装置(诸如,存储装置120)的一个连接器315。而且,多功能装置可包括用于连接其他装置(如,图1的存储装置120和图1的计算存储单元140)的两个或更多个连接器315和320(意味着多功能装置135可呈现为包括三个或更多个装置的功能)。
图15示出根据公开的实施例的从源接收请求并将请求递送到目标的图1的多功能装置135。如上所讨论的,多功能装置135可连接到图1的主机处理器110和各种装置(诸如,图1的存储装置120和/或图1的计算存储单元140)。出于图15的目的,源1505可以是可发送请求1510的连接到多功能装置135的任何组件。因此,源1505可包括图1的主机处理器110、图1的存储装置120或图1的计算存储单元140(计算存储单元140可包括例如图14的FHE电路1405)。以类似的方式,目标1515可以是源1505可向其发送请求1510的任何组件。因此,目标1515还可包括图1的主机处理器110、图1的存储装置120或图1的计算存储单元140(计算存储单元140可包括例如图14的FHE电路1405)。但是由于源1505将要将请求1510发送到目标1515,因此源1505可需要知道目标1515存在。因此,例如,如果源1505是图1的主机处理器110,则目标1515可不包括向图1的主机处理器110隐藏的连接到多功能装置135的任何装置。(注意,由于连接到多功能装置135的装置不一定相互隐藏,因此向主机处理器110隐藏的目标1515不一定意味着其他源可不能够向目标1515发送请求1510。)为了讨论的目的,目标1515可包括装置本身或者图3的桥接器335或340或者图12的桥接器1210(因为多功能装置135可将请求递送到图3的桥接器335或340或者图12的桥接器1210而不是递送到装置本身,图3的桥接器335或340或图12的桥接器1210处理到装置的递送)。此外,目标1415还可包括数据处理器375(因为图1的主机处理器110和/或连接到多功能装置135的装置可请求数据处理器375处理缓冲器370中的数据)。
但是在一些情况下,虽然源1505可将请求1510发送到目标1515,但是多功能装置135(或,图3的桥接器335或340或者图12的桥接器1210)可将请求重新引导到另外的目的地。例如,如上所讨论的,连接到多功能装置135的装置可将缓冲器370视为图1的存储器115的一部分,并且不知道缓冲器370作为多功能装置135内的组件存在。但是如果多功能装置135(或,图3的桥接器335或340或者图12的桥接器1210)确定请求1510涉及访问作为缓冲器370的地址范围的一部分的地址,则多功能装置135(或,图3的桥接器335或340或者图12的桥接器1210)可基于请求1510的地址在与缓冲器370相关联的地址范围内,而将请求重新引导到缓冲器370(或者可使用缓冲器370来处理请求1510本身)。
在公开的一些实施例中,目标1515、缓冲器370或数据处理器375可将回复1520发送回源1505。在这样的情况下,回复1520可由多功能装置135递送回源1505。
注意,即使目标1515被集成到图1的多功能装置135中,目标1515也可发送回复1520。例如,图14的FHE电路1405可将回复1520发送到源1505。图14的FHE电路1405或任何其它组件可被集成到图1的多功能装置135中的事实并不意味着源1505知道目标1515何时完成其操作。
图16示出根据公开的实施例的向图1的处理器公开附接到图1的多功能装置135的装置的示例过程的流程图。在图16中,在框1605,图1的多功能装置135可确定图1的存储装置120连接到图1的多功能装置135:例如,经由图3的连接器315。在框1610,图1的多功能装置135可确定图1的第一计算存储单元140可用。注意,在公开的一些实施例中,图1的第一计算存储单元140可以是图14的FHE电路1405。在框1615,图1的多功能装置135可确定图1的第二计算存储单元140连接到图1的多功能装置135:例如,经由图3的连接器320。注意,在公开的一些实施例中,图1的第二计算存储单元140可以是图14的FHE电路1405。
在框1620,图1的多功能装置135可向图1的主机处理器110公开图1的存储装置120,主机处理器110还可连接到图1的多功能装置135:例如,经由图3的连接器305。在框1625,图1的多功能装置135可选择性地向图1的主机处理器110公开图1的第一计算存储单元140和/或第二计算存储单元140。例如,图1的第一计算存储单元140和第二计算存储单元140中的任一个或两个的配置可标识是否向图1的主机处理器110公开图1的第一计算存储单元140和/或第二计算存储单元140。
图17示出根据公开的实施例的图1的多功能装置135确定计算存储单元如何可用的示例过程的流程图。在框1705,图1的多功能装置135可确定图1的计算存储单元140连接到图1的多功能装置135:例如,经由图3的连接器320或图12的连接器1205。可选地,在框1710,图1的多功能装置135可确定图1的计算存储单元140被集成到图1的多功能装置135中:例如,像图14的FHE电路1405一样。这些确定可以以任何期望的方式完成:例如,图1的主机处理器110可在枚举附接到图1的主机处理器110的装置时向图1的多功能装置135标识其自身,并且图1的多功能装置135可通过枚举附接到它的装置来确定这些装置。
图18示出根据公开的实施例的图1的多功能装置135确定向图1的处理器公开哪些装置的示例过程的流程图。在框1805,图1的多功能装置135可从图12的存储设备1215访问图13的装置配置的列表1305。然后,图1的多功能装置135可识别用于连接到图1的多功能装置135的装置的图13的条目1325。在框1810,图1的多功能装置135可向图1的主机处理器110公开图1的第一计算存储单元140,而在框1815,图1的多功能装置135可不向图1的主机处理器110公开图1的第二计算存储单元140(即,可向图1的主机处理器110隐藏图1的第二计算存储单元140)。例如,是否向图1的主机处理器110公开图1的计算存储单元140可通过图1的计算存储单元140的配置被确定。
虽然图18表明框1810和1815是替代方案,但是因为要么可向图1的主机处理器110公开装置,要么可向图1的主机处理器110隐藏装置,所以框1810和1815仅针对单个计算存储单元(或其他装置)是替代方案。但是“向图1的主机处理器110公开一个装置还是向图1的主机处理器110隐藏一个装置”可独立于“向图1的主机处理器110公开还是隐藏任何其他装置”。类似地,“一个装置指示可向其他装置公开还是隐藏特定功能”可独立于“任何其他装置是否决定隐藏或公开其功能”。
图19示出根据公开的实施例的图1的多功能装置135在连接的装置之间递送消息的示例过程的流程图。在图19中,在框1905,图1的多功能装置135可从图15的源1505接收图15的请求1510。图15的源1505可以是图1的主机处理器110、图1的存储装置120、图1的计算存储单元140、图3的数据处理器375、图14的FHE电路1405、或者可与图1的多功能装置135集成或连接到图1的多功能装置135的任何其他装置。在框1910,图1的多功能装置135可将图15的请求1510发送到图15的目标1515。图15的目标1515可以是图1的主处理器110、图1的存储装置120、图1的计算存储单元140、图3的数据处理器375、图14的FHE电路1405、或者可与图1的多功能装置135集成或连接到图1的多功能装置135的任何其他装置,前提是图15的源1505知道图15的目标1515存在。因此,例如,如果图15的源1505是图1的主机处理器110,则图15的目标1515可以是向图1的主机处理器110公开的图1的存储装置120、图1的计算存储单元140、图3的数据处理器375、或者图14的FHE电路1405(换言之,图13的目标1515可以不是已经向图1的主机处理器110隐藏的装置)。
在框1915,图1的多功能装置135可从图15的目标1515接收图15的回复1520。在该情况下,在框1920,图1的多功能装置135可将图15的回复1520发送到图15的源1505。如虚线1925所示,在图15的目标1515不发送图15的回复1520的情况下,框1910和1915可被省略。
虽然图15的请求1510可被发送到图15的目标1515,但是在一些情况下,图15的请求1510可涉及读取、写入、或操纵图3的缓冲器370中的数据。在这样的情况下,图15的请求1510可被发送到图3、图12和图14的缓冲器370而不是图15的目标1515。因此,在框1930,图15的请求1510可被发送到图3的缓冲器370,并且在框1935,图15的回复1520可从图3的缓冲器370被接收,然后在框1920,图15的回复1520可被发送到图15的源1505。如虚线1940所示,在图3的缓冲器370不发送图15的回复1520的情况下,框1930和1935可被省略。图15的请求1510是被发送到图15的目标1515还是被发送到图3、图12和图14的缓冲器370可基于图15的请求1510中的数据被确定:例如,与图3、图12图和14的缓冲器370相关联的地址。
图20示出根据公开的实施例的图1的多功能装置135从图1的处理器确定图3、图12和图14的缓冲器370的地址范围的示例过程的流程图。在框2005,图1的主机处理器110可确定图3、图12和图14的缓冲器370的地址范围,地址范围可被提供给图1的多功能装置135。图1的多功能装置135可向图1的主机处理器110通知图3、图12和图14的缓冲器370的容量。因此,图1的主机处理器110可知道分配给图3、图12和图14的缓冲器370的地址范围有多大。
图21示出根据公开的实施例的附接到图1的多功能装置135的装置从图3、图12和图14的缓冲器370访问数据的示例过程的流程图。在图21中,在框2105,图1的第一存储装置120或图1的第一计算存储单元140(第一计算存储单元140可以是例如图14的FHE电路1405)可访问图3的缓冲器370中的数据。在框2110,图1的第二存储装置120或图1的第二计算存储单元140(第二计算存储单元140可以是例如图14的FHE电路1405)可访问图3、图12和图14的缓冲器370中的数据。在框2115,图1的第三存储装置120或图1的第三计算存储单元140(第三计算存储单元140可以是例如图14的FHE电路1405)可访问图3、图12和图14的缓冲器370中的数据。如虚线2120所示,如果图1的多功能装置135不具有图1的第三计算存储单元140,则框2115可被省略。注意,在框2110中访问图3、图12和图14的缓冲器370中的数据的装置可以是与在框2105中访问图3、图12和图14的缓冲器370中的数据的装置相同类型的装置或不同类型的装置。例如,图1的存储装置120可在框2105中访问图3、图12和图14的缓冲器370,而图1的计算存储单元140可在框2110中访问图3、图12和图14的缓冲器370。
图22示出根据公开的实施例的图3、图12和图14的数据处理器375处理图3、图12和图14的缓冲器370中的数据的示例过程的流程图。在图22中,在框2205,图3的数据处理器375可接收请求,以处理图3的缓冲器370中的数据。该请求可从图1的主机处理器110、图1的存储装置120、图1的计算存储单元140(计算存储单元140可以是例如图14的FHE电路1405)或连接到图1的多功能装置135的任何其他装置接收。该请求可触发图3的数据处理器375的公开的功能,或者可触发图1的多功能装置135的功能,图1的多功能装置135的功能可继而(例如,经由由图1的多功能装置135公开的功能到由图3的数据处理器375公开的功能的映射)触发图3的数据处理器375的功能。在框2210,数据处理器375可按照指示处理图3的缓冲器370中的数据。
图23示出根据公开的实施例的图1的多功能装置135确定是将请求递送给图15的目标1515还是图3、图12和图14的缓冲器370的示例过程的流程图。在图23中,在框2305,图1的多功能装置135(更具体地,图3的桥接器335或340或者图12的桥接器1210)可接收图15的请求1510。在框2310,图3的桥接器335或340或者图12的桥接器1210可确定图15的请求1510是否应该被引导到图3的缓冲器370:例如,图15的请求1510是否包括与图3的缓冲器370相关联的地址范围中的地址。如果图15的请求1510不涉及图3的缓冲器370,则在框2315,图3的桥接器335或340或者图12的桥接器1210可将图15的请求1510传递到图15的目标1515。否则,在框2320,图3的桥接器335或340或者图12的桥接器1210可将图15的请求1510传递到图3的缓冲器370。
图24示出根据公开的实施例的图1的多功能装置135处理附接到图1的多功能装置135的新装置的示例过程的流程图。在图24中,在框2405,连接到图1的多功能装置135的一个装置可用新装置来替换。该替换可例如由客户使用图1的多功能装置135来执行。在发明的一些实施例中,该替换可包括将装置热交换为新装置;在公开的其他实施例中,替换可涉及关闭图1的多功能装置135的电源。在框2410,图1的多功能装置135可确定新装置连接到图1的多功能装置135。
在框2415,图1的多功能装置135可确定图13的装置配置的列表1305是否包括用于新装置的图13的条目1325。如果是,则在框2420,图1的多功能装置135可使用图13的条目1325来配置新装置。图1的多功能装置135可使用图13的条目1325来确定向图1的主机处理器110公开(或不公开)新装置的什么功能。否则,在框2425,图1的多功能装置135可(例如,通过向新装置询问它的配置,或者通过提示管理员确定新装置的配置)确定新装置的配置,并且在框2430,图1的多功能装置135可用新装置的配置来更新图13的装置配置的列表1305,之后,在框2420,图1的多功能装置135可使用装置配置。在一个实施例中,数据处理器375可检测连接到连接器(例如,图3的连接器320或图12的连接器1205)的新装置,确定新装置的配置,并且至少部分地基于新装置的配置来更新图13的装置配置的列表1305。
在图6至图11B和图16至图24中,示出公开的一些实施例。但是,本领域技术人员将认识到,通过改变框的顺序、通过省略框、或者通过包括附图中未示出的链路,公开的其他实施例也是可行的。无论是否明确地描述,流程图的所有这样的变化都被认为是公开的实施例。
公开的实施例可具有可支持到存储装置和计算存储单元的连接的多功能装置。多功能装置可向主机处理器呈现支持各个存储装置和计算存储单元的全部功能的单个装置。此外,可向主机处理器隐藏一些装置,并且这些装置由连接到多功能装置的其他装置单独使用。公开的实施例通过使客户能够混合和匹配哪些存储装置和哪些计算存储单元以组合得就像它们是单个装置一样,来提供技术优点。公开的实施例还通过使一个装置能够访问附接到多功能装置的另外的装置的功能来提供技术优点。
公开的实施例还可包括多功能装置中的缓冲器。缓冲器可用作可由附接的存储装置和/或计算存储单元中的一些或全部访问的共享存储器。公开的实施例通过避免对使用主存储器在存储装置和/或计算存储单元之间移动数据或者处理主存储器中的数据的需求,来提供技术优点。
公开的各种实施例包括用于将存储装置(诸如,固态驱动器(SSD)和计算装置)集成在集成存储装置中的系统和方法。在公开的一些实施例中,可使用包括物理功能(PF)/虚拟功能(VF)的单独的外围组件互连快速(PCIe)功能独立地向主机公开非易失性存储器快速(NVMe)控制器和计算装置。对等数据路径可被设置在存储装置与计算装置之间。计算装置和SSD可使用连接器来连接,以提供改变各种计算装置类型(诸如,图形处理器(GPU)、张量处理器(TPU)、网络接口控制器(NIC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC))的灵活性。
在公开的一些实施例中,应用可包括可生成大量的数据的应用(诸如,社交网络、人工智能/机器学习(AI/ML)、物联网(IOT)和自主车辆等)。在公开的一些实施例中,这样的大的数据集可需要处理以从数据集生成货币化(monetarization)。在一些实施例中,这样的处理在CPU周期、存储器带宽、能耗方面可以是昂贵的。因此,公开的一些实施例可处理存储装置附近或内部的数据,以将较低的响应延迟提供给应用。这样的近(near)处理还可减少用于将大的数据集移动到处理器和从处理器移动大的数据集的能耗。此外,这样的近处理可实现分布式计算。这样,公开的一些实施例可将这样的应用功能卸载到存储装置,并且可使所需的计算资源最小化,并且因此可降低包括计算周期、存储器、网络带宽和消耗的能量中的一个或多个的数据库基础设施的成本。
在公开的一些实施例中,一个或多个SSD控制器和/或一个或多个计算装置可被插入/连接在集成存储装置中。
在公开的一些实施例中,可全部或部分地向主机公开SSD控制器和/或计算装置。
在公开的一些实施例中,可不向主机公开SSD控制器和/或计算装置的子集,并且SSD控制器和/或计算装置的子集可仅在内部。
在公开的一些实施例中,可使用PCIe PF和/或VF来公开SSD控制器和计算装置。
在公开的一些实施例中,FPGA执行PCIe-PCIe桥接功能和主机协议直通。
在公开的一些实施例中,SSD控制器和计算装置可在主机上具有它们自己的可原生地访问这些装置功能的装置驱动器和主机软件栈。
在公开的一些实施例中,SSD控制器和/或计算装置可共享对等数据缓冲器以交换正在被处理的数据。
在公开的一些实施例中,一个或多个固定计算装置(诸如,处理器核)可用于FPGA中的特定预处理步骤。
在公开的一些实施例中,集成存储装置可执行智能托管引导的装置/功能管理,使得那些动作不干扰其他SSD控制器和/或计算装置。
在公开的一些实施例中,SSD控制器和计算装置可被预先安装和配置在灵活的集成存储装置中。
在公开的一些实施例中,灵活的集成存储装置可支持将新计算装置安装到现有的灵活的集成存储装置中的即插即用方法。
公开的一些实施例可支持集成许多不同种类的计算装置(诸如,具有SSD的TPU/GPU/FPGA/ASIC/SoC),以用于最佳数据处理。
在公开的一些实施例中,不同的应用和用例可受益于成本和性能最佳的计算存储解决方案。
公开的一些实施例可实现更广泛的一组应用客户。
公开的一些实施例可通过具有基础平台和与合作伙伴不同的计算装置来实现更少的产品偏差。
公开的实施例可包括提出的用于灵活的集成存储装置的架构,该架构将持久性存储设备和计算装置相结合以用于最佳数据处理。通过处理存储装置系统内的数据,可实现资源成本节省(诸如,主机总线带宽、主机存储器带宽、CPU周期、移动数据所花费的能量)。因为数据处理可开始得更快,所以公开的一些实施例可实现较低的延迟。
在公开的一些实施例中,灵活的集成存储装置可以是处理元件(诸如,FPGA(或ASIC、SoC等)),并且可用于将一个或多个SSD控制器和/或一个或多个计算资源连接到主机。在公开的一些实施例中,SSD控制器和计算资源可使用连接器来连接到这样的FPGA,使得可根据需要连接不同的种类(flavor)。在公开的一些实施例中,如果需要,SSD控制器和/或计算资源中的一些可以以固定方式连接。
可以以透明的方式通过PCIe端点(EP)物理功能(PF)或虚拟功能(VF)向主机公开一个或多个SSD控制器和一个或多个计算资源。SSD控制器和计算资源可使用PCIe根端口(RP)连接到FPGA。FPGA逻辑可执行主机与装置交互以及主机协议的PCIe直通。也就是说,主机系统软件栈(诸如,SSD装置驱动器、计算驱动器和应用框架)可通过FPGA直接与SSD控制器和计算装置对话。在一些实施例中,这有助于将提出的灵活的集成存储装置容易地集成到现有的应用软件栈中。
在公开的一些实施例中,PF/VF的数量可与向主机公开的SSD控制器和/或计算装置的数量匹配。在公开的一些实施例中,可向主机公开或通告连接的SSD控制器和计算装置。在公开的其他实施例中,可不向主机公开SSD控制器和/或计算装置的子集,并且SSD控制器和/或计算装置的子集可在提出的灵活的集成存储装置内部使用。
在公开的一些实施例中,除PCIe接口之外或作为PCIe接口的替代,提出的灵活的集成存储装置可具有其他主机接口(诸如,以太网、TCP/IP、RDMA、NVMe-oF、UFS、eMMC、SAS、SATA等中的一个或多个)。类似地,在公开的一些实施例中,除PCIe接口之外或作为PCIe接口的替代,到SSD控制器和计算装置的FPGA接口可具有其他协议(诸如,以太网、TCP/IP、RDMA、NVMe-oF、UFS、eMMC、SAS、SATA等)。尽管本公开使用具有PCIe和NVMe的示例作为用于主机与灵活的集成存储装置之间的通信的传输和主机协议,但是公开的一些实施例可使用其他传输和主机协议来实现提出的存储装置中的最佳数据处理操作。
在公开的一些实施例中,PCIe桥接器(诸如,轻量桥接器(LWB))可使用适当的业务(如果需要),将主机PCIe包和流量(traffic)转发到附接到它的SSD控制器和计算资源。类似地,在公开的一些实施例中,PCIe桥接器可使用适当的转换(如果需要),将源自附接的SSD控制器和计算装置的PCIe包和流量转发到主机。
在公开的一些实施例中,灵活的集成存储装置可提供对等(P2P)数据缓冲器,对等数据缓冲器可用于在不将数据发送到主机存储器的情况下在SSD控制器与计算装置之间直接传送数据。这样的P2P数据传送可减少消耗的能量、以及CPU周期、主机存储器带宽和主机总线带宽。公开的一些实施例还可实现数据处理的较低的延迟。在公开的一些实施例中,P2P缓冲器可使用片上SRAM、片外DRAM、或者任何其他存储器或多个存储器元件的组合。
在公开的一些实施例中,灵活的集成存储装置可拦截落在P2P地址范围内的来自SSD控制器和计算装置的任何DMA业务。拦截的数据传送业务可被重新引导到P2P缓冲器而不是主机存储器。也就是说,SSD控制器和/或计算装置可不知道如下事实:它们的DMA业务中的一些被自动路由到位于集成存储装置本身中的P2P缓冲器。从SSD控制器和计算装置的角度来看,它们可仅使用由它们自己的装置驱动器提供的存储器地址来执行DMA操作。在公开的一些实施例中,SSD控制器和计算装置可不需要特定的改变或知识来参与P2P数据传送。这样,公开的一些实施例对于使得现成的SSD控制器和计算装置能够用于灵活的集成存储装置中以提供具有更高价值的集成解决方案可以是非常有用的。
在公开的一些实施例中,P2P缓冲器可由SSD控制器使用更高级的协议(诸如,文件读取或写入和NVMe)来访问。在公开的一些实施例中,可由计算装置在其自己的主机装置驱动器和软件栈下使用其自己的DMA引擎使用任何更高级的主机协议来访问P2P缓冲器。
在公开的一些实施例中,可使用PCIe BAR机制向主机公开P2P缓冲器。在一些实施例中,P2P缓冲器地址范围可由主机编程或提供到灵活的集成存储装置中。该方法可由非PCIe主机接口使用。在公开的一些实施例中,FPGA然后可使用通过BAR或主机编程或任何其他方法可用的P2P缓冲器地址范围来拦截来自附接的SSD控制器和/或计算资源的DMA业务。
在公开的一些实施例中,P2P缓冲器可在连接到FPGA的任何数量的装置(包括SSD控制器和计算装置)之间被共享。也就是说,数据可在SSD控制器与计算装置、计算装置与另一计算装置、SSD控制器与另一SSD控制器和/或任何这样的组合之间被交换。在公开的一些实施例中,数据可由一个或多个SSD控制器或计算装置共享或交换到一个或多个SSD控制器和/或计算装置。换言之,数据交换可以以1对1、多对1或者多对多的方式进行。这些形式的数据交换还可被描述为单播或多播或广播类型的数据交换。
在公开的一些实施例中,一个或多个SSD控制器可将数据存放到P2P缓冲器中,并且然后一个或多个计算装置可通过将该数据读取到它们自己的本地存储器缓冲器中来操作或处理该数据。
在公开的一些实施例中,FPGA可包含附接到P2P缓冲器的一个或多个处理器核或逻辑元件,以对包含在P2P缓冲器本身中的数据执行特定预处理数据操作。在公开的一些实施例中,这样的固定的基于FPGA的预处理步骤可在主机不介入的情况下在装置引导下被执行。在公开的一些实施例中,基于FPGA的预处理步骤可在主机引导下被执行。在公开的一些实施例中,主机可使用主机总线接口将这样的指令和编制提供给一个或多个PCIe功能。
在公开的一些实施例中,由于可向主机公开多个计算功能和SSD控制器功能,因此集成存储装置可执行智能主机引导的装置/功能管理,使得那些动作不干扰其他SSD控制器和/或计算装置。这样的装置管理功能的一些示例是电源管理、重置或中断设置。
在公开的一些实施例中,灵活的集成存储装置、SSD控制器和计算装置可被预先安装和配置。在公开的一些实施例中,灵活的集成存储装置支持将新的计算装置和SSD控制器安装到现有的灵活的集成存储装置中的即插即用方法。在公开的一些实施例中,FPGA使用本地持久性存储器来存储附接到其的存储SSD控制器和/或计算装置的配置和能力,并且可使用本地持久性存储器来向主机通告附接到FPGA的装置。
在公开的一些实施例中,在上电之后,FPGA中的逻辑可通过检查附接的装置的装置信息(例如,标识信息)及其存储在本地持久性存储器中的已知装置配置的列表来检测新连接的装置(SSD控制器和/或计算装置)。如果装置信息不匹配,则FPGA可读取主机接口配置和附接的装置的能力,并且可将读取的配置和能力信息存储在其持久性存储器中。换言之,FPGA可更新其存储在本地持久性存储器中的附接的装置的列表。然后,在随后的上电事件中,FPGA可使用存储在其本地持久性存储器中的配置和能力信息来通告与新连接的装置匹配的配置和能力。以这种方式,新的计算装置或SSD控制器可被插入到灵活的集成存储装置基础平台中,并且灵活的集成存储装置将自动地使新的计算装置或SSD控制器对主机可见。
公开的各种实施例包括用于将存储装置(诸如,固态驱动器(SSD)和全同态加密(FHE)加速引擎)集成在集成存储装置中的系统和方法。可使用包括物理功能(PF)/虚拟功能(VF)的单独的外围组件互连快速(PCIe)功能,独立地向主机公开非易失性存储器快速(NVMe)控制器和FHE加速引擎。对等数据路径可被设置在存储器设备与FHE加速引擎之间。
在公开的一些实施例中,应用可包括可生成大量的数据的应用(诸如,社交网络、人工智能/机器学习(AI/ML)、物联网(IOT)和自主车辆等)。在公开的一些实施例中,这样的大的数据集可需要处理以从数据集生成货币化。在公开的一些实施例中,这样的处理在CPU周期、存储器带宽、能耗方面可以是昂贵的。因此,公开的一些实施例可处理存储装置附近或内部的数据,以将较低的响应延迟提供给应用。这样的近处理还可减少用于将大的数据集移动到处理器和从处理器移动大的数据集的能耗。此外,这样的近处理可实现分布式计算。这样,公开的一些实施例可将这样的应用功能卸载到存储装置,并且可使所需的计算资源最小化,并且因此可降低包括计算周期、存储器、网络带宽和消耗的能量中的一个或多个的数据库基础设施的成本。
在公开的一些实施例中,一个或多个SSD控制器和/或一个或多个FHE加速引擎可被集成在存储装置中。
在公开的一些实施例中,现成的SSD控制器可用于提供集成的解决方案。
在公开的一些实施例中,SSD控制器和FHE加速引擎可在主机上具有它们自己的可原生地访问这些装置功能的装置驱动器和主机软件栈。
在公开的一些实施例中,SSD控制器和/或FHE加速引擎可共享对等数据缓冲器以交换正在被处理的数据。
在公开的一些实施例中,P2P缓冲器的一部分可作为高速缓存或预取缓冲器被保留用于FHE指令。
在公开的一些实施例中,P2P缓冲器的一部分可作为高速缓存或预取缓冲器被保留用于输入数据集。
在公开的一些实施例中,P2P缓冲器的一部分可作为高速缓存或预取缓冲器被保留用于中间结果。
在公开的一些实施例中,可有效地对存储在SSD中的数据执行处理,而不将其移动到主机存储器。
在公开的一些实施例中,FHE处理指令可被快速下载到FHE加速引擎中,导致较低的延迟。
在公开的一些实施例中,可使用现成的SSD控制器而不需要重新开发SSD控制器。
在公开的一些实施例中,FHE加速引擎可被平滑地集成到FHE框架和装置驱动器中。
在公开的实施例中,全同态加密(FHE)技术可用于以加密形式存储敏感的数据,然后可在不对敏感的数据进行解密的情况下处理敏感的数据以进行分析。在公开的一些实施例中,该技术可实现安全的数据存储和处理,而不损害机密性或滥用。灵活的集成存储装置可对持久性存储设备和FHE加速引擎进行组合。在公开的一些实施例中,通过处理存储装置系统内部的数据,可以实现资源成本节省(诸如,主机总线带宽、主机存储器带宽、CPU周期、移动数据所花费的能量)。在公开的一些实施例中,因为数据处理开始得更快,通过处理存储装置系统内部的数据还可实现较低的延迟。
在公开的一些实施例中,灵活的集成存储装置可具有用于将一个或多个SSD控制器和/或一个或多个全同态加密(FHE)引擎(例如,FHE处理引擎)连接到主机的处理元件(诸如,现场可编程门阵列(FPGA)(或专用集成电路(ASIC)或片上系统(SoC)等))。SSD控制器和FHE引擎可使用连接器来连接到FPGA,使得不同种类或数量的装置可连接。在公开的一些实施例中,SSD控制器和/或FHE引擎中的一些可以以固定方式连接。
可以以透明的方式通过PCIe端点(EP)物理功能(PF)或虚拟功能(VF)向主机公开一个或多个SSD控制器和一个或多个FHE引擎。FPGA逻辑可执行主机与装置交互以及主机协议的PCIe直通。换言之,FHE应用和驱动器可直接通过FPGA与FHE引擎(例如,FHE加速引擎)通信。
在公开的一些实施例中,除PCIe接口之外或作为PCIe接口的替代,提出的具有FHE加速引擎的灵活的集成存储装置可具有其他主机接口(诸如,以太网、TCP/IP、RDMA、NVMe-oF、UFS、eMMC、SAS、SATA等中的一个或多个)。类似地,在一些实施例中,到SSD控制器和计算装置的FPGA接口可具有其他协议(诸如,以太网、TCP/IP、RDMA、NVMe-oF、UFS、eMMC、SAS、SATA等中的一个或多个)。尽管本公开使用具有PCIe和NVMe的示例作为用于主机与灵活的集成存储装置之间的通信的传输和主机协议,但是公开的一些实施例可使用其他传输和主机协议来实现提出的灵活的集成存储装置中的最佳数据处理操作。
在公开的一些实施例中,提出的灵活的集成存储装置可提供对等(P2P)数据缓冲器,对等(P2P)数据缓冲器可用于在不将数据发送到主机存储器的情况下在SSD控制器与FHE引擎之间直接传送数据。这样的P2P数据传送可极大地减少消耗的能量、以及CPU周期、主机存储器带宽和主机总线带宽。在公开的一些实施例中,P2P缓冲器的使用还可实现数据处理的较低的延迟。在公开的一些实施例中,P2P缓冲器可使用片上SRAM、片外DRAM、或者任何其他存储器或多个存储器元件的组合。
FHE处理指令可首先被下载到FHE引擎中。在公开的一些实施例中,FHE引擎可从主机存储器接收DMA指令。在公开的一些实施例中,FHE引擎可从集成存储装置中的P2P缓冲器接收DMA指令。在公开的一些实施例中,应用和驱动器软件可首先将指令从SSD读取到P2P缓冲器中。在公开的一些实施例中,系统软件可将指令从主机存储器移动到P2P缓冲器中,然后可将来自P2P缓冲器的DMA指令引导到FHE引擎。
在公开的一些实施例中,通过为特定目的保留P2P缓冲器的一部分,保留在P2P缓冲器中的指令可被保留在那里以供将来使用。也就是说,保留在P2P缓冲器中的指令可被高速缓存在那里以供后续使用。这可减少加载到FHE引擎中的指令的延迟。在公开的一些实施例中,系统软件可将期望的指令从SSD或主机存储器预取到为指令保留的P2P缓冲器中。
在公开的一些实施例中,一旦指令被加载到FHE引擎中,输入数据集就可被提供给引擎以进行处理。在公开的一些实施例中,输入数据集可存在于主机存储器中,并且FHE引擎以直通方式通过FPGA从主机存储器对输入数据集进行DMA。在公开的其他实施例中,输入数据集可被存储在附接的SSD中,并且首先可将输入数据集加载到存储装置中的P2P缓冲器中。这样的数据加载可使用更高级的协议(诸如,对附接的SSD控制器的文件读取和NVMe读取命令)来完成。一旦输入数据由SSD控制器DMA地存放在P2P缓冲器中,应用和/或系统软件就可指示FHE引擎获取该数据以进行处理。此时,FHE引擎可将数据从P2P缓冲器传送到其本地存储器中以进行处理。
在公开的一些实施例中,P2P缓冲器的一部分可被保留以存储输入数据以供将来使用。换言之,P2P缓冲器可用作处理输入中的一些的高速缓存或预取缓冲器。这样的高速缓存和/或预取将减少数据处理的延迟。
在公开的一些实施例中,一旦FHE引擎完成数据处理,完成就可以以直通方式通过FPGA被传送到应用和系统软件。此时,应用和/或系统软件可决定对FHE处理结果做什么。在公开的一些实施例中,结果可使用FHE引擎DMA以直通方式通过FPGA被传送到主机存储器。在公开的一些实施例中,FHE处理结果可被存放在P2P缓冲器中以在附接的SSD中永久性存储。一旦结果被传送到P2P缓冲器,应用和/或系统软件就可指示SSD控制器保持那些结果。该编制可使用更高级的协议(诸如,文件写入和NVMe写入命令)来实现。
在公开的一些实施例中,处理结果的一部分可被保留在P2P缓冲器中以供将来使用。也就是说,P2P缓冲器的一部分可用作中间结果的高速缓存或预取缓冲器。
在公开的一些实施例中,FHE引擎可被集成在FPGA内部而不是外部连接FPGA,或者除了外部连接FPGA之外FHE引擎可被集成在FPGA内部。前面提到的其他特征也可应用于该集成方法。该集成方法的附加益处可以是装置的降低的成本和功率的降低。因为数据可不需要通过FPGA边界或经过逻辑工作台(LWB)桥接器逻辑,该方法还可减少FHE操作的总延迟。
下面的讨论意在提供对其中可实现公开的特定方面的一个或多个合适的机器的简要、总体描述。一个或多个机器可通过来自常规输入装置(诸如,键盘、鼠标等)的输入以及通过从另外的机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其他输入信号而至少部分地被控制。如在此所使用的,术语“机器”意在广泛地包含单个机器、虚拟机、或者通信地结合的一起操作的机器、虚拟机或装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板计算机等)以及运输装置(诸如,私人或公共交通工具(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器(诸如,可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等)。一个或多个机器可利用至一个或多个远程机器(诸如,通过网络接口、调制解调器或其他通信结合)的一个或多个连接。机器可通过物理网络和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式来互连。本领域技术人员将理解,网络通信可利用各种有线和/或无线短距离或长距离载波和协议,包括:射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等。
本公开的实施例可通过参照或结合相关联的数据来描述,该相关联的数据包括函数、程序、数据结构、应用程序等,该相关联的数据在被机器访问时使得机器执行任务或者定义抽象数据类型或低级硬件上下文。相关联的数据可被存储在例如易失性存储器和/或非易失性存储器(例如,RAM、ROM等)中,或者被存储在其他存储装置和它们相关联的存储介质中,其他存储装置和它们相关联的存储介质包括硬盘驱动器、软盘、光学存储设备、磁带、闪存、记忆棒、数字视频盘、生物存储设备等。相关联的数据可以以包、串行数据、并行数据、传播信号等的形式在包括物理网络和/或逻辑网络的传输环境上被传输,并且可以以压缩格式或加密格式被使用。相关联的数据可在分布式环境中被使用,并且被本地地和/或远程地存储以用于机器访问。
公开的实施例可包括有形的非暂时性机器可读介质,有形的非暂时性机器可读介质包括可由一个或多个处理器执行的指令,该指令包括用于执行如在此所述的公开的元件的指令。
以上描述的方法的各种操作可由能够执行操作的任何合适的装置(诸如,各种硬件和/或一个或多个软件组件、电路和/或一个或多个模块)来执行。软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”来实现,以被指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)使用或者结合指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)来使用。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以硬件、以由处理器执行的软件模块、或以二者的组合来实现。如果以软件来实现,则功能可作为一个或多个指令或代码被存储在有形的非暂时性计算机可读介质上或在有形的非暂时性计算机可读介质上发送。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其他形式的存储介质中。
已经参照示出的实施例描述和示出公开的原理,将认识到,示出的实施例可在不脱离这样的原理的情况下在布置和细节上被修改,并且可以以任何期望的方式进行组合。此外,尽管前述讨论已经集中在特定实施例上,但是其他配置被预期。具体地,尽管在此使用了诸如“根据公开的实施例”等的表述,但是这些短语意味着总体上涉及实施例可能性,而不意在将公开限制为特定实施例配置。如在此所使用的,这些术语可涉及可组合到其他实施例中的相同的或不同的实施例。
前述的说明性实施例不应被解释为限制其公开。尽管已经描述了一些实施例,但本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,许多修改对那些实施例是可行的。因此,所有这样的修改意在被包括在如在权利要求中限定的本公开的范围内。
公开的实施例可扩展至下面的声明,但是不限于此:
声明1、公开的实施例包括一种装置,所述装置包括:
存储装置,存储装置包括存储设备和控制器,存储设备用于数据,并且控制器用于管理对存储设备的访问;
网络接口装置,用于通过网络发送所述数据;以及
主机接口,用于接收针对存储装置或网络接口装置的请求。
声明2、公开的实施例包括根据声明1所述的装置,其中:
存储装置包括固态驱动器(SSD);
控制器包括SSD控制器;并且
存储设备包括与非闪存。
声明3、公开的实施例包括根据声明1所述的装置,其中,主机接口包括外围组件互连快速(PCIe)接口或高速缓存一致性互连接口。
声明4、公开的实施例包括根据声明3所述的装置,其中,高速缓存一致性互连接口包括计算快速链路(CXL)接口。
声明5、公开的实施例包括根据声明1所述的装置,其中,网络接口装置被配置为:从存储装置的存储设备访问所述数据。
声明6、公开的实施例包括根据声明5所述的装置,其中,网络接口装置还被配置为:使用控制器从存储装置的存储设备访问所述数据。
声明7、公开的实施例包括根据声明1所述的装置,所述装置还包括:缓冲器,连接到存储装置和网络接口装置。
声明8、公开的实施例包括根据声明7所述的装置,其中:
存储装置被配置为:将所述数据存储在缓冲器中;并且
网络接口装置被配置为:从缓冲器读取所述数据。
声明9、公开的实施例包括根据声明8所述的装置,其中:
存储装置还被配置为:至少部分地基于来自主机处理器的所述请求,将所述数据存储在缓冲器中;并且
网络接口装置还被配置为:至少部分地基于来自主机处理器的所述请求,从缓冲器读取所述数据。
声明10、公开的实施例包括根据声明8所述的装置,其中,存储装置还被配置为:至少部分地基于缓冲器达到第一阈值,暂停将所述数据存储在缓冲器中。
声明11、公开的实施例包括根据声明10所述的装置,其中,存储装置还被配置为:至少部分地基于缓冲器达到第二阈值,将所述数据存储在缓冲器中。
声明12、公开的实施例包括根据声明10所述的装置,其中,存储装置还被配置为:至少部分地基于缓冲器中的所述数据达到第一阈值,向主机处理器发信号。
声明13、公开的实施例包括根据声明8所述的装置,所述装置还包括:电路,用于处理缓冲器中的所述数据。
声明14、公开的实施例包括根据声明13所述的装置,其中,所述电路包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)、神经处理器(NPU)或处理器。
声明15、公开的实施例包括根据声明13所述的装置,其中,所述电路包括:缓冲器。
声明16、公开的实施例包括根据声明13所述的装置,其中:
主机接口被配置为:接收针对存储装置的所述请求,并且接收针对网络接口装置的第二请求;
所述请求从主机接口被发送到所述电路并且从所述电路被发送到存储装置;并且
第二请求从主机接口被发送到所述电路并且从所述电路被发送到网络接口装置。
声明17、公开的实施例包括根据声明13所述的装置,其中,所述电路被配置为:对缓冲器中的所述数据进行转码。
声明18、公开的实施例包括根据声明8所述的装置,其中:
缓冲器被划分为第一区域和第二区域;
存储装置还被配置为:将所述数据存储在缓冲器的第一区域中;并且
所述装置还包括第二存储装置,第二存储装置包括第二存储设备和第二控制器,第二存储设备用于第二数据,第二存储装置连接到缓冲器,第二存储装置被配置为将第二数据存储在缓冲器的第二区域中。
声明19、公开的实施例包括根据声明18所述的装置,其中,网络接口装置还被配置为:从缓冲器的第一区域读取所述数据,并且从缓冲器的第二区域读取第二数据。
声明20、公开的实施例包括根据声明18所述的装置,其中:
网络接口装置被配置为:从缓冲器的第一区域读取所述数据;并且
所述装置还包括:第二网络接口装置,用于通过网络发送第二数据,第二网络接口装置连接到缓冲器,第二网络接口装置被配置为从缓冲器的第二区域读取第二数据。
声明21、公开的实施例包括根据声明8所述的装置,其中:
缓冲器被划分为第一区域和第二区域;
存储设备存储第二数据;并且
存储装置还被配置为:将所述数据存储在缓冲器的第一区域中,并且将第二数据存储在缓冲器的第二区域中。
声明22、公开的实施例包括根据声明21所述的装置,其中:
网络接口装置被配置为:从缓冲器的第一区域读取所述数据;并且
所述装置还包括:第二网络接口装置,用于通过网络发送第二数据,第二网络接口装置连接到缓冲器,第二网络接口装置被配置为从缓冲器的第二区域读取第二数据。
声明23、公开的实施例包括根据声明8所述的装置,其中:
所述装置还包括第二缓冲器;并且
所述装置还包括第二存储装置,第二存储装置包括第二存储设备和第二控制器,第二存储设备用于第二数据,第二存储装置连接到第二缓冲器,第二存储装置被配置为将第二数据存储在第二缓冲器中。
声明24、公开的实施例包括根据声明23所述的装置,其中:
网络接口装置连接到第二缓冲器;并且
网络接口装置还被配置为从第二缓冲器读取第二数据。
声明25、公开的实施例包括根据声明24所述的装置,所述装置还包括:复用器,连接到网络接口装置、缓冲器和第二缓冲器。
声明26、公开的实施例包括根据声明23所述的装置,所述装置还包括:第二网络接口装置,用于通过网络发送第二数据,第二网络接口装置连接到第二缓冲器,第二网络接口装置被配置为从第二缓冲器读取第二数据。
声明27、公开的实施例包括根据声明8所述的装置,其中:
所述装置还包括第二缓冲器;
存储设备存储第二数据;
存储装置连接到第二缓冲器;并且
存储装置还被配置为:将第二数据存储在第二缓冲器中。
声明28、公开的实施例包括根据声明27所述的装置,所述装置还包括:解复用器,连接到存储装置、缓冲器和第二缓冲器。
声明29、公开的实施例包括根据声明27所述的装置,所述装置还包括:第二网络接口装置,用于通过网络发送第二数据,第二网络接口装置连接到第二缓冲器,第二网络接口装置被配置为从第二缓冲器读取第二数据。
声明30、公开的实施例包括根据声明1所述的装置,其中,主机接口包括:端点,公开用于向存储装置发出第一请求的第一功能和用于向网络接口装置发出第二请求的第二功能。
声明31、公开的实施例包括根据声明1所述的装置,所述装置还包括:根端口。
声明32、公开的实施例包括根据声明31所述的装置,其中,根端口连接到存储装置。
声明33、公开的实施例包括根据声明32所述的装置,其中:
所述装置还包括第二存储装置;并且
根端口还连接到第二存储装置。
声明34、公开的实施例包括根据声明32所述的装置,所述装置还包括:第二根端口,连接到网络接口装置。
声明35、公开的实施例包括根据声明34所述的装置,其中:
所述装置还包括第二网络接口装置;并且
第二根端口还连接到第二网络接口装置。
声明36、公开的实施例包括根据声明31所述的装置,其中,根端口连接到网络接口装置。
声明37、公开的实施例包括根据声明36所述的装置,其中:
所述装置还包括第二网络接口装置;并且
根端口还连接到第二网络接口装置。
声明38、公开的实施例包括根据声明1所述的装置,其中:
存储装置使用第一协议与主机处理器通信;并且
网络接口装置使用第二协议与主机处理器通信。
声明39、公开的实施例包括根据声明1所述的装置,其中:
所述装置还包括电路;
存储装置使用第一协议与所述电路通信;并且
网络接口装置使用第二协议与所述电路通信。
声明40、公开的实施例包括根据声明39所述的装置,其中,所述电路使用第三协议与主机处理器通信。
声明41、公开的实施例包括一种方法,所述方法包括:
在装置处接收请求;
至少部分地基于所述请求,从所述装置的存储装置访问数据;以及
使用所述装置的网络接口装置来发送所述数据。
声明42、公开的实施例包括根据声明41所述的方法,其中,在所述装置处接收所述请求的步骤包括:在所述装置处从主机处理器接收所述请求。
声明43、公开的实施例包括根据声明41所述的方法,其中,在所述装置处接收所述请求的步骤包括:在所述装置的主机接口处接收所述请求。
声明44、公开的实施例包括根据声明43所述的方法,其中,在所述装置的主机接口处接收所述请求的步骤包括:以由所述装置的主机接口公开的功能接收所述请求。
声明45、公开的实施例包括根据声明44所述的方法,其中,以由所述装置的主机接口公开的所述功能接收所述请求的步骤包括:以由所述装置的端点公开的所述功能接收所述请求。
声明46、公开的实施例包括根据声明43所述的方法,其中,主机接口包括外围组件互连快速(PCIe)接口或高速缓存一致性互连接口。
声明47、公开的实施例包括根据声明46所述的方法,其中,高速缓存一致性互连接口包括计算快速链路(CXL)接口。
声明48、公开的实施例包括根据声明41所述的方法,其中,从所述装置的存储装置访问所述数据的步骤包括:从所述装置的存储装置的存储设备访问所述数据。
声明49、公开的实施例包括根据声明48所述的方法,其中:
存储装置包括固态驱动器(SSD);
SSD包括SSD控制器;并且
存储设备包括与非闪存。
声明50、公开的实施例包括根据声明41所述的方法,其中,从所述装置的存储装置访问所述数据的步骤包括:由所述装置的网络接口装置从所述装置的存储装置访问所述数据。
声明51、公开的实施例包括根据声明41所述的方法,其中:
所述方法还包括:在所述装置处接收第二请求;并且
使用所述装置的网络接口装置发送所述数据的步骤包括:至少部分地基于第二请求,使用所述装置的网络接口装置来发送所述数据。
声明52、公开的实施例包括根据声明51所述的方法,其中,在所述装置处接收第二请求的步骤包括:在所述装置处从主机处理器接收第二请求。
声明53、公开的实施例包括根据声明51所述的方法,其中,在所述装置处接收第二请求的步骤包括:在所述装置的主机接口处接收第二请求。
声明54、公开的实施例包括根据声明53所述的方法,其中,在所述装置的主机接口处接收第二请求的步骤包括:以由所述装置的主机接口公开的第二功能接收第二请求。
声明55、公开的实施例包括根据声明54所述的方法,其中,以由所述装置的主机接口公开的第二功能接收第二请求的步骤包括:以由所述装置的端点公开的第二功能接收第二请求。
声明56、公开的实施例包括根据声明41所述的方法,其中:
至少部分地基于所述请求从所述装置的存储装置访问所述数据的步骤包括:至少部分地基于所述请求,由存储装置将所述数据存储在缓冲器中,所述装置包括缓冲器,缓冲器连接到所述装置的存储装置和所述装置的网络接口;并且
使用所述装置的网络接口装置来发送所述数据的步骤包括:由所述装置的网络接口装置从缓冲器读取所述数据。
声明57、公开的实施例包括根据声明56所述的方法,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的步骤包括:至少部分地基于所述请求,由存储装置的存储控制器将所述数据存储在缓冲器中。
声明58、公开的实施例包括根据声明56所述的方法,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的步骤包括:至少部分地基于缓冲器超过阈值,由存储装置将所述数据预取到缓冲器中。
声明59、公开的实施例包括根据声明56所述的方法,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的步骤包括:至少部分地基于缓冲器超过阈值,暂停由存储装置将所述数据预取到缓冲器中。
声明60、公开的实施例包括根据声明56所述的方法,所述方法还包括:使用所述装置的电路来处理缓冲器中的所述数据。
声明61、公开的实施例包括根据声明60所述的方法,其中,所述装置的所述电路包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)、神经处理器(NPU)或处理器。
声明62、公开的实施例包括根据声明60所述的方法,其中,所述装置的所述电路包括缓冲器。
声明63、公开的实施例包括根据声明60所述的方法,其中,在所述装置处接收所述请求的步骤包括:
在所述装置的所述电路处接收所述请求;以及
将所述请求从所述装置的所述电路发送到所述装置的存储装置。
声明64、公开的实施例包括根据声明63所述的方法,其中:
在所述装置的所述电路处接收所述请求的步骤包括:使用第一协议在所述装置的所述电路处接收所述请求;并且
将所述请求从所述装置的所述电路发送到所述装置的存储装置的步骤包括:使用第二协议将所述请求从所述装置的所述电路发送到所述装置的存储装置。
声明65、公开的实施例包括根据声明60所述的方法,其中;
所述方法还包括:在所述装置的所述电路处接收第二请求;并且
使用所述装置的网络接口装置发送所述数据的步骤包括:将第二请求从所述装置的所述电路发送到所述装置的网络接口装置。
声明66、公开的实施例包括根据声明65所述的方法,其中:
在所述装置的所述电路处接收第二请求的步骤包括:使用第一协议在所述装置的所述电路处接收第二请求;并且
将所述请求从所述装置的所述电路发送到所述装置的存储装置的步骤包括:使用第二协议将所述请求从所述装置的所述电路发送到所述装置的网络接口装置。
声明67、公开的实施例包括根据声明60所述的方法,其中,使用所述装置的所述电路来处理缓冲器中的所述数据的步骤包括:使用所述装置的所述电路对缓冲器中的所述数据进行转码。
声明68、公开的实施例包括根据声明56所述的方法,其中:
至少部分地基于所述请求将所述数据存储在缓冲器中的步骤包括:至少部分地基于所述请求将所述数据存储在缓冲器的第一区域中;并且
所述方法还包括:将第二数据存储在缓冲器的第二区域中。
声明69、公开的实施例包括根据声明68所述的方法,其中,将第二数据存储在缓冲器的第二区域中的步骤包括:从所述装置的存储装置访问第二数据。
声明70、公开的实施例包括根据声明68所述的方法,其中,将第二数据存储在缓冲器的第二区域中的步骤包括:从所述装置的第二存储装置访问第二数据,缓冲器还连接到所述装置的第二存储装置。
声明71、公开的实施例包括根据声明68所述的方法,其中,由所述装置的网络接口装置从缓冲器读取所述数据的步骤包括:由所述装置的网络接口装置从缓冲器的第一区域读取所述数据。
声明72、公开的实施例包括根据声明71所述的方法,所述方法还包括:
由网络接口装置从缓冲器的第二区域读取第二数据;以及
使用所述装置的网络接口装置发送第二数据。
声明73、公开的实施例包括根据声明71所述的方法,所述方法还包括:
由所述装置的第二网络接口装置从缓冲器的第二区域读取第二数据,缓冲器还连接到所述装置的第二网络接口;以及
使用所述装置的第二网络接口装置来发送第二数据。
声明74、公开的实施例包括根据声明56所述的方法,所述方法还包括:将第二数据存储在第二缓冲器中,所述装置包括第二缓冲器,第二缓冲器连接到所述装置的存储装置和所述装置的网络接口。
声明75、公开的实施例包括根据声明74所述的方法,其中,将第二数据存储在第二缓冲器中的步骤包括:从所述装置的存储装置访问第二数据。
声明76、公开的实施例包括根据声明75所述的方法,其中,将第二数据存储在第二缓冲器中的步骤还包括:经由解复用器将第二数据存储在第二缓冲器中。
声明77、公开的实施例包括根据声明74所述的方法,其中,将第二数据存储在第二缓冲器中的步骤包括:从所述装置的第二存储装置访问第二数据,第二缓冲器还连接到所述装置的第二存储装置。
声明78、公开的实施例包括根据声明74所述的方法,所述方法还包括:
由网络接口装置从第二缓冲器读取第二数据;以及
使用所述装置的网络接口装置发送第二数据。
声明79、公开的实施例包括根据声明78所述的方法,其中,由网络接口装置从第二缓冲器读取第二数据的步骤包括:由网络接口装置经由复用器从第二缓冲器读取第二数据。
声明80、公开的实施例包括根据声明78所述的方法,所述方法还包括:
由所述装置的第二网络接口装置从第二缓冲器读取第二数据,第二缓冲器还连接到所述装置的第二网络接口;以及
使用所述装置的第二网络接口装置来发送第二数据。
声明81、公开的实施例包括根据声明41所述的方法,其中,在所述装置处接收所述请求的步骤包括:使用所述装置的根端口将所述请求发送到所述装置的存储装置。
声明82、公开的实施例包括根据声明81所述的方法,其中,所述装置的存储装置和所述装置的第二存储装置连接到所述装置的根端口。
声明83、公开的实施例包括根据声明41所述的方法,其中,在所述装置处接收所述请求的步骤包括:使用所述装置的根端口将所述请求发送到所述装置的网络接口装置。
声明84、公开的实施例包括根据声明83所述的方法,其中,所述装置的网络接口装置和所述装置的第二网络接口装置连接到所述装置的根端口。
声明85、公开的实施例包括一种方法,所述方法包括:
将第一请求从主机处理器发送到装置的存储装置,所述装置包括存储装置和网络接口装置;以及
将第二请求从主机处理器发送到所述装置的网络接口装置,
其中,所述装置的存储装置的数据由所述装置的网络接口装置发送。
声明86、公开的实施例包括根据声明85所述的方法,其中:
至少部分地基于第一请求,所述数据从所述装置的存储装置被读取;并且
至少部分地基于第二请求,所述数据由所述装置的网络接口装置发送。
声明87、公开的实施例包括根据声明85所述的方法,其中,在不将所述装置的存储装置的数据传送到与主机处理器相关联的主存储器的情况下,所述装置的存储装置的所述数据由所述装置的网络接口装置发送。
声明88、公开的实施例包括根据声明85所述的方法,其中,将第一请求从主机处理器发送到所述装置的存储装置的步骤包括:将第二请求从主机处理器发送到所述装置的网络接口装置。
声明89、公开的实施例包括根据声明85所述的方法,其中
将第一请求从主机处理器发送到所述装置的存储装置的步骤包括:使用第一协议将第一请求从主机处理器发送到所述装置的存储装置;并且
将第二请求从主机处理器发送到所述装置的网络接口装置的步骤包括:使用第二协议将第二请求从主机处理器发送到所述装置的网络接口装置。
声明90、公开的实施例包括根据声明85所述的方法,所述方法还包括:将第三请求从主机处理器发送到所述装置的电路。
声明91、公开的实施例包括根据声明90所述的方法,其中,所述电路包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)、神经处理器(NPU)或处理器。
声明92、公开的实施例包括根据声明90所述的方法,其中,所述电路对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明93、公开的实施例包括根据声明92所述的方法,其中,所述电路至少部分地基于第三请求对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明94、公开的实施例包括根据声明85所述的方法,所述方法还包括:将第三请求从主机处理器发送到所述装置。
声明95、公开的实施例包括根据声明94所述的方法,其中,所述装置对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明96、公开的实施例包括根据声明95所述的方法,其中,所述装置至少部分地基于第三请求对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明97、公开的实施例包括一种包括非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
在装置处接收请求;
至少部分地基于所述请求,从所述装置的存储装置访问数据;并且
使用所述装置的网络接口装置来发送所述数据。
声明98、公开的实施例包括根据声明97所述的物品,其中,在所述装置处接收所述请求的处理包括:在所述装置处从主机处理器接收所述请求。
声明99、公开的实施例包括根据声明97所述的物品,其中,在所述装置处接收所述请求的处理包括:在所述装置的主机接口处接收所述请求。
声明100、公开的实施例包括根据声明99所述的物品,其中,在所述装置的主机接口处接收所述请求的处理包括:以由所述装置的主机接口公开的功能接收所述请求。
声明101、公开的实施例包括根据声明100所述的物品,其中,以由所述装置的主机接口公开的所述功能接收所述请求的处理包括:以由所述装置的端点公开的所述功能接收所述请求。
声明102、公开的实施例包括根据声明99所述的物品,其中,主机接口包括:外围组件互连快速(PCIe)接口或高速缓存一致性互连接口。
声明103、公开的实施例包括根据声明102所述的物品,其中,高速缓存一致性互连接口包括计算快速链路(CXL)接口。
声明104、公开的实施例包括根据声明97所述的物品,其中,从所述装置的存储装置访问所述数据的处理包括:从所述装置的存储装置的存储设备访问所述数据。
声明105、公开的实施例包括根据声明104所述的物品,其中:
存储装置包括固态驱动器(SSD);
SSD包括SSD控制器;并且
存储设备包括与非闪存。
声明106、公开的实施例包括根据声明97所述的物品,其中,从所述装置的存储装置访问所述数据的处理包括:由所述装置的网络接口装置从所述装置的存储装置访问所述数据。
声明107、公开的实施例包括根据声明97所述的物品,其中:
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:在所述装置处接收第二请求;并且
使用所述装置的网络接口装置发送所述数据的处理包括:至少部分地基于第二请求,使用所述装置的网络接口装置来发送所述数据。
声明108、公开的实施例包括根据声明107所述的物品,其中,在所述装置处接收第二请求的处理包括:在所述装置处从主机处理器接收第二请求。
声明109、公开的实施例包括根据声明107所述的物品,其中,在所述装置处接收第二请求的处理包括:在所述装置的主机接口处接收第二请求。
声明110、公开的实施例包括根据声明109所述的物品,其中,在所述装置的主机接口处接收第二请求的处理包括:以由所述装置的主机接口公开的第二功能接收第二请求。
声明111、公开的实施例包括根据声明110所述的物品,其中,以由所述装置的主机接口公开的第二功能接收第二请求的处理包括:以由所述装置的端点公开的第二功能接收第二请求。
声明112、公开的实施例包括根据声明97所述的物品,其中:
至少部分地基于所述请求从所述装置的存储装置访问所述数据的处理包括:至少部分地基于所述请求,由存储装置将所述数据存储在缓冲器中,所述装置包括缓冲器,缓冲器连接到所述装置的存储装置和所述装置的网络接口;并且
使用所述装置的网络接口装置来发送所述数据的处理包括:由所述装置的网络接口装置从缓冲器读取所述数据。
声明113、公开的实施例包括根据声明112所述的物品,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的处理包括:至少部分地基于所述请求,由存储装置的存储控制器将所述数据存储在缓冲器中。
声明114、公开的实施例包括根据声明112所述的物品,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的处理包括:至少部分地基于缓冲器超过阈值,由存储装置将所述数据预取到缓冲器中。
声明115、公开的实施例包括根据声明112所述的物品,其中,至少部分地基于所述请求而由存储装置将所述数据存储在缓冲器中的处理包括:至少部分地基于缓冲器超过阈值,暂停由存储装置将所述数据预取到缓冲器中。
声明116、公开的实施例包括根据声明112所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:使用所述装置的电路来处理缓冲器中的所述数据。
声明117、公开的实施例包括根据声明116所述的物品,其中,所述装置的所述电路包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)、神经处理器(NPU)或处理器。
声明118、公开的实施例包括根据声明116所述的物品,其中,所述装置的所述电路包括缓冲器。
声明119、公开的实施例包括根据声明116所述的物品,其中,在所述装置处接收所述请求的处理包括:
在所述装置的所述电路处接收所述请求;以及
将所述请求从所述装置的所述电路发送到所述装置的存储装置。
声明120、公开的实施例包括根据声明119所述的物品,其中:
在所述装置的所述电路处接收所述请求的处理包括:使用第一协议在所述装置的所述电路处接收所述请求;并且
将所述请求从所述装置的所述电路发送到所述装置的存储装置的处理包括:使用第二协议将所述请求从所述装置的所述电路发送到所述装置的存储装置。
声明121、公开的实施例包括根据声明116所述的物品,其中;
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:在所述装置的所述电路处接收第二请求;并且
使用所述装置的网络接口装置发送所述数据的处理包括:将第二请求从所述装置的所述电路发送到所述装置的网络接口装置。
声明122、公开的实施例包括根据声明121所述的物品,其中:
在所述装置的所述电路处接收第二请求的处理包括:使用第一协议在所述装置的所述电路处接收第二请求;并且
将所述请求从所述装置的所述电路发送到所述装置的存储装置的处理包括:使用第二协议将所述请求从所述装置的所述电路发送到所述装置的网络接口装置。
声明123、公开的实施例包括根据声明116所述的物品,其中,使用所述装置的所述电路来处理缓冲器中的所述数据的处理包括:使用所述装置的所述电路对缓冲器中的所述数据进行转码。
声明124、公开的实施例包括根据声明112所述的物品,其中:
至少部分地基于所述请求将所述数据存储在缓冲器中的处理包括:至少部分地基于所述请求将所述数据存储在缓冲器的第一区域中;并且
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第二数据存储在缓冲器的第二区域中。
声明125、公开的实施例包括根据声明124所述的物品,其中,将第二数据存储在缓冲器的第二区域中的处理包括:从所述装置的存储装置访问第二数据。
声明126、公开的实施例包括根据声明124所述的物品,其中,将第二数据存储在缓冲器的第二区域中的处理包括:从所述装置的第二存储装置访问第二数据,缓冲器还连接到所述装置的第二存储装置。
声明127、公开的实施例包括根据声明124所述的物品,其中,由所述装置的网络接口装置从缓冲器读取所述数据的处理包括:由所述装置的网络接口装置从缓冲器的第一区域读取所述数据。
声明128、公开的实施例包括根据声明127所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由网络接口装置从缓冲器的第二区域读取第二数据;并且
使用所述装置的网络接口装置发送第二数据。
声明129、公开的实施例包括根据声明127所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由所述装置的第二网络接口装置从缓冲器的第二区域读取第二数据,缓冲器还连接到所述装置的第二网络接口;并且
使用所述装置的第二网络接口装置来发送第二数据。
声明130、公开的实施例包括根据声明112所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第二数据存储在第二缓冲器中,所述装置包括第二缓冲器,第二缓冲器连接到所述装置的存储装置和所述装置的网络接口。
声明131、公开的实施例包括根据声明130所述的物品,其中,将第二数据存储在第二缓冲器中的处理包括:从所述装置的存储装置访问第二数据。
声明132、公开的实施例包括根据声明131所述的物品,其中,将第二数据存储在第二缓冲器中的处理还包括:经由解复用器将第二数据存储在第二缓冲器中。
声明133、公开的实施例包括根据声明130所述的物品,其中,将第二数据存储在第二缓冲器中的处理包括:从所述装置的第二存储装置访问第二数据,第二缓冲器还连接到所述装置的第二存储装置。
声明134、公开的实施例包括根据声明130所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由网络接口装置从第二缓冲器读取第二数据;并且
使用所述装置的网络接口装置发送第二数据。
声明135、公开的实施例包括根据声明134所述的物品,其中,由网络接口装置从第二缓冲器读取第二数据的处理包括:由网络接口装置经由复用器从第二缓冲器读取第二数据。
声明136、公开的实施例包括根据声明134所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由所述装置的第二网络接口装置从第二缓冲器读取第二数据,第二缓冲器还连接到所述装置的第二网络接口;并且
使用所述装置的第二网络接口装置来发送第二数据。
声明137、公开的实施例包括根据声明97所述的物品,其中,在所述装置处接收所述请求的处理包括:使用所述装置的根端口将所述请求发送到所述装置的存储装置。
声明138、公开的实施例包括根据声明137所述的物品,其中,所述装置的存储装置和所述装置的第二存储装置连接到所述装置的根端口。
声明139、公开的实施例包括根据声明97所述的物品,其中,在所述装置处接收所述请求的处理包括:使用所述装置的根端口将所述请求发送到所述装置的网络接口装置。
声明140、公开的实施例包括根据声明139所述的物品,其中,所述装置的网络接口装置和所述装置的第二网络接口装置连接到所述装置的根端口。
声明141、公开的实施例包括一种包括非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
将第一请求从主机处理器发送到装置的存储装置,所述装置包括存储装置和网络接口装置;并且
将第二请求从主机处理器发送到所述装置的网络接口装置,
其中,所述装置的存储装置的数据由所述装置的网络接口装置发送。
声明142、公开的实施例包括根据声明141所述的物品,其中:
至少部分地基于第一请求,所述数据从所述装置的存储装置被读取;并且
至少部分地基于第二请求,所述数据由所述装置的网络接口装置发送。
声明143、公开的实施例包括根据声明141所述的物品,其中,在不将所述装置的存储装置的数据传送到与主机处理器相关联的主存储器的情况下,所述装置的存储装置的所述数据由所述装置的网络接口装置发送。
声明144、公开的实施例包括根据声明141所述的物品,其中,将第一请求从主机处理器发送到所述装置的存储装置的处理包括:将第二请求从主机处理器发送到所述装置的网络接口装置。
声明145、公开的实施例包括根据声明141所述的物品,其中
将第一请求从主机处理器发送到所述装置的存储装置的处理包括:使用第一协议将第一请求从主机处理器发送到所述装置的存储装置;并且
将第二请求从主机处理器发送到所述装置的网络接口装置的处理包括:使用第二协议将第二请求从主机处理器发送到所述装置的网络接口装置。
声明146、公开的实施例包括根据声明141所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第三请求从主机处理器发送到所述装置的电路。
声明147、公开的实施例包括根据声明146所述的物品,其中,所述电路包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、张量处理器(TPU)、神经处理器(NPU)或处理器。
声明148、公开的实施例包括根据声明146所述的物品,其中,所述电路对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明149、公开的实施例包括根据声明148所述的物品,其中,所述电路至少部分地基于第三请求对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明150、公开的实施例包括根据声明141所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第三请求从主机处理器发送到所述装置。
声明151、公开的实施例包括根据声明150所述的物品,其中,所述装置对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明152、公开的实施例包括根据声明151所述的物品,其中,所述装置至少部分地基于第三请求对来自所述装置的存储装置的所述数据进行转码,以由所述装置的网络接口装置进行发送。
声明153、公开的实施例包括一种多功能装置,所述多功能装置包括:
第一连接器,用于与存储装置通信;
第二连接器,用于与第一计算存储单元通信;
第三连接器,用于与第二计算存储单元通信;以及
第四连接器,用于与主机处理器通信;
其中,所述多功能装置被配置为:经由第四连接器向主机处理器公开存储装置和第一计算存储单元。
声明154、公开的实施例包括根据声明153所述的多功能装置,其中,所述多功能装置不向主机处理器公开第二计算存储单元。
声明155、公开的实施例包括根据声明153所述的多功能装置,其中,所述多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明156、公开的实施例包括根据声明153所述的多功能装置,其中,第一计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明157、公开的实施例包括根据声明153所述的多功能装置,其中,第二计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明158、公开的实施例包括根据声明153所述的多功能装置,其中,存储装置包括固态驱动器(SSD)。
声明159、公开的实施例包括根据声明153所述的多功能装置,其中,第一计算存储单元包括加速器电路、全同态加密(FHE)电路或网络接口装置。
声明160、公开的实施例包括根据声明153所述的多功能装置,其中,第二计算存储单元包括加速器电路、FHE电路或网络接口装置。
声明161、公开的实施例包括根据声明153所述的多功能装置,其中,存储装置被配置为:调用第一计算存储单元或第二计算存储单元的能力。
声明162、公开的实施例包括根据声明161所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到第一计算存储单元或第二计算存储单元。
声明163、公开的实施例包括根据声明162所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明164、公开的实施例包括根据声明161所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用第一计算存储单元或第二计算存储单元的能力。
声明165、公开的实施例包括根据声明161所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元或第二计算存储单元接收回复,并且将所述回复发送到存储装置。
声明166、公开的实施例包括根据声明165所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元或第二计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明167、公开的实施例包括根据声明153所述的多功能装置,其中,第一计算存储单元被配置为:调用存储装置或第二计算存储单元的能力。
声明168、公开的实施例包括根据声明167所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元接收请求,并且将所述请求发送到存储装置或第二计算存储单元。
声明169、公开的实施例包括根据声明168所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明170、公开的实施例包括根据声明167所述的多功能装置,其中,第一计算存储单元被配置为:在没有主机处理器的管理的情况下,调用存储装置或第二计算存储单元的能力。
声明171、公开的实施例包括根据声明167所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第二计算存储单元接收回复,并且将所述回复发送到第一计算存储单元。
声明172、公开的实施例包括根据声明171所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第二计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到第一计算存储单元。
声明173、公开的实施例包括根据声明153所述的多功能装置,其中,第二计算存储单元被配置为:调用存储装置或第一计算存储单元的能力。
声明174、公开的实施例包括根据声明173所述的多功能装置,其中,所述多功能装置被配置为:从第二计算存储单元接收请求,并且将所述请求发送到存储装置或第一计算存储单元。
声明175、公开的实施例包括根据声明174所述的多功能装置,其中,所述多功能装置被配置为:从第二计算存储单元接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明176、公开的实施例包括根据声明173所述的多功能装置,其中,第二计算存储单元被配置为:在没有主机处理器的管理的情况下,调用存储装置或第一计算存储单元的能力。
声明177、公开的实施例包括根据声明173所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第一计算存储单元接收回复,并且将所述回复发送到第二计算存储单元。
声明178、公开的实施例包括根据声明177所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第一计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到第二计算存储单元。
声明179、公开的实施例包括根据声明153所述的多功能装置,所述多功能装置还包括:缓冲器,连接到存储装置、第一计算存储单元和第二计算存储单元。
声明180、公开的实施例包括根据声明179所述的多功能装置,其中,存储装置、第一计算存储单元和第二计算存储单元被配置为:访问缓冲器中的数据。
声明181、公开的实施例包括根据声明179所述的多功能装置,其中,缓冲器包括地址范围。
声明182、公开的实施例包括根据声明181所述的多功能装置,其中,主机处理器确定缓冲器的地址范围。
声明183、公开的实施例包括根据声明179所述的多功能装置,其中,存储装置被配置为:使用协议来访问缓冲器。
声明184、公开的实施例包括根据声明183所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明185、公开的实施例包括根据声明179所述的多功能装置,其中,第一计算存储单元被配置为:使用协议来访问缓冲器。
声明186、公开的实施例包括根据声明185所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明187、公开的实施例包括根据声明179所述的多功能装置,其中,第二计算存储单元被配置为:使用协议来访问缓冲器。
声明188、公开的实施例包括根据声明187所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明189、公开的实施例包括根据声明179所述的多功能装置,所述多功能装置还包括连接到缓冲器的数据处理器,数据处理器被配置为处理缓冲器中的数据。
声明190、公开的实施例包括根据声明189所述的多功能装置,其中,数据处理器被配置为:至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求来处理缓冲器中的所述数据。
声明191、公开的实施例包括根据声明190所述的多功能装置,其中:
数据处理器被配置为公开功能;
所述请求来自主机处理器;并且
所述请求触发数据处理器的所述功能。
声明192、公开的实施例包括根据声明191所述的多功能装置,其中,所述功能包括外围组件互连快速(PCIe)功能。
声明193、公开的实施例包括根据声明192所述的多功能装置,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明194、公开的实施例包括根据声明191所述的多功能装置,其中:
所述多功能装置被配置为:经由第四连接器向主机处理器公开第二功能;
所述多功能装置被配置为:经由第四连接器从主机处理器接收所述请求;并且
所述多功能装置触发数据处理器的所述功能。
声明195、公开的实施例包括根据声明194所述的多功能装置,其中:
所述请求包括第二功能;并且
所述多功能装置被配置为:将第二功能映射到数据处理器的所述功能。
声明196、公开的实施例包括根据声明153所述的多功能装置,所述多功能装置还包括:
第一桥接器,连接第四连接器和第一连接器;以及
第二桥接器,连接第四连接器和第二连接器。
声明197、公开的实施例包括根据声明196所述的多功能装置,其中:
第一桥接器支持主机处理器与存储装置之间的第一请求的直通;并且
第二桥接器支持主机处理器与第一计算存储单元之间的第二请求的直通。
声明198、公开的实施例包括根据声明196所述的多功能装置,所述多功能装置还包括:第三桥接器,连接第四连接器和第三连接器。
声明199、公开的实施例包括根据声明198所述的多功能装置,其中,第三桥接器支持主机处理器与第二计算存储单元之间的请求的直通。
声明200、公开的实施例包括根据声明196所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
第一计算存储单元被配置为:经由第二连接器向所述多功能装置公开第二功能;
第二计算存储单元被配置为:经由第三连接器向所述多功能装置公开第三功能;
所述多功能装置被配置为:经由第四连接器向主机处理器公开第四功能和第五功能;
第一桥接器被配置为:将使用第四功能的第一请求映射到使用第一功能的第二请求;
第二桥接器被配置为:将使用第五功能的第三请求映射到使用第二功能的第四请求;并且
第三桥接器被配置为:将使用第六功能的第五请求映射到使用第三功能的第六请求。
声明201、公开的实施例包括根据声明200所述的多功能装置,其中:
所述多功能装置被配置为:将第一请求引导到第一桥接器;
所述多功能装置被配置为:将第三请求引导到第二桥接器;并且
所述多功能装置被配置为:将第五请求引导到第三桥接器。
声明202、公开的实施例包括根据声明201所述的多功能装置,其中:
所述多功能装置被配置为:从主机处理器、第一计算存储单元或第二计算存储单元接收第一请求;
所述多功能装置被配置为:从主机处理器、存储装置或第二计算存储单元接收第三请求;并且
所述多功能装置被配置为:从存储装置或第一计算存储单元接收第五请求。
声明203、公开的实施例包括根据声明200所述的多功能装置,其中:
所述多功能装置被配置为:经由第二连接器向第一计算存储单元公开第四功能,并且经由第三连接器向第二计算存储单元公开第四功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第五功能并且经由第三连接器向第二计算存储单元公开第五功能;以及
所述多功能装置被配置为:经由第一连接器向存储装置公开第六功能,并且经由第二连接器向第一计算存储单元公开第六功能。
声明204、公开的实施例包括根据声明200所述的多功能装置,其中,所述多功能装置被配置为:不经由第四连接器向主机处理器公开第六功能。
声明205、公开的实施例包括根据声明196所述的多功能装置,所述多功能装置还包括:
第三桥接器,连接第四连接器和第三连接器;以及
缓冲器,连接到第一桥接器、第二桥接器和第三桥接器。
声明206、公开的实施例包括根据声明205所述的多功能装置,其中,第一桥接器被配置为:接收从存储装置发送的请求,并且将所述请求引导到缓冲器。
声明207、公开的实施例包括根据声明206所述的多功能装置,其中,所述请求从存储装置被发送到主机处理器。
声明208、公开的实施例包括根据声明206所述的多功能装置,其中,存储装置不知道第一桥接器将所述请求重新引导到缓冲器。
声明209、公开的实施例包括根据声明206所述的多功能装置,其中,第一桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明210、公开的实施例包括根据声明209所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明211、公开的实施例包括根据声明205所述的多功能装置,其中,第二桥接器被配置为:接收从第一计算存储单元发送的请求,并且将所述请求引导到缓冲器。
声明212、公开的实施例包括根据声明211所述的多功能装置,其中,所述请求从第一计算存储单元被发送到主机处理器。
声明213、公开的实施例包括根据声明211所述的多功能装置,其中,第一计算存储单元不知道第二桥接器将所述请求重新引导到缓冲器。
声明214、公开的实施例包括根据声明211所述的多功能装置,其中,第二桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明215、公开的实施例包括根据声明214所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明216、公开的实施例包括根据声明205所述的多功能装置,其中,第三桥接器被配置为:接收从第二计算存储单元发送的请求,并且将所述请求引导到缓冲器。
声明217、公开的实施例包括根据声明216所述的多功能装置,其中,第二计算存储单元不知道第三桥接器将所述请求重新引导到缓冲器。
声明218、公开的实施例包括根据声明216所述的多功能装置,其中,第三桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明219、公开的实施例包括根据声明218所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明220、公开的实施例包括根据声明153所述的多功能装置,所述多功能装置还包括:存储设备,用于装置配置的列表。
声明221、公开的实施例包括根据声明220所述的多功能装置,其中,装置配置的列表包括:第一条目,用于存储装置;第二条目,用于第一计算存储单元;以及第三条目,用于第二计算存储单元。
声明222、公开的实施例包括根据声明220所述的多功能装置,其中,存储设备包括持久性存储设备。
声明223、公开的实施例包括根据声明220所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置和第一计算存储单元。
声明224、公开的实施例包括根据声明220所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开第二计算存储单元。
声明225、公开的实施例包括根据声明220所述的多功能装置,其中,所述多功能装置被配置为:检测连接到第二连接器和第三连接器中的至少一个的装置,确定所述装置的配置,并且至少部分地基于所述装置的配置来更新装置配置的列表。
声明226、公开的实施例包括根据声明225所述的多功能装置,其中,所述装置包括第二存储装置、第三计算存储单元、FHE电路或网络接口装置。
声明227、公开的实施例包括根据声明220所述的多功能装置,其中,所述多功能装置被配置为:确定所述装置的配置,并且至少部分地基于装置配置的列表省略所述装置的配置来更新装置配置的列表。
声明228、公开的实施例包括根据声明153所述的多功能装置,其中,存储装置是可替换的。
声明229、公开的实施例包括根据声明153所述的多功能装置,其中,第一计算存储单元是可替换的。
声明230、公开的实施例包括根据声明153所述的多功能装置,其中,第二计算存储单元是可替换的。
声明231、公开的实施例包括根据声明153所述的多功能装置,其中:
第一连接器包括第一PCIe端口;
第二连接器包括第二PCIe端口;
第三连接器包括第三PCIe端口;并且
第四连接器包括第四PCIe端口。
声明232、公开的实施例包括根据声明231所述的多功能装置,其中:
第一PCIe端口包括第一根端口;
第二PCIe端口包括第二根端口;
第三PCIe端口包括第三根端口;并且
第四PCIe端口包括端点。
声明233、公开的实施例包括根据声明153所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一PCIe功能;
第一计算存储单元被配置为:经由第二连接器向所述多功能装置公开第二PCIe功能;
第二计算存储单元被配置为:经由第三连接器向所述多功能装置公开第三PCIe功能;并且
所述多功能装置被配置为:经由第四连接器向主机处理器公开第四PCIe功能。
声明234、公开的实施例包括根据声明233所述的多功能装置,其中:
第一PCIe功能包括第一PF或第一VF;
第二PCIe功能包括第二PF或第二VF;
第三PCIe功能包括第三PF或第三VF;
第四PCIe功能包括第四PF或第四VF。
声明235、公开的实施例包括根据声明153所述的多功能装置,其中,第一连接器支持以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个。
声明236、公开的实施例包括根据声明153所述的多功能装置,其中,第二连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明237、公开的实施例包括根据声明153所述的多功能装置,其中,第三连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明238、公开的实施例包括根据声明153所述的多功能装置,其中,第四连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明239、公开的实施例包括一种多功能装置,所述多功能装置包括:
第一连接器,用于与存储装置通信;
第一计算存储单元,被集成到所述多功能装置中;
第二连接器,用于与第二计算存储单元通信;以及
第三连接器,用于与主机处理器通信;
其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开第一计算存储单元和第二计算存储单元中的至少一个以及存储装置。
声明240、公开的实施例包括根据声明239所述的多功能装置,其中,所述多功能装置不向主机处理器公开第一计算存储单元和第二计算存储单元中的至少一个。
声明241、公开的实施例包括根据声明239所述的多功能装置,其中,所述多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明242、公开的实施例包括根据声明239所述的多功能装置,其中,第二计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明243、公开的实施例包括根据声明239所述的多功能装置,其中,存储装置被配置为:调用第一计算存储单元或第二计算存储单元的能力。
声明244、公开的实施例包括根据声明243所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到第一计算存储单元或第二计算存储单元。
声明245、公开的实施例包括根据声明244所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明246、公开的实施例包括根据声明243所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用第一计算存储单元或第二计算存储单元的能力。
声明247、公开的实施例包括根据声明243所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元或第二计算存储单元接收回复,并且将所述回复发送到存储装置。
声明248、公开的实施例包括根据声明247所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元或第二计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明249、公开的实施例包括根据声明239所述的多功能装置,其中,第一计算存储单元被配置为:调用存储装置或第二计算存储单元的能力。
声明250、公开的实施例包括根据声明249所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元接收请求,并且将所述请求发送到存储装置或第二计算存储单元。
声明251、公开的实施例包括根据声明250所述的多功能装置,其中,所述多功能装置被配置为:从第一计算存储单元接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明252、公开的实施例包括根据声明249所述的多功能装置,其中,第一计算存储单元被配置为:在没有主机处理器的管理的情况下,调用存储装置或第二计算存储单元的能力。
声明253、公开的实施例包括根据声明249所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第二计算存储单元接收回复,并且将所述回复发送到第一计算存储单元。
声明254、公开的实施例包括根据声明253所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第二计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到第一计算存储单元。
声明255、公开的实施例包括根据声明239所述的多功能装置,其中,第二计算存储单元被配置为:调用存储装置或第一计算存储单元的能力。
声明256、公开的实施例包括根据声明255所述的多功能装置,其中,所述多功能装置被配置为:从第二计算存储单元接收请求,并且将所述请求发送到存储装置或第一计算存储单元。
声明257、公开的实施例包括根据声明256所述的多功能装置,其中,所述多功能装置被配置为:从第二计算存储单元接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明258、公开的实施例包括根据声明255所述的多功能装置,其中,第二计算存储单元被配置为:在没有主机处理器的管理的情况下,调用存储装置或第一计算存储单元的能力。
声明259、公开的实施例包括根据声明255所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第一计算存储单元接收回复,并且将所述回复发送到第二计算存储单元。
声明260、公开的实施例包括根据声明259所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第一计算存储单元接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到第二计算存储单元。
声明261、公开的实施例包括根据声明239所述的多功能装置,其中,存储装置包括固态驱动器(SSD)。
声明262、公开的实施例包括根据声明239所述的多功能装置,其中,第一计算存储单元包括加速器电路、全同态加密(FHE)电路或网络接口装置。
声明263、公开的实施例包括根据声明239所述的多功能装置,其中,第二计算存储单元包括加速器电路、全同态加密(FHE)电路或网络接口装置。
声明264、公开的实施例包括根据声明239所述的多功能装置,所述多功能装置还包括:缓冲器,连接到存储装置、第一计算存储单元和第二计算存储单元。
声明265、公开的实施例包括根据声明264所述的多功能装置,其中,存储装置、第一计算存储单元和第二计算存储单元被配置为:访问缓冲器中的数据。
声明266、公开的实施例包括根据声明264所述的多功能装置,其中,缓冲器包括地址范围。
声明267、公开的实施例包括根据声明266所述的多功能装置,其中,主机处理器确定缓冲器的地址范围。
声明268、公开的实施例包括根据声明264所述的多功能装置,其中,存储装置被配置为:使用协议来访问缓冲器。
声明269、公开的实施例包括根据声明268所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明270、公开的实施例包括根据声明264所述的多功能装置,其中,第一计算存储单元被配置为:使用协议来访问缓冲器。
声明271、公开的实施例包括根据声明270所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明272、公开的实施例包括根据声明264所述的多功能装置,其中,第二计算存储单元被配置为:使用协议访问缓冲器。
声明273、公开的实施例包括根据声明272所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明274、公开的实施例包括根据声明264所述的多功能装置,所述多功能装置还包括连接到缓冲器的数据处理器,数据处理器被配置为处理缓冲器中的数据。
声明275、公开的实施例包括根据声明274所述的多功能装置,其中,数据处理器被配置为:至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求来处理缓冲器中的所述数据。
声明276、公开的实施例包括根据声明275所述的多功能装置,其中:
数据处理器被配置为公开功能;
所述请求来自主机处理器;并且
所述请求触发数据处理器的所述功能。
声明277、公开的实施例包括根据声明276所述的多功能装置,其中,所述功能包括外围组件互连快速(PCIe)功能。
声明278、公开的实施例包括根据声明277所述的多功能装置,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明279、公开的实施例包括根据声明276所述的多功能装置,其中:
所述多功能装置被配置为:经由第三连接器向主机处理器公开第二功能;
所述多功能装置被配置为:经由第三连接器从主机处理器接收所述请求;并且
所述多功能装置触发数据处理器的所述功能。
声明280、公开的实施例包括根据声明279所述的多功能装置,其中:
所述请求包括第二功能;并且
所述多功能装置被配置为:将第二功能映射到数据处理器的所述功能。
声明281、公开的实施例包括根据声明239所述的多功能装置,所述多功能装置还包括:
第一桥接器,连接第三连接器和第一连接器;以及
第二桥接器,连接第三连接器和第二连接器。
声明282、公开的实施例包括根据声明281所述的多功能装置,其中:
第一桥接器支持主机处理器与存储装置之间的第一请求的直通;并且
第二桥接器支持主机处理器与第二计算存储单元之间的第二请求的直通。
声明283、公开的实施例包括根据声明281所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
第一计算存储单元被配置为:公开第二功能;
第二计算存储单元被配置为:经由第二连接器向所述多功能装置公开第三功能;
所述多功能装置被配置为:经由第三连接器向主机处理器公开第四功能;
第一桥接器被配置为:将使用第四功能的第一请求映射到使用第一功能的第二请求;
第二桥接器被配置为:将使用第五功能的第三请求映射到使用第三功能的第四请求。
声明284、公开的实施例包括根据声明283所述的多功能装置,其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开第五功能。
声明285、公开的实施例包括根据声明284所述的多功能装置,其中,所述多功能装置不经由第三连接器向主机处理器公开第二功能。
声明286、公开的实施例包括根据声明283所述的多功能装置,其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开第二功能。
声明287、公开的实施例包括根据声明286所述的多功能装置,其中,所述多功能装置不经由第三连接器向主机处理器公开第五功能。
声明288、公开的实施例包括根据声明283所述的多功能装置,其中:
所述多功能装置被配置为:将第一请求引导到第一桥接器;
所述多功能装置被配置为:将第三请求引导到第二桥接器;并且
所述多功能装置被配置为:将第五请求引导到第一计算存储单元。
声明289、公开的实施例包括根据声明288所述的多功能装置,其中,所述多功能装置被配置为:从主机处理器、第一计算存储单元或第二计算存储单元接收第一请求。
声明290、公开的实施例包括根据声明288所述的多功能装置,其中,所述多功能装置被配置为:从主机处理器、存储装置或第一计算存储单元接收第三请求。
声明291、公开的实施例包括根据声明288所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第一计算存储单元接收第三请求。
声明292、公开的实施例包括根据声明288所述的多功能装置,其中,所述多功能装置被配置为:从主机处理器、存储装置或第二计算存储单元接收第五请求。
声明293、公开的实施例包括根据声明288所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或第二计算存储单元接收第五请求。
声明294、公开的实施例包括根据声明283所述的多功能装置,其中:
所述多功能装置被配置为:经由第二连接器向第二计算存储单元公开第四功能,并且向第一计算存储单元公开第四功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第二功能,并且经由第二连接器向第二计算存储单元公开第二功能;并且
所述多功能装置被配置为:经由第一连接器向存储装置公开第五功能,并且向第一计算存储单元公开第五功能。
声明295、公开的实施例包括根据声明281所述的多功能装置,所述多功能装置还包括:缓冲器,连接到第一桥接器、第二桥接器和第一计算存储单元的。
声明296、公开的实施例包括根据声明295所述的多功能装置,其中,第一桥接器被配置为:接收从存储装置发送的请求,并且将所述请求引导到缓冲器。
声明297、公开的实施例包括根据声明296所述的多功能装置,其中,所述请求从存储装置被发送到主机处理器。
声明298、公开的实施例包括根据声明296所述的多功能装置,其中,存储装置不知道第一桥接器将所述请求重新引导到缓冲器。
声明299、公开的实施例包括根据声明296所述的多功能装置,其中,第一桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明300、公开的实施例包括根据声明299所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明301、公开的实施例包括根据声明295所述的多功能装置,其中,第二桥接器被配置为:接收从第二计算存储单元发送的请求,并且将所述请求引导到缓冲器。
声明302、公开的实施例包括根据声明301所述的多功能装置,其中,所述请求从第二计算存储单元被发送到主机处理器。
声明303、公开的实施例包括根据声明301所述的多功能装置,其中,第二计算存储单元不知道第二桥接器将所述请求重新引导到缓冲器。
声明304、公开的实施例包括根据声明301所述的多功能装置,其中,第二桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明305、公开的实施例包括根据声明304所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明306、公开的实施例包括根据声明295所述的多功能装置,其中,所述多功能装置被配置为:接收从第一计算存储单元发送的请求,并且将所述请求引导到缓冲器。
声明307、公开的实施例包括根据声明306所述的多功能装置,其中,第一计算存储单元不知道所述多功能装置将所述请求重新引导到缓冲器。
声明308、公开的实施例包括根据声明306所述的多功能装置,其中,所述多功能装置被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明309、公开的实施例包括根据声明308所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明310、公开的实施例包括根据声明239所述的多功能装置,所述多功能装置还包括:存储设备,用于装置配置的列表。
声明311、公开的实施例包括根据声明310所述的多功能装置,其中,存储装置包括持久性存储设备。
声明312、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置和第一计算存储单元。
声明313、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开第二计算存储单元。
声明314、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置和第二计算存储单元。
声明315、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开第一计算存储单元。
声明316、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:检测连接到第二连接器的装置,确定所述装置的配置,并且至少部分地基于所述装置的配置来更新装置配置的列表。
声明317、公开的实施例包括根据声明316所述的多功能装置,其中,所述装置包括:第二存储装置、第三计算存储单元、FHE电路或网络接口装置。
声明318、公开的实施例包括根据声明310所述的多功能装置,其中,所述多功能装置被配置为:确定所述装置的配置,并且至少部分地基于装置配置的列表省略所述装置的配置来更新装置配置的列表。
声明319、公开的实施例包括根据声明239所述的多功能装置,其中,存储装置是可替换的。
声明320、公开的实施例包括根据声明239所述的多功能装置,其中,第二计算存储单元是可替换的。
声明321、公开的实施例包括根据声明239所述的多功能装置,其中:
第一连接器包括第一PCIe端口;
第二连接器包括第二PCIe端口;
第三连接器包括第三PCIe端口。
声明322、公开的实施例包括根据声明321所述的多功能装置,其中:
第一PCIe端口包括第一根端口;
第二PCIe端口包括第二根端口;并且
第三PCIe端口包括端点。
声明323、公开的实施例包括根据声明239所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一PCIe功能;
第一计算存储单元被配置为:向所述多功能装置公开第二PCIe功能;
第二计算存储单元被配置为:经由第二连接器向所述多功能装置公开第三PCIe功能;并且
所述多功能装置被配置为:经由第三连接器向主机处理器公开第四PCIe功能。
声明324、公开的实施例包括根据声明323所述的多功能装置,其中:
第一PCIe功能包括第一PF或第一VF;
第二PCIe功能包括第二PF或第二VF;
第三PCIe功能包括第三PF或第三VF;
第四PCIe功能包括第四PF或第四VF。
声明325、公开的实施例包括根据声明239所述的多功能装置,其中,第一连接器支持以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个。
声明326、公开的实施例包括根据声明239所述的多功能装置,其中,第二连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明327、公开的实施例包括根据声明239所述的多功能装置,其中,第三连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明328、公开的实施例包括一种方法,所述方法包括:
确定存储装置连接到多功能装置;
确定第一计算存储单元可用;
确定第二计算存储单元连接到多功能装置;
向连接到多功能装置的主机处理器公开存储装置;以及
选择性地向主机处理器公开第一计算存储单元和第二计算存储单元。
声明329、公开的实施例包括根据声明328所述的方法,其中,多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明330、公开的实施例包括根据声明328所述的方法,其中,第一计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明331、公开的实施例包括根据声明328所述的方法,其中,第二计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明332、公开的实施例包括根据声明328所述的方法,其中,存储装置包括固态驱动器(SSD)。
声明333、公开的实施例包括根据声明328所述的方法,其中,第一计算存储单元包括加速器电路、全同态加密(FHE)电路或网络接口装置。
声明334、公开的实施例包括根据声明328所述的方法,其中,第二计算存储单元包括加速器电路、FHE电路或网络接口装置。
声明335、公开的实施例包括根据声明328所述的方法,其中,确定第一计算存储单元可用的步骤包括:确定第一计算存储单元连接到多功能装置。
声明336、公开的实施例包括根据声明335所述的方法,其中,确定第一计算存储单元连接到多功能装置的步骤包括:确定第一计算存储单元经由连接器连接到多功能装置。
声明337、公开的实施例包括根据声明328所述的方法,其中,确定第一计算存储单元可用的步骤包括:确定第一计算存储单元被集成到多功能装置中。
声明338、公开的实施例包括根据声明328所述的方法,其中
确定存储装置连接到多功能装置的步骤包括:确定存储装置经由第一连接器连接到多功能装置;并且
确定第二计算存储单元连接到多功能装置的步骤包括:确定第二计算存储单元经由第二连接器连接到多功能装置。
声明339、公开的实施例包括根据声明328所述的方法,其中,选择性地向连接到多功能装置的主机处理器公开第一计算存储单元和第二计算存储单元的步骤包括:
向主机处理器公开第一计算存储单元;以及
不向主机处理器公开第二计算存储单元。
声明340、公开的实施例包括根据声明328所述的方法,所述方法还包括:
在多功能装置处从存储装置接收请求,以调用第一计算存储单元或第二计算存储单元的能力;以及
将所述请求发送到第一计算存储单元或第二计算存储单元。
声明341、公开的实施例包括根据声明340所述的方法,其中,将所述请求发送到第一计算存储单元或第二计算存储单元的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明342、公开的实施例包括根据声明340所述的方法,其中,将所述请求发送到第一计算存储单元或第二计算存储单元的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明343、公开的实施例包括根据声明340所述的方法,所述方法还包括:
在多功能装置处从第一计算存储单元或第二计算存储单元接收回复;以及
将所述回复发送到存储装置。
声明344、公开的实施例包括根据声明343所述的方法,其中,将所述回复发送到存储装置的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明345、公开的实施例包括根据声明328所述的方法,还包括:
在多功能装置处从第一计算存储单元接收请求,以调用存储装置或第二计算存储单元的能力;以及
将所述请求发送到存储装置或第二计算存储单元。
声明346、公开的实施例包括根据声明345所述的方法,其中,将所述请求发送到存储装置或第二计算存储单元的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明347、公开的实施例包括根据声明345所述的方法,其中,将所述请求发送到存储装置或第二计算存储单元的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明348、公开的实施例包括根据声明345所述的方法,所述方法还包括:
在多功能装置处从存储装置或第二计算存储单元接收回复;以及
将所述回复发送到第一计算存储单元。
声明349、公开的实施例包括根据声明348所述的方法,其中,将所述回复发送到第一计算存储单元的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到第一计算存储单元。
声明350、公开的实施例包括根据声明328所述的方法,所述方法还包括:
在多功能装置处从第二计算存储单元接收请求,以调用存储装置或第一计算存储单元的能力;以及
将所述请求发送到存储装置或第一计算存储单元。
声明351、公开的实施例包括根据声明350所述的方法,其中,将所述请求发送到存储装置或第一计算存储单元的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明352、公开的实施例包括根据声明350所述的方法,其中,将所述请求发送到存储装置或第一计算存储单元的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明353、公开的实施例包括根据声明350所述的方法,所述方法还包括:
在多功能装置处从存储装置或第一计算存储单元接收回复;以及
将所述回复发送到第二计算存储单元。
声明354、公开的实施例包括根据声明353所述的方法,其中,将所述回复发送到第二计算存储单元的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到第二计算存储单元。
声明355、公开的实施例包括根据声明328所述的方法,所述方法还包括:
由存储装置访问多功能装置中的缓冲器中的数据;以及
由第一计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明356、公开的实施例包括根据声明355所述的方法,所述方法还包括:
由第二计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明357、公开的实施例包括根据声明355所述的方法,其中:
缓冲器包括地址范围;并且
所述方法还包括:从主机处理器确定缓冲器的地址范围。
声明358、公开的实施例包括根据声明355所述的方法,其中:
由存储装置访问多功能装置中的缓冲器中的所述数据的步骤包括:由存储装置使用第一协议访问多功能装置中的缓冲器中的所述数据;并且
由第一计算存储单元访问多功能装置中的缓冲器中的所述数据的步骤包括:由第一计算存储单元使用第二协议访问多功能装置中的缓冲器中的所述数据。
声明359、公开的实施例包括根据声明358所述的方法,其中:
第一协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个;并且
第二协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明360、公开的实施例包括根据声明358所述的方法,所述方法还包括:由第二计算存储单元使用第三协议访问多功能装置中的缓冲器中的所述数据。
声明361、公开的实施例包括根据声明360所述的方法,其中,第三协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明362、公开的实施例包括根据声明355所述的方法,所述方法还包括:使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明363、公开的实施例包括根据声明362所述的方法,其中,使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求,使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明364、公开的实施例包括根据声明363所述的方法,其中:
所述方法还包括:
确定功能由数据处理器公开;以及
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:从主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个接收所述请求,所述请求触发所述功能。
声明365、公开的实施例包括根据声明364所述的方法,其中,确定所述功能由数据处理器公开的步骤包括:确定外围组件互连快速(PCIe)功能由数据处理器公开。
声明366、公开的实施例包括根据声明365所述的方法,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明367、公开的实施例包括根据声明363所述的方法,其中:
所述方法还包括:
确定功能由数据处理器公开;以及
由多功能装置公开第二功能;并且
至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:
从主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个接收所述请求,所述请求触发第二功能;以及
触发数据处理器的所述功能。
声明368、公开的实施例包括根据声明367所述的方法,其中,触发数据处理器的所述功能的步骤包括:将第二功能映射到数据处理器的所述功能。
声明369、公开的实施例包括根据声明328所述的方法,所述方法还包括:
在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收请求;以及
通过桥接器将所述请求传递到主机处理器、存储装置、第一计算存储单元或第二计算存储单元。
声明370、公开的实施例包括根据声明328所述的方法,所述方法还包括:
在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收请求,所述请求触发由存储装置、第一计算存储单元或第二计算存储单元公开的功能;以及
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、第一计算存储单元或第二计算存储单元。
声明371、公开的实施例包括根据声明370所述的方法,其中,在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求的步骤包括:
在多功能装置处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求;以及
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求发送到桥接器。
声明372、公开的实施例包括根据声明370所述的方法,其中:
在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求,所述请求触发由多功能装置公开的第二功能;
所述方法还包括:将第二功能映射到由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能;以及
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、第一计算存储单元或第二计算存储单元。
声明373、公开的实施例包括根据声明372所述的方法,其中,在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求的步骤包括:
在多功能装置处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求;以及
至少部分地基于由多功能装置公开的第二功能,将所述请求发送到桥接器。
声明374、公开的实施例包括根据声明370所述的方法,其中,多功能装置不向主机处理器公开所述功能。
声明375、公开的实施例包括根据声明328所述的方法,所述方法还包括:
在多功能装置的桥接器处从存储装置、第一计算存储单元或第二计算存储单元接收请求;以及
将所述请求从桥接器发送到多功能装置的缓冲器。
声明376、公开的实施例包括根据声明375所述的方法,其中,所述请求从存储装置、第一计算存储单元或第二计算存储单元被发送到主机处理器。
声明377、公开的实施例包括根据声明375所述的方法,其中,将所述请求从桥接器发送到多功能装置的缓冲器的步骤包括:在不通知存储装置、第一计算存储单元或第二计算存储单元的情况下,将所述请求从桥接器发送到多功能装置的缓冲器。
声明378、公开的实施例包括根据声明375所述的方法,其中,将所述请求从桥接器发送到多功能装置的缓冲器的步骤包括:至少部分地基于地址,将所述请求从桥接器发送到多功能装置的缓冲器,所述请求包括所述地址。
声明379、公开的实施例包括根据声明378所述的方法,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明380、公开的实施例包括根据声明379所述的方法,所述方法还包括:从主机处理器接收缓冲器的地址范围。
声明381、公开的实施例包括根据声明328所述的方法,其中:
向连接到多功能装置的主机处理器公开存储装置的步骤包括:至少部分地基于装置配置的列表,向连接到多功能装置的主机处理器公开存储装置;以及
选择性地向主机处理器公开第一计算存储单元和第二计算存储单元的步骤包括:至少部分地基于装置配置的列表,选择性地向主机处理器公开第一计算存储单元和第二计算存储单元。
声明382、公开的实施例包括根据声明381所述的方法,其中,所述方法还包括:从多功能装置的存储设备访问装置配置的列表。
声明383、公开的实施例包括根据声明382所述的方法,其中,从多功能装置的存储设备访问装置配置的列表的步骤包括:从多功能装置的持久性存储设备访问装置配置的列表。
声明384、公开的实施例包括根据声明381所述的方法,所述方法还包括:
确定装置连接到多功能装置;
确定所述装置的配置;以及
至少部分地基于所述装置的配置来更新装置配置的列表。
声明385、公开的实施例包括根据声明384所述的方法,其中,所述装置包括第二存储装置、第三计算存储单元、FHE电路或网络接口装置。
声明386、公开的实施例包括根据声明384所述的方法,其中,至少部分地基于所述装置的配置来更新装置配置的列表的步骤包括:确定装置配置的列表省略所述装置的配置。
声明387、公开的实施例包括根据声明328所述的方法,所述方法还包括:用装置替换存储装置。
声明388、公开的实施例包括根据声明328所述的方法,所述方法还包括:用装置替换第一计算存储单元。
声明389、公开的实施例包括根据声明328所述的方法,所述方法还包括:用装置替换第二计算存储单元。
声明390、公开的实施例包括根据声明328所述的方法,其中,多功能装置使用以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个与存储装置通信。
声明391、公开的实施例包括根据声明328所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与第一计算存储单元通信。
声明392、公开的实施例包括根据声明328所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与第二计算存储单元通信。
声明393、公开的实施例包括根据声明328所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与主机处理器通信。
声明394、公开的实施例包括一种包括非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
确定存储装置连接到多功能装置;
确定第一计算存储单元可用;
确定第二计算存储单元连接到多功能装置;
向连接到多功能装置的主机处理器公开存储装置;并且
选择性地向主机处理器公开第一计算存储单元和第二计算存储单元。
声明395、公开的实施例包括根据声明394所述的物品,其中,多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明396、公开的实施例包括根据声明394所述的物品,其中,第一计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明397、公开的实施例包括根据声明394所述的物品,其中,第二计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明398、公开的实施例包括根据声明394所述的物品,其中,存储装置包括固态驱动器(SSD)。
声明399、公开的实施例包括根据声明394所述的物品,其中,第一计算存储单元包括加速器电路、全同态加密(FHE)电路或网络接口装置。
声明400、公开的实施例包括根据声明394所述的物品,其中,第二计算存储单元包括加速器电路、FHE电路或网络接口装置。
声明401、公开的实施例包括根据声明394所述的物品,其中,确定第一计算存储单元可用的处理包括:确定第一计算存储单元连接到多功能装置。
声明402、公开的实施例包括根据声明401所述的物品,其中,确定第一计算存储单元连接到多功能装置的处理包括:确定第一计算存储单元经由连接器连接到多功能装置。
声明403、公开的实施例包括根据声明394所述的物品,其中,确定第一计算存储单元可用的处理包括:确定第一计算存储单元被集成到多功能装置中。
声明404、公开的实施例包括根据声明394所述的物品,其中
确定存储装置连接到多功能装置的处理包括:确定存储装置经由第一连接器连接到多功能装置;并且
确定第二计算存储单元连接到多功能装置的处理包括:确定第二计算存储单元经由第二连接器连接到多功能装置。
声明405、公开的实施例包括根据声明394所述的物品,其中,选择性地向连接到多功能装置的主机处理器公开第一计算存储单元和第二计算存储单元的处理包括:
向主机处理器公开第一计算存储单元;以及
不向主机处理器公开第二计算存储单元。
声明406、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置接收请求,以调用第一计算存储单元或第二计算存储单元的能力的;并且
将所述请求发送到第一计算存储单元或第二计算存储单元。
声明407、公开的实施例包括根据声明406所述的物品,其中,将所述请求发送到第一计算存储单元或第二计算存储单元的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明408、公开的实施例包括根据声明406所述的物品,其中,将所述请求发送到第一计算存储单元或第二计算存储单元的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到第一计算存储单元或第二计算存储单元。
声明409、公开的实施例包括根据声明406所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从第一计算存储单元或第二计算存储单元接收回复;并且
将所述回复发送到存储装置。
声明410、公开的实施例包括根据声明409所述的物品,其中,将所述回复发送到存储装置的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明411、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从第一计算存储单元接收请求,以调用存储装置或第二计算存储单元的能力;并且
将所述请求发送到存储装置或第二计算存储单元。
声明412、公开的实施例包括根据声明411所述的物品,其中,将所述请求发送到存储装置或第二计算存储单元的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明413、公开的实施例包括根据声明411所述的物品,其中,将所述请求发送到存储装置或第二计算存储单元的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或第二计算存储单元。
声明414、公开的实施例包括根据声明411所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置或第二计算存储单元接收回复;并且
将所述回复发送到第一计算存储单元。
声明415、公开的实施例包括根据声明414所述的物品,其中,将所述回复发送到第一计算存储单元的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到第一计算存储单元。
声明416、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从第二计算存储单元接收请求,以调用存储装置或第一计算存储单元的能力;并且
将所述请求发送到存储装置或第一计算存储单元。
声明417、公开的实施例包括根据声明416所述的物品,其中,将所述请求发送到存储装置或第一计算存储单元的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明418、公开的实施例包括根据声明416所述的物品,其中,将所述请求发送到存储装置或第一计算存储单元的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或第一计算存储单元。
声明419、公开的实施例包括根据声明416所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置或第一计算存储单元接收回复;并且
将所述回复发送到第二计算存储单元。
声明420、公开的实施例包括根据声明419所述的物品,其中,将所述回复发送到第二计算存储单元的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到第二计算存储单元。
声明421、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由存储装置访问多功能装置中的缓冲器中的数据;并且
由第一计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明422、公开的实施例包括根据声明421所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由第二计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明423、公开的实施例包括根据声明421所述的物品,其中:
缓冲器包括地址范围;并且
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从主机处理器确定缓冲器的地址范围。
声明424、公开的实施例包括根据声明421所述的物品,其中:
由存储装置访问多功能装置中的缓冲器中的所述数据的处理包括:由存储装置使用第一协议访问多功能装置中的缓冲器中的所述数据;并且
由第一计算存储单元访问多功能装置中的缓冲器中的所述数据的处理包括:由第一计算存储单元使用第二协议访问多功能装置中的缓冲器中的所述数据。
声明425、公开的实施例包括根据声明424所述的物品,其中:
第一协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个;并且
第二协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明426、公开的实施例包括根据声明424所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:由第二计算存储单元使用第三协议访问多功能装置中的缓冲器中的所述数据。
声明427、公开的实施例包括根据声明426所述的物品,其中,第三协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明428、公开的实施例包括根据声明421所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明429、公开的实施例包括根据声明428所述的物品,其中,使用多功能装置的数据处理器来处理缓冲器中的所述数据的处理包括:至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求,使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明430、公开的实施例包括根据声明429所述的物品,其中:
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定功能由数据处理器公开;并且
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求而使用多功能装置的数据处理器处理缓冲器中的所述数据的处理包括:从主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个接收所述请求,所述请求触发所述功能。
声明431、公开的实施例包括根据声明430所述的物品,其中,确定所述功能由数据处理器公开的处理包括:确定外围组件互连快速(PCIe)功能由数据处理器公开。
声明432、公开的实施例包括根据声明431所述的物品,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明433、公开的实施例包括根据声明429所述的物品,其中:
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定功能由数据处理器公开;并且
由多功能装置公开第二功能;并且
至少部分地基于来自主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的处理包括:
从主机处理器、存储装置、第一计算存储单元和第二计算存储单元中的至少一个接收所述请求,所述请求触发第二功能;并且
触发数据处理器的所述功能。
声明434、公开的实施例包括根据声明433所述的物品,其中,触发数据处理器的所述功能的处理包括:将第二功能映射到数据处理器的所述功能。
声明435、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处接收来自主机处理器、存储装置、第一计算存储单元或第二计算存储单元的请求;并且
通过桥接器将所述请求传递到主机处理器、存储装置、第一计算存储单元或第二计算存储单元。
声明436、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收请求,所述请求触发由存储装置、第一计算存储单元或第二计算存储单元公开的功能;并且
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、第一计算存储单元或第二计算存储单元。
声明437、公开的实施例包括根据声明436所述的物品,其中,在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求的处理包括:
在多功能装置处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求;并且
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求发送到桥接器。
声明438、公开的实施例包括根据声明436所述的物品,其中:
在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求,所述请求触发由多功能装置公开的第二功能;
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第二功能映射到由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能;并且
至少部分地基于由存储装置、第一计算存储单元或第二计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、第一计算存储单元或第二计算存储单元。
声明439、公开的实施例包括根据声明438所述的物品,其中,在多功能装置的桥接器处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求的处理包括:
在多功能装置处从主机处理器、存储装置、第一计算存储单元或第二计算存储单元接收所述请求;并且
至少部分地基于由多功能装置公开的第二功能,将所述请求发送到桥接器。
声明440、公开的实施例包括根据声明436所述的物品,其中,多功能装置不向主机处理器公开所述功能。
声明441、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处从存储装置、第一计算存储单元或第二计算存储单元接收请求;并且
将所述请求从桥接器发送到多功能装置的缓冲器。
声明442、公开的实施例包括根据声明441所述的物品,其中,所述请求从存储装置、第一计算存储单元或第二计算存储单元被发送到主机处理器。
声明443、公开的实施例包括根据声明441所述的物品,其中,将所述请求从桥接器发送到多功能装置的缓冲器的处理包括:在不通知存储装置、第一计算存储单元或第二计算存储单元的情况下,将所述请求从桥接器发送到多功能装置的缓冲器。
声明444、公开的实施例包括根据声明441所述的物品,其中,将所述请求从桥接器发送到多功能装置的缓冲器的处理包括:至少部分地基于地址,将所述请求从桥接器发送到多功能装置的缓冲器,所述请求包括所述地址。
声明445、公开的实施例包括根据声明444所述的物品,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明446、公开的实施例包括根据声明445所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从主机处理器接收缓冲器的地址范围。
声明447、公开的实施例包括根据声明394所述的物品,其中:
向连接到多功能装置的主机处理器公开存储装置的处理包括:至少部分地基于装置配置的列表,向连接到多功能装置的主机处理器公开存储装置;以及
选择性地向主机处理器公开第一计算存储单元和第二计算存储单元的处理包括:至少部分地基于装置配置的列表,选择性地向主机处理器公开第一计算存储单元和第二计算存储单元。
声明448、公开的实施例包括根据声明447所述的物品,其中,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从多功能装置的存储设备访问装置配置的列表。
声明449、公开的实施例包括根据声明448所述的物品,其中,从多功能装置的存储设备访问装置配置的列表的处理包括:从多功能装置的持久性存储设备访问装置配置的列表。
声明450、公开的实施例包括根据声明447所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定装置连接到多功能装置;
确定所述装置的配置;并且
至少部分地基于所述装置的配置来更新装置配置的列表。
声明451、公开的实施例包括根据声明450所述的物品,其中,所述装置包括第二存储装置、第三计算存储单元、FHE电路或网络接口装置。
声明452、公开的实施例包括根据声明450所述的物品,其中,至少部分地基于所述装置的配置来更新装置配置的列表的处理包括:确定装置配置的列表省略所述装置的配置。
声明453、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换存储装置。
声明454、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换第一计算存储单元。
声明455、公开的实施例包括根据声明394所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换第二计算存储单元。
声明456、公开的实施例包括根据声明394所述的物品,其中,多功能装置使用以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个与存储装置通信。
声明457、公开的实施例包括根据声明394所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与第一计算存储单元通信。
声明458、公开的实施例包括根据声明394所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与第二计算存储单元通信。
声明459、公开的实施例包括根据声明394所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与主机处理器通信。
声明460、公开的实施例包括一种多功能装置,所述多功能装置包括:
第一连接器,用于与存储装置通信;
第二连接器,用于与全同态加密(FHE)电路通信;以及
第三连接器,用于与主机处理器通信;
其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开存储装置。
声明461、公开的实施例包括根据声明460所述的多功能装置,其中,所述多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明462、公开的实施例包括根据声明460所述的多功能装置,其中,FHE电路使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明463、公开的实施例包括根据声明460所述的多功能装置,其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开存储装置和FHE电路。
声明464、公开的实施例包括根据声明460所述的多功能装置,其中,所述多功能装置不经由第三连接器向主机处理器公开FHE电路。
声明465、公开的实施例包括根据声明460所述的多功能装置,其中,FHE电路被配置为:调用存储装置的能力。
声明466、公开的实施例包括根据声明465所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收请求,并且将所述请求发送到存储装置。
声明467、公开的实施例包括根据声明466所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置。
声明468、公开的实施例包括根据声明465所述的多功能装置,其中,FHE电路被配置为:在没有主机处理器的管理的情况下,调用存储装置的能力。
声明469、公开的实施例包括根据声明465所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收回复,并且将所述回复发送到FHE电路。
声明470、公开的实施例包括根据声明469所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明471、公开的实施例包括根据声明460所述的多功能装置,其中,存储装置被配置为:调用FHE电路的能力。
声明472、公开的实施例包括根据声明471所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到FHE电路。
声明473、公开的实施例包括根据声明472所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到FHE电路。
声明474、公开的实施例包括根据声明471所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用FHE电路的能力。
声明475、公开的实施例包括根据声明471所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收回复,并且将所述回复发送到存储装置。
声明476、公开的实施例包括根据声明475所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明477、公开的实施例包括根据声明460所述的多功能装置,其中,存储装置包括固态驱动器(SSD)。
声明478、公开的实施例包括根据声明460所述的多功能装置,所述多功能装置还包括:缓冲器,连接到存储装置和FHE电路。
声明479、公开的实施例包括根据声明478所述的多功能装置,其中,存储装置和FHE电路被配置为:访问缓冲器中的数据。
声明480、公开的实施例包括根据声明478所述的多功能装置,其中,缓冲器包括地址范围。
声明481、公开的实施例包括根据声明480所述的多功能装置,其中,主机处理器确定缓冲器的地址范围。
声明482、公开的实施例包括根据声明478所述的多功能装置,其中,存储装置被配置为使用协议来访问缓冲器。
声明483、公开的实施例包括根据声明482所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明484、公开的实施例包括根据声明478所述的多功能装置,其中,FHE电路被配置为:使用协议来访问缓冲器。
声明485、公开的实施例包括根据声明484所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明486、公开的实施例包括根据声明478所述的多功能装置,其中:
所述多功能装置还包括:第四连接器,用于与计算存储单元通信;并且
缓冲器连接到存储装置、FHE电路和计算存储单元。
声明487、公开的实施例包括根据声明486所述的多功能装置,其中,存储装置、FHE电路和计算存储单元被配置为:访问缓冲器中的数据。
声明488、公开的实施例包括根据声明486所述的多功能装置,其中,计算存储单元被配置为:使用协议来访问缓冲器。
声明489、公开的实施例包括根据声明488所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明490、公开的实施例包括根据声明478所述的多功能装置,所述多功能装置还包括数据处理器,数据处理器被配置为处理缓冲器中的数据。
其中,缓冲器连接到存储装置、FHE电路和数据处理器。
声明491、公开的实施例包括根据声明490所述的多功能装置,其中,数据处理器被配置为:至少部分地基于来自主机处理器、存储装置和FHE电路中的至少一个的请求来处理缓冲器中的所述数据。
声明492、公开的实施例包括根据声明491所述的多功能装置,其中:
所述多功能装置包括:第四连接器,用于与计算存储单元通信;并且
数据处理器被配置为:至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求来处理缓冲器中的所述数据。
声明493、公开的实施例包括根据声明491所述的多功能装置,其中:
数据处理器被配置为公开功能;
所述请求来自主机处理器;并且
所述请求触发数据处理器的所述功能。
声明494、公开的实施例包括根据声明493所述的多功能装置,其中,所述功能包括外围组件互连快速(PCIe)功能。
声明495、公开的实施例包括根据声明494所述的多功能装置,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明496、公开的实施例包括根据声明493所述的多功能装置,其中:
所述多功能装置被配置为:经由第三连接器向主机处理器公开第二功能;
所述多功能装置被配置为:经由第三连接器从主机处理器接收所述请求;并且
所述多功能装置触发数据处理器的所述功能。
声明497、公开的实施例包括根据声明496所述的多功能装置,其中:
所述请求包括第二功能;并且
所述多功能装置被配置为:将第二功能映射到数据处理器的所述功能。
声明498、公开的实施例包括根据声明460所述的多功能装置,所述多功能装置还包括:第一桥接器,连接第三连接器和第一连接器。
声明499、公开的实施例包括根据声明498所述的多功能装置,其中,第一桥接器支持主机处理器与存储装置之间的第一请求的直通。
声明500、公开的实施例包括根据声明498所述的多功能装置,所述多功能装置还包括:第二桥接器,连接第三连接器和第二连接器。
声明501、公开的实施例包括根据声明500所述的多功能装置,其中,第二桥接器支持主机处理器与FHE电路之间的第二请求的直通。
声明502、公开的实施例包括根据声明498所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
FHE电路被配置为:经由第二连接器向所述多功能装置公开第二功能;
所述多功能装置被配置为:经由第三连接器向主机处理器公开第三功能;并且
第一桥接器被配置为:将使用第三功能的第一请求映射到使用第一功能的第二请求;并且
第二桥接器被配置为:将使用第四功能的第三请求映射到使用第二功能的第四请求。
声明503、公开的实施例包括根据声明502所述的多功能装置,其中,所述多功能装置被配置为:经由第三连接器向主机处理器公开第四功能。
声明504、公开的实施例包括根据声明502所述的多功能装置,其中,所述多功能装置不经由第三连接器向主机处理器公开第四功能。
声明505、公开的实施例包括根据声明502所述的多功能装置,其中:
所述多功能装置被配置为:将第一请求引导到第一桥接器;并且
所述多功能装置被配置为:将第三请求引导到第二桥接器。
声明506、公开的实施例包括根据声明505所述的多功能装置,其中:
所述多功能装置被配置为:从主机处理器或FHE电路接收第一请求;并且
所述多功能装置被配置为:从主机处理器或存储装置接收第三请求。
声明507、公开的实施例包括根据声明506所述的多功能装置,其中:
所述多功能装置被配置为:从主机处理器、FHE电路或计算存储单元接收第一请求;
所述多功能装置被配置为:从主机处理器、存储装置或计算存储单元接收第三请求。
声明508、公开的实施例包括根据声明498所述的多功能装置,所述多功能装置还包括:缓冲器,连接到第一桥接器和第二桥接器。
声明509、公开的实施例包括根据声明508所述的多功能装置,其中,第一桥接器被配置为:接收从存储装置发送的请求,并且将所述请求引导到缓冲器。
声明510、公开的实施例包括根据声明509所述的多功能装置,其中,所述请求从存储装置被发送到主机处理器。
声明511、公开的实施例包括根据声明509所述的多功能装置,其中,存储装置不知道第一桥接器将所述请求重新引导到缓冲器。
声明512、公开的实施例包括根据声明509所述的多功能装置,其中,第一桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明513、公开的实施例包括根据声明512所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明514、公开的实施例包括根据声明508所述的多功能装置,其中,第二桥接器被配置为:接收从FHE电路发送的请求,并且将所述请求引导到缓冲器。
声明515、公开的实施例包括根据声明514所述的多功能装置,其中,所述请求从FHE电路被发送到主机处理器。
声明516、公开的实施例包括根据声明514所述的多功能装置,其中,FHE电路不知道第二桥接器将所述请求重新引导到缓冲器。
声明517、公开的实施例包括根据声明514所述的多功能装置,其中,第二桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明518、公开的实施例包括根据声明517所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明519、公开的实施例包括根据声明460所述的多功能装置,所述多功能装置还包括:存储设备,用于装置配置的列表。
声明520、公开的实施例包括根据声明519所述的多功能装置,其中,存储设备包括持久性存储设备。
声明521、公开的实施例包括根据声明519所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置。
声明522、公开的实施例包括根据声明521所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置和FHE电路。
声明523、公开的实施例包括根据声明521所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开FHE电路。
声明524、公开的实施例包括根据声明519所述的多功能装置,其中,所述多功能装置被配置为:检测连接到第二连接器的装置,确定所述装置的配置,并且至少部分地基于所述装置的配置来更新装置配置的列表。
声明525、公开的实施例包括根据声明524所述的多功能装置,其中,所述装置包括第二存储装置、第二FHE电路、计算存储单元或网络接口装置。
声明526、公开的实施例包括根据声明519所述的多功能装置,其中,所述多功能装置被配置为:确定所述装置的配置,并且至少部分地基于装置配置的列表省略所述装置的配置来更新装置配置的列表。
声明527、公开的实施例包括根据声明460所述的多功能装置,其中,存储装置是可替换的。
声明528、公开的实施例包括根据声明460所述的多功能装置,其中,FHE电路是可替换的。
声明529、公开的实施例包括根据声明460所述的多功能装置,其中:
第一连接器包括第一PCIe端口;
第二连接器包括第二PCIe端口;
第三连接器包括第三PCIe端口。
声明530、公开的实施例包括根据声明529所述的多功能装置,其中:
第一PCIe端口包括第一根端口;
第二PCIe端口包括第二根端口;
第三PCIe端口包括端点。
声明531、公开的实施例包括根据声明460所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一PCIe功能;
FHE电路被配置为:经由第二连接器向所述多功能装置公开第二PCIe功能;并且
所述多功能装置被配置为:经由第三连接器向主机处理器公开第三PCIe功能。
声明532、公开的实施例包括根据声明531所述的多功能装置,其中:
第一PCIe功能包括第一PF或第一VF;
第二PCIe功能包括第二PF或第二VF;并且
第三PCIe功能包括第三PF或第三VF。
声明533、公开的实施例包括根据声明460所述的多功能装置,其中,第一连接器支持以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个。
声明534、公开的实施例包括根据声明460所述的多功能装置,其中,第二连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明535、公开的实施例包括根据声明460所述的多功能装置,其中,第三连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明536、公开的实施例包括根据声明460所述的多功能装置,所述多功能装置还包括:第四连接器,用于与装置通信。
声明537、公开的实施例包括根据声明536所述的多功能装置,其中,所述装置包括第二存储装置、第二FHE电路、计算存储单元或网络接口装置。
声明538、公开的实施例包括根据声明536所述的多功能装置,其中,所述装置使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明539、公开的实施例包括根据声明536所述的多功能装置,其中,所述多功能装置不向主机处理器公开所述装置。
声明540、公开的实施例包括根据声明536所述的多功能装置,其中,FHE电路被配置为:调用所述装置的能力。
声明541、公开的实施例包括根据声明540所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收请求,并且将所述请求发送到所述装置。
声明542、公开的实施例包括根据声明541所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到所述装置。
声明543、公开的实施例包括根据声明540所述的多功能装置,其中,FHE电路被配置为:在没有主机处理器的管理的情况下,调用所述装置的能力。
声明544、公开的实施例包括根据声明540所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收回复,并且将所述回复发送到FHE电路。
声明545、公开的实施例包括根据声明544所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明546、公开的实施例包括根据声明536所述的多功能装置,其中,存储装置被配置为:调用所述装置的能力。
声明547、公开的实施例包括根据声明546所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到所述装置。
声明548、公开的实施例包括根据声明547所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到所述装置。
声明549、公开的实施例包括根据声明546所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用所述装置的能力。
声明550、公开的实施例包括根据声明546所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收回复,并且将所述回复发送到存储装置。
声明551、公开的实施例包括根据声明550所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明552、公开的实施例包括根据声明536所述的多功能装置,其中,所述装置被配置为:调用存储装置或FHE电路的能力。
声明553、公开的实施例包括根据声明552所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收请求,并且将所述请求发送到存储装置或FHE电路。
声明554、公开的实施例包括根据声明553所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或FHE电路。
声明555、公开的实施例包括根据声明552所述的多功能装置,其中,所述装置被配置为:在没有主机处理器的管理的情况下,调用存储装置或FHE电路的能力。
声明556、公开的实施例包括根据声明552所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或FHE电路接收回复,并且将所述回复发送到所述装置。
声明557、公开的实施例包括根据声明556所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或FHE电路接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到所述装置。
声明558、公开的实施例包括根据声明536所述的多功能装置,其中,所述装置包括加速器电路、第二FHE电路或网络接口装置。
声明559、公开的实施例包括根据声明536所述的多功能装置,所述多功能装置还包括:
第一桥接器,连接第三连接器和第一连接器;
第二桥接器,连接第三连接器和第二连接器;以及
第三桥接器,连接第三连接器和第四连接器。
声明560、公开的实施例包括根据声明559所述的多功能装置,其中,第三桥接器支持在主机处理器与所述装置之间的请求的直通。
声明561、公开的实施例包括根据声明559所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
FHE电路被配置为:经由第二连接器向所述多功能装置公开第二功能;
所述装置被配置为:经由第四连接器向所述多功能装置公开第三功能;
所述多功能装置被配置为:经由第三连接器向主机处理器公开第四功能和第五功能;
所述多功能装置被配置为:经由第二连接器向FHE电路公开第四功能,并且经由第四连接器向所述装置公开第四功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第五功能,并且经由第四连接器向所述装置公开第五功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第六功能,并且经由第二连接器向FHE电路公开第六功能;
第一桥接器被配置为:将使用第四功能的第一请求映射到使用第一功能的第二请求;
第二桥接器被配置为:将使用第五功能的第三请求映射到使用第二功能的第四请求;并且
第三桥接器被配置为:将使用第六功能的第五请求映射到使用第三功能的第六请求。
声明562、公开的实施例包括根据声明559所述的多功能装置,所述多功能装置还包括:缓冲器,连接到第一桥接器、第二桥接器和第三桥接器。
声明563、公开的实施例包括根据声明562所述的多功能装置,其中,第三桥接器被配置为:接收从所述装置发送的请求,并且将所述请求引导到缓冲器。
声明564、公开的实施例包括根据声明563所述的多功能装置,其中,所述装置不知道第三桥接器将所述请求重新引导到缓冲器。
声明565、公开的实施例包括根据声明563所述的多功能装置,其中,第三桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明566、公开的实施例包括根据声明565所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明567、公开的实施例包括根据声明536所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开所述装置。
声明568、公开的实施例包括一种多功能装置,所述多功能装置包括:
第一连接器,用于与存储装置通信;
全同态加密(FHE)电路,与所述多功能装置集成;以及
第二连接器,用于与主机处理器通信;
其中,所述多功能装置被配置为:经由第二连接器向主机处理器公开存储装置。
声明569、公开的实施例包括根据声明568所述的多功能装置,其中,所述多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明570、公开的实施例包括根据声明568所述的多功能装置,其中,FHE电路使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明571、公开的实施例包括根据声明568所述的多功能装置,其中,所述多功能装置被配置为:经由第二连接器向主机处理器公开存储装置和FHE电路。
声明572、公开的实施例包括根据声明568所述的多功能装置,其中,所述多功能装置不经由第二连接器向主机处理器公开FHE电路。
声明573、公开的实施例包括根据声明568所述的多功能装置,其中,FHE电路被配置为:调用存储装置的能力。
声明574、公开的实施例包括根据声明573所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收请求,并且将所述请求发送到存储装置。
声明575、公开的实施例包括根据声明574所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置。
声明576、公开的实施例包括根据声明573所述的多功能装置,其中,FHE电路被配置为:在没有主机处理器的管理的情况下,调用存储装置的能力。
声明577、公开的实施例包括根据声明573所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收回复,并且将所述回复发送到FHE电路。
声明578、公开的实施例包括根据声明577所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明579、公开的实施例包括根据声明568所述的多功能装置,其中,存储装置被配置为:调用FHE电路的能力。
声明580、公开的实施例包括根据声明579所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到FHE电路。
声明581、公开的实施例包括根据声明580所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到FHE电路。
声明582、公开的实施例包括根据声明579所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用FHE电路的能力。
声明583、公开的实施例包括根据声明579所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收回复,并且将所述回复发送到存储装置。
声明584、公开的实施例包括根据声明583所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明585、公开的实施例包括根据声明568所述的多功能装置,其中,存储装置包括固态驱动器(SSD)。
声明586、公开的实施例包括根据声明568所述的多功能装置,所述多功能装置还包括:缓冲器,连接到存储装置和FHE电路。
声明587、公开的实施例包括根据声明586所述的多功能装置,其中,存储装置和FHE电路被配置为:访问缓冲器中的数据。
声明588、公开的实施例包括根据声明586所述的多功能装置,其中,缓冲器包括地址范围。
声明589、公开的实施例包括根据声明588所述的多功能装置,其中,主机处理器确定缓冲器的地址范围。
声明590、公开的实施例包括根据声明586所述的多功能装置,其中,存储装置被配置为:使用协议来访问缓冲器。
声明591、公开的实施例包括根据声明590所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明592、公开的实施例包括根据声明586所述的多功能装置,其中,FHE电路被配置为:使用协议来访问缓冲器。
声明593、公开的实施例包括根据声明592所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明594、公开的实施例包括根据声明586所述的多功能装置,其中:
所述多功能装置还包括:第三连接器,用于与计算存储单元通信;并且
缓冲器连接到存储装置、FHE电路和计算存储单元。
声明595、公开的实施例包括根据声明594所述的多功能装置,其中,存储装置、FHE电路和计算存储单元被配置为:访问缓冲器中的数据。
声明596、公开的实施例包括根据声明594所述的多功能装置,其中,计算存储单元被配置为:使用协议来访问缓冲器。
声明597、公开的实施例包括根据声明596所述的多功能装置,其中,所述协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个。
声明598、公开的实施例包括根据声明586所述的多功能装置,所述多功能装置还包括数据处理器,数据处理器被配置为处理缓冲器中的数据。
其中,缓冲器连接到存储装置、FHE电路和数据处理器。
声明599、公开的实施例包括根据声明598所述的多功能装置,其中,数据处理器被配置为:至少部分地基于来自主机处理器、存储装置和FHE电路中的至少一个的请求来处理缓冲器中的所述数据。
声明600、公开的实施例包括根据声明599所述的多功能装置,其中:
所述多功能装置包括:第三连接器,用于与计算存储单元通信;并且
数据处理器被配置为:至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求来处理缓冲器中的所述数据。
声明601、公开的实施例包括根据声明599所述的多功能装置,其中:
数据处理器被配置为公开功能;
所述请求来自主机处理器;并且
所述请求触发数据处理器的所述功能。
声明602、公开的实施例包括根据声明601所述的多功能装置,其中,所述功能包括外围组件互连快速(PCIe)功能。
声明603、公开的实施例包括根据声明602所述的多功能装置,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明604、公开的实施例包括根据声明601所述的多功能装置,其中:
所述多功能装置被配置为:经由第二连接器向主机处理器公开第二功能;
所述多功能装置被配置为:经由第二连接器从主机处理器接收所述请求;并且
所述多功能装置触发数据处理器的所述功能。
声明605、公开的实施例包括根据声明604所述的多功能装置,其中:
所述请求包括第二功能;并且
所述多功能装置被配置为:将第二功能映射到数据处理器的所述功能。
声明606、公开的实施例包括根据声明568所述的多功能装置,所述多功能装置还包括:桥接器,连接第二连接器和第一连接器。
声明607、公开的实施例包括根据声明606所述的多功能装置,其中,桥接器支持主机处理器与存储装置之间的第一请求的直通。
声明608、公开的实施例包括根据声明606所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
FHE电路被配置为:公开第二功能;
所述多功能装置被配置为:经由第二连接器向主机处理器公开第三功能;并且
桥接器被配置为:将使用第三功能的请求映射到使用第一功能的第二请求。
声明609、公开的实施例包括根据声明608所述的多功能装置,其中,所述多功能装置被配置为:经由第二连接器向主机处理器公开第二功能。
声明610、公开的实施例包括根据声明608所述的多功能装置,其中,所述多功能装置不经由第二连接器向主机处理器公开第二功能。
声明611、公开的实施例包括根据声明608所述的多功能装置,其中:
所述多功能装置被配置为:将所述请求引导到桥接器;并且
所述多功能装置被配置为:将第三请求引导到FHE电路。
声明612、公开的实施例包括根据声明611所述的多功能装置,其中:
所述多功能装置被配置为:从主机处理器或FHE电路接收第一请求;并且
所述多功能装置被配置为:从存储装置接收第三请求。
声明613、公开的实施例包括根据声明612所述的多功能装置,其中:
所述多功能装置被配置为:从主机处理器、FHE电路或计算存储单元接收第一请求;
所述多功能装置被配置为:从存储装置或计算存储单元接收第三请求。
声明614、公开的实施例包括根据声明611所述的多功能装置,其中:
所述多功能装置被配置为:经由第二连接器向主机处理器公开第二功能;并且
所述多功能装置被配置为:从主机处理器接收第三请求。
声明615、公开的实施例包括根据声明606所述的多功能装置,所述多功能装置还包括:缓冲器,连接到桥接器和FHE电路。
声明616、公开的实施例包括根据声明615所述的多功能装置,其中,桥接器被配置为:接收从存储装置发送的请求,并且将所述请求引导到缓冲器。
声明617、公开的实施例包括根据声明616所述的多功能装置,其中,所述请求从存储装置被发送到主机处理器。
声明618、公开的实施例包括根据声明616所述的多功能装置,其中,存储装置不知道桥接器将所述请求重新引导到缓冲器。
声明619、公开的实施例包括根据声明616所述的多功能装置,其中,桥接器被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明620、公开的实施例包括根据声明619所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明621、公开的实施例包括根据声明615所述的多功能装置,其中,所述多功能装置被配置为:接收从FHE电路发送的请求,并且将所述请求引导到缓冲器。
声明622、公开的实施例包括根据声明621所述的多功能装置,其中,所述请求从FHE电路被发送到主机处理器。
声明623、公开的实施例包括根据声明621所述的多功能装置,其中,FHE电路不知道所述多功能装置将所述请求重新引导到缓冲器。
声明624、公开的实施例包括根据声明621所述的多功能装置,其中,所述多功能装置被配置为至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明625、公开的实施例包括根据声明624所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明626、公开的实施例包括根据声明568所述的多功能装置,所述多功能装置还包括:存储设备,用于装置配置的列表。
声明627、公开的实施例包括根据声明626所述的多功能装置,其中,存储设备包括持久性存储设备。
声明628、公开的实施例包括根据声明626所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表向主机处理器公开存储装置。
声明629、公开的实施例包括根据声明628所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,向主机处理器公开存储装置和FHE电路。
声明630、公开的实施例包括根据声明628所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开FHE电路。
声明631、公开的实施例包括根据声明626所述的多功能装置,其中,所述多功能装置被配置为:检测连接到第三连接器的装置,确定所述装置的配置,并且至少部分地基于所述装置的配置来更新装置配置的列表。
声明632、公开的实施例包括根据声明631所述的多功能装置,其中,所述装置包括第二存储装置、第二FHE电路、计算存储单元或网络接口装置。
声明633、公开的实施例包括根据声明626所述的多功能装置,其中,所述多功能装置被配置为:确定所述装置的配置,并且至少部分地基于装置配置的列表省略所述装置的配置来更新装置配置的列表。
声明634、公开的实施例包括根据声明568所述的多功能装置,其中,存储装置是可替换的。
声明635、公开的实施例包括根据声明568所述的多功能装置,其中:
第一连接器包括第一PCIe端口;并且
第二连接器包括第二PCIe端口。
声明636、公开的实施例包括根据声明635所述的多功能装置,其中:
第一PCIe端口包括第一根端口;并且
第二PCIe端口包括端点。
声明637、公开的实施例包括根据声明568所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一PCIe功能;
FHE电路被配置为:公开第二PCIe功能;并且
所述多功能装置被配置为:经由第二连接器向主机处理器公开第三PCIe功能。
声明638、公开的实施例包括根据声明637所述的多功能装置,其中:
第一PCIe功能包括第一PF或第一VF;
第二PCIe功能包括第二PF或第二VF;并且
第三PCIe功能包括第三PF或第三VF。
声明639、公开的实施例包括根据声明568所述的多功能装置,其中,第一连接器支持以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个。
声明640、公开的实施例包括根据声明568所述的多功能装置,其中,第二连接器支持以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个。
声明641、公开的实施例包括根据声明568所述的多功能装置,所述多功能装置还包括:第三连接器,用于与装置通信。
声明642、公开的实施例包括根据声明641所述的多功能装置,其中,所述装置包括第二存储装置、第二FHE电路、计算存储单元或网络接口装置。
声明643、公开的实施例包括根据声明641所述的多功能装置,其中,所述装置使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明644、公开的实施例包括根据声明641所述的多功能装置,其中,所述多功能装置不向主机处理器公开所述装置。
声明645、公开的实施例包括根据声明641所述的多功能装置,其中,FHE电路被配置为:调用所述装置的能力。
声明646、公开的实施例包括根据声明645所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收请求,并且将所述请求发送到所述装置。
声明647、公开的实施例包括根据声明646所述的多功能装置,其中,所述多功能装置被配置为:从FHE电路接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到所述装置。
声明648、公开的实施例包括根据声明645所述的多功能装置,其中,FHE电路被配置为:在没有主机处理器的管理的情况下,调用所述装置的能力。
声明649、公开的实施例包括根据声明645所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收回复,并且将所述回复发送到FHE电路。
声明650、公开的实施例包括根据声明649所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明651、公开的实施例包括根据声明641所述的多功能装置,其中,存储装置被配置为:调用所述装置的能力。
声明652、公开的实施例包括根据声明651所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收请求,并且将所述请求发送到所述装置。
声明653、公开的实施例包括根据声明652所述的多功能装置,其中,所述多功能装置被配置为:从存储装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到所述装置。
声明654、公开的实施例包括根据声明651所述的多功能装置,其中,存储装置被配置为:在没有主机处理器的管理的情况下,调用所述装置的能力。
声明655、公开的实施例包括根据声明651所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收回复,并且将所述回复发送到存储装置。
声明656、公开的实施例包括根据声明655所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明657、公开的实施例包括根据声明641所述的多功能装置,其中,所述装置被配置为:调用存储装置或FHE电路的能力。
声明658、公开的实施例包括根据声明657所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收请求,并且将所述请求发送到存储装置或FHE电路。
声明659、公开的实施例包括根据声明658所述的多功能装置,其中,所述多功能装置被配置为:从所述装置接收所述请求,并且在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或FHE电路。
声明660、公开的实施例包括根据声明657所述的多功能装置,其中,所述装置被配置为:在没有主机处理器的管理的情况下,调用存储装置或FHE电路的能力。
声明661、公开的实施例包括根据声明657所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或FHE电路接收回复,并且将所述回复发送到所述装置。
声明662、公开的实施例包括根据声明661所述的多功能装置,其中,所述多功能装置被配置为:从存储装置或FHE电路接收所述回复,并且在不将所述回复发送到主机处理器的情况下,将所述回复发送到所述装置。
声明663、公开的实施例包括根据声明641所述的多功能装置,所述多功能装置还包括:
第一桥接器,连接第三连接器和第一连接器;以及
第二桥接器,连接第三连接器和第三连接器。
声明664、公开的实施例包括根据声明663所述的多功能装置,其中,第二桥接器支持在主机处理器与所述装置之间的请求的直通。
声明665、公开的实施例包括根据声明663所述的多功能装置,其中:
存储装置被配置为:经由第一连接器向所述多功能装置公开第一功能;
FHE电路被配置为:公开第二功能;
所述装置被配置为:经由第三连接器向所述多功能装置公开第三功能;
所述多功能装置被配置为:经由第二连接器向主机处理器公开第四功能和第五功能;
所述多功能装置被配置为:经由第三连接器向所述装置公开第四功能,并且向FHE电路公开第四功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第五功能,并且经由第三连接器向所述装置公开第五功能;
所述多功能装置被配置为:经由第一连接器向存储装置公开第六功能,并且向FHE电路公开第六功能;
第一桥接器被配置为:将使用第四功能的第一请求映射到使用第一功能的第二请求;并且
第二桥接器被配置为:将使用第五功能的第三请求映射到使用第三功能的第四请求。
声明666、公开的实施例包括根据声明663所述的多功能装置,所述多功能装置还包括:缓冲器,连接到第一桥接器、FHE电路和第二桥接器。
声明667、公开的实施例包括根据声明666所述的多功能装置,其中,第二桥接器被配置为:接收从所述装置发送的请求,并且将所述请求引导到缓冲器。
声明668、公开的实施例包括根据声明667所述的多功能装置,其中,所述装置不知道第二桥接器将所述请求重新引导到缓冲器。
声明669、公开的实施例包括根据声明667所述的多功能装置,其中,第二桥接器被配置为:至少部分地基于地址将所述请求引导到缓冲器,所述请求包括所述地址。
声明670、公开的实施例包括根据声明669所述的多功能装置,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明671、公开的实施例包括根据声明641所述的多功能装置,其中,所述多功能装置被配置为:至少部分地基于装置配置的列表,不向主机处理器公开所述装置。
声明672、公开的实施例包括一种方法,所述方法包括:
确定存储装置连接到多功能装置;
确定全同态加密(FHE)电路可用;
确定计算存储单元连接到多功能装置;
向连接到多功能装置的主机处理器公开存储装置;以及
选择性地向主机处理器公开FHE电路和计算存储单元。
声明673、公开的实施例包括根据声明672所述的方法,其中,多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明674、公开的实施例包括根据声明672所述的方法,其中,FHE电路使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明675、公开的实施例包括根据声明672所述的方法,其中,计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明676、公开的实施例包括根据声明672所述的方法,其中,存储装置包括固态驱动器(SSD)。
声明677、公开的实施例包括根据声明672所述的方法,其中,计算存储单元包括加速器电路、第二FHE电路或网络接口装置。
声明678、公开的实施例包括根据声明672所述的方法,其中,确定FHE电路可用的步骤包括:确定FHE电路连接到多功能装置。
声明679、公开的实施例包括根据声明678所述的方法,其中,确定FHE电路连接到多功能装置的步骤包括:确定FHE电路经由连接器连接到多功能装置。
声明680、公开的实施例包括根据声明672所述的方法,其中,确定FHE电路可用的步骤包括:确定FHE电路被集成到多功能装置中。
声明681、公开的实施例包括根据声明672所述的方法,其中
确定存储装置连接到多功能装置的步骤包括:确定存储装置经由第一连接器连接到多功能装置;并且
确定计算存储单元连接到多功能装置的步骤包括:确定计算存储单元经由第二连接器连接到多功能装置。
声明682、公开的实施例包括根据声明672所述的方法,其中,选择性地向连接到多功能装置的主机处理器公开FHE电路和计算存储单元的步骤包括:
向主机处理器公开FHE电路;以及
不向主机处理器公开计算存储单元。
声明683、公开的实施例包括根据声明672所述的方法,其中,选择性地向连接到多功能装置的主机处理器公开FHE电路和计算存储单元的步骤包括:
向主机处理器公开计算存储单元;以及
不向主机处理器公开FHE电路。
声明684、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置处从存储装置接收请求,以调用FHE电路或计算存储单元的能力;并且
将所述请求发送到FHE电路或计算存储单元。
声明685、公开的实施例包括根据声明684所述的方法,其中,将所述请求发送到FHE电路或计算存储单元的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到FHE电路或计算存储单元。
声明686、公开的实施例包括根据声明684所述的方法,其中,将所述请求发送到FHE电路或计算存储单元的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到FHE电路或计算存储单元。
声明687、公开的实施例包括根据声明684所述的方法,所述方法还包括:
在多功能装置处从FHE电路或计算存储单元接收回复;以及
将所述回复发送到存储装置。
声明688、公开的实施例包括根据声明687所述的方法,其中,将所述回复发送到存储装置的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明689、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置处从FHE电路接收请求,以调用存储装置或计算存储单元的能力;以及
将所述请求发送到存储装置或计算存储单元。
声明690、公开的实施例包括根据声明689所述的方法,其中,将所述请求发送到存储装置或计算存储单元的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或计算存储单元。
声明691、公开的实施例包括根据声明689所述的方法,其中,将所述请求发送到存储装置或计算存储单元的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或计算存储单元。
声明692、公开的实施例包括根据声明689所述的方法,所述方法还包括:
在多功能装置处从存储装置或计算存储单元接收回复;以及
将所述回复发送到FHE电路。
声明693、公开的实施例包括根据声明692所述的方法,其中,将所述回复发送到FHE电路的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明694、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置处从计算存储单元接收请求,以调用存储装置或FHE电路的能力;以及
将所述请求发送到存储装置或FHE电路。
声明695、公开的实施例包括根据声明694所述的方法,其中,将所述请求发送到存储装置或FHE电路的步骤包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或FHE电路。
声明696、公开的实施例包括根据声明694所述的方法,其中,将所述请求发送到存储装置或FHE电路的步骤包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或FHE电路。
声明697、公开的实施例包括根据声明694所述的方法,所述方法还包括:
在多功能装置处从存储装置或FHE电路接收回复;以及
将所述回复发送到计算存储单元。
声明698、公开的实施例包括根据声明697所述的方法,其中,将所述回复发送到计算存储单元的步骤包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到计算存储单元。
声明699、公开的实施例包括根据声明672所述的方法,所述方法还包括:
由存储装置访问多功能装置中的缓冲器中的数据;以及
由FHE电路访问多功能装置中的缓冲器中的所述数据。
声明700、公开的实施例包括根据声明699所述的方法,所述方法还包括:
由计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明701、公开的实施例包括根据声明699所述的方法,其中:
缓冲器包括地址范围;并且
所述方法还包括:从主机处理器确定缓冲器的地址范围。
声明702、公开的实施例包括根据声明699所述的方法,其中:
由存储装置访问多功能装置中的缓冲器中的所述数据的步骤包括:由存储装置使用第一协议访问多功能装置中的缓冲器中的所述数据;并且
由FHE电路访问多功能装置中的缓冲器中的所述数据的步骤包括:由FHE电路使用第二协议访问多功能装置中的缓冲器中的所述数据。
声明703、公开的实施例包括根据声明702所述的方法,其中:
第一协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个;并且
第二协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明704、公开的实施例包括根据声明702所述的方法,所述方法还包括:由计算存储单元使用第三协议访问多功能装置中的缓冲器中的所述数据。
声明705、公开的实施例包括根据声明704所述的方法,其中,第三协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明706、公开的实施例包括根据声明699所述的方法,所述方法还包括:使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明707、公开的实施例包括根据声明706所述的方法,其中,使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求,使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明708、公开的实施例包括根据声明707所述的方法,其中:
所述方法还包括:
确定功能由数据处理器公开;以及
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:从主机处理器、存储装置、FHE电路和计算存储单元中的至少一个接收所述请求,所述请求触发所述功能。
声明709、公开的实施例包括根据声明708所述的方法,其中,确定所述功能由数据处理器公开的步骤包括:确定外围组件互连快速(PCIe)功能由数据处理器公开。
声明710、公开的实施例包括根据声明709所述的方法,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明711、公开的实施例包括根据声明707所述的方法,其中:
所述方法还包括:
确定功能由数据处理器公开;以及
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的步骤包括:
从主机处理器、存储装置、FHE电路和计算存储单元中的至少一个接收所述请求,所述请求触发第二功能;以及
触发数据处理器的所述功能。
声明712、公开的实施例包括根据声明711所述的方法,其中,触发数据处理器的所述功能的步骤包括:将第二功能映射到数据处理器的所述功能。
声明713、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收请求;以及
通过桥接器将所述请求传递到主机处理器、存储装置、FHE电路或计算存储单元。
声明714、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收请求,所述请求触发由存储装置、FHE电路或计算存储单元公开的功能;以及
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、FHE电路或计算存储单元。
声明715、公开的实施例包括根据声明714所述的方法,其中,在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求的步骤包括:
在多功能装置处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求;以及
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求发送到桥接器。
声明716、公开的实施例包括根据声明714所述的方法,其中:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求,所述请求触发由多功能装置公开的第二功能;
所述方法还包括:将第二功能映射到由存储装置、FHE电路或计算存储单元公开的所述功能;以及
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、FHE电路或计算存储单元。
声明717、公开的实施例包括根据声明716所述的方法,其中,在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求的步骤包括:
在多功能装置处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求;以及
至少部分地基于由多功能装置公开的第二功能,将所述请求发送到桥接器。
声明718、公开的实施例包括根据声明714所述的方法,其中,多功能装置不向主机处理器公开所述功能。
声明719、公开的实施例包括根据声明672所述的方法,所述方法还包括:
在多功能装置的桥接器处从存储装置、FHE电路或计算存储单元接收请求;以及
将所述请求从桥接器发送到多功能装置的缓冲器。
声明720、公开的实施例包括根据声明719所述的方法,其中,所述请求从存储装置、FHE电路或计算存储单元被发送到主机处理器。
声明721、公开的实施例包括根据声明719所述的方法,其中,将所述请求从桥接器发送到多功能装置的缓冲器的步骤包括:在不通知存储装置、FHE电路或计算存储单元的情况下,将所述请求从桥接器发送到多功能装置的缓冲器。
声明722、公开的实施例包括根据声明719所述的方法,其中,将所述请求从桥接器发送到多功能装置的缓冲器的步骤包括:至少部分地基于地址,将所述请求从桥接器发送到多功能装置的缓冲器,所述请求包括所述地址。
声明723、公开的实施例包括根据声明722所述的方法,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明724、公开的实施例包括根据声明723所述的方法,所述方法还包括:从主机处理器接收缓冲器的地址范围。
声明725、公开的实施例包括根据声明672所述的方法,其中:
向连接到多功能装置的主机处理器公开存储装置的步骤包括:至少部分地基于装置配置的列表,向连接到多功能装置的主机处理器公开存储装置;并且
选择性地向主机处理器公开FHE电路和计算存储单元的步骤包括:至少部分地基于装置配置的列表,选择性地向主机处理器公开FHE电路和计算存储单元。
声明726、公开的实施例包括根据声明725所述的方法,其中,所述方法还包括:从多功能装置的存储设备访问装置配置的列表。
声明727、公开的实施例包括根据声明726所述的方法,其中,从多功能装置的存储设备访问装置配置的列表的步骤包括:从多功能装置的持久性存储设备访问装置配置的列表。
声明728、公开的实施例包括根据声明725所述的方法,所述方法还包括:
确定装置连接到多功能装置;
确定所述装置的配置;以及
至少部分地基于所述装置的配置来更新装置配置的列表。
声明729、公开的实施例包括根据声明728所述的方法,其中,所述装置包括第二存储装置、第二计算存储单元、第二FHE电路或网络接口装置。
声明730、公开的实施例包括根据声明728所述的方法,其中,至少部分地基于所述装置的配置来更新装置配置的列表的步骤包括:确定装置配置的列表省略所述装置的配置。
声明731、公开的实施例包括根据声明672所述的方法,所述方法还包括:用装置替换存储装置。
声明732、公开的实施例包括根据声明672所述的方法,所述方法还包括:用装置替换FHE电路。
声明733、公开的实施例包括根据声明672所述的方法,所述方法还包括:用装置替换计算存储单元。
声明734、公开的实施例包括根据声明672所述的方法,其中,多功能装置使用以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个与存储装置通信。
声明735、公开的实施例包括根据声明672所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与FHE电路通信。
声明736、公开的实施例包括根据声明672所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与计算存储单元通信。
声明737、公开的实施例包括根据声明672所述的方法,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与主机处理器通信。
声明738、公开的实施例包括一种包括非暂时性存储介质的物品,非暂时性存储介质具有存储在其上的指令,当所述指令被机器执行时,使得:
确定存储装置连接到多功能装置;
确定全同态加密(FHE)电路可用;
确定计算存储单元连接到多功能装置;
向连接到多功能装置的主机处理器公开存储装置;并且
选择性地向主机处理器公开FHE电路和计算存储单元。
声明739、公开的实施例包括根据声明738所述的物品,其中,多功能装置使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、片上系统(SoC)、图形处理器(GPU)、通用GPU(GPGPU)、中央处理器(CPU)、张量处理器(TPU)和神经处理器(NPU)中的至少一个来实现。
声明740、公开的实施例包括根据声明738所述的物品,其中,FHE电路使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明741、公开的实施例包括根据声明738所述的物品,其中,计算存储单元使用FPGA、ASIC、SoC、GPU、GPGPU、CPU、TPU和NPU中的至少一个来实现。
声明742、公开的实施例包括根据声明738所述的物品,其中,存储装置包括固态驱动器(SSD)。
声明743、公开的实施例包括根据声明738所述的物品,其中,计算存储单元包括加速器电路、第二FHE电路或网络接口装置。
声明744、公开的实施例包括根据声明738所述的物品,其中,确定FHE电路可用的处理包括:确定FHE电路连接到多功能装置。
声明745、公开的实施例包括根据声明744所述的物品,其中,确定FHE电路连接到多功能装置的处理包括:确定FHE电路经由连接器连接到多功能装置。
声明746、公开的实施例包括根据声明738所述的物品,其中,确定FHE电路可用的处理包括:确定FHE电路被集成到多功能装置中。
声明747、公开的实施例包括根据声明738所述的物品,其中:
确定存储装置连接到多功能装置的处理包括:确定存储装置经由第一连接器连接到多功能装置;并且
确定计算存储单元连接到多功能装置的处理包括:确定计算存储单元经由第二连接器连接到多功能装置。
声明748、公开的实施例包括根据声明738所述的物品,其中,选择性地向连接到多功能装置的主机处理器公开FHE电路和计算存储单元的处理包括:
向主机处理器公开FHE电路;以及
不向主机处理器公开计算存储单元。
声明749、公开的实施例包括根据声明738所述的物品,其中,选择性地向连接到多功能装置的主机处理器公开FHE电路和计算存储单元的处理包括:
向主机处理器公开计算存储单元;以及
不向主机处理器公开FHE电路。
声明750、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置接收请求,以调用FHE电路或计算存储单元的能力;并且
将所述请求发送到FHE电路或计算存储单元。
声明751、公开的实施例包括根据声明750所述的物品,其中,将所述请求发送到FHE电路或计算存储单元的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到FHE电路或计算存储单元。
声明752、公开的实施例包括根据声明750所述的物品,其中,将所述请求发送到FHE电路或计算存储单元的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到FHE电路或计算存储单元。
声明753、公开的实施例包括根据声明750所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从FHE电路或计算存储单元接收回复;并且
将所述回复发送到存储装置。
声明754、公开的实施例包括根据声明753所述的物品,其中,将所述回复发送到存储装置的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到存储装置。
声明755、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从FHE电路接收请求,以调用存储装置或计算存储单元的能力;并且
将所述请求发送到存储装置或计算存储单元。
声明756、公开的实施例包括根据声明755所述的物品,其中,将所述请求发送到存储装置或计算存储单元的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或计算存储单元。
声明757、公开的实施例包括根据声明755所述的物品,其中,将所述请求发送到存储装置或计算存储单元的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或计算存储单元。
声明758、公开的实施例包括根据声明755所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置或计算存储单元接收回复;并且
将所述回复发送到FHE电路。
声明759、公开的实施例包括根据声明758所述的物品,其中,将所述回复发送到FHE电路的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到FHE电路。
声明760、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从计算存储单元接收请求,以调用存储装置或FHE电路的能力;并且
将所述请求发送到存储装置或FHE电路。
声明761、公开的实施例包括根据声明760所述的物品,其中,将所述请求发送到存储装置或FHE电路的处理包括:在不将所述请求发送到主机处理器的情况下,将所述请求发送到存储装置或FHE电路。
声明762、公开的实施例包括根据声明760所述的物品,其中,将所述请求发送到存储装置或FHE电路的处理包括:在没有主机处理器的管理的情况下,将所述请求发送到存储装置或FHE电路。
声明763、公开的实施例包括根据声明760所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置处从存储装置或FHE电路接收回复;并且
将所述回复发送到计算存储单元。
声明764、公开的实施例包括根据声明763所述的物品,其中,将所述回复发送到计算存储单元的处理包括:在不将所述回复发送到主机处理器的情况下,将所述回复发送到计算存储单元。
声明765、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由存储装置访问多功能装置中的缓冲器中的数据;并且
由FHE电路访问多功能装置中的缓冲器中的所述数据。
声明766、公开的实施例包括根据声明765所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
由计算存储单元访问多功能装置中的缓冲器中的所述数据。
声明767、公开的实施例包括根据声明765所述的物品,其中:
缓冲器包括地址范围;并且
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从主机处理器确定缓冲器的地址范围。
声明768、公开的实施例包括根据声明765所述的物品,其中:
由存储装置访问多功能装置中的缓冲器中的所述数据的处理包括:由存储装置使用第一协议访问多功能装置中的缓冲器中的所述数据;并且
由FHE电路访问多功能装置中的缓冲器中的所述数据的处理包括:由FHE电路使用第二协议访问多功能装置中的缓冲器中的所述数据。
声明769、公开的实施例包括根据声明768所述的物品,其中:
第一协议包括文件读取协议、文件写入协议、直接存储器访问(DMA)协议和非易失性存储器快速(NVMe)协议中的至少一个;并且
第二协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明770、公开的实施例包括根据声明768所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:由计算存储单元使用第三协议访问多功能装置中的缓冲器中的所述数据。
声明771、公开的实施例包括根据声明770所述的物品,其中,第三协议包括文件读取协议、文件写入协议、DMA协议和NVMe协议中的至少一个。
声明772、公开的实施例包括根据声明765所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明773、公开的实施例包括根据声明772所述的物品,其中,使用多功能装置的数据处理器来处理缓冲器中的所述数据的处理包括:至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求,使用多功能装置的数据处理器来处理缓冲器中的所述数据。
声明774、公开的实施例包括根据声明773所述的物品,其中:
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定功能由数据处理器公开;并且
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的处理包括:从主机处理器、存储装置、FHE电路和计算存储单元中的至少一个接收所述请求,所述请求触发所述功能。
声明775、公开的实施例包括根据声明774所述的物品,其中,确定所述功能由数据处理器公开的处理包括:确定外围组件互连快速(PCIe)功能由数据处理器公开。
声明776、公开的实施例包括根据声明775所述的物品,其中,PCIe功能包括第一物理功能(PF)或第一虚拟功能(VF)。
声明777、公开的实施例包括根据声明773所述的物品,其中:
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定功能由数据处理器公开;并且
由多功能装置公开所述功能;并且
至少部分地基于来自主机处理器、存储装置、FHE电路和计算存储单元中的至少一个的请求而使用多功能装置的数据处理器来处理缓冲器中的所述数据的处理包括:
从主机处理器、存储装置、FHE电路和计算存储单元中的至少一个接收所述请求,所述请求触发第二功能;并且
触发数据处理器的所述功能。
声明778、公开的实施例包括根据声明777所述的物品,其中,触发数据处理器的所述功能的处理包括:将第二功能映射到数据处理器的所述功能。
声明779、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收请求;并且
通过桥接器将所述请求传递到主机处理器、存储装置、FHE电路或计算存储单元。
声明780、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收请求,所述请求触发由存储装置、FHE电路或计算存储单元公开的功能;并且
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、FHE电路或计算存储单元。
声明781、公开的实施例包括根据声明780所述的物品,其中,在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求的处理包括:
在多功能装置处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求;以及
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求发送到桥接器。
声明782、公开的实施例包括根据声明780所述的物品,其中:
在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求,所述请求触发由多功能装置公开的第二功能;
非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:将第二功能映射到由存储装置、FHE电路或计算存储单元公开的所述功能;并且
至少部分地基于由存储装置、FHE电路或计算存储单元公开的所述功能,将所述请求从桥接器发送到存储装置、FHE电路或计算存储单元。
声明783、公开的实施例包括根据声明782所述的物品,其中,在多功能装置的桥接器处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求的处理包括:
在多功能装置处从主机处理器、存储装置、FHE电路或计算存储单元接收所述请求;并且
至少部分地基于由多功能装置公开的第二功能,将所述请求发送到桥接器。
声明784、公开的实施例包括根据声明780所述的物品,其中,多功能装置不将向主机处理器公开所述功能。
声明785、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
在多功能装置的桥接器处从存储装置、FHE电路或计算存储单元接收请求;并且
将所述请求从桥接器发送到多功能装置的缓冲器。
声明786、公开的实施例包括根据声明785所述的物品,其中,所述请求从存储装置、FHE电路或计算存储单元被发送到主机处理器。
声明787、公开的实施例包括根据声明785所述的物品,其中,将所述请求从桥接器发送到多功能装置的缓冲器的处理包括:在不通知存储装置、FHE电路或计算存储单元的情况下,将所述请求从桥接器发送到多功能装置的缓冲器。
声明788、公开的实施例包括根据声明785所述的物品,其中,将所述请求从桥接器发送到多功能装置的缓冲器的处理包括:至少部分地基于地址,将所述请求从桥接器发送到多功能装置的缓冲器,所述请求包括所述地址。
声明789、公开的实施例包括根据声明788所述的物品,其中,缓冲器包括地址范围,地址范围包括所述地址。
声明790、公开的实施例包括根据声明789所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从主机处理器接收缓冲器的地址范围。
声明791、公开的实施例包括根据声明738所述的物品,其中:
向连接到多功能装置的主机处理器公开存储装置的处理包括:至少部分地基于装置配置的列表,向连接到多功能装置的主机处理器公开存储装置;并且
选择性地向主机处理器公开FHE电路和计算存储单元的处理包括:至少部分地基于装置配置的列表,选择性地向主机处理器公开FHE电路和计算存储单元。
声明792、公开的实施例包括根据声明791所述的物品,其中,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:从多功能装置的存储设备访问装置配置的列表。
声明793、公开的实施例包括根据声明792所述的物品,其中,从多功能装置的存储设备访问装置配置的列表的处理包括:从多功能装置的持久性存储设备访问装置配置的列表。
声明794、公开的实施例包括根据声明791所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:
确定装置连接到多功能装置;
确定所述装置的配置;并且
至少部分地基于所述装置的配置来更新装置配置的列表。
声明795、公开的实施例包括根据声明794所述的物品,其中,所述装置包括第二存储装置、第二计算存储单元、第二FHE电路或网络接口装置。
声明796、公开的实施例包括根据声明794所述的物品,其中,至少部分地基于所述装置的配置来更新装置配置的列表的处理包括:确定装置配置的列表省略所述装置的配置。
声明797、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换存储装置。
声明798、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换FHE电路。
声明799、公开的实施例包括根据声明738所述的物品,非暂时性存储介质具有存储在其上的更多指令,当所述更多指令被机器执行时,使得:用装置替换计算存储单元。
声明800、公开的实施例包括根据声明738所述的物品,其中,多功能装置使用以太网协议、传输控制协议/互联网协议(TCP/IP)协议、远程DMA(RDMA)协议、NVMe协议、通过网络的NVMe(NVMe-oF)协议、通用闪存(UFS)协议、嵌入式多媒体卡(eMMC)协议、串行附接小型计算机系统接口(SCSI)(SAS)协议和串行AT附接(SATA)协议中的至少一个与存储装置通信。
声明801、公开的实施例包括根据声明738所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与FHE电路通信。
声明802、公开的实施例包括根据声明738所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与计算存储单元通信。
声明803、公开的实施例包括根据声明738所述的物品,其中,多功能装置使用以太网协议、TCP/IP协议、RDMA协议、NVMe协议、NVMe-oF协议、UFS协议、eMMC协议、SAS协议和SATA协议中的至少一个与主机处理器通信。
因此,鉴于在此描述的对实施例的广泛的各种置换,本具体实施方式和所附材料意在仅是说明性的,并且不应视为限制公开的范围。因此,公开所要求保护的是可进入所附权利要求及其等同物的范围和精神内的全部这样的修改。

Claims (20)

1.一种多功能装置,包括:
第一连接器,用于与存储装置通信;
第二连接器,用于与第一计算存储单元通信;
第三连接器,用于与第二计算存储单元通信;以及
第四连接器,用于与主机处理器通信;
其中,经由第四连接器向主机处理器公开存储装置和第一计算存储单元。
2.根据权利要求1所述的多功能装置,其中,
存储装置经由第一连接器来调用第一计算存储单元或第二计算存储单元的能力;
第一计算存储单元经由第二连接器来调用存储装置或第二计算存储单元的能力;并且
第二计算存储单元经由第三连接器来调用存储装置或第一计算存储单元的能力。
3.根据权利要求2所述的多功能装置,其中,
经由第一连接器从存储装置接收请求,并且经由第二连接器将所述请求发送到第一计算存储单元或经由第三连接器将所述请求发送到第二计算存储单元;
经由第二连接器从第一计算存储单元接收请求,并且经由第一连接器将所述请求发送到存储装置或经由第三连接器将所述请求发送到第二计算存储单元;并且
经由第三连接器从第二计算存储单元接收请求,并且经由第一连接器将所述请求发送到存储装置或经由第二连接器将所述请求发送到第一计算存储单元。
4.根据权利要求1所述的多功能装置,还包括:缓冲器,连接到存储装置、第一计算存储单元和第二计算存储单元。
5.根据权利要求4所述的多功能装置,其中,存储装置、第一计算存储单元和第二计算存储单元被配置为:访问缓冲器中的数据。
6.根据权利要求4所述的多功能装置,还包括连接到缓冲器的数据处理器,数据处理器被配置为处理缓冲器中的数据。
7.根据权利要求4所述的多功能装置,其中:
所述多功能装置还包括:
第一桥接器,连接第四连接器和第一连接器,
第二桥接器,连接第四连接器和第二连接器,以及
第三桥接器,连接第四连接器和第三连接器;并且
缓冲器连接到第一桥接器、第二桥接器和第三桥接器;
第一桥接器被配置为:经由第一连接器从存储装置接收请求,并且将所述请求引导到缓冲器;
第二桥接器被配置为:经由第二连接器从第一计算存储单元接收请求,并且将所述请求引导到缓冲器;并且
第三桥接器被配置为:经由第三连接器从第二计算存储单元接收请求,并且将所述请求引导到缓冲器。
8.根据权利要求1所述的多功能装置,其中:
所述多功能装置还包括用于装置配置的列表的存储设备,装置配置的列表包括用于存储装置的第一条目、用于第一计算存储单元的第二条目和用于第二计算存储单元的第三条目;
经由第二连接器向主机处理器公开至少部分地基于装置配置的列表而被选择进行公开的第一计算存储单元;并且
经由第三连接器向主机处理器公开至少部分地基于装置配置的列表而被选择进行公开的第二计算存储单元。
9.根据权利要求8所述的多功能装置,其中,所述多功能装置还包括:数据处理器,被配置为检测连接到第二连接器和第三连接器中的至少一个的装置,确定所述装置的配置,并且至少部分地基于所述装置的配置来更新装置配置的列表。
10.一种多功能装置,包括:
第一连接器,用于与存储装置通信;
第一计算存储单元,被集成到所述多功能装置中;
第二连接器,用于与第二计算存储单元通信;以及
第三连接器,用于与主机处理器通信;
其中,经由第三连接器向主机处理器公开第一计算存储单元和第二计算存储单元中的至少一个和存储装置。
11.根据权利要求10所述的多功能装置,其中,
存储装置经由第一连接器来调用第一计算存储单元或第二计算存储单元的能力;
第一计算存储单元经由第一连接器来调用存储装置的能力,或者经由第二连接器来调用第二计算存储单元的能力;并且
第二计算存储单元经由第二连接器来调用存储装置或第一计算存储单元的能力。
12.根据权利要求10所述的多功能装置,还包括:缓冲器,连接到存储装置、第一计算存储单元和第二计算存储单元。
13.根据权利要求12所述的多功能装置,其中,存储装置、第一计算存储单元和第二计算存储单元被配置为:访问缓冲器中的数据。
14.根据权利要求12所述的多功能装置,还包括连接到缓冲器的数据处理器,数据处理器被配置为处理缓冲器中的数据。
15.根据权利要求12所述的多功能装置,其中:
所述多功能装置还包括:
第一桥接器,连接第三连接器和第一连接器,以及
第二桥接器,连接第三连接器和第二连接器;并且
缓冲器连接到第一桥接器、第二桥接器和第一计算存储单元;
第一桥接器被配置为:经由第一连接器从存储装置接收请求,并且将所述请求引导到缓冲器;并且
第二桥接器被配置为:经由第二连接器从第二计算存储单元接收请求,并且将所述请求引导到缓冲器。
16.根据权利要求10所述的多功能装置,还包括用于装置配置的列表的存储设备,装置配置的列表包括用于存储装置的第一条目、用于第一计算存储单元的第二条目和用于第二计算存储单元的第三条目,
其中,向主机处理器公开至少部分地基于装置配置的列表而被选择进行公开的第一计算存储单元和;并且
经由第二连接器向主机处理器公开至少部分地基于装置配置的列表而被选择进行公开的第二计算存储单元。
17.根据权利要求16所述的多功能装置,其中,所述多功能装置还包括:数据处理器,被配置为检测连接到第一连接器和第二连接器中的至少一个的装置,确定所述装置的配置,并且更新装置配置的列表。
18.一种用于多功能装置的方法,包括:
确定存储装置连接到多功能装置;
确定第一计算存储单元与多功能装置通信;
确定第二计算存储单元连接到多功能装置;
向连接到多功能装置的主机处理器公开存储装置;以及
选择性地向主机处理器公开第一计算存储单元和第二计算存储单元中的至少一个。
19.根据权利要求18所述的方法,其中,第一计算存储单元被集成到多功能装置中。
20.根据权利要求18所述的方法,还包括:
确定装置连接到多功能装置;
确定所述装置的配置;以及
至少部分地基于所述装置的配置来更新装置配置的列表。
CN202311072587.2A 2022-09-02 2023-08-23 多功能装置和用于多功能装置的方法 Pending CN117648203A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US63/403,682 2022-09-02
US63/403,679 2022-09-02
US18/074,360 2022-12-02
US18/108,575 US20230195320A1 (en) 2021-12-21 2023-02-10 Systems and methods for integrating a compute resource with a storage device
US18/108,575 2023-02-10

Publications (1)

Publication Number Publication Date
CN117648203A true CN117648203A (zh) 2024-03-05

Family

ID=90043900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311072587.2A Pending CN117648203A (zh) 2022-09-02 2023-08-23 多功能装置和用于多功能装置的方法

Country Status (1)

Country Link
CN (1) CN117648203A (zh)

Similar Documents

Publication Publication Date Title
CN110232037B (zh) 主机系统及其方法和加速装置
CN105993009B (zh) 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置
CN112054963A (zh) 用于异构计算环境中的数据传输的网络接口
KR101747966B1 (ko) 자율 서브시스템 아키텍처
US10564898B2 (en) System and method for storage device management
US20220066799A1 (en) Mechanism to discover computational storage functions and devices
CN111143234A (zh) 存储设备、包括这种存储设备的系统及其操作方法
US11513977B2 (en) Pipelined data processing in fabric-enabled computational storage
US11907120B2 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US11029847B2 (en) Method and system for shared direct access storage
US20230198740A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
US20230195320A1 (en) Systems and methods for integrating a compute resource with a storage device
TW202341347A (zh) 多功能裝置、操作其的方法及用於其的物品
US20160267050A1 (en) Storage subsystem technologies
CN117648203A (zh) 多功能装置和用于多功能装置的方法
CN117648052A (zh) 多功能装置和用于多功能装置的方法
EP4332748A1 (en) Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device
EP4332747A1 (en) Systems and methods for integrating a compute resource with a storage device
US9529721B2 (en) Control device, and storage system
US11281612B2 (en) Switch-based inter-device notational data movement system
US20160266813A1 (en) Storage subsystem technologies
CN116701247A (zh) 基于缓存一致性的互连的近数据处理加速器
CN117337425A (zh) 存储装置、方法及电子设备
WO2016170632A1 (ja) 計算機及び電源制御方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication