CN111427808B - 用于管理存储设备和主机单元之间的通信的***和方法 - Google Patents
用于管理存储设备和主机单元之间的通信的***和方法 Download PDFInfo
- Publication number
- CN111427808B CN111427808B CN202010012995.9A CN202010012995A CN111427808B CN 111427808 B CN111427808 B CN 111427808B CN 202010012995 A CN202010012995 A CN 202010012995A CN 111427808 B CN111427808 B CN 111427808B
- Authority
- CN
- China
- Prior art keywords
- nvme
- bridge unit
- buffer
- command
- storage device
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000004891 communication Methods 0.000 title claims abstract description 16
- 239000000872 buffer Substances 0.000 claims abstract description 138
- 230000009471 action Effects 0.000 claims abstract description 31
- 239000007787 solid Substances 0.000 claims abstract description 11
- 238000012546 transfer Methods 0.000 claims description 47
- 238000007726 management method Methods 0.000 claims description 42
- 239000004744 fabric Substances 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000002775 capsule Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013519 translation Methods 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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
- 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
- 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
-
- 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/061—Improving I/O performance
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
在本文的实施例公开用于经由桥单元来管理架构上的非易失性存储器规范(NVMe‑oF)主机单元和多个非易失性存储器规范‑固态驱动器(NVMe‑SSD)存储设备之间的通信的***和方法。在本文的实施例涉及存储设备的领域,并且更具体地涉及用于经由桥单元来管理NVMe‑oF主机单元和多个NVMe‑SSD存储设备之间的通信的***和方法。桥单元可以包括子模块来执行对命令和数据的控制操作。桥单元可以生成与分散收集列表地址相对应的虚拟数据存储器地址。桥单元可以不需要数据缓冲器来存储中间数据。***可以被配置为发起存储器WRITE/READ事务以访问虚拟数据存储器,用于执行诸如NVMe‑SSD存储设备的数据WRITE/READ操作之类的动作。
Description
相关申请的交叉引用
本申请要求在印度专利局于2019年1月10日提交的印度专利申请号201941001145的权益,该专利申请的整体内容通过引用被合并于此。
技术领域
本公开涉及存储设备的领域,并且更具体地涉及用于经由桥单元来管理架构(fabric)上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的***和方法。
背景技术
通常,计算***可以包括处理单元、诸如高速外部组件互联(PCIe)之类的基于总线的互连以及将处理单元对接到诸如存储设备、网络设备以及图形设备之类的各种设备的各种输入输出控制器。例如,存储驱动器能够用于将与计算***相关联的存储设备和处理单元对接。存储驱动器可以被配置为从处理单元接收命令和数据中的至少一个并且通过串行链路或并行链路向存储设备转发命令和数据中的至少一个。以类似的方式,存储驱动器也可以通过串行或并行链路从存储设备接收对命令和数据中的至少一个的响应并且可以向处理单元传送响应和数据中的至少一个。
存储驱动器能够是NVMe-oF(架构上的非易失性存储器规范)驱动器,其可以通过诸如以太网之类的架构发出命令。存储设备能够是基于PCIe的NVMe-SSD(非易失性存储器规范-固态驱动器)。此外,为了建立NVMe-oF主机单元和NVMe SSD存储设备之间的数据通信,可能需要桥单元来管理NVMe-oF主机单元和NVMe-SSD存储设备之间的协议转换。
因此,常规桥单元可能要求额外的存储器用于管理数据和CQ(完成队列),根据现有技术将参考图1a至图1d被描述为如下。
图1a图示出常规桥单元的框图。如在图1a中所示,常规桥单元可以使能NVMe-oF主机单元和NVMe-SSD存储设备之间的通信。常规桥单元可以允许NVMe-oF至NVMe之间的协议转换。在命令被接收之前,NVMe-SSD可能需要缓冲器分配。常规桥单元中的读/写数据缓冲器能够被用于存储中间数据以执行从与NVMe-oF主机单元相关联的NVMe-oF读/写命令到来自NVMe-SSD存储设备的读/写数据/响应的转换。另外,常规桥单元中的提交队列(SQ)缓冲器可以用于在向基于PCIe的NVMe-SSD存储设备发布命令之前存储来自NVMe-oF主机单元的命令。另外,常规桥单元中的完成队列(CQ)缓冲器可以用于在向NVMe-oF主机单元发布响应之前存储来自基于PCIe的NVMe-SSD存储设备的响应。另外,如图1a中所示的处理器可以用于处理NVMe-oF命令和中断的管理/运用。此外,简明(in-capsule)写数据缓冲器可以用于存储与从NVMe-oF主机单元接收到的简明NVMe-oF写命令相关联的数据。而且,远程直接存储器存取(RDMA)子模块可以用于通过诸如以太网之类的架构在NVMe-oF主机单元和常规桥单元之间传送数据。另外,NVMeoF-NVMe子模块可以用于协议转换或者缓冲器管理。另外,根联合体(RC)子模块可以用于经由PCIe在常规桥单元和NVMe-SSD存储设备之间传送数据。
图1b图示出在常规桥单元中的完成队列(CQ)流的序列图。
在第一步,存储设备(即,NVMe-SSD)可以将完成条目(CE)发布到与CQ缓冲器相关联的CQ区域。在第二步,可以由NVMe-SSD存储设备生成消息信号中断(MSI-X)并且可以向常规桥单元的处理器提供该中断。在第三步,处理器可以在常规桥单元的CQ缓冲器中识别由NVMe-SSD存储设备发布的CE。此外,处理器也可以在CE中搜索相位比特(phase bit)。如果需要,在第四步,处理器可以在常规桥单元的CQ缓冲器中修改CE。在第五步,处理器可以向NVMeoF-NVMe子模块指示相关联的CQ缓冲器中的未决CE。在第六步,NVMeoF-NVMe子模块可以从相关联的CQ缓冲器中取出未决完成条目(PCE)。在第七步,NVMeoF-NVMe子模块可以经由RDMA子模块生成RDMA SEND分组并且向NVMe-oF主机单元传送SEND分组。在第八步,NVMeoF-NVMe子模块可以更新NVMe-SSD存储设备中的完成队列头部门铃(head doorbell)(CQHD)。
图1c图示出常规桥单元中的架构上的非易失性存储器规范(NVMe-oF)读取流的序列图。
在第一步,NVMe-oF主机单元可以将NVMe-oF读命令作为RDMA SEND传递到常规桥单元。在第二步,NVMeoF-NVMe子模块可以在读/写数据缓冲器中分配读缓冲器并且可以将READ命令的分散收集列表(SGL)地址映射到所分配的读缓冲器地址。此外,NVMeoF-NVMe子模块可以在常规桥单元的SQ缓冲器中将读命令与修改的SGL字段一起更新。此外,对于读命令,NVMeoF-NVMe子模块可以存储上下文信息,诸如队列号码(QN)、NVMe-oF命令ID、远程密钥(用于与NVMeoF命令相关联的所有SGL的密钥字段)、以及用于与NVMeoF命令相关联的所有SGL的地址字段。在第三步,NVMeoF-NVMe子模块可以经由PCIe通过RC按下NVMe-SSD存储设备的提交队列尾部门铃(tail doorbell)(SQTD)。在第四步,NVMe-SSD可以经由PCIe从SQ缓冲器中取出SQE。在第五步,NVMe-SSD可以发起高速外部组件互联(PCIe)存储器写事务层分组(TLP)事务。此外,NVMe-SSD可以将与读命令相关联的数据写入与读/写数据缓冲器相关联的所分配的读缓冲器中。在第六步,NVMe-SSD存储设备可以在将与读命令相关联的完整数据写入所分配的与读/写数据缓冲器相关联的读缓冲器之后,在CQ缓冲器中发布CE。在第七步,可以由NVMe-SSD存储设备生成MSI-X中断并且可以向与常规桥单元相关联的处理器提供该中断。在第八步,处理器可以通过在CE中搜索相位比特来识别在CQ缓冲器中发布的CE。此外,如果需要,处理器可以修改CQ缓冲器中的CE。在第九步,处理器可以触发NVMeoF-NVMe子模块用于将数据从与常规桥单元相关联的读/写数据缓冲器传送到NVMe-oF主机单元。NVMeoF-NVMe子模块可以接收与和需要被传递到NVMe-oF主机单元的数据相对应的读命令相关联的上下文信息。在第十步,NVMeoF-NVMe子模块可以从读/写数据缓冲器中的所分配的读缓冲器中读取数据。在第十一步,NVMeoF-NVMe子模块可以形成RDMA写分组并且向NVMe-oF主机单元传送RDMA分组。在第十二步,NVMeoF-NVMe子模块可以在向NVMe-oF主机单元传送完整数据之后取出CE。在第十三步,NVMeoF-NVMe子模块可以形成RDMA SEND并且可以经由架构向NVMe-oF主机单元传送RDMA SEND分组。在第十四步,NVMeoF-NVMe子模块可以经由PCIe更新与NVMe-SSD存储设备相关联的CQHD并且可以对读/写数据缓冲器中的读缓冲器解除分配。
图1d图示出常规桥体系结构中的常规NVMe-oF写入流的序列图。在第一步,NVMe-oF主机单元可以将NVMe-oF写入作为RDMA SEND传递到常规桥单元。在第二步,NVMeoF-NVMe子模块可以在读/写数据缓冲器中分配写缓冲器并且可以将写命令的分散收集列表(SGL)地址映射到所分配的写缓冲器地址。此外,NVMeoF-NVMe子模块可以利用SQ缓冲器中的修改的SGL字段来更新写命令。此外,对于写命令,NVMeoF-NVMe子模块可以存储上下文信息,诸如队列号码(QN)、NVMe-oF命令ID、远程密钥(即,用于与NVMeoF命令相关联的所有SGL(或多个)的KEY字段)、用于与NVMe-oF命令相关联的所有SGL(或多个)的地址字段。在第三步,NVMeoF-NVMe子模块可以发起RDMA读请求。在第四步,NVMe-oF主机单元可以利用RDMA读响应进行响应。在第五步,NVMeoF-NVMe子模块可以基于所接收的读响应将数据写入到所分配的写缓冲器中。在第六步,NVMeoF-NVMe子模块可以基于通过架构从NVMe-oF主机单元取出关于写命令的完整数据并且在写入到在READ/WRITE数据缓冲器中分配的写缓冲器中之后,经由PCIe按下NVMe-SSD存储设备的提交队列尾部门铃(SQTD)。在第七步,NVMe-SSD存储设备可以从常规桥单元中的SQ缓冲器中取出SQE。在第八步,NVMe-SSD存储设备可以发起高速外部组件互联(PCIe)存储器读事务层分组(TLP)事务。在第九步,NVMe-SSD存储设备可以在从在读/写数据缓冲器中所分配的写缓冲器中读取与完整的写命令相关联的数据之后在相关联的CQ缓冲器中发布CE。在第十步,可以由NVMe-SSD存储设备生成MSI-X中断,并且对与常规桥单元相关联的处理器生成一中断。如果需要,在第十一步,处理器可以修改完成条目并且更新与CQ缓冲器相关联的CQ区域。在第十二步,处理器可以向NVMeoF-NVMe子模块指示CQ缓冲器中的对应的未决完成条目(PCE)。在第十三步,NVMeoF-NVMe子模块可以从CQ缓冲器中取出未决完成条目(PCE)。此外,NVMeoF-NVMe子模块可以形成RDMA SEND并且可以通过架构向NVMe-oF主机单元传送。在第十四步,NVMeoF-NVMe子模块可以经由PCIe在NVMe-SSD存储设备中更新CQHD并且可以对读/写数据缓冲器中的写缓冲器解除分配。
另外,常规桥体系结构可以向NVMe-oF主机单元传送写命令的自动完成,而无需经由PCIe向NVMe-SSD存储设备传送与写命令相对应的至少一个数据。此外,为了支持写命令的自动完成,常规桥体系结构可能具有额外的处理器用于运行NVMe-oF设备驱动器、NVMe主驱动器、用于功率损耗管理的大电容、故障滤波器;常规桥单元中的充分全面数据完整性字段/数据完整性加扩展(DIF/DIX)端到端(E2E)特征支持。
然而,常规桥体系结构不可以提供低等待时间、低功耗、低成本和低面积,来实现NVMe-oF主机单元和NVMe-SSD存储设备之间的通信。
发明内容
在本文的实施例的主要目的是公开一种***和方法,用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个快速非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信。
在本文的实施例的另一个目的是公开用于提供管理中间数据的虚拟缓冲存储器的方法。
在本文的实施例的另一个目的是公开用于减少等待时间的方法。
在本文的实施例的另一个目的是公开用于减少大存储需求和相关电力的方法。
因此,在本文的实施例提供一种用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的方法。该方法包括:由桥单元从NVMe-oF主机单元接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作。该方法包括:由桥单元基于将被执行的至少一个动作来生成与所接收的SGL地址相对应的虚拟数据存储器的虚拟数据存储器地址。该方法包括:由桥单元将所接收的NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器中;以及将上下文信息存储在上下文存储器中,该上下文信息与和桥单元相关联的架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块中的NVMe-oF数据传递命令相关联。该方法包括:由NVMe-SSD存储设备获取存储在与桥单元相关联的SQ缓冲器中的SQE。该方法包括:由NVMe-SSD存储设备通过发起高速外部组件互联(PCIe)存储器WRITE事务层分组(TLP)事务和PCIe存储器READ TLP事务中的至少一个,基于与至少一个动作相对应的、所获取的存储在SQ缓冲器中的SQE来访问与桥单元相关联的虚拟数据存储器。该方法包括:由桥单元基于在上下文存储器中的所存储的上下文信息,将从NVMe-SSD存储设备接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个分别转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的至少一个。该方法包括:由桥单元经由架构向NVMe-oF主机单元传送所转换的RDMA WRITE分组和所转换的RDMAREAD分组中的至少一个。
因此,在本文的实施例提供一种用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的***。***被配置为通过桥单元从NVMe-oF主机单元接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作。***被配置为通过桥单元基于将被执行的至少一个动作来生成与所接收的SGL地址相对应的虚拟数据存储器地址。***被配置为通过桥单元将所接收的NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器中,以及将上下文信息存储在上下文存储器中,该上下文信息与和桥单元相关联的架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块中的NVMe-oF数据传递命令相关联。***被配置为通过NVMe-SSD存储设备获取存储在与桥单元相关联的SQ缓冲器中的SQE。***被配置为通过NVMe-SSD存储设备通过发起高速外部组件互联(PCIe)存储器WRITE事务层分组(TLP)事务和PCIe存储器READ TLP事务中的至少一个,基于与至少一个动作相对应的所获取的存储在SQ缓冲器中的SQE来访问与桥单元相关联的虚拟数据存储器。***被配置为通过桥单元基于上下文存储器中的所存储的上下文信息,将从NVMe-SSD存储设备接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个分别转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的至少一个。***被配置为通过桥单元经由架构向NVMe-oF主机单元传送所转换的RDMAWRITE分组和所转换的RDMA READ分组中的至少一个。
当结合以下描述和附图来考虑在本文的示例实施例的这些及其他方面时,将更好地理解和了解在本文的示例实施例的这些及其他方面。然而,应当理解,尽管以下描述指示示例实施例和其很多特定细节,但通过说明而非限制的方式给出以下描述。在不背离在本文的示例实施例的精神的情况下可以在其范围内进行许多改变和修改,并且在本文的示例实施例包括所有这样的修改。
附图说明
在附图中图示出在本文的实施例,贯穿附图,在各个图中相同附图标记指示对应部分。根据参考附图的以下描述将更好地理解在本文的实施例,其中:
图1a图示出常规桥单元的框图;
图1b图示出常规桥单元中的完成队列(CQ)流的序列图;
图1c图示出常规桥单元中的架构上的非易失性存储器规范(NVMe-oF)读取流的序列图;
图1d图示出常规桥单元中的NVMe-oF写入流的序列图;
图2a图示出根据如在本文公开的实施例的所提出的桥单元的框图;
图2b图示出根据如在本文公开的实施例的桥单元中的输入/输出完成队列(IOCQ)流的序列图;
图2c图示出根据如在本文公开的实施例的桥单元中的NVMe-oF读取流的序列图;
图2d图示出根据如在本文公开的实施例的桥单元中的NVMe-oF写入流的序列图;
图3a是描绘根据如在本文公开的实施例的、用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的方法的流程图;
图3b是描绘根据如在本文公开的实施例的、用于向NVMe-oF主机单元传送所转换的RDMA SEND分组的方法的流程图;
图3c是描绘根据如在本文公开的实施例的、用于由桥单元在管理完成队列(ACQ)缓冲器中分配与管理完成队列(ACQ)相对应的物理缓冲器的方法的流程图;
图3d是描绘根据如在本文公开的实施例、用于通过桥单元分配与和桥单元相关联的输入/输出完成队列(IOCQ)相对应的虚拟缓冲器的方法的流程图;以及
图3e是描绘根据如在本文公开的实施例的、用于由桥单元经由RDMA子模块向NVMe-oF主机单元202传送所转换的RDMA SEND分组的方法的流程图。
具体实施方式
参考在附图中图示的且在以下描述中详述的非限制性的实施例来更全面地解释在本文的示例实施例和其各种特征和有利的详情。省略对公知的组件和处理技术的描述,以便不会不必要地使在本文的实施例模糊。在本文的描述意图仅仅是促进对能够实践在本文的示例实施例的方式的理解并且进一步使得那些本领域技术人员能够实践在本文的示例实施例。因此,本公开不应当被理解为限制在本文的示例实施例的范围。
在本文的实施例实现用于通过提供虚拟缓冲器、经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个快速非易失性存储器-固态驱动器(NVMe-SSD)存储设备之间的通信的***和方法。现在参考附图,并且更具体地参考图2a至图3e,其中遍及各图,类似的附图标记一致地表示对应的特征,示出了优选的实施例。
图2a图示出根据如在本文公开的实施例的所提出的桥单元204的框图。***200可以包括NVMe-oF主机单元202、桥单元204和NVMe-SSD存储设备206。存储设备206还可以包括控制器(未示出)和诸如像闪速存储设备等等的非易失性存储器(NVM)设备。NVMe-SSD存储设备206可以是、但不限于基于闪存的固态驱动器(SSD)、基于相变随机存取存储器(PRAM)的SSD、基于电阻随机存取存储器(RRAM)的SSD等等中的至少一个。NVMe-SSD存储设备206可以包括处理器(未示出)、非易失性存储器(NVM),和易失性存储器中的至少一个。NVMe-oF主机单元202能够是、但不限于服务器、台式计算机、手持式设备、多处理器***、基于微处理器的可编程消费性电子产品、膝上计算机、网络计算机、小型计算机、大型计算机等等中的至少一个。
在***200中,NVMe-oF主机单元202可以使用诸如以太网架构之类的架构接口协议与桥单元204进行通信。架构接口协议还可以包括但不限于光纤信道等等中的至少一个。桥单元204可以使用诸如高速外部组件互联(PCIe)之类的接口协议与NVMe-SSD存储设备206进行通信。PCIe SSD 206a可以使用PCIe总线接口协议与桥单元204进行通信。接口协议还可以包括但不限于先进技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、串行连接小型计算机***接口(SAS)等等中的至少一个。此外,桥单元204可以包括诸如远程直接存储器存取(RDMA)子模块204a、架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块204b、根联合体(RC)子模块204c、处理器204d、提交队列(SQ)缓冲器204e、简明写数据缓冲器204f和管理完成队列(ACQ)缓冲器204g之类的子模块。NVMeoF-NVMe子模块204b可以包括子模块中的至少一个,但不限于虚拟数据存储器204ba、上下文存储器204bb到204bn。提交队列(SQ)缓冲器204e可以包括命令集,诸如但不限于与桥单元204的控制器(或多个)相关联的管理(Admin)提交队列(ASQ)命令和输入/输出提交队列(或多个)(IOSQ)命令中的至少一个。管理完成队列(ACQ)缓冲器204g可以包括与从NVMe-SSD存储设备206接收到的管理队列相对应的完成条目(或多个)。管理提交队列(ASQ)和随后的管理完成队列(ACQ)能够分别用于提交管理(Admin)命令和接收与管理(Admin)命令相对应的完成。该非易失性存储器设备能够是以非易失的状态存储数据的NVMe-SSD存储设备206。此外,NVMe-oF主机单元202可以通过架构、使用RDMA SEND操作、通过RDMA子模块204a向桥单元204传送提交队列条目(SQE)。
在实施例中,***200可以被配置为通过桥单元204从NVMe-oF主机单元202接收用于管理队列的NVMe-oF连接命令。此外,基于接收NVMe-oF连接命令,桥单元204可以形成与NVMe-SSD存储设备206的关联。另外,在NVMe-SSD存储设备206的管理提交队列(ASQ)基地址寄存器中配置与SQ缓冲器204e相关联的管理SQ的基地址。此外,在NVMe-SSD存储设备206的管理完成队列基地址(ACQ)寄存器中配置与ACQ缓冲器204g相关联的管理CQ的基地址。而且,在NVMe-SSD存储设备206的管理队列属性(AQA)寄存器中提供诸如ASQ和ACQ的队列的尺寸信息。
此外,桥单元204可以使用RDMA SEND操作,通过RDMA子模块204a向NVMe-oF主机单元202传送和与NVMe-oF连接命令相关联的管理队列相对应的完成条目(CE)。此外,可以创建与输入/输出队列(IOQ)相对应的输入/输出完成队列(IOCQ)和IOSQ命令。可以由桥单元204在SQ缓冲器204e中分配用于IOSQ命令的物理缓冲器,并且物理地址可以被放置在CREATE IOSQ命令的基地址字段中。可以由桥单元204分配用于随后的IOCQ的虚拟缓冲器,并且虚拟地址可以被放置在CREATE IOCQ命令的基地址字段中。在示例中,虚拟IOCQ基地址能够被描述为,
虚拟IOCQ基地址={“桥单元204中的NVMeoF-NVMe子模块204b的基地址”、“Tag_bit(即,1’b0)”、“Queue_Number(即,[7:0]、PCIe总线、PCIe设备、PCIe功能、22’h0)”}
在实施例中,在管理完成队列(ACQ)缓冲器204g中为管理CQ分配物理缓冲器,因为对于管理相关命令可能涉及处理器204d交互。在实施例中,桥单元204可以基于从NVMe-oF主机单元202接收到与IO队列相对应的NVMe-oF连接命令而按下NVMe-SSD存储设备206的门铃,以创建IOSQ命令和IOCQ命令中的至少一个。当从NVMe-SSD存储设备206接收到CREATEIOSQ命令和CREATE IOCQ命令两者的完成时,桥单元204可以使用RDMA SEND操作、通过RDMA子模块204a向NVMe-oF主机单元202传送与和IO队列相关联的NVMe-oF连接命令相对应的完成条目(CE)。
在实施例中,***200可以被配置为通过桥单元204从NVMe-oF主机单元202一起接收NVMe-oF数据传递命令与分散收集列表(SGL)地址,以执行至少一个动作。NVMe-oF数据传递命令可以包括管理命令和输入/输出(IO)命令中的至少一个。在实施例中,***200可以被配置为通过桥单元204基于将被执行的动作来生成与从NVMe-oF主机单元202接收到的NVMe-oF数据传递命令中的SGL地址(或多个)相对应的虚拟数据存储器204ba的虚拟数据存储器地址。在实施例中,可以将所生成的虚拟数据存储器204ba的虚拟数据存储器地址嵌入在SQE的SGL字段中,并存储在与桥单元204相关联的SQ缓冲器204e中。在实施例中,可以由桥单元204基于由桥单元204从NVMe-oF主机单元202接收的命令将诸如远程KEY(即,用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的KEY字段)、用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的地址字段、RDMA队列对(QP)数量之类的上下文信息存储在上下文存储器204bb中。在实施例中,***200可以被配置为通过桥单元204执行在NVMe-SSD存储设备206中的按下门铃。在实施例中,***200可以被配置为通过NVMe-SSD存储设备206发起至少一个高速外部组件互联(PCIe)存储器READ TLP事务以取出存储在SQ缓冲器204e中的SQE。在实施例中,***200可以被配置为通过NVMe-SSD存储设备206发起至少一个高速外部组件互联(PCIe)存储器TLP事务以经由PCIe总线来访问和与桥单元204相关联的NVMeoF-NVMe子模块204b相关联的虚拟数据存储器204ba。在实施例中,***200可以被配置为通过桥单元204经由与桥单元204相关联的NVMeoF-NVMe子模块204b将来自NVMe-SSD存储设备206的PCIe TLP事务转换为远程直接存储器存取(RDMA)WRITE分组或RDMA READ分组。在实施例中,***200可以被配置为通过桥单元204经由架构动态地向NVMe-oF主机单元202发起转换的RDMA分组。在实施例中,***200可以被配置为通过桥单元204基于由NVMe-SSD存储设备206通过访问与NVMeoF-NVMe子模块204b相关联的虚拟数据存储器204ba完成写入数据或读取与NVMe-oF数据传递命令相对应的数据来经由PCIe总线从NVMe-SSD存储设备206将完成队列条目(CQE)接收到虚拟完成队列(VCQ)地址。在实施例中,***200可以被配置为通过桥单元204、经由与桥单元204相关联的NVMeoF-NVMe子模块204b将与从NVMe-SSD存储设备206接收到的CQE相对应的PCIe TLP事务转换为RDMA发送分组。在实施例中,***200可以被配置为通过桥单元204经由架构动态地向NVMe-oF主机单元202发起转换的RDMASEND分组。在实施例中,***200可以被配置为通过桥单元204基于至少一个动作(或多个)的完成来更新NVMe SSD中的完成队列头部门铃(CQHD)。
在实施例中,可以由桥单元204在与用于NVMe-SSD存储设备206的IOCQ命令相对应的CREATE动作期间提供VCQ基地址。VCQ基地址包括与NVMeoF-NVMe子模块204b相对应的基地址和与完成队列(CQ)相对应的队列号码(QN)。在示例中,虚拟IOCQ地址能够被描述为,
虚拟IOCQ地址={“桥单元204中的NVMeoF-NVMe子模块204b的基地址”、“Tag_bit(即,1’b0)”、“Queue_Number(即,[7:0]、PCIe总线、PCIe设备、PCIe功能、22’h0)”}。
对于VCQ地址能够为标签比特(tag bit)字段指配“0”。在实施例中,NVMe-SSD存储设备206可以传送用于CQE的存储器写TLP,发布到NVMeoF-NVMe子模块204b。此外,NVMeoF-NVMe子模块204b可以从存储的VCQ基地址解码CQE的队列号码(QN)。在实施例中,无需在桥单元204中对于IO队列的CQE进行缓冲,可以由NVMeoF-NVMe子模块204b来使用解码的队列号码(QN)、使用RDMA SEND操作、通过RDMA子模块204a动态地向NVMe-oF主机单元202发布CQE。
在实施例中,由NVMeoF-NVMe子模块204b嵌入在SQE的SGL条目字段中的虚拟数据存储器204ba的虚拟数据存储器地址包括与NVMeoF-NVMe子模块204b相对应的基地址和命令令牌。在示例中,虚拟数据缓冲器地址能够被描述为,
虚拟数据缓冲器地址={“桥单元204中的NVMeoF-NVMe子模块204b的基地址”、“Tag_bit(即,1’b1)”、“Command_Token(即,[7:0]、22’h0)”}。
对于虚拟数据缓冲器地址,标签能够是“1”。在实施例中,对于由NVMeoF-NVMe子模块204b接收的每个命令,可以将诸如用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的KEY字段、用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的地址字段(或多个)、RDMA队列对(QP)数量之类的上下文信息存储在上下文存储器204bb中。可以由NVMeoF-NVMe子模块204b对于每个命令分配命令令牌,以引用存储在上下文存储器204bb中的上下文信息。在实施例中,当NVMe-SSD存储设备206经由PCIe总线向桥单元204传送存储器写TLP事务或存储器读TLP事务时,访问读/写命令的虚拟数据存储器204ba。因此,在访问数据缓冲器之后,NVMeoF-NVMe子模块204b可以从虚拟数据存储器204ba的虚拟数据存储器地址中解码命令令牌号码。在实施例中,NVMeoF-NVMe子模块204b可以使用存储在上下文存储器204bb中的上下文信息来将经由PCIe总线从NVMe-SSD存储设备206接收的存储器写TLP事务或存储器READ TLP事务分别转换为RDMA WRITE分组或RDMA READ分组。
在实施例中,可以由NVMeoF-NVMe子模块204b来接收具有简明数据的NVMe-oFWRITE命令。与桥单元204相关联的NVMeoF-NVMe子模块204b可以不分配命令令牌并且可以不存储在上下文存储器204bb中存储的上下文信息。在示例中,NVMeoF-NVMe子模块204b可以如下所示利用地址来更新命令的SGL字段;
命令中的SGL字段地址={“简明Write_Buffer_ADDR(即,[31:0])”}。
NVMeoF-NVMe子模块204b可以将简明命令的SQE部分写入到SQ缓冲器204e中的对应的IOSQ。此外,NVMeoF-NVMe子模块204b可以将与简明命令相对应的简明数据部分写入简明写数据缓冲器204f中。如果与简明数据一起接收NVMeoF WRITE命令,则NVMe-SSD存储设备206可以从简明写缓冲器地址直接地读取数据。
图2a的图图示出计算机实施的***的功能组件。在一些情况下,组件可以是硬件组件、软件组件,或者硬件和软件的组合。一些组件可以是应用级别软件,而其他组件可以是操作***机器级组件。在一些情况下,在两个或更多组件在单个硬件平台上操作的情况下,一个组件与另一个组件的连接可以是紧密联系。在某些情况下,可以通过跨越长距离的网络连接进行连接。每个实施例可以使用不同的硬件、软件,以及互连体系结构以便实现所描述的功能。
在本文的实施例能够包括硬件和软件元件。在软件中实施的实施例包括但不限于固件、常驻软件、微指令,等等。可以在其他模块或其他模块的组合中实施由各个模块所执行的功能。为了该说明书的目的,计算机可用或计算机可读媒介能够是能够为了用于指令执行***、装置,或设备使用或关于其而包括、存储、传送、传播,或输送程序的任何装置。
图2b图示出根据如在本文公开的实施例的桥单元204中的输入/输出完成队列(IOCQ)流的序列图。在实施例中,在第一步,NVMe-SSD存储设备206可以通过PCIe总线向虚拟完成队列(VCQ)区域发布完成条目(CE)。在实施例中,VCQ可以被映射到与桥单元204相关联的NVMeoF-NVMe子模块204b。NVMeoF-NVMe子模块204b可以对地址进行解码并且可以识别其完成可能是NVMe-SSD存储设备206的目标的队列号码(QN)。NVMeoF-NVMe子模块204b可以将NVMe完成队列(CQ)映射到RDMA QP号码。在第二步,NVMeoF-NVMe子模块204b可以形成RDMA SEND命令并且NVMeoF-NVMe子模块204b可以通过架构向NVMe-oF主机单元202传送RDMA SEND命令。在第三步,NVMeoF-NVMe子模块204b可以经由PCIe总线更新NVMe-SSD存储设备206中的完成队列头部门铃(CQHD)。此外,可以在管理完成队列缓冲器204g中为管理CQ分配物理缓冲器,因为管理队列可以意图用于管理命令,并且处理器204d的干预可能是需要的。
管理CQ流能够如下,在第一步,NVMe-SSD存储设备206可以将完成条目(CE)发布到ACQ缓冲器204g。在第二步,可以由NVMe-SSD存储设备206生成消息信号中断(MSI-X),并且该中断可以被提供给桥单元204的处理器204d。在第三步,处理器204d可以在桥单元204的ACQ缓冲器204g中识别由NVMe-SSD存储设备206发布的CE。此外,处理器204d也可以在CE中搜索相位比特。如果需要,在第四步,处理器204d可以修改桥单元204的ACQ缓冲器204g中的CE。在第五步,处理器204d可以向NVMeoF-NVMe子模块204b指示相关联的ACQ缓冲器204g中的未决CE。在第六步,NVMeoF-NVMe子模块204b可以从ACQ缓冲器204g中取出未决完成条目(PCE)。在第七步,NVMeoF-NVMe子模块204b可以经由RDMA子模块生成RDMA SEND分组并且向NVMe-oF主机单元202传送该SEND分组。在第八步,NVMeoF-NVMe子模块204b可以更新NVMe-SSD存储设备206中的完成队列头部门铃(CQHD)。
图2c图示出根据如在本文公开的实施例的桥单元/体系结构204中的架构上的非易失性存储器规范(NVMe-oF)读取流的序列图。
在第一步,NVMe-oF主机单元202可以将NVMe READ命令作为RDMA SEND分组传递到桥单元204。NVMe READ命令能够是与IOSQ相对应的提交队列条目(SQE)。在第二步,在对于虚拟数据存储器204ba的虚拟数据存储器地址更新分散收集列表(SGL)地址之后,NVMeoF-NVMe子模块204b可以更新与SQ缓冲器204e相关联的相应IOSQ中的所接收的SQE。此外,NVMeoF-NVMe子模块204b可以存储上下文信息,诸如队列号码(QN)、NVMe-oF命令ID、远程KEY(即,用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的KEY字段)、用于与NVMe-oF主机单元202的NVMe-oF命令(或多个)相关联的所有SGL(或多个)的地址字段。
在第三步,NVMeoF-NVMe子模块204b可以经由PCIe总线按下NVMe-SSD存储设备206的提交队列尾部门铃(SQTD)。在第四步,NVMe-SSD存储设备206可以经由PCIe取出存储在与桥单元204相关联的SQ缓冲器204e中的提交队列条目(SQE)。在第五步,NVMe-SSD存储设备206可以向作为NVMeoF-NVMe子模块204b的从设备存在的虚拟数据存储器204ba发起高速外部组件互联(PCIe)存储器写事务层分组(TLP)事务。在第六步,NVMeoF-NVMe子模块204b可以从虚拟数据存储器204b的虚拟数据存储器地址解码与NVMe READ命令相关联的命令令牌,并且NVMeoF-NVMe子模块204b可以从与NVMe READ命令相关联的命令令牌提取存储在上下文存储器204bb中的上下文信息。NVMeoF-NVMe子模块204b可以形成RDMA WRITE分组,并且NVMeoF-NVMe子模块204b可以通过架构对NVMe-oF主机单元202进行传送。在第七步,一旦对于NVMe READ命令对虚拟数据存储器204ba的虚拟数据存储器地址完成数据传递,则NVMe-SSD存储设备206就可以在虚拟CQ(VCQ)地址中发布完成条目(CE)。在第八步,NVMeoF-NVMe子模块204b可以从虚拟CQ(VCQ)地址解码队列号码(QN),并且NVMeoF-NVMe子模块204b可以形成对应的RDMA QN的RDMA SEND分组,以通过架构向NVMe-oF主机单元202传送完成队列条目(CQE)。在第九步,NVMeoF-NVMe子模块204b可以经由PCIe总线更新NVMe-SSD存储设备206中的完成队列头部门铃(CQHD)。
图2d图示出根据如在本文公开的实施例的桥单元/体系结构204中的NVMe-oF写入流的序列图。
在第一步,NVMe-oF主机单元202可以经由RDMA SEND分组向桥单元204传递NVMeWRITE命令,其中,NVMe WRITE命令能够不具有简明数据。在第二步,在对于虚拟数据存储器204ba的虚拟数据存储器地址更新分散收集列表(SGL)地址之后,NVMeoF-NVMe子模块204b可以在与SQ缓冲器204e相关联的相应的IOSQ中更新所接收的SQE。此外,NVMeoF-NVMe子模块204b可以存储上下文信息,诸如队列号码(QN)和NVMe-oF命令ID、远程KEY(即,用于与NVMe-oF命令(或多个)相关联的所有SGL(或多个)的KEY字段)、用于与NVMe-oF主机单元202的NVMe-oF命令(或多个)相关联的所有SGL(或多个)的地址字段。在第三步,NVMeoF-NVMe子模块204b可以经由PCIe按下NVMe-SSD存储设备206的提交队列尾部门铃(SQTD)。在第四步,NVMe-SSD存储设备206可以经由PCIe从与桥单元204相关联的SQ缓冲器204e中取出SQE。在第五步,NVMe-SSD存储设备206可以发起与虚拟数据存储器204ba的虚拟数据存储器地址相对应的PCIe存储器读TLP事务。在第六步,NVMeoF-NVMe子模块204b可以从虚拟数据存储器204ba的虚拟数据存储器地址中解码命令令牌并且从存储在上下文存储器204bb中的命令令牌中提取上下文信息。NVMeoF-NVMe子模块204b可以发起RDMA READ请求。在第七步,NVMe-oF主机单元202可以通过架构与RDMA READ响应一起对读请求进行响应。
在第八步,NVMeoF-NVMe子模块204b可以将RDMA READ响应转换为PCIe存储器READ完成TLP,并且可以经由PCIe总线向NVMe-SSD存储设备206进行传送。在第九步,当由NVMe-SSD存储设备206从与桥单元204相关联的虚拟数据存储器204ba的虚拟存储器地址中读取对应于WRITE命令的完成数据时,NVMe-SDD存储设备206可以向桥单元204的虚拟CQ地址发布完成条目。在第十步,NVMeoF-NVMe子模块204b可以从虚拟CQ地址解码RDMA队列号码(QN),并且NVMeoF-NVMe子模块204b可以形成对应的RDMA QN的RDMA SEND分组,用于通过架构向NVMe-oF主机单元202传送CQE。在第十一步,NVMeoF-NVMe子模块204b可以经由PCIe总线更新NVMe-SSD存储设备206中的CQHD。
图3a是描绘根据如在本文公开的实施例的、用于经由桥单元204来管理NVMe-oF主机单元202和多个NVMe-SSD存储设备206之间的通信的方法300a的流程图。
在步骤302,方法300a包括由桥单元从NVMe-oF主机单元接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令,以执行至少一个动作。在步骤304,方法300a包括由桥单元基于将被执行的至少一个动作来生成与所接收的SGL地址相对应的虚拟数据存储器的虚拟数据存储器地址。在步骤306,方法300a包括由桥单元将所接收的NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器中,并且存储被存储在上下文存储器中的上下文信息,该上下文信息与和桥单元相关联的架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块中的NVMe-oF数据传递命令相关联。在步骤308,方法300a包括由NVMe-SSD存储设备获取存储在与桥单元相关联的SQ缓冲器中的SQE。在步骤310,方法300a包括由NVMe-SSD存储设备通过发起高速外部组件互联(PCIe)存储器WRITE事务层分组(TLP)事务和PCIe存储器READ TLP事务中的至少一个,基于所获取的与至少一个动作相对应的、存储在SQ缓冲器中的SQE来访问与桥单元相关联的虚拟数据存储器。在步骤312,方法300a包括由桥单元基于被存储在上下文存储器中的上下文信息将从NVMe-SSD存储设备接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个分别转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的至少一个。在步骤314,方法300a包括由桥单元经由架构向NVMe-oF主机单元传送所转换的RDMA WRITE分组和所转换的RDMA READ分组中的至少一个。
可以通过所呈现的次序、以不同的次序或同时地执行方法300a中的各种动作。此外,在一些实施例中,可以省略在图3a中列出的一些动作。
图3b是描绘根据如在本文公开的实施例的、用于向NVMe-oF主机单元202传送所转换的RDMA SEND分组的方法300b的流程图。
在步骤320,方法300b包括通过桥单元基于由NVMe-SSD存储设备通过访问与桥单元相关联的虚拟数据存储器完成写入对应于NVMe-oF数据传递命令的数据和读取该数据中的至少一个,经由PCIe总线从NVMe-SSD存储设备将完成队列条目(CQE)接收到与桥单元相关联的虚拟完成队列(VCQ)地址。在步骤322,方法300b包括由桥单元经由与桥单元相关联的NVMeoF-NVMe子模块将与从NVMe-SSD存储设备接收到的CQE相对应的PCIe WRITE TLP事务转换为RDMA SEND分组。在步骤324,方法300b包括由桥单元经由RDMA子模块通过架构向NVMe-oF主机单元传送所转换的RDMA SEND分组。在步骤326,方法300b包括由桥单元基于至少一个动作的完成通过与桥单元相关联的NVMeoF-NVMe子模块来更新NVMe-SSD存储设备中的完成队列头部门铃(CQHD)。
可以通过所呈现的次序、以不同的次序或同时地执行方法300b中的各种动作。此外,在一些实施例中,可以省略在图3b中列出的一些动作。
图3c是描绘根据如在本文公开的实施例的、用于由桥单元204在管理完成队列(ACQ)缓冲器中分配与管理完成队列(ACQ)相对应的物理缓冲器的方法300c的流程图。
在步骤340,方法300c包括由桥单元经由与管理(Admin)队列(AQ)相对应的NVMe-oF连接命令从NVMe-oF主机单元接收建立和与桥单元相关联的控制器的关联的请求,其中,AQ包括管理提交队列(ASQ)和管理完成队列(ACQ)。在步骤342,方法300c包括由桥单元在与桥单元相关联的SQ缓冲器中分配与管理提交队列(ASQ)相对应的物理缓冲器,并且在与NVMe-SSD存储设备相关联的管理提交队列(ASQ)基地址寄存器中提供所分配的物理缓冲器的基地址。在步骤344,方法300c包括由桥单元在与桥单元相关联的管理完成队列(ACQ)缓冲器中分配与管理完成队列(ACQ)相对应的物理缓冲器,并且在与NVMe-SSD存储设备相关联的管理完成队列(ACQ)基地址寄存器中提供所分配的物理缓冲器的基地址。在步骤346,方法300c包括由桥单元对与NVMe-SSD存储设备相关联的管理队列属性(AQA)寄存器更新ASQ和ACQ的尺寸信息。
可以通过所呈现的次序、以不同的次序或同时地执行方法300c中的各种动作。此外,在一些实施例中,可以省略在图3c中列出的一些动作。
图3d是描绘根据如在本文公开的实施例的、用于通过桥单元204分配与和桥单元相关联的输入/输出完成队列(IOCQ)相对应的虚拟缓冲器的方法300d的流程图。
在步骤350,方法300d包括由桥单元经由与输入/输出队列(IOQ)相对应的NVMe-oF连接命令从NVMe-oF主机单元接收创建与和桥单元相关联的控制器的IOQ对的请求。在步骤352,方法300d包括由桥单元在与桥单元相关联的SQ缓冲器中分配与输入/输出提交队列(IOSQ)缓冲器相对应的物理缓冲器,其中,将所分配的与IOSQ缓冲器相对应的物理缓冲器的基地址嵌入在IOSQ命令中的SQE的SQ基地址字段中。在步骤354,方法300d包括通过桥单元分配对应于与桥单元相关联的输入/输出完成队列(IOCQ)的虚拟缓冲器。在实施例中,将所分配的与IOCQ缓冲器相对应的虚拟缓冲器的基地址嵌入在CREATE IOCQ命令中的SQE的CQ基地址字段中。在步骤356,方法300d包括由桥单元基于经由与输入/输出命令相对应的NVMe-oF连接命令的接收的请求、经由AQ来创建CREATE IOSQ命令和CREATE IOCQ命令。在步骤358,方法300d包括由桥单元执行在NVMe-SSD存储设备中的门铃寄存器WRITE操作,以创建IOSQ命令和IOCQ命令中的至少一个。在步骤360,方法300d包括由桥单元基于从NVMe-SSD存储设备接收关于CREATE IOSQ命令和CREATE IOCQ命令的完成条目(CE),经由RDMA子模块、使用RDMA SEND操作、对NVMe-oF主机单元更新与经由NVMe-oF连接命令接收的请求相对应的CQE。
可以通过所呈现的次序、以不同的次序或同时地执行方法300d中的各种动作。此外,在一些实施例中,可以省略在图3d中列出的一些动作。
图3e是描绘根据如在本文公开的实施例的、用于由桥单元204经由RDMA子模块204a向NVMe-oF主机单元202传送所转换的RDMA SEND分组的方法300e的流程图。
在步骤362,方法300e包括由桥单元通过架构接收包括简明数据的NVMe-oF数据传递命令。在步骤364,方法300e包括由桥单元利用简明写缓冲器地址来更新NVMe-oF简明数据传递命令的SGL字段。在步骤366,方法300e包括由桥单元向与桥单元相关联的SQ缓冲器中的相应的IOSQ写入简明数据传递命令的SQE字段,并且向与桥单元相关联的简明写数据缓冲器写入NVMe-oF简明命令的简明数据且对NVMe-SSD存储设备更新SQ尾部门铃。在步骤368,方法300e包括由NVMe-SSD存储设备从与桥单元相关联的SQ缓冲器的IOSQ获取SQE。在步骤370,方法300e包括由NVMe-SSD存储设备访问在存储于SQ缓冲器的IOSQ中的SQE的SGL字段中所提及的地址,以从桥单元204的简明写数据缓冲器中取出简明数据。在步骤372,方法300e包括由桥单元经由RDMA子模块、经由架构向NVMe-oF主机单元传送所转换的RDMASEND分组。
可以通过所呈现的次序、以不同的次序或同时地执行方法300e中的各种动作。此外,在一些实施例中,可以省略在图3e中列出的一些动作。
有利地,桥单元204可以允许缓冲器减少、功耗的减少以及面积/成本的减少。桥单元204也可以节省一个存储器复制操作,因此提供等待时间的减少。
桥单元204可以在I/O路径中提供完整的硬件自动化。桥单元204可以不需要处理器干预(即,通过硬件执行从SQE发布到CQHD发布)。此外,桥单元204可以不需要功率损耗保护。此外,NVMe驱动器可以不需要操作***(OS)。而且,通过增加MPS值和使用PRP,可以避免SGL的取出,这可以避免为了SGL取出对于PCIe带宽的利用。
能够通过在至少一个硬件设备上运行的并且执行网络管理功能以控制元件的至少一个软件程序来实施在本文公开的实施例。图2a中示出的元件是硬件设备,或者硬件设备和软件模块的组合中的至少一个。
特定实施例的以上描述将因此完全地披露在本文的实施例的通用的性质,通过应用当前知识,其他人能够在不背离通用概念的情况下容易地修改特定实施例和/或针对各种应用改编这样的特定实施例,并且因此,这样的改编和修改应当并且旨在被理解为处于所公开的实施例的等同物的意义和范围内。应当理解,在本文采用的措辞或术语用于描述而非限制的目的。因此,尽管已经就实施例而言描述了在本文的实施例,但那些本领域技术人员将认识到,能够利用在如在本文所描述的实施例的精神和范围内的修改来实践在本文的实施例。
Claims (18)
1.一种用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的方法,该方法包括:
由桥单元从NVMe-oF主机单元接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作;
由桥单元基于将被执行的至少一个动作来生成与SGL地址相对应的虚拟数据存储器的虚拟数据存储器地址,其中虚拟数据存储器与桥单元中的物理存储器对应;
由桥单元将NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器中,并且将上下文信息存储在架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块中的上下文存储器中,该上下文信息与NVMe-oF数据传递命令相关联;
由多个NVMe-SSD存储设备中的NVMe-SSD存储设备获取存储在SQ缓冲器中的SQE;
由NVMe-SSD存储设备通过发起高速外部组件互联(PCIe)存储器READ事务层分组(TLP)事务和PCIe存储器WRITE TLP事务中的至少一个,基于从SQ缓冲器获取的SQE来访问与桥单元中的物理存储器对应的虚拟数据存储器;
由桥单元基于在上下文存储器中存储的上下文信息,将从NVMe-SSD存储设备接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的一个;
由桥单元经由架构向NVMe-oF主机单元传送由桥单元转换的RDMA READ分组和由桥单元转换的RDMA WRITE分组中的至少一个,
由桥单元经由与管理队列(AQ)相对应的NVMe-oF连接命令接收建立与控制器的关联的请求,其中,AQ包括管理提交队列(ASQ)和管理完成队列(ACQ);
由桥单元在SQ缓冲器中分配与ASQ相对应的物理缓冲器,并且在与NVMe-SSD存储设备相关联的ASQ基地址寄存器中提供与ASQ相对应的物理缓冲器的基地址;
由桥单元在ACQ缓冲器中分配与ACQ相对应的物理缓冲器,并且在与NVMe-SSD存储设备相关联的ACQ基地址寄存器中提供与ACQ相对应的物理缓冲器的基地址;以及
由桥单元对与NVMe-SSD存储设备相关联的管理队列属性(AQA)寄存器更新ASQ和ACQ的尺寸信息。
2.根据权利要求1所述的方法,进一步包括:
由桥单元基于由NVMe-SSD存储设备通过访问与桥单元中物理存储器对应的虚拟数据存储器完成写入对应于NVMe-oF数据传递命令的数据和读取该数据中的至少一个,经由PCIe总线从NVMe-SSD存储设备将与PCIe存储器WRITE TLP事务对应的完成队列条目(CQE)接收到虚拟完成队列(VCQ)地址;
由桥单元经由NVMeoF-NVMe子模块将PCIe WRITE TLP事务转换为RDMA SEND分组;
由桥单元经由RDMA子模块、经由架构向NVMe-oF主机单元传送由桥单元转换的RDMASEND分组;以及
由桥单元基于至少一个动作的完成,通过NVMeoF-NVMe子模块来更新NVMe-SSD存储设备中的完成队列头部门铃(CQHD)。
3.根据权利要求1所述的方法,进一步包括:
由桥单元经由与输入/输出队列(IOQ)相对应的NVMe-oF连接命令从NVMe-oF主机单元接收创建与控制器的IOQ对的请求;
由桥单元在SQ缓冲器中分配与输入/输出提交队列(IOSQ)缓冲器相对应的物理缓冲器,其中,与IOSQ缓冲器相对应的物理缓冲器的基地址被嵌入在IOSQ命令中的SQE的SQ基地址字段中;
由桥单元分配与输入/输出完成队列(IOCQ)缓冲器相对应的虚拟缓冲器,其中,与IOCQ缓冲器相对应的虚拟缓冲器的基地址被嵌入在IOCQ命令中的SQE的CQ基地址字段中;
由桥单元基于经由NVMe-oF连接命令的请求,经由管理队列(AQ)来创建CREATE IOSQ命令和CREATE IOCQ命令;
由桥单元执行在NVMe-SSD存储设备中的门铃寄存器WRITE操作,以创建IOSQ命令和IOCQ命令中的至少一个;以及
由桥单元基于从NVMe-SSD存储设备接收关于CREATE IOSQ命令和CREATE IOCQ命令的完成条目(CE),经由RDMA子模块、使用RDMA SEND操作对NVMe-oF主机单元更新与经由NVMe-oF连接命令的请求相对应的完成队列条目(CQE)。
4.根据权利要求1所述的方法,进一步包括:
由桥单元通过架构接收包括简明数据的NVMe-oF数据传递命令;
由桥单元利用简明写数据缓冲器地址来更新NVMe-oF简明数据传递命令的SGL字段;
由桥单元向SQ缓冲器中的输入/输出提交队列(IOSQ)写入NVMe-oF数据传递命令的SQE字段,并且向简明写缓冲器写入NVMe-oF数据传递命令的简明数据且对NVMe-SSD存储设备更新SQ尾部门铃;
由NVMe-SSD存储设备从SQ缓冲器中的IOSQ获取SQE;
由NVMe-SSD存储设备访问SGL字段中的简明写入数据缓冲器地址,以从桥单元的简明写数据缓冲器中取出简明数据;以及
由桥单元经由桥单元的RDMA子模块、经由架构向NVMe-oF主机传送由桥单元转换的RDMA SEND分组。
5.根据权利要求1所述的方法,其中,从NVMe-oF主机单元接收包括SGL地址的NVMe-oF数据传递命令包括:经由RDMA子模块向NVMeoF-NVMe子模块传送RDMA SEND命令。
6.根据权利要求1所述的方法,其中,由NVMeoF-NVMe子模块使用存储在上下文存储器中的上下文信息,以将经由PCIe从NVMe-SSD存储设备接收的PCIe存储器WRITE TLP事务和PCIe存储器READ TLP事务中的至少一个转换为RDMA WRITE事务和RDMA READ事务中的至少一个,用于通过架构传送到NVMe-oF主机单元。
7.根据权利要求1所述的方法,其中,发起由桥单元转换的RDMA WRITE分组以从桥单元向NVMe-oF主机单元传递与NVMe-oF数据传递命令相对应的数据,并且发起RDMA READ分组以从NVMe-oF主机单元向桥单元传递与NVMe-oF数据传递命令相对应的数据。
8.根据权利要求3所述的方法,其中,物理缓冲器的物理地址被嵌入在IOSQ命令的基地址字段中,并且虚拟缓冲器的虚拟地址被嵌入在CREATE IOCQ命令的基地址字段中。
9.一种用于经由桥单元来管理架构上的非易失性存储器规范(NVMe-oF)主机单元和多个非易失性存储器规范-固态驱动器(NVMe-SSD)存储设备之间的通信的***,该***被配置为:
由桥单元从NVMe-oF主机单元接收包括分散收集列表(SGL)地址的NVMe-oF数据传递命令以执行至少一个动作;
由桥单元基于将被执行的至少一个动作来生成与SGL地址相对应的、虚拟数据存储器的虚拟数据存储器地址,其中虚拟数据存储器与桥单元中的物理存储器对应;
由桥单元将NVMe-oF数据传递命令作为提交队列条目(SQE)存储在提交队列(SQ)缓冲器中,并且将上下文信息存储在架构上的非易失性存储器规范-非易失性存储器规范(NVMeoF-NVMe)子模块中的上下文存储器中,该上下文信息与NVMe-oF数据传递命令相关联;
由多个NVMe-SSD存储设备中的NVMe-SSD存储设备获取存储在SQ缓冲器中的SQE;
由NVMe-SSD存储设备通过发起高速外部组件互联(PCIe)存储器READ事务层分组(TLP)事务和PCIe存储器WRITE TLP事务中的至少一个,基于从SQ缓冲器获取的SQE来访问与桥单元中的物理存储器对应的虚拟数据存储器;
由桥单元基于在上下文存储器中所存储的上下文信息,将从NVMe-SSD存储设备接收到的PCIe存储器READ TLP事务和PCIe存储器WRITE TLP事务中的至少一个转换为远程直接存储器存取(RDMA)READ分组和RDMA WRITE分组中的一个;以及
由桥单元经由架构向NVMe-oF主机单元传送由桥单元转换的RDMA READ分组和由桥单元转换的RDMA WRITE分组中的至少一个,
其中,与桥单元中的物理存储器对应的虚拟数据存储器的虚拟数据存储器地址被嵌入在SQE的SGL地址字段中,并且包括与NVMeoF-NVMe子模块相对应的基地址和命令令牌。
10.根据权利要求9所述的***,其中,由NVMe-SSD存储设备获取SQE,该***被配置为:
由桥单元执行NVMe-SSD存储设备中的门铃寄存器WRITE操作;以及
由NVMe-SSD存储设备通过经由PCIe总线发起PCIe存储器READ TLP事务,响应于门铃寄存器WRITE操作来获取存储在SQ缓冲器中的SQE。
11.根据权利要求9所述的***,其中,该***被进一步配置为:
从简明写缓冲器地址获取简明数据;
由桥单元经由PCIe总线在NVMe-SSD存储设备中执行门铃WRITE寄存器操作;以及
由NVMe-SSD存储设备响应于门铃寄存器WRITE操作来获取存储在SQ缓冲器中的SQE。
12.根据权利要求9所述的***,其中,该***被进一步配置为:
由桥单元经由PCIe总线从NVMe-SSD存储设备接收完成队列条目(CQE);
由桥单元经由NVMeoF-NVMe子模块将与CQE相关联的PCIe TLP事务转换为RDMA SEND分组;
由桥单元经由RDMA子模块、经由架构向NVMe-oF主机单元传送由桥单元转换的RDMASEND分组;以及
由桥单元的NVMeoF-NVMe子模块基于至少一个动作的完成,来更新NVMe-SSD存储设备中的完成队列头部门铃(CQHD)。
13.根据权利要求9所述的***,其中,由NVMeoF-NVMe子模块对于每个命令分配命令令牌,以引用存储在上下文存储器中的上下文信息。
14.根据权利要求9所述的***,其中,与桥单元中的物理存储器对应的虚拟数据存储器存在于桥单元的NVMeoF-NVMe子模块中。
15.根据权利要求9所述的***,其中,包括SGL地址的NVMe-oF数据传递命令作为简明命令从NVMe-oF主机单元接收,并且所述简明命令作为提交队列条目(SQE)被存储在提交队列(SQ)缓冲器中。
16.根据权利要求9所述的***,其中,如果NVMe-SSD存储设备访问与桥单元中的物理存储器对应的虚拟数据存储器以执行至少一个事务,则由NVMeoF-NVMe子模块调取被存储在上下文存储器中的上下文信息。
17.根据权利要求9所述的***,其中,存储在上下文存储器中的上下文信息包括远程KEY、用于与NVMe-oF数据传递命令相关联的SGL地址的KEY字段、用于与NVMe-oF命令相关联的SGL地址的地址字段、NVMe-oF数据传递命令标识(ID)号码、队列号码(QN)和RDMA队列对号码中的至少一个。
18.根据权利要求9所述的***,其中,PCIe存储器WRITE TLP事务与从NVMe-SSD存储设备接收到的完成队列条目(CQE)相对应,并且包括由NVMeoF-NVMe子模块从PCIe存储器WRITE TLP事务的地址字段解码CQE的队列号码(QN)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201941001145 | 2019-01-10 | ||
IN201941001145 | 2019-01-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111427808A CN111427808A (zh) | 2020-07-17 |
CN111427808B true CN111427808B (zh) | 2023-12-26 |
Family
ID=71517694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010012995.9A Active CN111427808B (zh) | 2019-01-10 | 2020-01-07 | 用于管理存储设备和主机单元之间的通信的***和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11409465B2 (zh) |
CN (1) | CN111427808B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11366610B2 (en) | 2018-12-20 | 2022-06-21 | Marvell Asia Pte Ltd | Solid-state drive with initiator mode |
US11294602B2 (en) | 2019-03-14 | 2022-04-05 | Marvell Asia Pte Ltd | Ethernet enabled solid state drive (SSD) |
EP3939237B1 (en) | 2019-03-14 | 2024-05-15 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (ssds) via a connection between the ssds |
WO2020183246A2 (en) * | 2019-03-14 | 2020-09-17 | Marvell Asia Pte, Ltd. | Termination of non-volatile memory networking messages at the drive level |
CN113296691B (zh) * | 2020-07-27 | 2024-05-03 | 阿里巴巴集团控股有限公司 | 数据处理***、方法、装置以及电子设备 |
US11750418B2 (en) * | 2020-09-07 | 2023-09-05 | Mellanox Technologies, Ltd. | Cross network bridging |
CN112256601B (zh) * | 2020-10-19 | 2023-04-21 | 苏州凌云光工业智能技术有限公司 | 数据存取控制方法、嵌入式存储***及嵌入式设备 |
CN112291259B (zh) * | 2020-11-12 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种协议转换方法、网关、设备及可读存储介质 |
US11467994B2 (en) * | 2020-12-11 | 2022-10-11 | Hewlett Packard Enterprise Development Lp | Identifiers for connections between hosts and storage devices |
WO2022126534A1 (zh) * | 2020-12-17 | 2022-06-23 | 华为技术有限公司 | 数据处理方法及相关设备 |
US11899935B2 (en) * | 2021-04-16 | 2024-02-13 | EMC IP Holding Company, LLC | System and method for user space NVMe-over-RDMA host library |
KR102365312B1 (ko) | 2021-06-17 | 2022-02-23 | 삼성전자주식회사 | 스토리지 컨트롤러, 연산 스토리지 장치, 및 연산 스토리지 장치의 동작 방법 |
US11620083B2 (en) | 2021-07-02 | 2023-04-04 | Samsung Electronics Co., Ltd. | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device |
US11966343B2 (en) * | 2021-07-19 | 2024-04-23 | Samsung Electronics Co., Ltd. | Universal mechanism to access and control a computational device |
CN113608784B (zh) * | 2021-08-19 | 2024-05-03 | 湖南国科微电子股份有限公司 | NVMe控制装置和方法 |
US11934672B2 (en) * | 2021-08-26 | 2024-03-19 | International Business Machines Corporation | Cached workload management for a multi-tenant host |
US20240160372A1 (en) * | 2022-11-16 | 2024-05-16 | Samsung Electronics Co., Ltd. | Prepopulating commands at a storage device for accelerated host-issued live migration of storage data |
CN116016570A (zh) * | 2022-12-29 | 2023-04-25 | 深圳云豹智能有限公司 | 报文处理方法、装置和*** |
CN117556754B (zh) * | 2024-01-11 | 2024-03-19 | 北京数渡信息科技有限公司 | PCIe交换机芯片硅前仿真*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108885597A (zh) * | 2016-04-04 | 2018-11-23 | 马维尔国际贸易有限公司 | 用于使用直接目标访问经由通过结构的非易失性存储器桥接访问主机存储器的方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934173B1 (en) * | 2016-02-24 | 2018-04-03 | Xilinx, Inc. | Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric |
-
2019
- 2019-12-05 US US16/704,206 patent/US11409465B2/en active Active
-
2020
- 2020-01-07 CN CN202010012995.9A patent/CN111427808B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108885597A (zh) * | 2016-04-04 | 2018-11-23 | 马维尔国际贸易有限公司 | 用于使用直接目标访问经由通过结构的非易失性存储器桥接访问主机存储器的方法和*** |
Also Published As
Publication number | Publication date |
---|---|
US20200225874A1 (en) | 2020-07-16 |
CN111427808A (zh) | 2020-07-17 |
KR20200087052A (ko) | 2020-07-20 |
US11409465B2 (en) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111427808B (zh) | 用于管理存储设备和主机单元之间的通信的***和方法 | |
US9557922B2 (en) | System and method for peer-to-peer PCIe storage transfers | |
US9696942B2 (en) | Accessing remote storage devices using a local bus protocol | |
US9727503B2 (en) | Storage system and server | |
US10331600B1 (en) | Virtual I/O queuing | |
EP2763045B1 (en) | Method and apparatus for allocating memory space with write-combine attribute | |
US9467512B2 (en) | Techniques for remote client access to a storage medium coupled with a server | |
CN114443529B (zh) | 内存直接访问架构、***、方法、电子设备和介质 | |
US9092365B2 (en) | Splitting direct memory access windows | |
JP6763984B2 (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
US10901624B1 (en) | Dummy host command generation for supporting higher maximum data transfer sizes (MDTS) | |
US10275175B2 (en) | System and method to provide file system functionality over a PCIe interface | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
US11199992B2 (en) | Automatic host buffer pointer pattern detection | |
JP2021515318A (ja) | NVMeベースのデータ読み取り方法、装置及びシステム | |
US20210019261A1 (en) | Memory cache-line bounce reduction for pointer ring structures | |
US9104601B2 (en) | Merging direct memory access windows | |
CN113196225A (zh) | 开放信道矢量命令执行 | |
KR102691053B1 (ko) | NVMe-SSD 저장 장치 및 NVMe-oF 호스트 유닛 사이의 통신 관리 시스템 및 방법 | |
CN113031849A (zh) | 直接内存存取单元及控制部件 | |
CN113138950A (zh) | 在串联连接的电子装置之间提前发送完成的计算*** | |
US12008243B2 (en) | Reducing index update messages for memory-based communication queues | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |