CN115221089A - 使用主机本地的存储设备进行高效软件定义的网络加速处理的装置、方法和计算机程序产品 - Google Patents
使用主机本地的存储设备进行高效软件定义的网络加速处理的装置、方法和计算机程序产品 Download PDFInfo
- Publication number
- CN115221089A CN115221089A CN202210348191.5A CN202210348191A CN115221089A CN 115221089 A CN115221089 A CN 115221089A CN 202210348191 A CN202210348191 A CN 202210348191A CN 115221089 A CN115221089 A CN 115221089A
- Authority
- CN
- China
- Prior art keywords
- host
- storage device
- nvme
- storage
- request
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开涉及使用主机本地的存储设备进行高效软件定义的网络加速处理的装置、方法和计算机程序产品。一种结合计算机化装置和结构目标服务一起操作的计算机化系统,所述结构目标服务与所述计算机化装置进行数据通信,所述系统包括:驻留在所述计算机化装置上的功能以及驻留在所述结构目标服务上的功能,当组合操作时,所述功能使得所述计算机化装置能够协调对数据的访问。
Description
技术领域
本发明总体上涉及硬件存储设备,并且更具体地涉及联网硬件存储设备。
背景技术
联网存储允许多个应用/数据库服务器经由存储区域网络协议(SAN)在单个网络附加存储(NAS)服务器上或在块存储控制器上共享存储。已知各种存储联网协议支持NAS和SAN系统。相同的存储盒可支持分布式文件(例如,网络附加存储)和块存储协议。
例如GPU存储器与诸如NVMe存储驱动器的存储设备之间的DMA(直接存储器访问)是已知的,并且例如在这里:news.developer.nvidia.com/gpu-direct-storage-early-access/被描述
在这里:docs.nvidia.com/cuda/gpudirect-rdma/index.html#standard-dma-transfer-example-sequence还描述了DMA传输。
DPU(数据处理单元)和直接存储器访问(DMA)通常包括平台,该平台包括联网接口(如的)和可编程处理模块(如ARM核),该可编程处理模块提供DPU的处理能力并且可以是可编程的。(版本1、2和3)是现有技术的DPU的所有示例。
DPU可以用作独立嵌入式处理器,或者可以结合到网络接口控制器中。例如,DPU可以被并入SmartNIC(智能NIC)中,SmartNIC是在服务器中使用的网络接口控制器,所述服务器诸如“下一代服务器”,所述下一代服务器是相对于其他服务器以提高的处理器速度、增强的管理特征以及更高的能量效率为特征的一类服务器。
SmartNIC技术在这里被描述:blog.melinox.com/2018/08/defining-smartnic/
存储性能开发工具包(SPDK)是开发者的工具包,其为可扩展的高性能存储应用提供构建块。SPDK是指“结构目标上的NVMe(NVMe over Fabrics target)”,其是通过诸如以太网、Infiniband(无限带宽)或光纤信道的“结构(fabrics)”提供块设备的用户空间应用。
结构上的NVMe规范定义可以通过不同传输导出的子系统;注意,RDMA和TCP传输两者都由SPDK支持。SPDK规范将导出这些子系统的软件称为“目标”(用于iSCSI的术语),并且将目标的客户端称为“主机”。应当认识到,Linux内核还实现NVMe-oF“目标”和“主机”。
如这里(nvmexpress.org/about)在线描述的,NVM Express是“充分展示非易失性存储器在所有类型的计算环境(从移动到数据中心)中的益处的标准和信息的开放集合。原始NVM Express工作组……是负责开发NVM Express规范的联盟……NVM Express标准包括:
·NVM Express(NVMe)规范-具有可用于许多操作系统的行业标准软件的PCIExpress技术附加存储的寄存器接口和命令集。NVMe被广泛认为是PCIe SSD的实际行业标准。
·NVMe管理接口(NVMe-MI)规范-用于NVM Express存储器的带外管理(例如,使用BMC发现、监控和更新NVMe设备)的命令集和架构。
·结构上的NVMe(NVMe over Fabrics,NVMe-oF)规范-对于NVM Express的扩展,其使得NVM Express命令集能够在PCIe架构之外的附加传输上进行隧道传输。结构上的NVMe技术通过允许相同协议在各个联网接口上扩展而在世界最大的数据中心中大规模扩展高效存储架构的益处。”
GPU的架构特征可以包括以下特征的全部或任何子集,其全部表征安培:
-A100的CUDA计算能力8.0和GeForce 30系列的CUDA计算能力8.6
-用于A100的TSMC的7nm FinFET工艺
-GeForce 30系列的三星的8nm工艺(8N)的自定义版本
-具有FP16、bfloat16、TensorFloat-32(TF32)和FP64的第三代张量核心支持和稀疏加速
-第二代光线追踪核;GeForce 30系列的并发光线追踪、阴影和计算
-A100 40GB和A100 80GB上的高带宽存储器2(HBM2)
-用于GeForce RTX 3090和3080的GDDR6X存储器
-在GA10x GPU上的每SM的双FP32核
-NVLink 3.0具有每对50Gbit/s的吞吐量
-支持SR-IOV的PCI Express 4.0(仅为A100保留SR-IOV)
-支持多达七个实例的A100中的多实例GPU(MIG)虚拟化和GPU分区特征
-用于GeForce 30系列的具有AV1硬件解码的纯视频特征集K硬件视频解码和用于A100的特征集J
-针对A100的5NVDEC
-具有YUV420、YUV422、YUV444、YUV400、RGBA的新的基于硬件的5-核JPEG解码(NVJPG)。
这里在线描述了结合某些实施例有用的现有技术:devops.com/the-nvmf-boogie-kubernetes-and-nvmf-full-rock。
NVM Express修订1.2.1及其先前修订是定义用于主机软件的通过PCI Express(通过PCIe的NVMe)与非易失性存储器子系统通信的寄存器级接口的文档。在nvmexpress.org/wp-content/uploads/NVMe-over-Fabrics-1_0a-2018.07.23-Ratified.pdf在线可用的规范定义了NVMe的扩展,其使得能够在其他互连上操作(结构上的NVMe)。
本说明书中提及的所有出版物和专利文献的公开内容及其中直接或间接引用的出版物和专利文献的公开内容除主题免责声明或否认之外均通过引用并入本文。
发明内容
根据某些实施例,主机经由仿真存储设备访问数据,该仿真存储设备可部分地以软件(例如DPU软件)实现。仿真存储设备实现定位由主机经由仿真存储设备接口访问的数据的至少一部分,该数据的至少一部分在本地附接至主机但不附接至DPU的一组存储设备之中的单独的附接存储设备中可用。
在DPU软件中的仿真存储设备实现访问主机附接(即,附接至主机)的存储设备,由结构目标服务(主机上或卸载的)辅助,从而产生包括2-3个DMA(又名DMA传输,又名直接存储器访问传输)的一组DMA。或者,例如如本文所描述的,可以采用单个直接存储器访问传输。
在此使用的术语“目标服务”或“结构目标服务”或“存储目标服务”典型地是基于RDMA的并且旨在包括在网络块存储或SAN(存储区域网络)领域中的在存储目标设备上运行的软件和/或硬件。在SAN/网络块存储术语中,“发起者”和“目标”可以包括这种网络连接的两侧:“发起者”可以是主机,通常请求存储服务并且发起存储请求,无论是读取还是写入;并且“目标”可以是服务于发起者向目标发送的读取和写入的存储设备。
根据某些实施例,SAN在DPU和通过PCIe连接至DPU的主机之间是内部的,不涉及网络端口。
某些实施例的特定优点在于不是开发完全不同的连接以使得DPU能够向主机发送旨在用于主机的本地驱动的请求,而是本文的实施例使用已知的服务(如本文所描述地修改的),通常使用硬件卸载特征来辅助主机充当存储目标。
下面的所有或任何子集可以表征根据本发明的实施例提供的解决方案:
a.SmartNIC中的结构上的NVMe(NVMf)发起者被配置为识别(例如,通过与目标握手)或被配置为了解特定网络NVMf子系统目标可处理NVMe请求(例如提交队列条目,即SQE)而不是NVMf请求。
b.SmartNIc中的NVMf发起者能够编写SQE并将其传递到NVMf目标,例如使用新的供应商特定操作码。
c.SmartNIC的存储栈能够处理原始主机地址,将它们分成不同的部分请求,并且仅将它们的适当子集而不是全部发送到主机本地物理NVMe设备。
d.NVMe-oF标准被修改以增加处理涉及本地系统存储器的网络请求的能力。通常,NVMf目标上的功能(例如,目标上的软件)通过子系统的预配置或者通过使用供应商特定操作码来表明情况是这样的、或者在SQE本身内进行另一指示来识别某些请求是NVMe SQE而不是常规的NVMf请求。
e.NVMf目标软件可跳过任何网络数据移动。
f.NVMf目标软件将供应商特定操作码(如果使用的话)转换成标准操作码。
g.NVMf目标软件将所得的SQE提交给物理NVMe驱动器。
通常,供应商特定的NVMe操作码用于指示数据请求,例如,如本文所描述的。可以定义供应商特定的READ/WRITE命令。在NVMf实现中,当这样的供应商特定的命令到达时,操作码在直接提交到盘之前被替换成原始READ/WRITE,包括将RDMA数据绕过暂存缓冲区中/外。
根据某些实施例,SQE内部的现有字段‘PSDT’和‘SGL标识符’可用于通过将其配置为不是“Keyd SGL数据块描述符”的值(如常规NVMf请求(具有网络地址)所要求的)来指示该SQE是指主机存储器而不是网络。
至少提供以下实施例:
实施例1.一种计算机化系统,其结合计算机化装置和结构目标服务一起操作,所述结构目标服务与所述计算机化装置进行数据通信,所述系统包括:
驻留在所述计算机化装置上的功能;以及
驻留在所述结构目标服务上的功能,
当组合操作时,所述功能使得所述计算机化装置能够协调对数据的访问。
实施例2.根据在此所述的任一实施例的计算机化系统,所述计算机化系统通过使用用于协调到达仿真的接口上的主机请求的执行的所述计算机化装置,使用少于三个的直接存储器访问(DMA)传输,使得主机能够访问仿真的PCI存储设备,其中所述主机请求涉及存储在或将被存储在本地附接至所述主机的至少一个硬件存储设备上的数据,其中所述数据在所述主机的原始应用缓冲区和本地附接至所述主机的所述硬件存储设备之间传递。
实施例3.根据在此所述的任一实施例的计算机化系统,其中驻留在所述计算机化装置上的所述功能用于执行以下项中的至少一项:
a.将仿真的存储设备提供给主机;
b.从所述主机获取发布在所述仿真的设备上的请求;
c.解析所述请求;
d.确定附接至所述主机的一个或更多个存储设备是由所述请求所引用的所述数据的至少一部分的来源或目的地,并且作为响应,确定附接至所述主机的所述一个或更多个存储设备应该涉及所述请求;以及
e.准备具有地址指向位于所述主机的存储器中的所述原始缓冲区的本地存储器地址的至少一个请求,以发送到附接至所述主机的所述一个或更多个硬件存储设备。
实施例4.根据在此所述的任一实施例的计算机化系统,其中具有本地存储器地址的所述请求针对网络存储协议被格式化,并且其中驻留在所述结构目标服务上的所述功能用于:
a.通过识别现有操作码内的新操作码或指示来识别具有本地存储器地址的所述请求;和/或
b.相应地,使用指向在具有本地存储器地址的所述请求中接收的原始缓冲区的指针,生成针对本地存储协议被格式化的常规请求;和/或
c.将所述常规请求发布到由所述本地存储协议管理的本地附接的存储设备,这将引起所述本地附接的存储设备发起数据在主机缓冲区和内部闪存之间的至少一个DMA传输。
因此,典型地,目标服务创建具有本地主机存储器地址而不是网络地址/多个网络地址的“请求”(亦称“常规”请求),该请求稍后被发布在物理真实NVMe设备上。
实施例5.根据在此所述的任一实施例的计算机化系统,其中所述计算机化装置包括:存储设备仿真器,其仿真PCIe总线上的存储设备;以及所述结构目标服务,并且其中所述存储设备仿真器包括仿真PCIe总线上的驱动的驱动仿真器。
实施例6.根据在此所述的任一实施例的计算机化系统,其中所述驱动仿真器包括NVMe驱动仿真器,该NVMe驱动仿真器仿真PCIe总线上的NVMe驱动。
实施例7.根据在此所述的任一实施例的计算机化系统,其中所述NVMe驱动仿真器采用软件定义的网络加速处理。
实施例8.根据在此所述的任一实施例的计算机化系统,其中所述结构目标服务由本地附接至硬件存储设备的主机提供,并且所述结构目标服务还包括代表所述结构目标服务来执行至少一些功能的结构目标硬件卸载。
实施例9.根据在此所述的任一实施例的计算机化系统,其中所述硬件存储设备包括物理NVMe设备,所述物理NVMe设备与所述仿真的PCI存储设备在同一直通域中,并且其中对于所述物理NVMe设备和所述仿真的PCI存储设备两者,使用相同的地址来描述所述主机的原始应用缓冲区。
实施例10.根据在此所述的任一实施例的计算机化系统,其中所述原始应用缓冲区是虚拟机(VM)存储器空间的一部分,并且其中所述物理NVMe设备通过在物理NVMe侧使用PASID(进程地址空间ID)技术来访问所述原始应用缓冲区。
实施例11.根据在此所述的任一实施例的计算机化系统,其中所述原始应用缓冲区是虚拟机(VM)存储器空间的一部分,并且其中所述物理NVMe设备通过创建包括多个虚拟机的所有存储器域的输入输出存储器管理单元(IOMMU)域,在所述输入输出存储器管理单元(IOMMU)域中部署所述物理NVMe设备,并且将至少一个原始地址转换为与所述多个虚拟机的存储器中的至少一个匹配的地址来访问所述原始应用缓冲区。
实施例12.根据在此所述的任一实施例的计算机化系统,其中所述原始应用缓冲区是虚拟机(VM)存储器空间的一部分,并且其中所述物理NVMe设备通过使用ATS(地址转换服务)来访问所述原始应用缓冲区,以提供至少一个地址的输入输出存储器管理单元(IOMMU)转换。
可以理解,根据某些实施例,仿真的存储PCI设备被传递到虚拟机(VM),而物理本地附接的NVMe驱动属于主机,而不是VM。
实施例13.根据在此所述的任一实施例的计算机化系统,其中所述本地存储协议包括来自以下组的PCI存储协议:NVMe、Virtio-blk、Virtio-scsi、SCSI、SATA、SAS、IDE。
实施例14.根据在此所述的任一实施例的计算机化系统,其中所述网络存储协议包括块存储网络存储协议。
实施例15.根据在此所述的任一实施例的计算机化系统,其中所述块存储网络存储协议包括来自以下组的远程直接存储器访问(RDMA)网络块存储协议:NVMe-oF、iSER和SRP。
实施例16.一种使主机能够访问仿真的PCI存储设备的方法,所述方法包括:采用计算机化装置用于协调到达仿真的接口上的主机请求的执行,同时使用少于三个的直接存储器访问(DMA)传输,其中所述主机请求涉及存储在或将存储在本地附接至主机的至少一个硬件存储设备上的数据。
实施例17.根据在此所述的任一实施例的方法,其中所述主机使用多个直接存储器访问传输来访问所述仿真的PCI存储设备,并且其中所述访问包括使得所述计算机化装置能够协调对所述数据的访问。
实施例18.根据在此所述的任一实施例的方法,其中所述数据存储在所述存储设备上,并且所述请求包括其中经由所述直接存储器访问传输将数据从所述存储设备传输到所述主机的读取请求。
实施例19.根据在此所述的任一实施例的方法,其中所述请求包括写入请求,并且所述数据经由所述写入请求将被存储在所述存储设备上,从而经由所述直接存储器访问传输将所述数据从所述主机传输至所述存储设备。
实施例20.根据在此所述的任一实施例的方法,其中所述访问包括使得存储设备仿真器能够通过使用所述数据的两个直接存储器访问传输来协调对所述数据的访问。
实施例21.根据在此所述的任一实施例的方法,其中驻留在所述存储设备仿真器上的功能用于:
a.将仿真的存储设备提供给所述主机;
b.从所述主机获取发布在所述仿真的设备上的请求;
c.解析所述请求;以及
d.准备包括指向主机存储器而不是指向DPU存储器的特殊存储器键(MKEY)的针对网络存储协议格式化的请求,从而在远程直接存储器访问(RDMA)协议内促进数据从所述主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在结构目标服务上的功能知晓所述简单复制。
实施例22.根据在此所述的任一实施例的方法,其中驻留在所述结构目标服务上的所述功能用于:
a.从驻留在所述存储设备仿真器上的所述功能获得针对网络存储协议格式化的请求;
b.实现RDMA数据到主机存储器中的暂存缓冲区的DMA传输,其实际上导致所述数据从所述主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在所述结构目标服务上的功能知晓所述简单复制;
c.生成针对本地存储协议格式化的请求;以及
d.将由所述结构目标服务生成的针对本地存储协议格式化的所述请求发布到针对所述本地存储协议格式化的本地附接的硬件驱动,所述硬件驱动将使所述本地附接的存储设备发起数据在主机缓冲区与内部闪存之间的DMA。
实施例23.根据在此所述的任一实施例的方法,其中所述计算机化装置包括DPU,所述DPU包括存储设备仿真器。
实施例24.根据在此所述的任一实施例的方法,其中所述硬件存储设备包括NVMe,并且所述计算机化装置的所述存储设备仿真器包括NVMe驱动仿真器,所述NVMe驱动仿真器仿真PCIe总线上的NVMe驱动。
实施例25.根据在此所述的任一实施例的方法,其中所述DPU对由主机经由所述仿真的存储设备发布的请求所引用的所述数据的至少一部分定位,所述数据的至少一部分在本地附接至所述主机但不附接至所述DPU的至少一个存储设备中可获得,或者以该存储设备为目标。
实施例26.根据在此所述的任一实施例的方法,其中所述DPU使用由所述主机提供的结构目标服务来访问单独的主机附接的存储设备,从而产生一组DMA,包括至少一个并且不多于三个的DMA。
附图说明
图1是适于实现本发明的实施例的数据中心环境的简化框图图示。
图2是响应于数据请求的包括三个直接存储器访问传输的数据流的简化框图图示。
图3是根据本发明的任何实施例的数据流的简化框图图示,其仅包括单个直接存储器访问传输。
图4是根据本发明的任何实施例的包括两个而不是三个直接存储器访问传输的数据流的简化框图图示。
图5a和图5b是可以分别由驻留在计算机化装置上的功能和驻留在结构目标服务上的功能执行的算法的简化流程图图示。这些方法一起旨在确保发生少于三次的数据传输。所述方法与写IO相关,但加以必要的修改,当请求是读请求而不是写请求时同样适用。所示操作的全部或任何合适的子集可以以任何合适的顺序执行,例如所示的顺序。
图6是结构目标卸载的操作的简化框图图示。
具体实施方式
为了简单起见,本说明书通过举例的方式涉及NVMe。然而,这样的引用不旨在进行限制,并且更一般地,可以采用任何适当的本地或PCI存储协议。
为了简单起见,本说明书通过示例涉及NVMf,也称为NVMe-oF。然而,这样的引用不旨在是限制性的,并且更一般地,可以采用任何适当的网络存储协议。
为了简单起见,本说明书通过举例的方式指代SNAPTM。然而,这样的引用不旨在是限制性的,并且更一般地,可以采用任何存储设备仿真器(例如,智能NIC服务),其通过向主机暴露存储PCI设备接口(或使主机能够访问存储PCI设备)来向主机仿真NVMe(或virtio-blk)存储PCIe设备。
如本文所使用的术语smartNIC可包含任何网络接口卡(即,PCIe卡),其插入到服务器或存储盒中以实现与以太网的连接。如果基于DPU,SmartNIC除了提供连接之外,还在NIC上实现网络流量处理,这在基础NIC的情况下将不得不由CPU执行。可以理解,基于DPU(数据处理单元)的SmartNIC可以是基于ASIC、FPGA和片上系统(SOC)的。
本文中对“仿真的(emulated)”存储设备或“仿真(emulating)”存储设备的引用旨在包括提供给主机的PCI设备接口。因此,最初被设计为用作网络设备的(硬件)设备还能够用作存储设备,因为该设备暴露或实现对存储接口的访问。可以理解,如果设备暴露或实现对类型X的接口的访问,则该设备本身可以被认为是类型X的设备。例如,SmartNIC设备通常具有或预期具有NIC接口(并且类似地,NVMe设备预期具有NVMe接口等),然而,实际上,由于(比如)SmartNIC设备的可编程特性,所以可提供其他接口,这给SmartNIC设备的硬件增加了这种灵活性或仿真能力。
在一些使用情况下,可在SmartNIC上运行的SNAPTM可使用驻留在主机上的NVMe驱动器。常规地,当发生这种情况时,解决方案是主机将NVMe驱动器供应为网络存储,并且SmartNIC然后连接到该网络存储,正如任何其他网络客户端可能做的那样。然而,如图2所示,该解决方案具有在PCI接口上数据传输三次的缺点;注意,图2示出了通过PCI的以下三个传递:
1.主机原始应用缓冲区至SmartNIC缓冲区
2.SmartNIC缓冲区至主机NVMf目标暂存缓冲区
3.主机NVMF目标暂存缓冲区至本地NVMe设备
本文中的某些实施例试图通过仅两个这样的传输或者甚至仅单个PCI传输来实现相同的功能,其中数据将从主机原始应用缓冲区直接传递到本地NVMe。这两种可能性产生更好的性能。
某些实施例通过使用用于协调到达仿真接口上的主机请求的执行的计算机化装置,使得主机能够使用少于三个直接存储器访问(DMA)传输来访问仿真PCI存储设备,其中主机请求涉及存储或将存储在直接附接到主机的至少一个本地硬件存储设备上的数据。
如本文所使用的术语“本地”、“本地附接”和“直接附接”旨在包括(通常硬件)存储设备经由其根点是主机的外围总线(诸如PCIe总线)可用于主机的情况。相反,如果存储设备经由网络仅可用于主机,则存储设备可能不(例如,即使根经由第二PCI总线连接到主机)被视为对主机是本地的,可能不被视为本地附接到主机,并且可能不被视为直接附接到主机。而且,如果存储设备经由其根不是主机的PCIe总线仅可用于主机,则存储设备可能不(例如,即使根经由第二PCI总线连接到主机)被视为对主机是本地的,可能不被视为本地附接到主机,并且可能不被视为直接附接到主机。
可以理解,直接存储器访问(DMA)传输的数量可被辨别例如如下:如果存在额外的PCI槽可用,则PCI分析器可被插到与DPU相同的PCI总线,并且与传输相关联的NVMe驱动器被连接。然后,在发布在仿真的存储设备上的简单的单个读或写IO请求之后,在分析器的输出上清楚地看到DMA传输的数量(无论它们是1、2或3)。如果CPU和NVMe驱动器不都在同一PCI上,则可以采用两个PCI分析器,一个用于DPU,一个用于NVMe设备。该NVMe设备可使用介于其间的现有提升器(raiser)从该槽中拔出并插回,并且该提升器也可连接至分析器。
术语“本地”在本文中用于指代其与主机的数据通信是不经由网络的设备(通常为硬件存储设备),并且替代地,通常由于设备通常使用外围总线(诸如PCIe)直接附接到主机。
通常,该装置包括被配置为向主机仿真存储设备(诸如但不限于NVMe存储PCIe设备)的设备仿真器。本实施例中的主机可以包括NVMe设备,其具有主机NVMe驱动器。
图1-4中示出了本发明的实施例。首先,图1示出了具有多个节点的数据中心。数据中心可以包括任何物理组的计算机系统和/或相关联的电信和/或存储系统。例如,在实践中,某些数据中心提供亚马逊网络服务,尽管从最终用户的观点来看,这些服务由虚拟机在互联网上提供,使得提供服务的数据中心对消费该服务的远程终端用户是透明的。通常,数据中心包括用于电力供应的备用组件和/或基础设施、和/或数据通信连接和/或环境控制(诸如空调和/或灭火)和/或安全设备。
数据可以从某个节点的主机流动到主机的节点中的本地驱动器(又名流程1),或者流动到远程网络存储(又名流程2)或者流动到另一节点的驱动器(流程3)。图2-4示出了流程1的实现方式,其中数据从主机流到主机的节点中的本地驱动器(或其他硬件存储设备)。应当认识到的是,流程1特别适合于希望所有IO首先到达该仿真设备(即,到达由DPU存储接口提供的设备)的使用情况。随后,DPU上的逻辑判定特定请求或其部分是否需要涉及主机本地驱动器。
在图2中,响应于请求的常规数据流包括三个直接存储器访问传输,被表示为DMA编号1、2和3。为了清楚起见,在图2-4中,对数据的请求被示为写入请求,然而,可替代地,该请求可以是读取请求。可以理解,目标服务可以被卸载到硬件,或可以不被卸载到硬件。
在图3的实施例中,上述少于三个的直接存储器访问传输仅包括单个PCI传输,使得数据直接在主机的原始应用缓冲区和相对于主机是本地的或直接附接至主机的硬件存储设备之间传递,该装置通过使本地存储设备直接访问驻留在主机中的主机数据缓冲区来协调传输,包括将移交至计算机化装置的请求传递至本地存储设备。
在图3和图4的实施例中,操作SNAPTM仿真的NVMe设备的主机NVMe驱动器可与图2中的相同。然而,如在图3和图4中通过使用术语“修改的”所指示的,由SNAPTM和目标服务执行的流程(通常响应于数据请求)在以下方式的全部或任何子集上与由图2中的其相应对应部分执行的流程不同:
1.SNAPTM NVMF发起者发送NVMe请求(SQE)而不是NVMe-oF请求(命令封装体)。通常,NVMe请求具有指向本地系统存储器的指针,所述指针由主机最初提交给SNAPTM仿真的NVMe设备的指针创建;和/或NVMe请求使用供应商特定操作码而不是标准读/写操作码。如果需要,可以实现其他替代方案(例如,单独的预定义的网络子系统)。
2.NVMf目标软件通常基于供应商特定操作码(或基于任何其他替换,诸如单独的预定义网络子系统或NVMe请求内的另一指示)来接收请求,解析供应商特定操作码并推断这是NVMe请求而不是NVMe-oF请求。
3.NVMf目标软件不需要执行网络数据移动(因为数据已经驻留在主机存储器中)。
4.NVMf目标软件用标准读/写操作码(如果是指示方法)替换操作码(其可以是供应商特定的),并将其提交给本地NVMe设备。
应当理解,在图3和图4的实施例中,物理NVMe设备访问原始应用缓冲区。这可以通过不使用任何输入输出存储器管理单元(IOMMU)或使用输入输出存储器管理单元(IOMMU)的简单直通配置来实现,使得物理NVMe设备和SNAPTM仿真的NVMe设备都在同一直通域中。然后可以使用相同的地址针对物理NVMe设备和SNAPTM仿真的NVMe设备两者描述原始应用缓冲区。相反,对于虚拟化环境,原始应用缓冲区是虚拟机(VM)存储器空间的一部分。因此,可使用合适的选项来确保物理NVMe设备可访问原始应用缓冲区,诸如但不限于以下选项中的任何选项:
a.在物理NVMe磁盘侧上使用PASID(进程地址空间ID)技术;
b.使用支持虚拟功能(VF)的物理NVMe磁盘,并且将一个这样的VF放置在与VM相同的域中;
c.创建新的输入输出存储器管理单元(IOMMU)域,其包括VM存储器域,通常是所有VM的所有存储器域,并且将物理NVMe设备放在该域中。然后,例如,在SNAPTM软件中,原始地址可被转换成匹配新域(包含它们全部)上的正确VM存储器的地址。
d.获取到机器地址的VM存储器映射表到SNAPTM中。然后,SNAPTM可根据该映射转换主机地址并在物理NVMe请求中使用它们。
e.使用ATS(地址转换服务)获得地址的输入输出存储器管理单元
(IOMMU)转换。
为了生成图3(或图4)的修改的目标服务,本文中描述的功能被添加到目标服务。为此,可以使用类目标子系统,比如通过使用NVM Express联盟文献来写入满足NVMExpress标准的软件,并且可以在可以与DPU进行数据通信的主机系统上运行。DPU可以任何合适的方式被插入到服务器中并且可以以任何合适的方式连接到主机系统。
NVM Express标准可用于标准化非标准的NVMe-oF请求并允许该请求包括指向主机存储器的指针,而不是指向远程节点存储器的指针。在NVMe和NVMe-oF标准中,请求被定义为包括表达指针的两个选项中的任一者,并且如果使用NVMe-oF RDMA,则寻址方案是远程存储器(例如,在NVMe标准中,其可以被称为“键控SGL”)。然而,移除此要求将允许NVMe-oF RDMA协议传递标准本地主机地址。因为本地主机地址是存储系统的存储器,所以标准可通过允许某些地址被使用并且禁止使用某些其他地址的合适的安全功能和协商来增强。如果目标功能是硬件卸载的一部分,则内部硬件可编程CPU可被编程以执行本文描述的目标服务功能。
目标服务可例如在x86主机上运行。
根据某些实施例,主机访问仿真的PCI存储设备可能产生多个直接存储器访问传输,并且其中该访问包括使计算机化装置能够协调对数据的访问。
可以理解,单个请求可以跨越多个主机连接的驱动器。替换地或附加地,应当使用主机驱动器来服务少于所有发布的请求(例如,由主机经由仿真的存储设备发布的请求)是可能的,因为可以仍然从网络来服务请求的部分。
因此,根据实施例,驻留在计算机化装置上的功能可用于执行以下至少一者:
a.将仿真的存储设备提供给主机;
b.从主机获取发布在仿真的设备上的请求;
c.解析该请求;
d.确定附接至主机的一个或更多个存储设备是该请求所引用的数据的至少一部分的来源或目的地,并且作为响应,确定附接至主机的一个或更多个存储设备应当涉及该请求;以及
e.准备具有指向位于主机的存储器中的原始缓冲区的本地存储器地址的至少一个请求,用于发送至附接至主机的本地硬件存储设备。
应当认识到的是,可以执行以上操作的全部或者任何子集,诸如但不限于所有操作a-e或者没有d的操作a-c和e。
根据某些实施例,针对网络存储协议来格式化具有本地存储器地址的请求,其中驻留在与计算机化装置进行数据通信的结构目标服务上的功能可用于:
a.通过识别现有操作码内的新操作码或指示来识别非标准的NVMF请求;
b.相应地,使用在非标准的NVMf请求中接收的指向原始缓冲区的指针来生成针对本地存储协议格式化的常规NVMe请求(例如,具有网络地址);以及
c.将常规NVMe请求发布至由本地存储协议管理的本地附接的存储设备,其将促使所述本地附接的存储设备发起数据在主机缓冲区和内部闪存之间的至少一个DMA传输。
根据某些实施例,网络存储协议包括块存储网络存储协议,例如来自但不限于以下组的远程直接存储器访问(RDMA)网络块存储协议:NVMe-oF、iSER、SRP。本地存储协议可以包括来自但不限于以下组的PCI存储协议:NVMe、Virtio-blk、Virtio-scsi、SCSI、SATA、SAS、IDE。
在图4的实施例中,访问包括使存储设备仿真器能够通过使用数据的两个直接存储器访问传输来协调对数据的访问。
根据某些实施例,驻留在存储设备仿真器上的功能可用于:
a.将仿真的存储设备提供给主机;
b.从主机获取发布在仿真的设备上的请求;
c.解析该请求;以及
d.准备针对网络存储协议格式化的请求,包括指向主机存储器的存储器键(MKEY),例如而不是像常规存储器键那样指向DPU存储器,由此在RDMA协议内促进数据从主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在结构目标服务上的功能知晓该简单复制。
可以理解,可以采用任何合适的方法来生成并使用指向主机存储器的存储器键(MKEY)。例如,对DPU固件的合适调用生成MKEY,该MKEY跨越另一个系统的存储器,而不是调用者的存储器(例如,在存储执行图5a至图5b的方法和/或本文中其他方法的逻辑的DPU中的内部处理单元上运行的应用的存储器)。此MKEY符合RDMA指定的MKEY要求,因此可就像任何常规MKEY将被使用时一样被使用。
驻留在结构目标服务上的功能通常用于:
a.从驻留在存储设备仿真器上的功能得到针对网络存储协议格式化的请求;
b.实现RDMA数据到主机存储器中的暂存缓冲区的DMA传输,其实际上导致数据从主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在结构目标服务上的功能知晓该简单复制;
c.生成针对本地存储协议格式化的请求;以及
d.将由结构目标服务生成的针对本地存储协议格式化的请求发布到针对本地存储协议格式化的本地附接的硬件驱动器,这将使本地附接的存储设备发起数据在主机缓冲区与内部闪存之间的DMA。
通常,计算机化装置包括DPU,DPU包括存储设备仿真器。DPU可包括DPU,并且通常,本地存储设备包括NVME,并且计算机化装置的存储设备仿真器包括NVMe驱动仿真器,其仿真PCIe总线上的NVMe驱动。例如,NVMe驱动仿真器可包括Mellanox NVMeSNAPTM设备。
如本文所使用的术语软件定义的网络加速处理(也称为SNAPTM)可包括实现NVMe存储的硬件加速虚拟化的任何子系统或技术,从而使得联网存储看起来像本地NVMe SSD,例如通过仿真PCIe总线上的NVMe驱动器或其他存储设备。主机OS/管理程序通常使用其常规NVMe驱动程序,其不知道通信不是由物理驱动程序而是由NVMe SNAPTM终止。任何逻辑可经由NVMe SNAPTM框架被应用于数据,并在以太网或无限带宽协议上通过网络传输到存储目标。
NVMe SNAPTM允许终端用户在所提供的框架之上实现他们自己的存储解决方案。NVMe SNAPTM暴露或实现对核的接口的访问(例如,提供核对接口的访问),诸如例如SmartNIC核,用于实现存储解决方案的控制。NVMe SNAPTM与流行的存储性能开发工具包(SPDK)开源项目集成,并且为客户提供在熟悉环境中编程的敏捷性。通常,终端用户被提供有两条数据路径中的一者或两者——第一个完全卸载,利用用于NVMe SNAPTM的硬件卸载,该NVMe SNAPTM从NVMe PCIe获取数据流量,将其转换为NVMe-oF(例如,RoCE(聚合以太网上的RDMA)或Infiniband)并且将其直接传输到网络,通常全部在硬件中。应当认识到,该选项可能缺乏在ARM核上运行的软件“触摸”数据或者改变存储协议的能力。可提供的第二数据路径使在ARM核上运行的SPDK能够终止来自NVMe PCIe的流量,且可在NVMe PCIe上实现任何客户逻辑,且接着将数据传输到网络。在数据路径中使用ARM核的该路径允许在线实现任何类型的存储解决方案的灵活性。在上述两种数据路径选项中,控制平面通常总是在ARM核中运行,将流量协调到其目的地。
NVMe SNAPTM由以下项的全部或任何子集表征:
·实现硬件内存储虚拟化
·可编程NVMe SNAPTM框架使得能够集成到可以基于任何网络协议的任何存储解决方案中
·使得能够优化用于CAPEX和OPEX节省的存储资源
·通过卸载联网数据路径和存储数据路径两者来释放计算节点CPU资源
双端口25/100 Gb/s网络适配卡
硬件卸载加速器
DDR4存储器
PCIe 3.0/4.0接口
FHHL形状因子
·使用情况,包括以下的全部或任何子集:
裸金属云存储虚拟化
具有零软件影响的支架缩放设计
将NVMe-oF引入不具有OS类型/版本依赖性的企业
--数据中心获得更好的服务器利用率,从而允许更多的虚拟机和更多的租户在相同的硬件上,同时降低TCO、功耗和电缆复杂度。
NVMe SNAPTM可以例如基于Mellanox技术,该技术将硬件加速的存储虚拟化与SmartNIC的高级联网和可编程能力相结合。具有NVMe SNAPTM的SmartNIC同时用作用于存储和网络虚拟化两者的智能网络适配器,由此提供硬件内存储虚拟化以改进存储和联网基础设施两者,因为Mellanox上的NVMe SNAPTM实现硬件内存储虚拟化,同时利用智能适配器的产生灵活性的ARM可编程性。客户还可以并行地利用基础设施来实现网络虚拟化卸载,例如在ARM核上运行vSwitch控制,同时将数据路径卸载到SoC中的技术,从而使虚拟化可扩展性和效率最大化。
应当认识到,DPU可以定位由主机经由仿真的存储设备发布的请求引用的数据的至少一部分,如在本地附接到主机而不是DPU的至少一个存储设备中可用的或者针对该至少一个存储设备。
可以理解,请求数据可以根本不涉及主机存储设备。或者,请求数据的至少一部分(所有请求数据,或仅其一部分)可涉及一个或更多个主机存储设备。对于特定的请求数据部分(或多个部分),可以涉及单个主机设备或多个主机设备。
根据某些实施例,DPU使用由主机提供的结构目标服务来访问单独的主机附接的存储设备,从而产生包括1-3个DMA的一组DMA。
可以理解,请求可以是读取请求或写入请求。在第一实例中,通常,数据被存储在存储设备上,并且请求包括其中经由直接存储器访问传输将数据从存储设备传输到主机的读取请求。然而,可替代地,给定请求可以包括写入请求,并且数据经由写入请求被存储在存储设备上,从而经由直接存储器访问传输将数据从主机传输到存储设备。
根据一个实施例,该系统结合计算机化装置和与计算机化装置进行数据通信的结构目标服务进行操作,并且该系统包括驻留在计算机化装置上的功能以及驻留在结构目标服务上的功能,该功能在组合操作时使计算机化装置能够协调对数据的访问。
示例:计算机化装置通常包括:仿真PCIe总线上的存储设备的存储设备仿真器;以及结构目标服务,并且存储设备仿真器包括仿真PCIe总线上的驱动的驱动仿真器。驱动仿真器可包括仿真PCIe总线上的NVMe驱动的NVMe驱动仿真器。通常,NVMe驱动仿真器采用软件定义的网络加速处理。NVMe驱动仿真器可例如包括Mellanox NVMe SNAPTM设备。可选地,结构目标服务由主机和本地硬件存储设备提供,并由专门的结构目标硬件卸载辅助。
结构目标卸载可以按照图6来操作,其中典型地,只有控制路径、管理和异常通过目标CPU软件。通常,数据路径和NVMe命令由网络适配器处理。
通常,目标服务可用于将存储系统提供给网络客户端,处理从客户端到达的连接,处理管理任务(例如,在NVMe和NVMe-oF规范中定义的管理命令集),以及使用配置的物理驱动器来处理/服务每个IO请求。在根据某些实施例提供的目标卸载特征中,目标服务被卸载到随后处理/服务IO请求的硬件,而不是主机这样做。通常,主机仍然运行软件来处理连接和管理任务,并且在合适的硬件(例如-5和)中配置目标卸载特征,但是,一旦这已经完成,处理每个请求的任务(包括使用配置的物理驱动器来服务请求)完全由硬件完成,而主机软件仍然负责异常流、错误、断开连接等。NVMe over Fabrics(NVMe-oF)目标卸载的配置是在线描述的,例如在community.melinox.com/s/article/howto-configuration-nvme-over-fabrics--nvme-of--target-offload。
可以理解,一般而言,本文对驱动仿真器的引用仅仅是示例性的,因为更一般地,可以仿真任何存储设备(不一定是驱动器)。此外,本文对NVMe的引用仅是示例性的,因为更一般地,可采用任何本地存储协议。此外,本文对NVMe-oF的引用仅是示例性的,因为更一般地,可采用任何网络存储协议。
驻留在计算机化装置上的功能(无论是独立提供还是与本文所示出和描述的其他组件组合地提供)通常用于执行方法(图5a中所示),该方法包括适当顺序的以下操作的全部或任何子集,例如如下:
a.将仿真的存储设备提供给主机;
b.从主机获取发布在仿真的设备上的请求;
c.解析该请求;
d.确定附接至主机的一个或更多个存储设备是该请求所引用的数据的至少一部分的来源或目的地,并且作为响应,确定附接至主机的一个或更多个存储设备应当涉及该请求;以及
e.准备具有指向位于主机的存储器中的原始缓冲区的本地存储器地址的至少一个请求,用于发送至附接至主机的本地硬件存储设备。
驻留在结构目标服务上的功能通常用于执行包括以下操作的全部或任何子集的方法(图5b中所示),这些操作被适当地排序,例如如下:
a.通过识别现有操作码内的新操作码或指示来识别具有本地存储器地址的请求;
b.因此,使用在具有本地存储器地址的请求中接收的指向原始缓冲区的指针,生成针对本地存储协议格式化的常规请求(具有网络地址);以及
c.将常规请求(具有网络地址)发布到由本地存储协议管理的本地附接的存储设备,这将促使本地附接的存储设备发起数据在主机缓冲区和内部闪存之间的至少一个DMA传输。
计算机化装置上的功能可以软件、硬件、固件或其任意组合来实现。结构目标卸载上的功能可以软件、硬件、固件或其任何组合来实现。
应理解,图5a和5b的方法通常一起比产生三个或更多个直接存储器访问传输的以下方法更简洁:
i.计算机化装置上的功能在HW能力的帮助下向主机提供仿真的存储设备(在这种情况下为NVMe)
ii.计算机化装置上的功能在HW能力的帮助下从发布在仿真的设备上的主机获得请求
iii.计算机化装置上的功能解析该请求
iv.在HW能力的帮助下,由内部DPU存储器的请求指向的DMA数据缓冲区(DMA#1)
v.准备常规的NVMe-oF请求并发送到目标服务
结合以下操作的全部或任何子集:
操作1011:结构目标服务功能得到在以上操作中准备的NVMe-oF常规请求(具有网络地址)操作1012:从DPU到主机存储器中的暂存缓冲区的RDMA数据(DMA#2)
操作1013:结构目标服务生成常规NVMe请求
操作1014:结构目标服务将NVMe请求发布到本地附接的真实NVMe驱动器,将DMA数据驱动到内部闪存(DMA#3)
如所见,此方法产生三种DMA,因此比图5a、5b的方法较不简约。
根据某些非限制性实施例,本文中的方法利用以下技术的全部或任何子集:
NVMe
“NVM Express(NVMe)或非易失性存储器主机控制器接口规范(NVMHCIS)是用于访问经由PCI Express(PCIe)总线附接的非易失性存储介质的开放的逻辑设备接口规范。
NVM代表非易失性存储器,其通常是NAND闪存,其以若干物理形状因素出现,包括固态驱动器(SSD)、PCI Express(PCIe)附加卡、M.2卡和其他形式。”
软件定义的网络加速处理
NVMe SNAPTM实现NVMe存储的硬件虚拟化。Mellanox NVMe SNAPTM框架使客户能够容易地将联网存储解决方案集成到其云或企业服务器部署中。NVMe SNAPTM将虚拟化存储带到裸金属云并使得可组合存储简单。其使得能够实现计算和存储的高效解聚以允许完全优化的资源利用,由此促进可组合存储。
NVMe SNAPTM赋予客户自由以在NVMe SNAPTM框架(其在芯片控制器上的Mellanox系统上运行)之上实现他们自己的存储技术和解决方案。SNAPTM通过利用的嵌入式硬件存储加速引擎以及集成式可编程ARM核来实现性能和软件透明性两者。这种强大的组合对主机软件是敏捷的但完全透明的,从而允许SNAPTM被集成到各种存储解决方案中。
数据处理单元(DPU)为现代数据中心激发了前所未有的创新,为复杂的计算和AI工作负荷提供宽范围的高级联网、存储和安全服务。通过将行业领先的网络适配器与ARM核阵列组合,提供了具有完整数据中心基础设施片上可编程性的专门构建的硬件加速引擎。
益处包括以下项的全部或任何子集:
a.用于扩展工作负荷的数据存储;利用NVMe over Fabric(NVMe-oF)存储直接、加密、弹性存储、数据完整性、压缩和去重,-2DPU为与直接附接存储竞争的远程存储提供了具有延迟的高性能存储网络。
NVMe over Fabric(也称为NVMe-oF或NVMF)
Devops.com描述了“NVMe是规定CPU如何经由PCI总线将存储器移动至存储设备的协议。NVMe通过一组环(每个CPU)通信,其中可将命令从任何CPU提交给底层NVMe设备。NVMe的设计消除了CPU与存储设备之间的中间层。NVMe设备由控制器、队列、命名空间、命名空间ID和具有某种形式的接口的实际存储介质组成。存储介质可被分组为具有ID的称为命名空间的部分。在NVMF的上下文中,命名空间为盘/消费者提供强制访问控制的方式。命名空间类似于OS分区,除了分区是由控制器在硬件中完成的而不是OS(在命名空间上仍然可以具有OS分区)。一些NVMe命名空间可对用户隐藏(例如,用于安全隔离)。控制器通过队列连接到端口,并且通过其命名空间ID连接到命名空间。允许控制器连接到多个命名空间,并且允许命名空间被多个控制器(因此也是多个端口)控制。想象一下,在多个计算机上抹掉这个NVMe设备,你会得到下一个重要的概念,存储结构。
…当你将网络放在PCI总线与存储设备之间时,你使用NVMe over Fabric(也称为NVMe-oF或简单地NVMF)。NVMF通过网络实现主机和存储系统之间的快速访问。与iSCSI相比,NVMF具有低得多的访问延迟,在实践中仅添加本地和远程存储之间的小延迟差异。NVMF相对于传统设备附接的存储,在吞吐量和寻道时间方面取得了突破”。
高速缓存层
高速缓存分层涉及结合用作比高速缓存层更经济的存储层的纠删码或更慢/成本更低的设备的“后备池”提供诸如固态驱动器的快速和/或昂贵的存储设备,其被配置为作为高速缓存层操作。例如,Mellanox提供称为VSA的存储加速软件产品,其是围绕iSER技术构建的软件平台。VSA被设计为支持作为缓存层的闪存或SSD的使用。
超聚合技术或超聚合通常涉及全部聚合到通常不可见的基础架构中的计算、存储、网络和虚拟化(其全部或任何子集)。该技术从专有的且昂贵的存储阵列移开,以打开围绕现成商品服务器构建的标准计算和存储架构。组织可以使用商品架构来实现与大型昂贵的存储阵列竞争的超聚合解决方案,与典型的存储平台的性能保持一致。微软的Windows服务器2019中的存储空间直接(S2D)版本是超聚合解决方案的示例。
应当理解,如果需要,本发明的软件组件可以ROM(只读存储器)形式实现。如果需要,软件组件通常可以使用常规技术在固件或硬件中实现。还应当理解,软件组件可被实例化,例如:作为计算机程序产品,或在有形介质上。在一些情况下,有可能将软件组件实例化为可由适当的计算机解释的信号,尽管在本发明的某些实施例中可以排除这种实例化。
应当理解,为了清楚起见,在单独实施例的上下文中描述的本发明的各种特征也可在单个实施例中以组合的方式提供。相反,为了简洁起见,在单个实施例的上下文中描述的本发明的各种特征也可单独地提供,或以任何合适的子组合提供。
本领域技术人员应当理解,本发明不受在上文中具体示出和描述的限制。相反,本发明的范围由所附权利要求及其等同物限定。
Claims (28)
1.一种计算机化系统,其结合计算机化装置和与所述计算机化装置进行数据通信的结构目标服务一起操作,所述系统包括:
驻留在所述计算机化装置上的功能;以及
驻留在所述结构目标服务上的功能,
当组合操作时,所述功能使得所述计算机化装置能够协调对数据的访问。
2.根据权利要求1所述的计算机化系统,所述计算机化系统通过使用用于协调到达仿真的接口上的主机请求的执行的所述计算机化装置,使用少于三个的直接存储器访问DMA传输,使得主机能够访问仿真的PCI存储设备,其中所述主机请求涉及存储在或将被存储在本地附接至所述主机的至少一个硬件存储设备上的数据,其中所述数据在所述主机的原始应用缓冲区和本地附接至所述主机的所述硬件存储设备之间传递。
3.根据权利要求2所述的计算机化系统,其中驻留在所述计算机化装置上的所述功能用于执行以下项中的至少一项:
a.将仿真的存储设备提供给主机;
b.从所述主机获取发布在所述仿真的设备上的请求;
c.解析所述请求;
d.确定附接至所述主机的一个或更多个硬件存储设备是由所述请求所引用的所述数据的至少一部分的来源或目的地,并且作为响应,确定附接至所述主机的所述一个或更多个存储设备应该涉及所述请求;以及
e.准备具有地址指向位于所述主机的存储器中的原始缓冲区的本地存储器地址的至少一个请求,以发送到附接至所述主机的所述一个或更多个硬件存储设备。
4.根据权利要求3所述的计算机化系统,其中具有本地存储器地址的所述请求针对网络存储协议被格式化,并且其中驻留在所述结构目标服务上的所述功能用于:
a.通过识别现有操作码内的新操作码或指示来识别具有本地存储器地址的所述请求;
b.相应地,使用指向在具有本地存储器地址的所述请求中接收的原始缓冲区的指针,生成针对本地存储协议被格式化的常规请求;以及
c.将所述常规请求发布到由所述本地存储协议管理的本地附接的存储设备,这将引起所述本地附接的存储设备发起数据在主机缓冲区和内部闪存之间的至少一个DMA传输。
5.根据权利要求1所述的计算机化系统,其中所述计算机化装置包括:
存储设备仿真器,其仿真PCIe总线上的存储设备;以及
所述结构目标服务,
并且其中所述存储设备仿真器包括仿真PCIe总线上的驱动的驱动仿真器。
6.根据权利要求5所述的计算机化系统,其中所述驱动仿真器包括NVMe驱动仿真器,所述NVMe驱动仿真器仿真PCIe总线上的NVMe驱动。
7.根据权利要求6所述的计算机化系统,其中所述NVMe驱动仿真器采用软件定义的网络加速处理。
8.根据权利要求1所述的计算机化系统,其中所述结构目标服务由本地附接至硬件存储设备的主机提供,并且所述结构目标服务还包括代表所述结构目标服务来执行至少一些功能的结构目标硬件卸载。
9.根据权利要求2所述的计算机化系统,其中所述硬件存储设备包括物理NVMe设备,所述物理NVMe设备与所述仿真的PCI存储设备在同一直通域中,并且其中对于所述物理NVMe设备和所述仿真的PCI存储设备两者,使用相同的地址来描述所述主机的原始应用缓冲区。
10.根据权利要求9所述的计算机化系统,具有物理NVMe侧,其中所述原始应用缓冲区是虚拟机VM存储器空间或VM域的一部分,所述仿真的PCI存储设备处于该VM域中,并且其中处于直通主机域中而非所述VM域中的所述物理NVMe设备通过使用所述物理NVMe侧上的进程地址空间ID(PASID)技术来访问所述原始应用缓冲区。
11.根据权利要求9所述的计算机化系统,其中所述原始应用缓冲区是虚拟机存储器空间或VM域的一部分,所述仿真的PCI存储设备处于所述VM域中,并且其中所述物理NVMe设备通过创建包括多个虚拟机的存储器域的输入输出存储器管理单元IOMMU域,在所述输入输出存储器管理单元IOMMU域中部署所述物理NVMe设备,并且将至少一个原始地址转换为与所述多个虚拟机的存储器中的至少一个匹配的地址来访问所述原始应用缓冲区。
12.根据权利要求9所述的计算机化系统,其中所述原始应用缓冲区是虚拟机存储器空间或VM域的一部分,所述仿真的PCI存储设备处于所述VM域中,并且其中处于直通主机域中而非处于所述VM域中的所述物理NVMe设备通过使用地址转换服务ATS来访问所述原始应用缓冲区,以提供至少一个地址的输入输出存储器管理单元IOMMU转换。
13.根据权利要求4所述的计算机化系统,其中所述本地存储协议包括来自以下组的PCI存储协议:NVMe、Virtio-blk、Virtio-scsi、SCSI、SATA、SAS、IDE。
14.根据权利要求4所述的计算机化系统,其中所述网络存储协议包括块存储网络存储协议。
15.根据权利要求14所述的计算机化系统,其中所述块存储网络存储协议包括来自以下组的远程直接存储器访问RDMA网络块存储协议:NVMe-oF、iSER和SRP。
16.一种使主机能够访问仿真的PCI存储设备的方法,所述方法包括:采用计算机化装置用于协调到达仿真的接口上的主机请求的执行,同时使用少于三个的直接存储器访问DMA传输,其中所述主机请求涉及存储在或将存储在本地附接至所述主机的至少一个硬件存储设备上的数据。
17.根据权利要求16所述的方法,其中所述主机使用多个直接存储器访问传输来访问所述仿真的PCI存储设备,并且其中所述访问包括使得所述计算机化装置能够协调对所述数据的访问。
18.根据权利要求16所述的方法,其中所述数据存储在所述存储设备上,并且所述请求包括其中经由所述直接存储器访问传输将数据从所述存储设备传输到所述主机的读取请求。
19.根据权利要求16所述的方法,其中所述请求包括写入请求,并且所述数据经由所述写入请求将被存储在所述存储设备上,从而经由所述直接存储器访问传输将所述数据从所述主机传输至所述存储设备。
20.根据权利要求16所述的方法,其中所述访问包括使得存储设备仿真器能够通过使用所述数据的两个直接存储器访问传输来协调对所述数据的访问。
21.根据权利要求20所述的方法,其中驻留在所述存储设备仿真器上的功能用于:
a.将仿真的存储设备提供给所述主机;
b.从所述主机获取发布在所述仿真的设备上的请求;
c.解析所述请求;以及
d.准备包括指向主机存储器而不是指向DPU存储器的特殊存储器键MKEY的针对网络存储协议格式化的请求,从而在远程直接存储器访问RDMA协议内促进数据从所述主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在结构目标服务上的功能知晓所述简单复制。
22.根据权利要求21所述的方法,其中驻留在所述结构目标服务上的所述功能用于:
a.从驻留在所述存储设备仿真器上的所述功能获得针对网络存储协议格式化的请求;
b.实现RDMA数据到主机存储器中的暂存缓冲区的DMA传输,其实际上导致所述数据从所述主机中的一个缓冲区到另一个缓冲区的简单复制,而不需要驻留在所述结构目标服务上的功能知晓所述简单复制;
c.生成针对本地存储协议格式化的请求;以及
d.将由所述结构目标服务生成的针对本地存储协议格式化的所述请求发布到针对所述本地存储协议格式化的本地附接的硬件驱动,所述硬件驱动将使所述本地附接的存储设备发起数据在主机缓冲区与内部闪存之间的DMA。
23.根据权利要求16所述的方法,其中所述计算机化装置包括DPU,所述DPU包括存储设备仿真器。
24.根据权利要求23所述的方法,其中所述硬件存储设备包括NVMe,并且所述计算机化装置的所述存储设备仿真器包括NVMe驱动仿真器,所述NVMe驱动仿真器仿真PCIe总线上的NVMe驱动。
25.根据权利要求23所述的方法,其中所述DPU对由主机经由所述仿真的存储设备发布的请求所引用的所述数据的至少一部分定位,所述数据的至少一部分在本地附接至所述主机但不附接至所述DPU的至少一个存储设备中可获得或者以该存储设备为目标。
26.根据权利要求25所述的方法,其中所述DPU使用由所述主机提供的结构目标服务来访问本地附接到所述主机但不附接到所述DPU的单独的主机附接的存储设备,从而产生一组DMA,包括至少一个并且不多于三个的DMA。
27.根据权利要求10所述的计算机化系统,其中所述主机的原始应用缓冲区是在虚拟机的存储器空间中包括的域的一部分,所述仿真的PCI存储设备位于所述虚拟机的存储器空间中包括的所述域中,并且其中物理NVMe设备基于由所述主机上的面对所述虚拟机的客户机到主机的存储器映射的助手驱动器传递到所述计算机化装置中的映射,借助于所述计算机化装置将VM地址转换为主机地址来访问所述原始应用缓冲区,所述物理NVMe设备在直通主机域中而不是位于所述虚拟机的存储器空间中包括的所述域中。
28.根据权利要求23所述的方法,其中所述硬件存储设备包括以下组中的一个:NVMe、Virtio-blk、Virtio-scsi、SCSI、SATA、SAS、IDE,并且所述存储设备仿真器包括以下组中的一个:NVMe、Virtio-blk、Virtio-scsi、SCSI、SATA、SAS、IDE驱动仿真器,其仿真PCIe总线上的存储驱动。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/234,189 US11940935B2 (en) | 2021-04-19 | 2021-04-19 | Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host |
US17/234,189 | 2021-04-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221089A true CN115221089A (zh) | 2022-10-21 |
Family
ID=83446964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210348191.5A Pending CN115221089A (zh) | 2021-04-19 | 2022-04-01 | 使用主机本地的存储设备进行高效软件定义的网络加速处理的装置、方法和计算机程序产品 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11940935B2 (zh) |
CN (1) | CN115221089A (zh) |
DE (1) | DE102022203658A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11847081B2 (en) * | 2022-03-24 | 2023-12-19 | Dell Products L.P. | Smart network interface controller (SmartNIC) storage non-disruptive update |
US11977504B2 (en) * | 2022-04-26 | 2024-05-07 | Dell Products L.P. | Smart network interface controller operating system deployment |
CN116028292B (zh) * | 2023-02-28 | 2023-06-06 | 珠海星云智联科技有限公司 | 用于远程直接内存访问仿真验证的仿真验证系统及方法 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7721068B2 (en) * | 2006-06-12 | 2010-05-18 | Oracle America, Inc. | Relocation of active DMA pages |
WO2008070802A2 (en) * | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for an in-server storage area network |
US8565811B2 (en) * | 2009-08-04 | 2013-10-22 | Microsoft Corporation | Software-defined radio using multi-core processor |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
TWI465905B (zh) * | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
WO2016206012A1 (en) * | 2015-06-24 | 2016-12-29 | Intel Corporation | Systems and methods for isolating input/output computing resources |
US20180213669A1 (en) * | 2015-07-10 | 2018-07-26 | Prasad Lalathuputhanpura KOCHUKUNJU | Micro data center (mdc) in a box system and method thereof |
US10229142B2 (en) * | 2015-09-14 | 2019-03-12 | International Business Machines Corporation | Method and system for handling binary large objects |
US10162793B1 (en) * | 2015-09-29 | 2018-12-25 | Amazon Technologies, Inc. | Storage adapter device for communicating with network storage |
EP3440553A1 (en) * | 2016-04-04 | 2019-02-13 | Marvell World Trade, Ltd. | Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access |
US10216423B1 (en) * | 2016-09-16 | 2019-02-26 | Pavilion Data Systems, Inc. | Streams across multiple controllers to improve solid state drive performance |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
CA3021969A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
JP2019179455A (ja) * | 2018-03-30 | 2019-10-17 | 東芝メモリ株式会社 | 記憶装置及びコンピュータシステム |
US11016911B2 (en) * | 2018-08-24 | 2021-05-25 | Samsung Electronics Co., Ltd. | Non-volatile memory express over fabric messages between a host and a target using a burst mode |
US11868284B2 (en) * | 2018-12-05 | 2024-01-09 | Rongming Microelectronics (Jinan) Co., Ltd. | Peripheral device with embedded video codec functionality |
US10860504B2 (en) * | 2018-12-05 | 2020-12-08 | New Century Technologies Ltd. | Peripheral device with embedded video codec functionality |
EP3900308A4 (en) * | 2019-01-30 | 2022-02-23 | Huawei Technologies Co., Ltd. | I/O PROCESSING IN A DISTRIBUTED STORAGE NODE WITH RDMA |
US20200319972A1 (en) * | 2019-04-05 | 2020-10-08 | Pure Storage, Inc. | Offloading raid reconstruction to a secondary controller of a storage system |
US11025544B2 (en) * | 2019-06-07 | 2021-06-01 | Intel Corporation | Network interface for data transport in heterogeneous computing environments |
US11314460B2 (en) * | 2019-09-13 | 2022-04-26 | Kioxia Corporation | Solid state drive supporting both byte addressable protocol and block addressable protocol |
US11093144B1 (en) * | 2020-02-18 | 2021-08-17 | EMC IP Holding Company LLC | Non-disruptive transformation of a logical storage device from a first access protocol to a second access protocol |
US20200319812A1 (en) * | 2020-06-03 | 2020-10-08 | Intel Corporation | Intermediary for storage command transfers |
US20220075747A1 (en) * | 2020-09-09 | 2022-03-10 | Mellanox Technologies Tlv Ltd. | Support for multiple hot pluggable devices via emulated switch |
US11593278B2 (en) * | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US20220164303A1 (en) * | 2020-11-25 | 2022-05-26 | Intel Corporation | Optimizations of buffer invalidations to reduce memory management performance overhead |
US20220029929A1 (en) * | 2020-12-08 | 2022-01-27 | Intel Corporation | Technologies that provide policy enforcement for resource access |
US20210150074A1 (en) * | 2020-12-23 | 2021-05-20 | Jose Niell | Vm encryption of block storage with end-to-end data integrity protection in a smartnic |
WO2022139850A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Cryptographic computing including enhanced cryptographic addresses |
US20220244870A1 (en) * | 2021-02-03 | 2022-08-04 | Alibaba Group Holding Limited | Dynamic memory coherency biasing techniques |
US11693804B2 (en) * | 2021-06-03 | 2023-07-04 | Mellanox Technologies, Ltd. | Cross bus memory mapping |
US20220342841A1 (en) * | 2021-12-22 | 2022-10-27 | Swadesh Choudhary | Die-to-die adapter |
US20220342840A1 (en) * | 2021-12-30 | 2022-10-27 | Intel Corporation | Die-to-die interconnect |
US20220334995A1 (en) * | 2021-12-30 | 2022-10-20 | Debendra Das Sharma | Parameter exchange for a die-to-die interconnect |
US20220334932A1 (en) * | 2022-01-27 | 2022-10-20 | Debendra Das Sharma | Retimers to extend a die-to-die interconnect |
-
2021
- 2021-04-19 US US17/234,189 patent/US11940935B2/en active Active
-
2022
- 2022-04-01 CN CN202210348191.5A patent/CN115221089A/zh active Pending
- 2022-04-12 DE DE102022203658.1A patent/DE102022203658A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US11940935B2 (en) | 2024-03-26 |
US20220334989A1 (en) | 2022-10-20 |
DE102022203658A1 (de) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110063051B (zh) | 用于重新配置服务器的系统和方法以及服务器 | |
US11368519B2 (en) | Architecture for managing I/O and storage for a virtualization environment using executable containers and virtual machines | |
US9529773B2 (en) | Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller | |
US11188254B2 (en) | Using a data mover and a clone blocklist primitive to clone files on a virtual file system | |
US9294567B2 (en) | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller | |
US10417174B2 (en) | Remote direct memory access in a virtualized computing environment | |
Waldspurger et al. | I/o virtualization | |
CN106537340B (zh) | 虚拟化信息操纵系统的输入/输出加速设备和方法 | |
US9342448B2 (en) | Local direct storage class memory access | |
US11940935B2 (en) | Apparatus, method and computer program product for efficient software-defined network accelerated processing using storage devices which are local relative to a host | |
US9575689B2 (en) | Data storage system having segregated control plane and/or segregated data plane architecture | |
US8566502B2 (en) | Offloading storage operations to storage hardware using a switch | |
EP4053706A1 (en) | Cross address-space bridging | |
Rosenblum et al. | I/O Virtualization: Decoupling a logical device from its physical implementation offers many compelling advantages. | |
CN115437977A (zh) | 跨总线存储器映射 | |
Keeriyadath | NVME virtualization ideas for machines on cloud | |
US9760505B2 (en) | Network interface controller emulation | |
WO2022068753A1 (zh) | 服务器系统、容器设置方法及装置 | |
US11252232B2 (en) | NVME-of queue management in host clusters | |
Borello | TOWARDS COMPUTATIONAL STORAGE | |
Ellrod | Optimizing Citrix® XenDesktop® for High Performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |