CN117032555A - 用于管理设备存储器和程序的系统、方法和装置 - Google Patents
用于管理设备存储器和程序的系统、方法和装置 Download PDFInfo
- Publication number
- CN117032555A CN117032555A CN202310511911.XA CN202310511911A CN117032555A CN 117032555 A CN117032555 A CN 117032555A CN 202310511911 A CN202310511911 A CN 202310511911A CN 117032555 A CN117032555 A CN 117032555A
- Authority
- CN
- China
- Prior art keywords
- memory
- program
- computing
- portions
- namespace
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 365
- 238000000034 method Methods 0.000 title description 66
- 230000006870 function Effects 0.000 claims description 87
- 238000004891 communication Methods 0.000 claims description 40
- 238000003860 storage Methods 0.000 description 68
- 230000007246 mechanism Effects 0.000 description 49
- 238000007726 management method Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 13
- 230000008901 benefit Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 5
- 230000003213 activating effect Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 4
- AGJBKFAPBKOEGA-UHFFFAOYSA-M 2-methoxyethylmercury(1+);acetate Chemical compound COCC[Hg]OC(C)=O AGJBKFAPBKOEGA-UHFFFAOYSA-M 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000036316 preload Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002195 synergetic effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
一种设备可以包括:设备存储器和设备功能电路,其中设备功能电路的至少一部分可以能够访问设备存储器的至少一部分;以及被配置为提供信息的控制电路,其中该信息可以指示设备功能电路的至少一部分可以能够访问设备存储器的至少一部分。另外地或替代地,控制电路可以被配置为接收至少一个请求,并且基于至少一个请求执行配置操作,其中配置操作可以包括配置设备存储器的至少一部分以由设备功能电路的至少一部分访问。
Description
对相关申请的交叉引用
本申请要求于2022年5月8日提交的美国临时专利申请序列号63/339,506的优先权和权益,其通过引用并入本文。
技术领域
本公开总体上涉及设备,并且更具体地涉及用于管理设备存储器和程序的系统、方法和装置。
背景技术
诸如加速器、存储设备等的设备可以为诸如主机的另一设备执行一个或多个操作。例如,加速器可以使用由主机提供的数据来执行计算。作为另一示例,存储设备可以存储由主机提供的数据。诸如加速器、存储设备等的设备可以使用设备存储器来实现一个或多个操作。
在该背景技术部分中公开的上述信息仅用于增强对本发明原理的背景技术的理解,因此它可以包含不构成现有技术的信息。
发明内容
一种设备可以包括设备存储器和设备功能电路,其中设备功能电路的至少一部分能够访问设备存储器的至少一部分,以及被配置为提供信息的控制电路,其中信息指示设备功能电路的至少一部分能够访问设备存储器的至少一部分。信息还可以指示设备存储器的至少一部分的特性。设备还可以包括通信接口,其中控制电路可以被配置为使用通信接口提供信息。控制电路可以被配置为使用通信接口接收请求,并且基于该请求提供信息。设备存储器的该部分可以是设备存储器的第一部分,并且该信息可以指示设备功能电路的该至少一部分能够访问设备存储器的第二部分。设备功能电路的该部分可以是设备功能电路的第一部分,并且该信息可以指示设备功能电路的第二部分能够访问设备存储器的至少一部分。设备功能电路的至少一部分的第一部分可以被配置为第一命名空间,并且设备存储器的至少一部分的第二部分可以被配置为第二命名空间。
设备可以包括设备存储器和设备功能电路,其中设备功能电路的至少一部分能够访问设备存储器的至少一部分,以及控制电路,其被配置为接收至少一个请求,并且基于至少一个请求执行配置操作,其中配置操作可以包括配置设备存储器的至少一部分以由设备功能电路的至少一部分访问。配置操作可以包括接收配置信息,并且将配置信息提供给与设备功能电路的至少一部分相关联的存储器控制设备。配置操作可以包括将设备存储器的至少一部分分配给设备功能电路的至少一部分。所述设备可进一步包含通信接口,其中所述控制电路可经配置以使用所述通信接口接收所述请求。设备存储器的部分可以是设备存储器的第一部分,并且控制电路可以被配置为基于至少一个请求来配置设备存储器的第二部分以由设备功能电路的至少一部分访问。设备功能电路的该部分可以是设备功能电路的第一部分,并且控制电路可以被配置为基于至少一个请求将设备存储器的该至少一部分配置为由设备功能电路的第二部分访问。设备功能电路的至少一部分的第一部分可以被配置为第一命名空间,并且设备存储器的至少一部分的第二部分可以被配置为第二命名空间。设备功能电路的该部分可以包括计算引擎和被配置为使用计算引擎的程序。
设备可以包括至少一个计算资源和控制电路,控制电路被配置为接收程序,将程序与至少一个计算资源的第一计算命名空间相关联,并且将程序与至少一个计算资源的第二计算命名空间相关联。该设备还可以包括通信接口,其中控制电路可以被配置为使用通信接口接收程序。控制电路可以被配置为使用通信接口提供关于程序的信息。控制电路可以被配置为将至少一个计算资源的至少第一部分配置为第一计算命名空间,并且将至少一个计算资源的至少第二部分配置为第二计算命名空间。控制电路可以被配置为接收命令,并且基于该命令接收程序。
一种方法可以包括在设备处接收对信息的请求,其中该设备包括设备存储器和设备功能电路,以及基于该请求提供该信息,其中该信息指示设备功能电路的至少一部分能够访问设备存储器的至少一部分。该信息还可以指示设备存储器的至少一部分的特性。所述设备可进一步包含通信接口,且所述提供可至少部分地使用所述通信接口来执行。所述接收可以至少部分地使用所述通信接口来执行。设备存储器的至少一部分可以包括设备存储器的第一部分,并且其中该信息可以指示设备功能电路的至少一部分能够访问设备存储器的第二部分。所述设备功能电路的所述至少一部分可以包括所述设备功能电路的第一部分,并且其中,所述信息可以指示所述设备功能电路的第二部分能够访问所述设备存储器的所述至少一部分。设备功能电路的至少一部分的第一部分可以被配置为第一命名空间,并且设备存储器的至少一部分的第二部分可以被配置为第二命名空间。
一种方法可以包括在设备处接收至少一个请求,其中该设备可以包括设备存储器和设备功能电路,以及基于该至少一个请求执行配置操作,其中该配置操作可以包括配置设备存储器的至少一部分以由设备功能电路的至少一部分访问。配置操作可以包括在设备处接收配置信息,以及将配置信息提供给与设备功能电路的至少一部分相关联的存储器控制设备。配置操作可以包括将设备存储器的至少一部分分配给设备功能电路的至少一部分。所述设备可进一步包含通信接口,且可至少部分地使用所述通信接口接收所述至少一个请求。设备存储器的该部分可以是设备存储器的第一部分,并且该方法还可以包括基于至少一个请求来配置设备存储器的第二部分以由设备功能电路的该至少一部分访问。所述设备功能电路的所述部分可以是所述设备功能电路的第一部分,并且所述方法还可以包括:基于所述至少一个请求,将所述设备存储器的所述至少一部分配置为由所述设备功能电路的第二部分访问。设备功能电路的至少一部分的第一部分可以被配置为第一命名空间,并且设备存储器的至少一部分的第二部分可以被配置为第二命名空间。设备功能电路的该部分可以包括计算引擎和被配置为使用计算引擎的程序。
一种方法可以包括在设备处接收程序,其中该设备可以包括至少一个计算资源,将程序与至少一个计算资源的第一计算命名空间相关联,以及将程序与至少一个计算资源的第二计算命名空间相关联。该设备还可以包括通信接口,并且可以至少部分地使用通信接口来接收程序。该方法还可以包括使用通信接口提供关于程序的信息。该方法还可以包括将至少一个计算资源的至少第一部分配置为第一计算命名空间,以及将至少一个计算资源的至少第二部分配置为第二计算命名空间。该方法还可以包括在设备处接收命令,并且接收程序可以基于该命令。
附图说明
附图不一定按比例绘制,并且在整个附图中,出于说明性目的,类似结构或功能的元件通常可以由相同的附图标记或其部分表示。附图仅旨在便于描述本文描述的各种实施例。附图没有描述本文公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,可能未示出所有部件、连接等,并且可能未示出所有部件都具有附图标记。然而,部件配置的图案可以从附图中容易地显而易见。附图与说明书一起示出本公开的示例实施例,并且与说明书一起用于解释本公开的原理。
图1示出根据本公开的示例实施例的具有设备存储器的设备的实施例。
图2示出根据本公开的示例实施例的具有命名空间的计算存储设备的实施例。
图3示出根据本公开的示例实施例的包括发现机制的设备的实施例。
图4图示根据本公开的示例实施例的发现设备存储器命令的示例实施例。
图5示出根据本公开的示例实施例的包括管理机制的设备的实施例。
图6示出根据本公开的示例实施例的配置存储器命令的第一示例实施例。
图7示出根据本公开的示例实施例的配置存储器命令的第二示例实施例。
图8示出根据本公开的示例实施例的包括发现机制和管理机制的设备的实施例。
图9示出具有根据本公开的示例实施例配置的设备存储器的设备的示例实施例。
图10示出根据本公开的示例实施例的包括具有计算和程序资源的计算设备的系统的实施例。
图11示出根据本公开的示例实施例的包括具有可加载程序资源的计算设备的系统的实施例。
图12示出根据本公开的示例实施例的包括能够将程序资源加载到程序存储库的计算设备的系统的实施例。
图13示出根据本发明的实例实施例的主机装置的示例实施例。
图14示出根据本公开的示例实施例的设备的示例实施例。
图15示出根据本公开的示例实施例的用于提供设备存储器信息的方法的实施例。
图16示出根据本公开的示例实施例的用于配置设备存储器的方法的实施例。
图17示出根据本公开的示例实施例的用于将程序资源加载到设备的方法的实施例。
具体实施方式
诸如加速器、存储设备等的设备可以使用设备存储器来执行一个或多个操作。例如,加速器可以使用设备存储器来存储用于计算的输入和/或输出数据。作为另一示例,存储设备可以使用设备存储器作为可以存储在存储介质中的数据的高速缓存。
本公开的一些发明原理涉及设备存储器的管理。例如,设备可以实现发现机制,该发现机制可以使得设备能够(例如,向诸如主机之类的装置)提供关于设备存储器的信息。另外地或替代地,设备可以实现管理机制,该管理机制可以使得能够基于由设备例如,使用发现机制提供的存储器信息来管理设备存储器(例如,由诸如主机的装置)。
在一些实施例中,发现机制可以实现一个或多个请求以提供关于设备存储器的信息。例如,设备可以接收请求关于设备存储器的信息的请求(例如,来自诸如主机的装置的发现命令)。设备可以通过返回设备存储器资源的列表、可以包括关于设备存储器资源的信息的日志页等来响应该请求。该信息可以包括能够访问设备存储器的一个或多个部分的设备功能的一个或多个部分的一个或多个指示。另外或替代地,信息可以包含设备存储器的一个或多个部分的一个或多个特性(例如,类型、量、布置、存取特性、性能特性及/或其类似者)的指示。
在一些实施例中,可以通过将设备存储器的一个或多个部分配置为由设备功能的一个或多个部分访问来管理设备存储器。例如,在具有计算资源的设备中,管理机制可以使得主机能够配置要由第一计算资源访问的设备存储器的一个或多个第一部分以及要由第二计算资源访问的设备存储器的一个或多个第二部分。
在一些实施例中,对设备存储器的一个或多个部分的访问可以经受各种限制、许可、物理和/或逻辑连接、局部性等。例如,一些设备存储器可以与特定计算资源(例如,现场可编程门阵列(FPGA)、专用电路(ASIC)等)集成并且仅可由其访问,而一些设备存储器可以被更广泛地访问(例如,对设备功能的任何一个或多个部分)。
在一些实施例中,可以使用一个或多个命名空间来配置设备资源的一个或多个部分。例如,设备存储器资源、设备计算资源和/或设备储存资源的一个或多个部分可以分别被配置为一个或多个存储器命名空间、计算命名空间和/或储存命名空间。
本公开的一些发明原理涉及在计算设备处接收可以由多个计算资源访问的计算设备程序。例如,计算设备程序可以(例如,从诸如主机的装置)下载到计算设备。下载的计算设备程序可以存储在例如可以由被配置为第一计算命名空间的一个或多个第一计算资源和被配置为第二计算命名空间的一个或多个第二计算资源访问的存储库(例如,可以是至少部分公共的、全局的等的存储库)中。
在一些实施例中,设备可以使得计算设备程序能够使用命令机制(例如,由诸如主机的装置)被下载、发现、激活等。在一些实施例中,设备可以使得能够配置下载的计算设备程序的可见性和/或可访问性。例如,诸如主机的装置可以将下载的计算设备程序配置为表现为本原计算程序(例如,具有至少部分公共的、全局的和/或类似的可访问性)。附加地或替代地,下载的计算设备程序可以被配置为具有受限访问(例如,通过一个或多个特定计算资源)。
本公开涵盖涉及设备存储器和/或程序的管理的许多发明原理。本文公开的原理可以具有独立的实用性并且可以单独体现,并且不是每个实施例都可以利用每个原理。此外,这些原理还可以以各种组合体现,其中一些组合可以以协同的方式放大各个原理的一些益处。
出于说明的目的,可以在计算设备(例如,计算存储设备)和/或计算资源的上下文中描述一些实施例。然而,原理可以应用于可以利用在设备处接收的设备存储器和/或程序的任何设备和/或设备功能。
图1示出根据本公开的示例实施例的具有设备存储器的设备的实施例。图1中所示的设备102可以包括设备功能设备104(其也可以被称为设备功能、设备功能资源或功能资源)、设备存储器106(其也可以被称为设备存储器资源或存储器资源)、一个或多个控制器110(其可以被单独地和/或共同地称为控制器)和/或一个或多个通信接口112(其可以被单独地和/或共同地称为通信接口)。
设备功能104可以包括可以使设备102能够执行设备的一个或多个功能(例如,主要功能)的任何类型的资源(例如,硬件和/或软件)。例如,如果设备102至少部分地被实现为存储设备,则设备功能104可以包括任何类型的非易失性存储介质、介质转换层、一个或多个通道控制器等。存储介质的示例可以包括固态介质、磁介质、光学介质等或其组合。例如,存储设备可以被实现为具有与非(NAND)闪存的SSD和被实现为闪存转换层(FTL)的介质转换层。固态介质的其他示例可以包括持久性存储器,诸如交叉网格非易失性存储器、具有体电阻变化的存储器、相变存储器(PCM)等,或其任何组合。
作为另一示例,如果设备102至少部分地被实现为计算设备(例如,加速器、计算存储设备等),则设备功能104可以包括任何类型的硬件和/或软件计算资源,诸如一个或多个计算引擎、一个或多个程序等。
计算引擎的示例可以包括复杂可编程逻辑器件(CPLD)现场可编程门阵列(FPGA)专用集成电路(ASIC)中央处理单元(CPU)包括复杂指令集计算机(CISC)处理器(诸如x86处理器)和/或精简指令集计算机(RISC)处理器(诸如ARM处理器)、图形处理单元(GPUs)数据处理单元(DPUs)神经处理单元(NPUs)张量处理单元(TPUs)等,其可以执行存储在任何类型的存储器中的指令和/或实现任何类型的执行环境(诸如容器、虚拟机、操作系统(诸如Linux)、扩展Berkeley分组过滤器(eBPF)环境等)或其组合。在一些实施方案中,计算引擎可包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机等。在一些实施例中,计算资源中的一些或全部可以被实现为片上系统(SOC)。
程序的示例可以包括可以由一个或多个计算资源执行的任何类型的指令,诸如算法、数据移动、数据管理、数据选择、过滤、加密和/或解密、压缩和/或解压缩、编码和/或解码(例如,擦除编码)、校验和计算、散列值计算、循环冗余校验(CRC)等。在一些实施例中,程序可以使用存储在设备存储器106中的数据、流式传输到程序的数据等来执行操作。
作为另一示例,如果设备102至少部分地被实现为通信设备,诸如网络接口卡(NIC)、无线接入点(AP)、无线站(STA)、无线基站、无线用户设备(UE)等,则设备功能104可以包括用于接收和/或发送有线和/或无线(例如,RF)信号的一个或多个组件,诸如放大器、滤波器、调制器和/或解调器、A/D和/或DA转换器、天线、开关、移相器、检测器、耦合器、导体、传输线、调制解调器、网络接口、物理层(PHY)介质访问控制层(MAC)等。
设备存储器106可以包括一个或多个易失性和/或非易失性(例如,持久性)存储器资源,其可以具有各种各样的特性,诸如存储器类型、带宽、容量、等待时间、访问粒度、写入耐久性、功耗等。易失性存储器的示例可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等。非易失性存储器的示例可以包括NAND闪存、交叉网格非易失性存储器、具有体电阻变化的存储器、PCM、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(ReRAM)等。
在一些实施例中,设备存储器的一个或多个部分可以被配置为一个或多个存储器命名空间。在一些实施例中,存储器命名空间可以指存储单元、行、列、字节、字、页、块等的一个或多个地址、地址范围等的集合。
在一些实施例中,对设备存储器的一个或多个部分的访问可以经受各种限制、许可、物理和/或逻辑连接、局部性等。例如,一些设备存储器可以与特定计算资源(例如,FPGA、ASIC等)集成并且仅可由特定计算资源访问,而一些设备存储器可以更广泛地访问(例如,对设备功能的任何一个或多个部分)。
设备存储器106可以以任何物理布置实现,包括单列直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)、单独的存储器设备(例如,集成电路(IC))、存储设备堆叠、嵌入在一个或多个其他组件(诸如FPGA、ASIC等)中。设备存储器106可以位于设备102中、设备102上、设备102处和/或设备102附近。例如,设备存储器106的一个或多个部分可以附接到(例如,焊接、使用连接器连接等)电路板,该电路板可以用于实现设备102,附接到设备102,和/或以能够实现设备102的控制和/或访问的方式位于设备102附近或附近,例如,在存储器缓冲器、高速缓存等中,其可以使用诸如CXL.cache、Cxl.io、CXL.mem等的接口和/或协议(例如,相干接口和/或协议)由设备102访问。
尽管设备功能104和设备存储器106可以被示出为单独的组件,但是在一些实施例中,设备功能104的一个或多个部分和设备存储器106的一个或多个部分可以重叠。例如,设备存储器106的一个或多个部分可以至少部分地位于设备功能104的一个或多个部分内(例如,FPGA或ASIC可以包括本地DRAM)。类似地,正如一些本地存储器可以位于计算引擎内(并且可能仅可由计算引擎访问),一个或多个计算资源104可以位于设备存储器106的一个或多个部分内。举例来说,在一些实施例中,存储设备或存储设备的堆叠可以包含存储器中处理(PIM)硬件,PIM硬件可以位于存储设备或存储设备的堆叠内(且可能仅能够访问所述存储设备或存储设备的堆叠)。
控制器110可以包括可以控制设备102的一个或多个部分的一个或多个操作的任何类型的资源(例如,硬件和/或软件)。例如,控制器110可以包括一个或多个处理器、状态机、组合逻辑、顺序逻辑、CPLD、FPGA、ASIC、专用逻辑等。在一些实施例中,如果设备102至少部分地被实现为存储设备,则一个或多个控制器110可以包括一个或多个FTL、通道控制器、非易失性存储器快速(NVMe)控制器、外围组件互连快速(PCIe)控制器、计算快速链路(CXL)控制器和/或类似物、或其组合。在一些实施例中,如果设备102至少部分地被实现为通信设备,则一个或多个控制器110可以包括一个或多个MAC控制器。
通信接口112可以用任何类型的有线和/或无线通信介质、接口、网络、互连、协议等来实现,包括PCIe、NVMe、结构上的NVMe(NVMe-oF)、CXL和/或相干协议(诸如CXL.mem、CXL.cache、CXL.IO等)、Gen-Z、开放相干加速器处理器接口(OpenCAPI)、加速器的高速缓存相干互连(CCIX)等、高级可扩展接口(AXI)、直接存储器访问(DMA)、远程DMA(RDMA)、融合以太网上的RDMA(ROCE)、高级消息队列协议(AMQP)、以太网、传输控制协议/互联网协议(TCP/IP)、光纤通道、无限带宽、串行ATA(SATA)、小型计算机系统接口(SCSI)、
设备102可以用任何物理形状因子来实现。形状因子的示例可以包括3.5英寸存储设备形状因子、2.5英寸存储设备形状因子、1.8英寸存储设备形状因子、M.2设备形状因子、企业和数据中心标准形状因子(EDSFF)(其可以包括例如E1.S、E1.L、E3.S、E3.L、E3.S2T、E3.12T等)、附加卡(AIC)(例如,PCIe卡(例如,PCIe扩展卡)形状因子,包括半高(HH)、半长(HL)、半高、半长(HHHL)等)、下一代小型形状因子(NGSFF)、NF1形状因子、紧凑型闪存(CF)形状因子、安全数字(SD)卡形状因子、个人计算机存储卡国际协会(PCMCIA)形状因子等,或其组合。
在一些实施例中,本文公开的任何设备可以使用一个或多个连接器(诸如SATA连接器、SCSI连接器、SAS连接器、M.2连接器、EDSFF连接器(例如,1C、2C、4C、4C+等)、U.2连接器(其也可以被称为SSD形状因子(SSF)SFF-8639连接器)、U.3连接器、PCIe连接器(例如,卡边缘连接器)等)连接到系统。
在一些实施例中,本文公开的任何设备可以完全或部分地用服务器机箱、服务器机架、数据中心、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合来实现和/或与其结合使用。
图2示出根据本公开的示例实施例的具有命名空间的计算存储设备的实施例。图2中所示出的设备202可以被用于例如实施图1中所示出的设备102。设备202可以包括与图1中所示的那些元件类似的一些元件,其中类似的元件可以具有以类似数字结尾的附图标记。然而,在图2所示的设备202中,设备功能的一个或多个部分可以被实现为计算引擎211和/或程序207,并且设备功能的一个或多个部分可以被实现为存储介质213。
在图2中图示的设备202中,设备资源的一个或多个部分可以被配置为一个或多个命名空间。例如,设备存储器资源、设备计算资源和/或设备储存资源的一个或多个部分可以分别被配置为一个或多个存储器命名空间、计算命名空间和/或储存命名空间。
在一些实施例中,命名空间可以指一个或多个资源的集合。在一些实施例中,被配置为一个命名空间的一个或多个资源的集合可以至少部分地与被配置为其他命名空间的资源的其他集合隔离。在一些实施例中,命名空间可以提供命名空间和/或可以被配置为命名空间的资源之间的逻辑和/或物理隔离。在一些实施例中,命名空间可以指示一个或多个资源的集合,所述一个或多个资源可以作为单元例如由诸如主机的装置访问。
在一些实施例中,命名空间可以被配置、处理等为虚拟构造(例如,虚拟命名空间)。取决于实现细节,这可以使得命名空间(例如,计算命名空间)能够被映射(例如,直接地)到诸如虚拟机(VM)的虚拟环境中。在一些实施例中,虚拟机可以控制将程序加载(例如,下载)到与虚拟机相关联的计算命名空间中。这可以与使用诸如管理程序的中央实体加载程序形成对比。取决于实现细节,使得虚拟机可以控制加载程序可以提供灵活性,例如,以移除加载的程序(例如,当虚拟机终止关闭时)。
在储存资源的上下文中,命名空间可以指一个或多个逻辑块地址(LBA)的集合。LBA可以映射到一个或多个物理块地址(PBA),其可以位于不同的物理位置,例如圆柱、轨道、通道、页等。取决于实现细节,命名空间可以(例如,对于诸如主机的装置)表现为单独的存储设备。在图2所示的设备202中,存储介质213的一个或多个部分可以被配置为一个或多个储存命名空间246。
在计算资源的上下文中,计算命名空间可以指一个或多个计算引擎、程序等的集合,例如,如上面关于图1所描述的。在图2所示的设备202中,诸如计算引擎211和/或程序207的一个或多个计算资源可以被配置为一个或多个计算命名空间244。
在存储器资源的上下文中,存储器命名空间可以指一个或多个存储器和/或其部分的集合,例如,如上面关于图1所描述的。例如,存储器命名空间被配置为存储单元、行、列、字节、字、页、块等的一个或多个地址、地址范围等的集合。在图2中图示的设备202中,设备存储器206的一个或多个部分可以被配置为一个或多个存储器命名空间248。
再次参考图1,在一些实施例中,设备存储器106的一个或多个部分可以由设备功能104的一个或多个部分使用。例如,在设备102被实现为计算存储设备的实施例中,设备功能104可以包括计算资源(例如,一个或多个计算引擎和/或计算程序)和储存资源(例如,存储介质)。在这样的实施例中,设备存储器106的一个或多个部分可以用于例如任何数量的以下操作:存储从主机、存储介质(例如,被配置为储存命名空间的存储介质的一个或多个部分)等复制的输入数据;缓冲和/或输出在计算引擎上运行的程序的数据;缓冲由在计算引擎上运行的程序使用的中间数据;将输出数据复制到主机存储器、存储介质(例如,被配置为储存命名空间的存储介质的一个或多个部分)等;在程序之间交换数据;在虚拟机(例如,在一个或多个计算资源上运行)之间交换数据;和/或类似物。
本公开的一些发明原理涉及可以用于获得关于设备存储器106的信息和/或管理设备存储器106的机制(其也可以被称为方案)。例如,在一些实施例中,设备102可以实现发现机制,该发现机制可以使得主机能够获得关于可以位于设备102中、设备102上、设备102处和/或设备102附近的设备存储器106的一个或多个部分的信息。附加地或替代地,设备102可以实现管理机制,该管理机制可以使得主机可以使用关于设备存储器的信息(例如,使用发现机制获得的)来管理设备存储器106的一个或多个部分。在一些实施例中,可以通过将设备存储器106的一个或多个部分配置为访问设备功能104的一个或多个部分来管理设备存储器106的一个或多个部分。例如,在其中利用计算资源实现设备功能104的至少一部分的设备102中,管理机制可以使得主机能够配置设备存储器106的一个或多个第一部分以访问第一计算资源,并且配置设备存储器106的一个或多个第二部分以访问第二计算资源。
在一些实施例中,主机可以用可以利用设备102的设备功能104、设备存储器106、发现机制和/或管理机制中的一个或多个的任何组件或组件的组合来实现。例如,主机可以包括客户端设备、服务器、存储节点、CPU、个人计算机、平板计算机、智能电话等中的一个或多个。
出于说明的目的,可以在系统的上下文中描述一些示例实施例,其中主机可以使用发现和/或管理方案来获得关于设备存储器的信息和/或管理设备存储器。然而,原理不限于由如上所述的主机使用。例如,用于获得关于设备存储器的信息和/或管理设备存储器的任何方案可以至少部分地由设备本身、由另一设备和/或可以包括硬件、软件、过程、服务等的任何其他实体使用。因此,在一些实施例中,并且取决于上下文和/或实现细节,主机可以指代可以使用发现方案和/或管理方案来获得关于根据本公开的设备存储器的信息和/或管理设备存储器的任何实体,包括设备本身的一部分和/或另一设备。
图3示出根据本公开的示例实施例的包括发现机制的设备的实施例。设备302可包括类似于图1和/或图2中所示出的那些元件的一些元件,其中类似元件可具有以类似数字结尾的附图标记。然而,在图3所示的实施例中,控制器310可以包括发现逻辑314,发现逻辑314可以实现发现机制以使得设备302能够提供(例如,向诸如主机的装置)关于设备存储器306的信息(其可以被称为存储器信息)316。
存储器信息316可以包括设备存储器的一个或多个部分的一个或多个特性(例如,类型、数量、布置、访问特性、性能特性等)的指示。例如,设备存储器306可以包括一种或多种类型的易失性存储器(例如,DRAM、SRAM等)和/或非易失性(例如,持久性)存储器资源(例如,闪存、PCM等)。设备存储器306的各个部分可以具有不同的带宽(例如,读取和/或写入带宽)、容量(例如,就字节而言的大小,诸如千字节(KB)、兆字节(MB)、千兆字节(GB)等)、等待时间、访问粒度(例如,持久性存储器可以是字节可访问的,而闪存存储器可以以页来写入和/或读取但是以块来擦除)、命名空间配置(例如,任何存储器资源的一个或多个部分可以被配置为一个或多个命名空间、命名空间内的地址范围等)、写入耐久性、功耗等。在一些实施例中,存储器信息316可以包括对设备存储器306的一个或多个部分的这些或其他特性中的任何特性的一个或多个指示。
附加地或替代地,存储器信息316可以包括能够访问设备存储器的一个或多个部分的设备功能的一个或多个部分的一个或多个指示。例如,设备功能304的一个或多个部分和设备存储器306的一个或多个部分可以通过一个或多个连接(例如,连接的结构或布置)来连接。一些连接可以仅使能对设备存储器306的一个或多个部分的受限访问(例如,本地或私有访问),而一些连接可以使得设备存储器306的一个或多个部分能够由设备功能304的一个或多个部分以不受限或较少受限的方式(例如,全局或公共访问)访问。例如,FPGA可以包括本地(例如,内部)存储器和可以仅允许本地存储器由FPGA内的计算资源访问的连接布置。类似地,计算引擎(例如,诸如ARM电路的CPU电路)可以包括本地存储器和可以仅允许本地存储器由CPU访问的连接布置。在一些实施例中,存储器信息316可以包括设备功能304和/或设备存储器306的这些或其他特性、连接、限制、布置等中的任何一个的一个或多个指示。
在一些实施例中,发现机制可以实现一个或多个存储器信息请求(例如,命令)315以提供关于设备存储器306的信息。例如,设备可以(例如,从诸如主机的装置)接收请求关于设备存储器306的信息的发现命令。设备302可以通过返回可以包括关于设备存储器资源306的信息的数据结构(例如,列表、表等)、指向数据结构的指针、日志页等来对发现命令进行响应。作为另一示例,设备302可以实现命令行接口(CLI),其可以使得设备能够(例如,向诸如主机之类的装置)提供存储器信息。
图4图示根据本公开的示例实施例的发现设备存储器命令的示例实施例。图4所示的发现设备存储器命令418可以用于例如实现图3所示的存储器信息请求315。发现设备存储器命令418可以例如被发送到设备302的控制器310(例如,由主机)以使控制器310提供存储器信息316(例如,到主机)。在一些实施例中,控制器310可以响应于发现设备存储器命令418而发送可以包括所请求的存储器信息316的响应(例如,包括嵌入在响应中的所请求的存储器信息316的数据结构)。替代地或附加地,图4中所示的发现设备存储器命令418可以包括数据位置420,其可以指示(例如,通过指针)控制器310可以在其中写入所请求的存储器信息316的位置(例如,缓冲器位置)。在一些实施例中,发现设备存储器命令418可以被实现为例如NVMe命令、CXL命令等。
表1示出根据本公开的示例实施例的可以用于提供关于设备存储器的信息的数据结构的示例实施例。表1中所示的实施例可以用于例如响应于图4中所示的发现设备存储器命令418并且在图3中所示的设备302的上下文中提供设备存储器信息316。在表1所示的实施例中,设备功能304的一个或多个部分可以被实现为如列2所示的计算引擎(CE),但是原理可以应用于任何其他类型的设备功能。
参考表1,行可以对应于设备存储器306的一个或多个部分。行内的列可以提供以下信息:列1可以指示设备存储器306的一部分(例如,存储器设备)的存储器标识符(存储器ID或MemID);列2可以指示设备功能304的一个或多个部分的标识符(在该示例中,可以能够访问由MemID标识的设备存储器306的部分的计算引擎标识符(计算引擎ID或CEID));列3可以指示由MemID指示的设备存储器306的部分的一个或多个特性(在该示例中,存储器类型(例如,DRAM或持久性)、等待时间、带宽和/或功率特性);列4和5可以包括一个或多个子行,其可以包括指示可以被配置为对应命名空间的一个或多个命名空间和/或存储器范围的命名空间标识符(命名空间ID或NSID)和/或范围标识符(范围ID或RID);列6可以指示与对应命名空间ID和/或范围ID相关联的存储器地址的范围;并且列7可以指示对应的存储器地址的范围是否已被分配(例如,向计算引擎、程序等)。
表1
如上所述,出于说明的目的,在表1所示的实施例中,设备功能304的一个或多个部分可以被实现为如第2列所示的计算引擎,但是原理可以应用于任何其他类型的设备功能。例如,在其他实施例中,列2可以将设备功能304的一个或多个部分的标识符指示为设备功能标识符(设备功能ID或DFID)。出于说明的目的,表1中所示的实施例可以提供关于与图9中所示的实施例相对应的设备存储器的信息的示例,但是原理不限于这些或任何其他实现细节。
图5示出根据本公开的示例实施例的包括管理机制的设备的实施例。图5中所示出的设备502可以包括类似于图1、图2和/或图3中所示出的那些元件的一些元件,其中类似元件可具有以类似数字结尾的附图标记。然而,在图5所示的实施例中,控制器510可以包括管理逻辑518,其可以实现管理机制以使得能够基于由设备例如,使用发现机制提供的存储器信息来管理(例如,由诸如主机的装置)设备存储器506。
管理逻辑518可以例如通过将设备存储器506的一个或多个部分配置为由设备功能504的一个或多个部分访问来管理设备存储器506。
在一些实施例中,管理逻辑518可以通过(例如,从诸如主机的装置)接收配置信息523并将配置信息523提供给与可以实现配置信息的设备功能504的一个或多个部分相关联的存储器控制装置来配置设备存储器506的一个或多个部分。例如,在一些实施例中,诸如主机的装置可以将设备存储器506的一个或多个部分分配给设备功能504的一个或多个部分。因此,配置信息523可以包括指示设备功能504的一个或多个部分以及可以被配置为由设备功能504的一个或多个部分访问的设备存储器506的一个或多个对应部分的列表、表或其他数据结构。与设备功能504的一个或多个部分相关联的存储器控制装置的示例可以包括处理器(例如,CPU)中的存储器控制器、FPGA或ASIC中的存储器配置寄存器等。
附加地或替代地,管理逻辑518可以通过将设备存储器506的一个或多个部分分配给设备功能504的一个或多个部分来配置设备存储器506的一个或多个部分。在这样的实施例中,配置信息523可以包括用于设备功能504的一个或多个部分的一个或多个规范、要求等,以使得管理逻辑518能够例如基于存储器的一个或多个类型、量、访问粒度、性能特性等将设备存储器506的一个或多个适当部分分配给设备功能504的一个或多个部分。
在一些实施例中,管理逻辑518可以响应于配置请求522来配置设备存储器506。在一些实施例中,配置请求522可以例如利用可以由管理逻辑518(例如,从诸如主机的装置)接收的命令来实现。另外地或替代地,设备502可以至少部分地利用命令行接口(CLI)来实现管理逻辑518和/或配置请求522。
在一些实施例中,可以使用可能影响设备功能504的一个或多个部分访问设备存储器506的一个或多个部分的能力的一个或多个连接(例如,连接的结构或布置)来连接设备功能504的一个或多个部分和设备存储器506的一个或多个部分。例如,如上所述,设备存储器506的一些部分可以位于设备功能504的某些部分(例如,FPGA、ASIC等中的本地存储器)中并且仅可由其访问,而设备存储器506的其他部分可以具有较少限制的访问(例如,全局存储器可以是公开可访问的)。由此,主机或其他装置可以使用存储器信息(例如,图3中示出的存储器信息316和/或表1中的存储器信息)来确定设备存储器506的哪些部分可以被配置成由设备功能性504的哪些部分访问。
图6示出根据本公开的示例实施例的配置存储器命令的第一示例实施例。图6中所示出的配置存储器命令622可以用于(例如)实施图5中所示出的配置请求522。图6所示的配置存储器命令622可以例如被发送到设备502的控制器510(例如,由主机),以使管理逻辑518配置设备存储器506的一个或多个部分以由设备功能504的一个或多个部分访问。出于说明的目的,图6中所示的配置存储器命令622可以在可以用计算引擎实现的设备功能504的一个或多个部分的上下文中描述,但是原理可以应用于任何其他类型的设备功能。在一些实施例中,配置存储器命令622可以例如利用NVMe命令、CXL命令等来实现。
配置存储器命令622可以包括配置信息623,其可以使得管理逻辑518能够配置设备存储器506的一个或多个部分以由设备功能504的一个或多个部分访问。(在一些实施例中,配置信息623可以用指针或其他参考方案来实现以访问配置信息)。例如,在一些实施例中,配置信息623可以包括列表、表或其他数据结构(或指向数据结构的指针),其可以包括管理逻辑518可以配置为由设备功能504的一个或多个部分访问的设备存储器506的一个或多个部分的一个或多个指示(例如,基于由诸如主机的装置确定的一个或多个存储器分配)。作为另一示例,在一些实施例中,配置信息623可以包括用于设备功能504的一个或多个部分的一个或多个规范、要求等,以使得管理逻辑518能够例如基于存储器的一个或多个类型、量、访问粒度、性能特性等将设备存储器506的一个或多个适当部分分配给设备功能504的一个或多个部分。
表2示出可以被用于将配置信息623(例如,从诸如主机的装置)发送到设备502的管理逻辑518的数据结构的示例实施例。在一些实施例中,表2可以由管理逻辑518接收并且用于配置设备存储器506的一个或多个部分以由设备功能504的一个或多个部分访问。例如,表2可以嵌入在配置存储器命令622内,由配置存储器命令622内的指针引用,或者结合配置存储器命令622以任何其他方式传送。在表2所示的实施例中,设备功能504的一个或多个部分可以用如列1所示的计算引擎来实现,但是原理可以应用于任何其他类型的设备功能。表2中所示的实施例可以使用与表1中使用的标识符类似的标识符(例如,计算引擎ID、MemID、命名空间ID等)。
参考表2,列1可以指示计算引擎。列2可以指示可以被实例化、激活等以在对应的计算引擎上运行的程序。列3、4和5可以分别指示可以被配置为由对应的计算引擎和/或程序访问的存储器(例如,存储设备)、命名空间和/或地址范围。
表2
出于说明的目的,表2中所示的实施例可以提供可以与图8中所示的实施例一起使用的配置信息的示例。例如,列3可以不包括关于CE3的MemA的条目,因为在图9所示的实施例中MemA可能不能由CE3访问。然而,原理不限于这些或任何其他实现细节。
图7示出根据本公开的示例实施例的配置存储器命令的第二示例实施例。图7所示的配置存储器命令722可以用于例如实现图5所示的配置请求522。图7所示的配置存储器命令722可以例如被发送到设备502的控制器510(例如,由主机),以使管理逻辑518配置设备存储器506的一个或多个部分以由设备功能504的一个或多个部分访问。出于说明的目的,图7中所示的配置存储器命令722可以在可以用计算引擎实现的设备功能504的一个或多个部分的上下文中描述,但是原理可以应用于任何其他类型的设备功能。在一些实施例中,配置存储器命令722可以例如利用NVMe命令、CXL命令等来实现。
配置存储器命令722可以包括:存储器ID(MemID)724,用于指示要配置的设备存储器506的一部分;以及计算引擎标识符(计算引擎ID或CEID)728,用于指示存储器可以被配置为由其访问的设备功能504的一部分。附加地或替代地,配置存储器命令722可以包括命名空间ID(NSID)726,以指示要配置的设备存储器506的一部分(例如,命名空间ID的子集)。附加地或替代地,配置存储器命令722可以包括范围ID(范围ID或RID)727,以指示要配置的设备存储器506的一部分(例如,命名空间ID的子集)。附加地或替代地,配置存储器命令722可以包括程序标识符(程序ID、ProgID或PID)730以指示存储器可以被配置为由其访问的特定程序(例如,由ProgID指示的计算引擎之一运行)。
图8示出根据本公开的示例实施例的包括发现机制和管理机制的设备的实施例。图8中所示出的设备802可以包括与图1、图2、图3和/或图5中所示出的那些元件类似的一些元件,其中类似元件可以具有以类似数字结尾的附图标记。然而,在图8所示的实施例中,控制器810可以包括发现逻辑814和管理逻辑818两者。此外,在图8所示的实施例中,示出设备功能804的一个或多个部分与设备存储器806的一个或多个部分之间的一个或多个连接832。(一个或多个连接832也可以被称为连接的结构、布置或结构)。
图8所示的实施例还可以包括通过通信结构803连接到设备802的主机801。在一些实施例中,主机801可以向设备802发送一个或多个任务,并且设备802可以例如使用设备功能804的一个或多个部分中的至少一个来执行一个或多个任务。在一些实施例中,主机801可以运行可以利用设备功能804的一个或多个部分的一个或多个应用805。
一个或多个连接832可以使用各种不同的导体、互连、网络、接口、协议等来实现。示例可以包括使用电路板迹线、缓冲器、线路驱动器、锁存器、中继器、重定时器、交换机、多路复用器和/或解多路复用器、任何代的双倍数据速率(DDR)接口(例如,DDR2、DDR3、DDR4、DDR5等)、低功率DDR(LPDDR)、开放存储器接口(OMI)、公共闪存接口(CFI)、开放NAND闪存接口(ONFI)、PCIe、NVMe、NVMe-oF、CXL、Gen-Z、OpenCAPI、CCIX、AXI、DMA、RDMA、ROCE、AMQP、以太网、TCP/IP、光纤通道、InfiniBand、SATA、SCSI、SAS、iWARP等的有线连接。
尽管设备功能804、设备存储器806和一个或多个连接832可以被示出为单独的元件,但是在一些实施方式中,这些元件中的一些或全部可以重叠。例如,在其中设备功能804的至少一部分用FPGA实现的实施例中,至少一些设备存储器(例如,FPGA中的本地存储器)和存储器互连的至少一部分可以被包括在FPGA内。此外,尽管一个或多个连接832可以被示出为单个元件,但是它可以包括第一组组件之间的一个或多个第一连接和第二组组件之间的一个或多个第二连接,其中在第一组组件和第二组组件之间可以没有连接。例如,第一ASIC可以包括第一处理器、第一本地设备存储器以及第一处理器和第一本地设备存储器之间的第一连接,并且第二ASIC可以包括第二处理器、第二本地设备存储器以及第二处理器和第二本地设备存储器之间的第二连接,然而,在第一ASIC和第二ASIC之间可以没有连接。
在图8所示的实施例中,设备存储器806的一个或多个部分可以用于例如上面关于图1描述的任何操作,具体地:存储从主机、存储介质(例如,被配置为储存命名空间的存储介质的一个或多个部分)等复制的输入数据;缓冲和/或输出在计算引擎上运行的程序的数据;缓冲由在计算引擎上运行的程序使用的中间数据;将输出数据复制到主机存储器、存储介质(例如,被配置为储存命名空间的存储介质的一个或多个部分)等;在程序之间交换数据;在虚拟机(例如,在一个或多个计算资源上运行)之间交换数据;和/或类似物。
作为进一步的示例,图8中所示的设备存储器806的一个或多个部分可以用于任何数量的以下目的、操作等:驱动器管理(例如,存储元数据和/或元数据查找以用于诸如键值存储、文件系统信息、高速缓存管理等的用途);复制缓冲器(例如,用于在命名空间之间复制数据的中间缓冲器);奇偶校验缓冲器(例如,用于存储校验和或用于冗余操作的其他数据,诸如独立驱动器冗余阵列(RAID));临时缓冲器(例如,用于可以例如在主机处、在设备处等运行的一个或多个应用);命令处理、转换和/或查找缓冲器;校验和和/或加密密钥缓冲器;等等。
命令处理的示例可以包括处理NVMe命令队列和/或条目(例如,提交队列(SQ)、提交队列条目(SQE)、完成队列(CQ)和/或完成队列条目(CQE))。例如,NVMe系统中的控制存储器缓冲器(CMB)可以被实现为存储器映射空间中的PCIe基址寄存器(BAR),其可以由主机访问(例如,直接),主机可以将CMB用于诸如将SQE放置在缓冲器中、使得设备能够将CQE放置在缓冲器中等的任务。在一些实施例中,设备存储器可以用于CMB的一个或多个功能,例如,以处理设备处的一个或多个命令。
在根据本公开的示例实施例的使用用于加密密钥的设备存储器的示例实施例中,主机可以将加密密钥的数据结构预下载到设备存储器中(例如,用于每IO密钥(KPIO)实现)。利用这样的布置,主机可以发布IO并提供指向数据结构中的索引的指针,以检索用于IO的相应加密密钥,设备可以使用该加密密钥来加密和/或解密IO。取决于实现细节,将加密密钥放置在设备存储器中的缓冲器中可以保护密钥免于暴露(例如,暴露给主机),例如,因为密钥可能不是IO命令的一部分。
图9示出具有根据本公开的示例实施例配置的设备存储器的设备的示例实施例。图9中所示出的实施例可以用例如图1、图3、图5、图8和/或表1中所示出的实施例来实现或用于实现这些实施例,其中类似元件可具有以类似数字结尾的附图标记。出于说明的目的,图9中所示的实施例可以在用计算引擎实现的设备功能设备的上下文中描述,但是原理可以应用于任何其他类型的设备功能。
参考图9,该设备可以包括用标识为CE1、CE2和CE3的三个计算引擎934实现的设备功能,以及用标识为Mem A、Mem B Mem C的存储器设备936实现的设备存储器。计算引擎CE1和CE2以及存储器设备Mem A可以被包括在ASIC 940中。计算引擎CE1和CE2可以例如用处理器(例如,ARM处理器)、门阵列、逻辑设备等来实现,而计算引擎CE3可以用CPU来实现。
程序P1和P2可以在CE1上被实例化、加载、激活等。程序P4和P5可以在CE2上被实例化、加载、激活等。程序P8和P9可以在CE3上被实例化、加载、激活等。
存储器设备Mem A和Mem B可以用易失性存储器(例如,DRAM)来实现,而存储器设备Mem C可以用持久性存储器来实现。存储器设备Mem A中的一些或全部可以被细分为(例如,配置为)命名空间NS100、NS101及/或NS102,其可以进一步细分为范围Range1及Range2。存储器设备Mem B中的一些或全部可以被细分为(例如,经配置为)命名空间NS200、NS201及/或NS202,其可进一步细分为范围Range1及Range2。存储器设备MEN C中的一些或全部可细分为(例如,配置为)命名空间NS300、NS301及/或NS302,其可以被进一步细分为范围Range1及Range2。图9中所示的存储器设备936的数量、类型、特性等是出于说明的目的,并且在其他实施例中,可以使用具有任何其他数量、类型、特性等的存储器设备。
连接结构932可以包括计算引擎934和存储器设备936之间的连接。具体地,Mem A可以分别通过连接932-1和932-2连接到CE1和CE2。Mem B可以分别通过连接932-3、932-4和932-5连接到CE1、CE2和CE3。Mem C可以分别通过连接932-6、932-7和932-8连接到CE1、CE2和CE3。因为CE3在ASIC 940外部,所以CE3和MemA之间可能没有连接。
因此,CE1和/或CE2可以能够访问Mem A、Mem B和/或Mem C,而CE3可以能够访问Mem A和/或Mem B,但不能访问Mem C。
在图9所示的示例实施例中,所指示的存储器资源的以下集合942可以被配置(例如,通过图5中的管理逻辑518和/或图8中的管理逻辑818)为由程序P1访问(例如,如表1所示):Mem A中的NS101的范围1和范围2、Mem B中的NS200的范围1和范围2、和/或Mem C中的NS302的范围1和范围2。因此,P1可以使用集合942中的任何存储器资源用于程序执行。相反,程序P8可能无法访问Mem A中的存储器资源以用于程序执行。
在一些实施例中,并且取决于实现细节,根据本公开的示例实施例的具有设备存储器和/或设备功能的设备可以实现任何数量的以下特征和/或提供任何数量的以下益处。可以使设备存储器(例如,设备本地的存储器)可用于访问设备功能(例如,一个或多个计算存储引擎)。设备存储器的一个或多个部分可以被细分为一个或多个命名空间,其中命名空间可以提供设备存储器的一个或多个部分的虚拟表示。可以使诸如主机的装置知道设备存储器的一个或多个部分,和/或能够访问设备存储器的一个或多个部分的设备功能的一个或多个部分,例如使用发现机制。在一些实施例中,设备存储器的一个或多个部分可以被划分为一个或多个组(例如,基于不同的存储器特性)。设备可以实现发现机制,该发现机制可以使得设备能够(例如,向主机)提供关于设备功能的一个或多个部分(例如,计算引擎)能够访问哪个或哪些存储器组的信息(存储器信息)。设备功能的一个或多个部分(例如,计算引擎)可以能够访问一组或多组存储器、存储设备等。设备功能的一个或多个部分(例如,计算引擎)可以能够访问设备功能的一个或多个部分能够访问的一个或多个组的一个或多个细分部分。诸如主机的装置可以使用存储器信息来指示(例如,使用列表、表或其他数据结构)特定存储器资源可以由程序(例如,在计算引擎上运行)用于执行程序。
在一些实施例中,并且取决于实现细节,根据本公开的示例实施例的具有设备存储器和/或设备功能的设备可以实现任何数量的以下特征和/或提供任何数量的以下益处。可以使设备存储器(例如,在设备内本地的存储器)可用于对可以实现其他类型的设备的设备功能的一个或多个计算引擎和/或逻辑的私有访问。可以使设备存储器(例如,在设备内本地的存储器)可用于设备内的公共访问,例如,对于可以实现其他类型的设备的设备功能的一个或多个(例如,所有)计算引擎和/或逻辑。可以通过诸如易失性、等待时间、功率等特性来区分一种或多种类型的存储器。存储器可以被划分成具有访问的一个或多个命名空间,该访问可以例如由主机基于例如访问局部性来管理到特定设备功能的一个或多个部分。命名空间可以被细分为具有一个或多个偏移(例如,地址范围)的一个或多个子组,其可以被配置为由一个或多个程序访问以用于程序执行。一个或多个子组可以被分组在一起以形成更大的组,例如,用于由诸如主机的装置管理数据流。设备功能的一个或多个部分(例如,计算引擎)可以被配置为访问一个或多个存储器命名空间和/或范围组。任何数量的这些特征和/或益处可以由根据本公开的示例实施例的计算存储设备提供。
在一些实施例中,设备存储器可以用各种类型的可访问性来实现。例如,对设备存储器的一些部分的访问可以限于设备功能的特定部分,而设备存储器的其他部分可以由设备功能的任何部分访问。因此,在一些实施方式中,存储器管理机制可以配置设备功能的一些部分和/或设备存储器的一些部分以用于重叠访问。附加地或替代地,存储器管理机制可以配置设备存储器的一个或多个部分以用于各种类型的可访问性。
在一些实施例中,存储器管理机制可以使用存储器命名空间来配置设备存储器的一个或多个部分。在一些实施例中,存储器命名空间可以指设备存储器的一个或多个部分的逻辑表示。因此,在一些实施例中,存储器命名空间可以被实现为设备存储器的一个或多个部分的集合。取决于实现细节,存储器命名空间可以包括或可以不包括存储器的重叠部分。在一些实施例中,一个或多个命令可以附接到一个或多个命名空间。
图10示出根据本公开的示例实施例的包括具有计算和程序资源的计算设备的系统的实施例。图10所示的实施例可以包括通过通信结构1003连接的主机1001和计算设备1002。
计算设备1002可以包括设备控制器1010、程序存储库1009、设备存储器1006、一个或多个计算资源1008(其也可以被称为计算资源)和/或设备功能电路1004。设备控制器1010可以控制计算设备1002的整体操作,包括本文描述的任何操作、特征等。举例来说,在一些实施例中,设备控制器1010可对从主机1001接收的命令进行解析、处理、调用及/或类似操作。设备功能电路1004可以包括用于实现计算设备1002的主要功能的任何硬件。例如,如果计算设备1002被实现为存储设备,则设备功能电路1004可以包括存储介质,诸如一个或多个闪存设备、闪存转换层(FTL)等。在一些实施例中,计算存储设备可以被实现为计算存储驱动器(CSD)、计算存储处理器(CSP)和/或计算存储阵列(CSA)。
作为另一示例,如果计算设备1002被实现为网络接口卡(NIC),则设备功能电路1004可以包括一个或多个调制解调器、网络接口、物理层(PHY)、介质访问控制层(MAC)等。作为另一示例,如果计算设备1002被实现为加速器,则设备功能电路1004可以包括一个或多个计算资源,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、嵌入式处理器等。
主机1001可以用可以利用计算设备1002的计算资源1008的任何组件或组件的组合来实现。例如,主机1001可以包括客户端设备、服务器、存储节点、中央处理单元(CPU)、个人计算机、平板计算机、智能电话等中的一个或多个。此外,图10所示的实施例可以包括任何数量的主机。
通信结构1003可以使用任何类型的接口和/或协议,利用一个或多个互连、一个或多个网络、网络的网络(例如,互联网)等或其组合来实现。例如,结构1003可以用PCIe、NVMe、NVMe-oF、CXL、Gen-Z、OpenCAPI、CCIX、AXI、DMA、RDMA、ROCE、AMQP、以太网、TCP/IP、光纤通道、InfiniBand、SATA、SCSI、SAS、iWARP和/或类似物或其任何组合来实现。例如,在计算设备1002被实现为存储设备的实施例中,控制器1010可以实现诸如NVMe、CXL等的存储协议,其可以使主机1001和计算设备1002能够通过通信结构1003交换命令、数据等。在一些实施例中,通信结构1003可以包括一个或多个交换机、集线器、节点、路由器等。
在一些实施方案中,计算引擎1011中的一个或多个可以包括一个或多个处理资源,诸如CPLD、FPGA(示出为计算引擎1011a)、ASIC(示出为计算引擎1011b)、CPU(例如,CISC、RISC等,或其核,示出为计算引擎1011c)、GPU、DPU、NPU、TPU等,其可以执行存储在任何类型的存储器中的指令和/或实现任何类型的执行环境,诸如容器、虚拟机、操作系统(诸如Linux)、扩展的Berkeley分组过滤器(eBPF)环境等,或其组合。在一些实施方案中,计算引擎可包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机等。在一些实施例中,计算资源中的一些或全部可以被实现为片上系统(SOC)。
程序存储库1009可以包含用于存储一个或多个可执行计算设备程序1007的一个或多个程序槽。在一些实施例中,计算设备程序(其也可以被称为可计算程序、计算程序或取决于上下文,程序)可以指代可以由计算设备的一个或多个计算资源执行的任何类型的程序,诸如算法、数据移动、数据管理、数据选择、过滤、加密和/或解密、压缩和/或解压缩、校验和计算、散列值计算、循环冗余校验(CRC)等。在一些实施例中,计算设备程序可以指代可以旨在由计算设备执行、适于由计算设备执行等的程序。在一些实施例中,计算引擎可以指能够执行一个或多个计算设备程序的组件或组件的组合。
可以例如使用计算资源1008中的一个或多个计算引擎1011来执行一个或多个程序1007。在一些实施例中,当利用计算引擎1011中的一个或多个执行时,设备存储器1006可以由程序1007中的一个或多个使用。例如,设备存储器1006可以用于为程序1007中的一个或多个保存输入数据、输出数据、过渡数据等。在一些实施例、上下文等中,程序1007可以被称为函数。
在一些实施例中,主机1001可以将一个或多个任务分流到计算设备1002,计算设备1002可以例如使用可以由计算资源1008执行的程序1007中的一个或多个来执行一个或多个任务。例如,主机1001可以运行一个或多个应用1005,其可以利用计算设备1002的程序1007和/或计算引擎1011中的一个或多个。
在一些实施例中,计算引擎中的一个或多个可以提供程序1007中的一个或多个的全部或部分(例如,混合)硬件实现。例如,在一些实施例中,计算引擎1011中的一个或多个可以包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个CPLD、FPGA、ASIC和/或其组合,其被配置为处理可以被实现为例如软FPGA功能的程序1007的比特流。
图11示出根据本公开的示例实施例的包括具有可加载程序资源的计算设备的系统的实施例。图11中所示出的实施例可包含可类似于图10中所示出的元件的一些元件,其中类似元件可具有以类似数字结尾的参考编号。
参考图11,在计算设备1102中,计算资源1108中的一个或多个可以被配置为被标识为计算命名空间A(CNA或CNSA)、计算命名空间B(CNB或CNSB)、计算命名空间C(CNC或CNSC)和/或计算命名空间D(CND或CNSD)的一个或多个计算命名空间1144和/或使用其来访问。
计算命名空间1144中的一个或多个可以被配置为使用可以从计算资源1108映射到计算命名空间1144的计算资源1150(标识为CR A、CR B、CR C和/或CR D)。例如,如图11中的箭头所示,计算命名空间A可以被配置为使用两个CPU核,计算命名空间B可以被配置为使用一个CPU核和一个FPGA,计算命名空间C可以被配置为使用一个CPU核,并且计算命名空间D可以被配置为使用一个ASIC。在一些实施例中,计算资源1108中的一个或多个的利用可以不是计算命名空间独占的。例如,映射到第一计算命名空间的资源(例如,FPGA、ASIC、CPU核等)可以被重用(例如,映射)到另一计算命名空间。
计算设备1102可以包括程序存储库1109,程序存储库1109具有用于存储被标识为程序1、程序2、程序3、程序4和/或程序5的程序1107的一个或多个程序槽,程序1107可以例如由映射到计算命名空间1144中的一个或多个的计算资源1150中的一个或多个执行。
可以使用各种技术将程序1107放置在程序存储库1109中。作为第一示例技术(其可以被称为内置技术),程序1107可以由供应商(例如,制造商、分销商等)以ASIC的方式内置到程序存储库1109中。作为第二示例技术(其可以被称为预加载技术),程序1107可以由供应商预加载在程序存储库1109中,例如,当设备1102被制造、分发等时。
作为第三示例技术(其可以被称为下载技术),程序1107可以作为固件安装和/或修订的一部分被加载(例如,下载)到程序存储库1109中。例如,设备供应商可以提供可以包括一个或多个程序1107(例如,包括一个或多个程序1107的程序存储库1109的全部或部分)的固件内容(例如,固件映像、文件等)。固件内容可以作为制造过程、修订过程(例如,更新过程、升级过程等)、分发过程等的一部分被加载(例如,下载)到程序存储库1109中。在一些实施例中,可以使用供应商特定机制将固件内容加载到设备1102中(包括将一个或多个程序1107加载到程序存储库1109中)。例如,可以使用下载固件命令(例如,NVMe下载固件命令)将固件内容加载到设备1102中,该下载固件命令可以启动用于将固件内容加载到设备1102中的供应商特定机制。在一些实施例中,这样的机制可以加载用于整个设备1102的固件映像,并且因此,可能难以或不可能确定固件映像的哪个部分可以包括用于程序存储库1109的一个或多个程序1107。因此,设备1102的计算资源1108的用户(例如,主机、应用、进程、服务等)可能无法使用上述第一(内置)、第二(预加载)和/或第三(下载)示例技术中的任何一种将程序1107加载到程序存储库1109中。在一些实施例中,用于加载程序的供应商特定机制可以将解码固件包解码到设备1102的设备固件和/或一个或多个计算程序中。
使用上述第一、第二和/或第三示例技术中的任何一种被加载到程序存储库1109中的程序1107可以被称为本原程序(或固定程序或预加载程序)。
在一些实施例中,使用第三(下载)技术将程序1107加载到程序存储库中(例如,将固件映像、包等下载到设备1102)可以提供类似于第二(预加载)技术的一个或多个益处。然而,取决于实现细节,使用第三(下载)技术可能涉及将设备1102和/或一个或多个执行程序置于静止状态(例如,睡眠状态或关闭、关机、暂停、停止、休眠、停止、挂起等)。此外,取决于实现细节,使用第三(下载)技术可以涉及:(1)重新启动已经被分配计算命名空间的一个或多个虚拟机;(2)重新加载(例如,下载)一个或多个先前下载的程序1107;和/或(3)完成、中止等可能正在进行的一个或多个计算(例如,通过一个或多个执行程序1107)。
程序存储库1109可以例如利用易失性和/或非易失性存储器来实现,例如,作为设备存储器1106的一部分,和/或利用可以至少部分地专用于程序存储库1109的存储器来实现。在一些实施例中,程序存储库1109可以至少部分地被虚拟地而不是作为物理实体来实现。例如,程序存储库1109的一个或多个部分可以被实现为在整个设备1102中使用的任何存储器实现机制的虚拟实例化(例如,使用用于存储器虚拟化、分页、映射等的任何方案)。
计算命名空间1144可以包括可以用于存储程序1152的一个或多个程序槽,程序1152可以例如由映射到对应的计算命名空间1144的计算资源1150中的一个或多个执行。例如,计算命名空间A可以包括可以存储程序ProgramA1、ProgramA2、…、ProgramAn的一个或多个槽;计算命名空间B可以包括可以存储程序ProgramB1、ProgramB2、…ProgramBn的一个或多个槽;等等。
在一些实施例中,程序1152可以被加载(例如,下载)到命名空间1144(例如,由命名空间的用户,诸如应用、进程、服务等),如箭头1154所示。加载(例如,下载)到计算命名空间1144和/或存储在计算命名空间1144中的程序1152可以被称为计算命名空间程序、命名空间程序或本地程序。在一些实施例中,可以使用被称为“加载程序到命名空间命令”的命令(其也可以被称为load_program_to_namespace命令或load local program命令)来下载计算命名空间程序1152。在一些实施例中,load local program命令可以是可访问的,例如,使用应用编程接口(API)。在一些实施例中,这样的API可以例如使用一个或多个NVMe命令被实现为用于计算设备的框架的一部分。取决于实现细节,计算命名空间被映射到的虚拟机可以控制程序到计算命名空间的下载。
在一些实施例中,计算命名空间1144可以使用一个或多个映射的计算资源1150来执行来自程序存储库1107的一个或多个程序1107(如箭头1156所示)和/或本地存储在命名空间1144处的一个或多个程序1152(如箭头1158所示)。在一些实施例中,计算命名空间1144可以使用设备存储器1106的一个或多个部分(例如,被配置为一个或多个存储器命名空间1148)和/或存储介质的一个或多个部分(例如,被实现为设备功能的一部分并且被配置为一个或多个储存命名空间1146)。
在一些实施例中,计算命名空间程序1152可以具有一范围,该范围可以限于其可以被下载到和/或被存储在其中的计算命名空间。在一些实施例中,程序存储库1109中的程序1107可以具有可以被扩展到以下的范围:整个设备1102(其可以被称为设备全局范围);设备1102的子系统(例如,NVMe子系统)(其可以被称为子系统全局范围);和/或设备1102的任何其他部分。因此,在一些实施例中,程序存储库1109中的本原程序1107可以具有设备全局范围(其也可以被称为设备公共)、子系统全局范围(其也可以被称为子系统公共)等。
在一些实施例中,一个或多个本原程序可以不被重写和/或移除,但是可以被禁用和/或不使用。在一些实施例中,一个或多个本原程序可以例如由一个或多个加载的全局程序重写(例如,替换)。
在一些实施例中,为了被利用,一个或多个程序(例如,本原程序1107和/或本地程序1152)可以与一个或多个计算命名空间1144相关联。可以例如通过激活命名空间内的程序(例如,本原程序1107和/或本地程序1152)来在程序和命名空间之间创建关联。在一些实施例中,激活程序可以使得程序可以被调度用于例如由诸如主机的装置执行。
在一些实施例中,本文关于图11描述的一个或多个操作可以例如使用一个或多个命令(例如,NVMe框架的上下文中的NVMe命令和/或使用NVMeAPI)来实现,该一个或多个命令可以使用通信接口1112接收和/或由控制器1110(其可以至少部分地实现为NVMe控制器)处理。
在一些实施例中,计算程序框架(例如,NVMe框架)可以对可以被加载到命名空间1144的程序1152进行类型检查。例如,用户可以尝试将程序1152加载到命名空间D。然而,如果程序1152指示(例如,通告)程序是旨在与CPU一起操作的类型,则框架可以禁止(例如,阻止)程序1152被加载到命名空间D,因为在图11所示的实施例中,命名空间D可能没有映射到计算资源CR D的CPU,并且因此,程序1152可能不被计算资源CR D中的任何计算引擎所支持。在一些实施例中,可以通过标准规范来实现、定义和/或类似一个或多个程序类型。
相反,在一些实施例中,程序存储库1109中的一个或多个程序1107可以不指示程序类型,和/或可以不进行类型检查,例如,因为可以映射到可以尝试使用一个或多个程序1107的命名空间1144的计算资源1150的类型可能不是已知的(例如,在一个或多个程序1107被放置在程序存储库1109中时)。
图12示出根据本公开的示例实施例的包括能够将程序资源加载到程序存储库的计算设备的系统的实施例。图12中所示出的实施例可包含可类似于图11中所示出的那些元件的一些元件,其中类似元件可具有以类似数字结尾的参考编号。
参考图12,计算设备1202可以实现程序加载机制(其可以被称为全局程序加载机制),该程序加载机制可以使得能够将一个或多个程序1207a加载(例如,下载)到程序存储库1209,如箭头1260所示。例如,用户(例如,主机、应用、进程、服务等)可以使用被称为“加载程序到存储库命令”的命令(其也可以被称为load global program(加载全局程序)命令或load_program_to_repository命令)将一个或多个程序1207a加载到程序存储库1209。在一些实施例中,load global program命令可以是可访问的,例如,使用API。在一些实施例中,这样的API可以例如使用一个或多个NVMe命令被实现为用于计算设备的框架的一部分。
加载(例如,下载)到程序存储库1209的程序1207a可以被称为加载的程序(或下载的程序或加载的全局程序),而使用上述第一(内置)、第二(预加载)和/或第三(下载)示例技术中的任何一种放置在程序存储库1209中的程序1207b可以被称为本原程序(或固定程序或预加载程序)。
在一些实施方案中,特定加载的全局程序1207a在特定计算命名空间1244中可能不可见,因为特定计算命名空间1244可能不具有支持映射到其的特定加载的全局程序(如上所述)的计算引擎。例如,FPGA内核程序在仅包括ARM CPU计算资源的计算命名空间中可能不可见。
在一些实施例中,并且取决于实现细节,根据本公开的示例实施例的全局程序加载机制可以提供可以类似于例如使用预构建和/或预加载技术的一个或多个益处,和/或可以减少或消除与如上所述的下载技术(例如,第三示例技术)相关联的一个或多个潜在问题。
例如,全局程序加载机制可以使得一个或多个程序能够被下载到程序存储库1209,例如,以补偿在制造时和/或作为固件更新的一部分可能未被包括(例如,预加载)的一个或多个程序。
作为另一示例,根据本公开的示例实施例的全局程序加载机制可以使得一个或多个加载的全局程序能够在设备全局范围、子系统全局范围等处可访问。因此,取决于实现细节,加载的全局程序可以由例如同一设备、子系统等内的多于一个计算命名空间访问。
作为另一示例,根据本公开的示例实施例的全局程序加载机制可以利用一个或多个现有程序实现技术。例如,可以使用激活命令来激活加载的全局程序,该激活命令可以与用于本原程序、本地程序等的激活命令相同或相似。
作为又一示例,已经使用根据本公开的示例实施例的全局程序加载机制加载的加载的全局程序可以不经受类型检查。因此,在一些实施例中,并且取决于实现细节,可以加载加载的全局程序1207a(例如,加载到程序存储库1209),而不管可以支持要加载的加载的全局程序1207a的任何计算资源1208是否已经映射到任何计算命名空间1244中的计算资源1250,或者甚至存在于计算资源1208中。因此,取决于实现细节,已经使用根据本公开的示例实施例的全局程序加载机制加载的加载的全局程序可以看起来与内置程序和/或预加载程序相同或相似。
此外,已经使用根据本公开的示例实施例的全局程序加载机制加载的加载的全局程序可以不指示(例如,通告)程序类型。取决于实现细节,这可以进一步使得加载的全局程序能够避免一个或多个类型检查操作。该潜在益处可以是特别有利的,例如,以使得定制程序能够作为加载的全局程序被加载,而不公开定制程序可以如何被构造、执行等。另外,取决于实现细节,根据本公开的示例实施例的全局程序加载机制可以实现和/或支持可以分流到设备的更大的用例和/或程序集。
在一些实施例中,并且取决于实现细节,已经使用根据本公开的示例实施例的全局程序加载机制加载到程序存储库1209中的程序可以以与已经使用第一(内置)和/或第二(预加载)技术放置在程序存储库1209中的程序相同或类似的方式表现。因此,计算命名空间1244可能无法区分加载的全局程序1207a和本原程序1207b。在一些实施例中,诸如主机的装置可以确定一个或多个程序(例如,加载的全局程序1207a和/或本原程序1207b)以从程序存储库1209激活、映射等到一个或多个计算命名空间1244。
在一些实施例中,全局程序加载机制可以使得程序能够被加载到程序存储库1209,而不涉及系统、设备、子系统等级别的重置。因此,取决于实现细节,全局加载程序1207a可以被加载到程序存储库1209,而不涉及设备1202和/或一个或多个执行程序进入静止状态,不重新启动已经被分配计算命名空间的一个或多个虚拟机,不重新加载(例如,下载)一个或多个先前下载的程序,和/或不完成、中止等可能正在进行的一个或多个计算。
在一些实施例中,并且取决于实现细节,根据本公开的示例实施例的全局程序加载机制可以实现任何数量的以下特征和/或提供任何数量的以下益处。可以使用加载程序命令(其可以用管理特权实现)将程序加载(例如,下载)到程序存储库(例如,全局存储库)。可以实现加载程序命令以将程序加载到具有子系统级范围、设备级范围等的程序存储库。可在系统、设备及/或子系统层级处实施加载程序命令而无需复位。一个或多个加载程序命令可以由主机、虚拟机等协调。例如,可以使用日志页命令来发现程序存储库的内容。加载的程序可以例如基于在计算命名空间中被激活而在计算命名空间中被实例化。加载在程序存储库中的程序可以看起来与内置程序和/或预加载程序相同或类似,取决于实现细节,内置程序和/或预加载程序可以使得能够编程以避免类型检查。用于将程序加载到程序存储库中、发现程序存储库的内容、激活程序等的一个或多个命令可以使用到主机、应用、进程、服务等的API来实现。本文公开的任何数量的特征和/或益处可以在计算存储设备的上下文中实现。
本文公开的任何功能,包括例如任何控制器、发现逻辑、管理逻辑或在主机、设备等处实现的任何其他功能,可以用硬件、软件、固件或其任何组合来实现,包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或多个复杂可编程逻辑器件CPLD、FPGA、ASIC、CPU、GPU、NPU、TPU等,执行存储在任何类型的存储器中的指令或其任何组合。在一些实施例中,一个或多个组件可以被实现为片上系统(SOC)。在一些实施例中,并且取决于上下文,术语逻辑、电路、设备等可以互换使用。
图13示出根据本发明的实例实施例的主机装置的实例实施例。图13中所示的主机装置可以用于例如实现本文公开的任何主机。图13中所示的主机装置1300可以包括处理器1302,其可以包括存储器控制器1304、系统存储器1306、主机逻辑1308和/或通信接口1310。图13中所示出的任何或所有组件可通过一个或多个系统总线1312进行通信。在一些实施例中,图13中所示的组件中的一个或多个组件可以使用其他组件来实现。例如,在一些实施例中,主机控制逻辑1308可以由处理器1302执行存储在系统存储器1306或其他存储器中的指令来实现。在一些实施例中,主机逻辑1308可以实现本文公开的任何主机功能,包括例如运行应用,向设备发送命令和/或从设备接收响应,以及利用主机1300和/或在其上运行的应用,如本文公开的设备功能。
图14示出根据本公开的示例实施例的设备的示例实施例。图14所示的实施例1400可以用于例如实现本文公开的任何设备。设备1400可以包括设备控制器1402、一个或多个计算资源1408、设备逻辑1416、设备功能电路1406和通信接口1410。图14中示出的组件可以通过一个或多个设备总线1412进行通信。设备逻辑1416可以用于例如实现本文公开的发现逻辑、管理逻辑、程序下载机制等中的任何一个。
设备功能电路1406可以包括用于实现设备1400的主要功能的任何硬件。例如,如果设备1400被实现为存储设备,则设备功能电路1406可以包括存储介质,诸如一个或多个闪存设备、FTL等。作为另一示例,如果设备1400被实现为网络接口卡(NIC),则设备功能电路1406可以包括一个或多个调制解调器、网络接口、物理层(PHY)、介质访问控制层(MAC)等。作为另一示例,如果设备1400被实现为加速器,则设备功能电路1406可以包括一个或多个加速器电路、存储器电路等。
图15示出根据本公开的示例实施例的用于提供设备存储器信息的方法的实施例。该方法可以在操作1502处开始。在操作1504处,该方法可以在设备处接收对信息的请求,其中该设备可以包括设备存储器和设备功能电路。例如,设备功能电路可以包括用于将设备实现为计算设备、存储设备、通信设备等的设备,如上面关于图3、图8和/或图9所描述的。在操作1506处,该方法可以基于请求提供信息,其中该信息可以指示设备功能电路的至少一部分能够访问设备存储器的至少一部分,如上面关于图3、图8和/或图9所描述的。例如,该信息可以指示FPGA能够访问FPGA内的存储器和/或FPGA外部的存储器,如上面关于图9所描述的。该方法可以在操作1508处结束。
图16示出根据本公开的示例实施例的用于配置设备存储器的方法的实施例。该方法可以在操作1602处开始。在操作1604处,该方法可以在设备处接收至少一个请求,其中,该设备可以包括设备存储器和设备功能电路。例如,设备功能电路可以包括用于将设备实现为计算设备、存储设备、通信设备等的设备,如上面关于图3、图8和/或图9所描述的。在操作1606处,该方法可以基于至少一个请求来执行配置操作,其中,配置操作可以包括配置设备存储器的至少一部分以由设备功能电路的至少一部分访问。举例来说,所述设备可以通过接收配置信息(例如,从诸如主机的装置)且将所述配置信息提供到CPU的存储器控制器来配置待由CPU访问的设备存储器的部分,如上文关于图5所描述。该方法可以在操作1608处结束。
图17示出根据本公开的示例实施例的用于将程序资源加载到设备的方法的实施例。该方法可以在操作1702处开始。在操作1704处,该方法可以在设备处接收程序,其中该设备可以包括至少一个计算资源。例如,设备可以在程序存储库1209处接收加载的程序1207a,并且设备可以包括至少一个计算资源1208,如图12所示。在操作1706处,该方法可以将程序与至少一个计算资源的第一计算命名空间相关联,并且在操作1708处,该方法可以将程序与至少一个计算资源的第二计算命名空间相关联。例如,第一命名空间1244和第二命名空间1244可以通过用第一命名空间1244和第二命名空间1244激活加载的程序1207a来与加载的程序1207a相关联,如图12所示。该方法可以在操作1708处结束。
图13、图14、图15、图16和/或图17中所示的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件和/或可以包括其他操作和/或组件。此外,在一些实施例中,可以改变操作和/或组件的时间和/或空间顺序。尽管一些组件和/或操作可以被示出为单独的组件,但是在一些实施例中,单独示出的一些组件和/或操作可以集成到单个组件和/或操作中,和/或被示出为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实现。
尽管不限于任何特定应用,但是与本文公开的设备存储器和/或程序的管理有关的发明原理在与计算存储设备一起使用时可能是特别有益的,该计算存储设备可以例如用NVMe实现。通过添加在设备内可用的计算资源,可以将一个或多个计算操作从主机卸载到用于一个或多个计算的数据可以驻留在其中的设备。取决于实现细节,根据本公开的示例实施例的设备可以提供优于模型的一个或多个益处,该模型可以例如从存储介质或网络资源获取数据到主机存储器中,然后允许CPU对所获取的数据运行计算操作(例如,找到可能具有趋势病毒感染的邮政编码的计数)。这样的方法可以变成,例如,因为数据可以跨结构(例如,直接附接的PCIe总线和/或网络结构)传输,这可能增加延迟。另外,如果使用多个这样的布置,则每个设备的总吞吐量可能比单个设备的总吞吐量更低,例如,因为总线可能无法利用由一个或多个设备(例如,NVMe设备)提供的总性能。根据本公开的示例实施例的计算存储设备可以使得一个或多个计算操作能够在存储设备处或附近执行,这取决于实现细节可以减少传输延迟。此外,与在一些用例中可能显著更大的源数据相反,仅可以复制结果。和/或类似物。
已经在各种实现细节的上下文中描述了上面公开的一些实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由某些组件实现,但是在其他实施例中,功能可以分布在不同位置并且具有各种用户界面的不同系统和组件之间。某些实施例已经被描述为具有特定过程、操作等,但是这些术语还涵盖其中特定过程、操作等可以用多个过程、操作等来实现的实施例,或者其中多个过程、操作等可以集成到单个过程、步骤等中的实施例。对部件或元件的引用可以仅指部件或元件的一部分。举例来说,对块的参考可指代整个块或一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”的术语可以仅用于区分它们修饰的元件的目的,并且可以不指示任何空间或时间顺序,除非从上下文中另有明显的。在一些实施例中,对元件的引用可以指元件的至少一部分,例如,“基于”可以指“至少部分地基于”等。对第一元件的引用可以不暗示第二元件的存在。本文公开的原理具有独立的实用性并且可以单独体现,并且不是每个实施例都可以利用每个原理。然而,这些原理也可以以各种组合体现,其中一些组合可以以协同的方式放大各个原理的益处。可以组合上述各种细节和实施例以产生根据本专利公开的发明原理的附加实施例。
由于本专利公开的发明原理可以在不脱离本发明构思的情况下在布置和细节上进行修改,因此这些改变和修改被认为落入所附权利要求的范围内。
Claims (20)
1.一种设备,包括:
设备存储器;
设备功能电路,其中,设备功能电路的至少一部分能够访问设备存储器的至少一部分;以及
控制电路,被配置为提供信息,其中,信息指示设备功能电路的所述至少一部分能够访问设备存储器的所述至少一部分。
2.根据权利要求1所述的设备,其中,信息进一步指示设备存储器的所述至少一部分的特性。
3.根据权利要求1所述的设备,还包括通信接口,其中,控制电路被配置为使用通信接口来提供所述信息。
4.根据权利要求3所述的设备,其中,控制电路被配置为:
使用通信接口接收请求;以及
基于请求提供所述信息。
5.根据权利要求1所述的设备,其中,设备存储器的所述部分是设备存储器的第一部分,并且其中,所述信息指示设备功能电路的所述至少一部分能够访问设备存储器的第二部分。
6.根据权利要求1所述的设备,其中,设备功能电路的所述部分是设备功能电路的第一部分,并且其中,所述信息指示设备功能电路的第二部分能够访问设备存储器的所述至少一部分。
7.根据权利要求1所述的设备,其中:
设备功能电路的所述至少一部分的第一部分被配置为第一命名空间;并且
设备存储器的所述至少一部分的第二部分被配置为第二命名空间。
8.一种设备,包括:
设备存储器;
设备功能电路,其中,设备功能电路的至少一部分能够访问设备存储器的至少一部分;以及
控制电路,被配置成:
接收至少一个请求;和
基于至少一个请求来执行配置操作,其中,配置操作包括将设备存储器的至少一部分配置为由设备功能电路的所述至少一部分访问。
9.根据权利要求8所述的设备,其中,配置操作包括:
接收配置信息;以及
将配置信息提供给与设备功能电路的所述至少一部分相关联的存储器控制装置。
10.根据权利要求8所述的设备,其中,配置操作包括将设备存储器的所述至少一部分分配给设备功能电路的所述至少一部分。
11.根据权利要求8所述的设备,进一步包括通信接口,其中,控制电路被配置为使用通信接口接收所述请求。
12.根据权利要求8所述的设备,其中,设备存储器的所述部分是设备存储器的第一部分,并且其中,控制电路被配置为基于所述至少一个请求来将设备存储器的第二部分配置为由设备功能电路的所述至少一部分访问。
13.根据权利要求8所述的设备,其中,设备功能电路的所述部分是设备功能电路的第一部分,并且其中,控制电路被配置为基于所述至少一个请求将设备存储器的所述至少一部分配置为由设备功能电路的第二部分访问。
14.根据权利要求8所述的设备,其中:
设备功能电路的所述至少一部分的第一部分被配置为第一命名空间;并且
设备存储器的至少一部分的第二部分被配置为第二命名空间。
15.根据权利要求8所述的设备,其中,设备功能电路的所述部分包括:
计算引擎;以及
被配置为使用计算引擎的程序。
16.一种设备,包括:
至少一个计算资源;以及
控制电路,被配置成:
接收程序;
将程序与至少一个计算资源的第一计算命名空间相关联;和
将程序与至少一个计算资源的第二计算命名空间相关联。
17.根据权利要求16所述的设备,还包括通信接口,其中,控制电路被配置为使用通信接口接收所述程序。
18.根据权利要求17所述的设备,其中,控制电路被配置为使用通信接口提供关于程序的信息。
19.根据权利要求16所述的设备,其中,控制电路被配置为:
将至少一个计算资源的至少第一部分配置为第一计算命名空间;以及
将至少一个计算资源的至少第二部分配置为第二计算命名空间。
20.根据权利要求16所述的设备,其中,控制电路被配置为:
接收命令;以及
基于命令接收所述程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/339,506 | 2022-05-08 | ||
US18/141,362 | 2023-04-28 | ||
US18/141,362 US20230359376A1 (en) | 2022-05-08 | 2023-04-28 | Systems, methods, and apparatus for managing device memory and programs |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117032555A true CN117032555A (zh) | 2023-11-10 |
Family
ID=88643597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310511911.XA Pending CN117032555A (zh) | 2022-05-08 | 2023-05-08 | 用于管理设备存储器和程序的系统、方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117032555A (zh) |
-
2023
- 2023-05-08 CN CN202310511911.XA patent/CN117032555A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797181B2 (en) | Hardware accessible external memory | |
US11360679B2 (en) | Paging of external memory | |
US20200371700A1 (en) | Coordinated allocation of external memory | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
US9916095B2 (en) | Fork-safe memory allocation from memory-mapped files with anonymous memory behavior | |
US20100083247A1 (en) | System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA | |
US10114763B2 (en) | Fork-safe memory allocation from memory-mapped files with anonymous memory behavior | |
KR20160022226A (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
CN112703481B (zh) | 混合式存储器系统接口 | |
US20230359376A1 (en) | Systems, methods, and apparatus for managing device memory and programs | |
CN117032555A (zh) | 用于管理设备存储器和程序的系统、方法和装置 | |
EP4120087B1 (en) | Systems, methods, and devices for utilization aware memory allocation | |
WO2024209271A1 (en) | Systems, methods, and apparatus for computational device communication using a coherent interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |