CN108733601B - NVMe-oF以太网SSD中的低延迟直接访问块存储 - Google Patents
NVMe-oF以太网SSD中的低延迟直接访问块存储 Download PDFInfo
- Publication number
- CN108733601B CN108733601B CN201810285587.3A CN201810285587A CN108733601B CN 108733601 B CN108733601 B CN 108733601B CN 201810285587 A CN201810285587 A CN 201810285587A CN 108733601 B CN108733601 B CN 108733601B
- Authority
- CN
- China
- Prior art keywords
- rdma
- dax
- flash memory
- command
- host
- 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
Classifications
-
- 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/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
- 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
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- 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/0626—Reducing size or complexity 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Communication Control (AREA)
- Bus Control (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种对通过以太网连接的至少一个NVMe‑oF SSD设备中的非易失性闪存进行低延迟直接数据访问的方法。该方法包括从主机的低延迟直接访问(LL‑DAX)块存储软件层向闪存传输远程直接存储器访问(RDMA)写请求。RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码。该方法还包括在主机处接收指示数据已被保存到闪存的RDMA级确认。该方法还包括从LL‑DAX块存储软件层向闪存传输RDMA读请求,该RDMA读请求包括存储地址、数据传送的长度和操作码。该方法还包括在主机处从闪存接收对应于RDMA读请求的数据分组。
Description
相关申请的交叉引用
本申请要求于2017年4月25日提交的标题为“A Method for Low Latency DirectAccess Block Storage in NVMe-oF Ethernet SSD”的美国临时申请第62/489,991号的优先权和权益,其全部内容以引用方式并入本文中。
技术领域
本公开总体涉及用于固态驱动器的数据访问方法和系统。
背景技术
固态驱动器(SSD)正在取代了传统的硬盘驱动器(HDD),迅速成为现代IT基础设施的主要存储元件。SSD提供非常低的延迟、高数据读取/写入吞吐量以及可靠的用户数据存储。光纤高速非易失性存储器(NVMe-oF)是一项新兴技术,其允许数百甚至数千个高速非易失性存储器(NVMe)SSD通过以太网连接。NVMe-oF协议实现了远程直接连接存储(rDAS)实施。这允许大量的SSD连接到远程主机。NVMe-oF协议使用远程直接存储器访问(RDMA)协议来提供用于携带NVMe命令、数据和响应的可靠传输服务。互联网广域RDMA协议(iWARP)、融合以太网RDMA(RoCE)v1和RoCE v2是提供RDMA服务的一些传输协议。
图1描绘了常规NVMe-oF以太网SSD存储中使用的系统架构的示例。如图1中所示,在服务器上运行的应用程序通常通过系统软件栈来访问存储。典型的存储系统软件栈包括许多层,诸如应用程序、操作系统(OS)/文件系统(FS)、NVMe-oF驱动器、块存储层(图1中未示出)以及RDMA传输层(图1中未示出)。系统软件的这些众多层可能会为应用程序的数据访问增加大量延迟。由于存储介质技术(例如,Z-NAND)和联网技术(例如,100Gbps以太网)的进步,由于介质和网络造成的延迟贡献显著下降。因此,系统软件延迟正在成为整体数据访问延迟的重要组成部分。
在背景技术部分中公开的上述信息被提供用于增强对本发明的背景的理解,并且因此它可以包含不构成现有技术的信息。
发明内容
本公开涉及对通过以太网连接的高速非易失性存储器(NVMe)固态驱动器(SSD)设备中的至少一个非易失性闪存进行低延迟直接数据访问的各种方法。在一个实施例中,该方法包括从主机的低延迟直接访问(LL-DAX)块存储软件层向闪存传输远程直接存储器访问(RDMA)写请求。RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码。该方法还包括在主机处接收指示数据已被保存到闪存的确认。该方法还包括从LL-DAX块存储软件层向闪存传输RDMA读请求。RDMA读请求包括存储地址、数据传送的长度和操作码。该方法还包括在主机处从闪存接收对应于RDMA读请求的数据分组。
RDMA首部字段中可以携带RDMA写请求和RDMA读请求的存储地址、数据传送的长度以及操作码。
该方法还可以包括使用光纤高速非易失性存储器(NVMe-oF)协议将RDMA写请求和RDMA读请求从主机传输到闪存。
传输RDMA写请求和传输RDMA读请求可以包括使用一系列RDMA队列对(QP)进行传输。该方法还可以包括当两个或更多个RDMA QP具有主机命令时,使用LL-DAX主机接口(HIF)逻辑执行仲裁。仲裁选择主机命令中的一个用于执行。该系列RDMA QP中的第一RDMAQP可以专用于第一命令,并且该系列RDMA QP中的第二RDMA QP可以专用于与第一命令不同的第二命令。第一命令可以是写命令,并且第二命令可以是读命令。
该方法还可以包括从主机处的LL-DAX块存储软件层向闪存传输识别命令。闪存响应于识别命令,将关于闪存的信息传输到主机。该信息可能包括闪存的所支持的功能、能力和特性。识别命令可以与RDMA读请求一起传输。
该方法还可以包括从主机的LL-DAX块存储软件层向闪存传输删除命令。删除命令包括块地址范围的起始块地址和结束块地址。删除命令可以与RDMA写请求一起传输。
RDMA读请求和RDMA写请求可以使用诸如RoCE v1、RoCE v2或iWARP的RDMA传输协议进行传输。
LL-DAX块存储软件层可以包括超时值,并且LL-DAX QP可以包括被配置成防止在传输RDMA写请求期间超时的接收缓冲区。
闪存的LL-DAX存储容量可以与NVMe-oF命名空间共享。
本公开还涉及用于对非易失性闪存进行低延迟直接数据访问的系统的各种实施例。在一个实施例中,该系统包括通过以太网连接的包括闪存的至少一个光纤高速非易失性存储器(NVMe-oF)固态驱动器(SSD)设备,以及包括处理器和低延迟直接访问(LL-DAX)块存储软件层的主机设备。LL-DAX块存储软件层包括存储在其中的指令,该指令在由处理器执行时使处理器向闪存传输远程直接存储器存取(RDMA)写请求,该RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码,接收指示数据已被保存到闪存的确认,向闪存传输RDMA读请求,该RDMA读请求包括存储地址、数据传送的长度和操作码,以及从闪存接收对应于RDMA读请求的数据分组。
主机设备可以包括指令,该指令在由处理器执行时使处理器使用光纤高速非易失性存储器(NVMe-oF)协议将RDMA写请求或RDMA读请求传输到非易失性闪存。NVMe-oF协议模式和LL-DAX模式可以排它地或同时运行。
NVMe SSD设备可以包括被配置成在两个或更多个RDMA队列对(QP)中的主机命令之间进行仲裁的LL-DAX主机接口(HIF)逻辑。两个或更多RDMA RDMA QP中的第一RDMA QP可以专用于第一命令,并且两个或更多RDMA RDMA QP中的第二RDMA QP可以专用于与第一命令不同的第二命令。
LL-DAX块存储软件层可以包括超时值,并且至少一个NVMe SSD设备可以包括被配置成防止在RDMA写请求的传输期间超时的接收缓冲区。
存储在LL-DAX块存储软件层中的指令在由处理器执行时还可以使处理器向闪存传输识别命令或者向闪存传输删除命令。
提供本发明内容是为了介绍将在以下具体实施方式中进一步描述的本公开的实施例的特征和概念的选择。本发明内容不旨在确定所要求保护的主题的关键或基本特征,也不旨在用于限制所要求保护的主题的范围。所描述的特征中的一个或多个可以与一个或多个其它描述的特征组合以提供可使用的设备。
附图说明
当结合以下附图考虑时,通过参考以下具体实施方式,本公开的实施例的这些和其它特征和优点将更加显而易见。在附图中,图中使用相同的附图标记来指代相同的特征和组件。这些图不一定按规定比例绘制。
图1是描绘光纤高速非易失性存储器(NVMe-oF)以太网SSD存储中使用的常规系统架构的示意图;
图2是描绘根据本公开的一个实施例的NVMe-oF以太网SSD存储中使用的系统架构的示意图;
图3是描绘LL-DAX写命令的格式的图;
图4是描绘LL-DAX读命令和LL-DAX识别命令的格式的图;
图5是描绘LL-DAX删除命令的格式的图;以及
图6是根据本公开的一个实施例的eSSD中的LL-DAX操作的流程图。
具体实施方式
本公开涉及在光纤高速非易失性存储器(NVMe-oF)以太网SSD存储中进行低延迟数据访问的各种系统和方法。本公开的各种系统和方法利用LL-DAX协议、启用LL-DAX的eSSD和LL-DAX块存储软件。用于低延迟访问数据存储的各种系统和方法被配置成实现高性能和具成本效益的解决方案。本公开的各种系统和方法被配置成绕过常规数据访问方法中使用的一些存储软件栈层,以提供低延迟并降低现有存储软件栈的复杂性和成本。此外,本公开的各种系统和方法不需要任何额外的中间存储硬件基础设施(即,本公开的各种系统和方法不会对存储基础设施施加任何新的硬件要求,并且因此这些系统和方法不影响任何已安装的硬件基础设施)。
在下文中,将参照附图更详细地描述示例实施例,其中相同的附图标记始终指代相同的元件。然而,本公开可以以各种不同的形式来具体实施,并且不应该被解释为仅限于在本文示出的实施例。更确切地说,提供这些实施例作为示例,以使得本公开将是全面和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可能不会描述并非是本领域普通技术人员完全理解本公开的方面和特征所必需的过程、元件和技术。除非另有说明,否则在整个附图和书面描述中,相同的附图标记表示相同的元件,并且因此可以不重复对其的描述。
在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被夸大和/或简化。为了便于解释,可以在本文中使用诸如“在…下方”,“在…下面”,“下”,“在…之下”,“在…上面”,“上”等的关系,以描述一个元件或特征与另一个元件或特征的如附图所示的关系。应该理解的是,除了附图中描绘的方位之外,空间相对术语旨在涵盖使用或操作中的设备的不同方位。例如,如果附图中的设备翻转,则被描述为在其它元件或特征“下面”或“下方”或“之下”的元件将被定向为在其它元件或特征“上面”。因此,示例术语“在…下面”和“在…之下”可以涵盖上面和下面两种方位。设备可以以其它方式定向(例如,旋转90度或以其它方位),并且相应地解释本文使用的空间相对描述符。
将理解的是,虽然本文可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语用于区分一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分。因此,在不脱离本发明的精神和范围的情况下,下面描述的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
将理解的是,当元件或层被称为“在另一元件或层上”、“连接到”或“耦合到”另一元件或层时,它可以直接在另一元件或层上,连接到或耦合到另一元件或层,或者可以存在一个或多个中间元件或层。此外,还将理解的是,当元件或层被称为在两个元件或层“之间”时,它可以是两个元件或层之间的唯一元件或层,或者也可能存在一个或多个中间元件或层。
本文使用的术语是为了描述特定实施例的目的,而不旨在限制本发明。如本文所使用,除非上下文另外明确地指出,否则单数形式“一”和“一个”也旨在包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和“包含”指定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。如本文所使用,术语“和/或”包括一个或多个相关所列项目的任何和所有组合。诸如“至少一个”之类的表述当在元件列表之前时,修饰整个元件列表并且不修饰列表的单个元件。
如本文所使用,术语“基本上”、“大约”和类似术语被用作近似术语而不是程度术语,并且旨在解释将由本领域的普通技术人员认识到的测量值或计算值中的固有变动。此外,当描述本发明的实施例时,使用“可以”是指“本发明的一个或多个实施例”。如本文所使用,术语“使用”和“所使用”可以分别被认为与术语“利用”和“所利用”同义。而且,术语“示例性”旨在指代示例或说明。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的相同的含义。将进一步理解的是,诸如在通用字典中定义的那些术语应该被解释为具有与其在相关技术和/或本说明书的上下文中的含义相一致的含义,并且不应该被解释为理想化或过于正式的意义,除非在本文明确地如此定义。
LL-DAX eSSD协议
现在参考图2,根据本公开的一个实施例的LL-DAX存储和数据访问系统包括主机设备100和LL-DAX eSSD 101(即,通过以太网连接的一系列NVMe SSD设备)。LL-DAX eSSD101是标准的NVMe-oF eSSD,具有额外的LL-DAX特征支持。主机设备100包括应用程序102、LL-DAX块存储软件103和RDMA传输层104。在所示实施例中,LL-DAX eSSD 101包括RDMA目标层105、连接到RDMA目标层105的LL-DAX接收缓冲区106、连接到LL-DAX接收缓冲区106的LL-DAX主机接口(I/F)107、连接到LL-DAX主机接口(I/F)107的闪存转换层(FTL)108,以及连接到FTL 108的LL-DAX存储109。如下面更详细描述,主机设备100中的LL-DAX块存储软件103利用LL-DAX协议向LL-DAX eSSD 101中的RDMA目标105发送主机命令(例如,RDMA读命令和RDMA写命令)以获得对存储在LL-DAX存储109中的数据的低延迟直接访问(例如,LL-DAX块存储软件103向应用程序102或主机100处的其它系统软件层提供存储服务并利用RDMA读请求和RDMA写请求将数据传送到LL-DAX eSSD中的LL-DAX存储或从中传送数据)。以此方式,本公开的系统被配置成绕过主机设备100的文件系统层110、操作系统(OS)层111、块存储层112和NVMe-oF层113,并获得对存储在LL-DAX eSSD 101的LL-DAX存储109中的数据的低延迟直接访问。
另外,在一个或多个实施例中,LL-DAX eSSD 101还可以作为符合标准的NVMe-oF以太网SSD进行操作。LL-DAX数据访问模式是一项可选特征。因此,应用程序可以根据需要使用标准块存储模式或LL-DAX模式。另外,在一个或多个实施例中,LL-DAX eSSD 101可以同时支持两种访问模式(即,LL-DAX和NVMe-oF)。
LL-DAX协议使用包括远程直接存储器访问(RDMA)读请求和RDMA写请求以执行数据传送的RDMA传输(即,LL-DAX写命令和LL-DAX读命令被用于数据访问)。利用RDMA读请求从eSSD 101检索或提取数据。利用RDMA写请求将数据从主机100传送到eSSD 101。如下面的表1中所示,每个RDMA读请求和RDMA写请求包括与LL-DAX存储有关的操作码(OPC)字段、地址(ADDR)字段和长度(LEN)字段。
表1
下面的表2示出了根据本公开的一个实施例的用于RDMA写请求和/或RDMA读请求的操作码(OPC)字段的命令集(即,一组编码),其包括强制(M)命令集和可选(O)命令集。图3是描绘LL-DAX写命令的格式的图,并且图4是描述LL-DAX读命令的格式的图。
OPC值(8位) | M/O | 编码 |
0 | M | LL-DAX主机写 |
1 | M | LL-DAX主机读 |
2 | M | LL-DAX识别 |
3 | O | LL-DAX删除 |
4-255 | NA | RSVD |
表2
现有RDMA首部字段中携带了上述的LL-DAX命令字段(即,操作码(OPC)、地址(ADDR)和长度(LEN))。也就是说,通常用于远程缓冲区细节的现有RDMA首部字段被重新利用以携带LL-DAX命令字段(即,操作码(OPC)、地址(ADDR)和长度(LEN))。存在多个RDMA传输协议,诸如互联网广域RDMA协议(iWARP)、融合以太网RDMA(RoCE)v1和RoCE v2,因此重新用于LL-DAX用途的实际字段名称可能根据RDMA传输协议而变化。
下面的表3示出了用于RoCE v1请求和RoCE v2请求的一个可能的映射。
LL-DAX字段名称 | 读/写 |
OPC | RETH.R-Key[7:0] |
ADDR | RETH.VA[63:0] |
LEN | RETH.DMALen[31:0] |
表3
下面的表4示出了用于iWARP请求的一个可能的映射。
LL-DAX字段名称 | 读 | 写 |
OPC | RDMAP.SrcSTag[7:0] | DDP.Sink STag[7:0] |
ADDR | RDMAP.SrcTO[63:0] | DDP.Sink Tagged Offset[63:0] |
LEN | RDMAP.RDMARDSZ[31:0] |
表4
LL-DAX协议还利用LL-DAX识别命令从eSSD 101获取4KB数据结构。响应于接收到LL-DAX识别命令,eSSD 101报告关于LL-DAX存储109的信息,诸如其所支持的特征、能力和特性。LL-DAX识别命令的格式与LL-DAX读命令的格式相同,如图4中所示。下面的表5标识响应于LL-DAX识别命令而报告的关于LL-DAX存储109的信息,包括为RDMA读命令和写命令访问所保留的LL-DAX存储容量(例如,1TB)、eSSD 101上存在的接收缓冲区大小、eSSD 101支持的最大RDMA写大小以及块大小。在一个或多个实施例中,LL-DAX存储109可以是用于LL-DAX应用程序和用户的eSSD 101内的专用存储容量。在一个或多个实施例中,LL-DAX和非LL-DAX应用程序可以通过文件系统或其它系统栈层在eSSD 101内共享相同的存储容量(例如,LL-DAX应用程序和非LL-DAX应用程序可以互相交换数据)。在LL-DAX应用程序与传统的非LL-DAX应用程序之间共享存储空间也可以在SSD控制器级实现。例如,在一个或多个实施例中,LL-DAX存储109可以与NVMe-oF命名空间共享。在LL-DAX存储109与NVMe-oF命名空间共享的一个或多个实施例中,在主机软件的较高级处执行访问协调。
表5
LL-DAX协议可选地利用LL-DAX删除命令。LL-DAX删除命令携带一个或多个删除地址范围条目。每个删除范围条目都是16字节的数据结构,其中包含删除范围条目的起始块地址和结束块地址。图5是描绘LL-DAX删除命令的格式的图。下面的表6描述了删除范围条目的格式。
表6
为LL-DAX协议设置的命令是可扩展的,并且可以向LL-DAX协议添加附加的命令,诸如例如控制和状态寄存器(CSR)访问以及健康日志。
根据本公开的一个实施例的一种在通过以太网连接的NVMeSSD设备中对闪存进行低延迟数据访问的方法包括从主机100处的LL-DAX块存储软件层103向闪存传输RDMA写请求的任务,该RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码。RDMA写请求在识别的存储地址处将数据保存到闪存。该方法还包括从LL-DAX块存储软件层向闪存传输RDMA读请求的任务,该RDMA读请求包括存储地址、数据传送的长度和操作码。RDMA读请求检索位于闪存的指定存储地址的数据。RDMA首部字段中携带了RDMA写请求和RDMA读请求的存储地址、数据传送的长度以及操作码。该方法还可以包括从主机处的LL-DAX块存储软件层向闪存传输LL-DAX识别命令的任务,以获得关于闪存的信息,诸如其支持的特征、能力和特性。LL-DAX识别与RDMA读请求一起传输。该方法还可以包括从主机处的LL-DAX块存储软件层向闪存传输删除命令的任务,以删除在一个或多个指定地址范围上的保存在闪存上的数据。删除命令与RDMA写请求一起传输。
LL-DAX eSSD操作
再次参考图2,LL-DAX是标准NVMe-oF以太网SSD中的可选特征,因为eSSD支持嵌入式RDMA网络接口。NVMe-oF协议利用RDMA队列对(QP)传输命令、数据和完成。NVMe-oF主机驱动器利用RDMA发送请求向eSSD发送命令。eSSD利用RDMA读请求和RDMA写请求进行数据传送。eSSD还利用RDMA发送请求向主机通告完成(例如,数据保存的确认)。
LL-DAX利用存在于eSSD 101中的相同RDMA接口。LL-DAX利用用于LL-DAX访问的一个或多个单独的专用队列对(QP)120。LL-DAX主机使用RDMA读请求和RDMA写请求来执行数据传送并向eSSD 101发送命令。eSSD 101仅响应于LL-DAX主机的RDMA请求(例如,RDMA读请求和RDMA写请求)并且不会自行发起任何RDMA请求。RDMA确认用作数据传送完成,并且与NVMe-oF中的完成相反,不存在单独的完成。也就是说,NVMe-oF有明确的命令完成,而LL-DAX没有这类明确的完成。相反,LL-DAX为此目的使用RDMA级确认。在一个或多个实施例中,NVMe-oF协议模式和LL-DAX模式可以排它地或同时运行(例如,eSSD支持NVMe-oF协议模式和LL-DAX协议模式二者,使得NVMe-oF操作模式可以与LL-DAX操作模式共存)。
图6是描绘根据本公开的一个实施例的eSSD中的LL-DAX操作的流程图。如图6中所示,在操作201中,eSSD从主机设备处的LL-DAX块存储软件层103(参见图2)接收RDMA读请求或RDMA写请求。在操作202中,确定LL-DAX QP上是RDMA读请求还是RDMA写请求。当eSSD接收到不在LL-DAX QP上的RDMA读请求或RDMA写请求时,RDMA读命令或RDMA写命令遵循用于访问eSSD的标准NVME-oF协议,如操作203中所示。当eSSD从主机设备处的LL-DAX块存储软件层103接收到在LL-DAX QP上的RDMA读请求或RDMA写请求时,RDMA请求被转发到LL-DAX主机接口(HIF)逻辑107(参见图2)。在操作204中,当两个或更多个LL-DAX QP 120具有主机命令时,LL-DAX HIF逻辑107执行这些LL-DAX QP 120之间的仲裁以选择一个主机命令用于执行。由LL-DAX HIF逻辑107执行的仲裁可以是例如简单的循环(round-robin)仲裁或用主机控制的设置实现的更复杂的仲裁方案。在一个或多个实施例中,可以使用不同的LL-DAX QP120来区分不同命令之间的执行。例如,一个LL-DAX QP 120可以仅用来发送写命令(例如,一个LL-DAX QP 120可专用于专门发送写命令),而另一个LL-DAX QP 120可以仅用来发送读命令(例如,一个LL-DAX QP 120可专用于专门发送读命令)。LL-DAX HIF逻辑107解析所选择的命令并从RDMA命令中提取操作码以及其它相关的LL-DAX字段。LL-DAX HIF逻辑107然后执行接收到的LL-DAX命令并向主机确认RDMA请求分组。在一个或多个实施例中,不存在单独的命令完成。RDMA请求分组确认用作命令的完成。
继续参考图6,在操作205中,LL-DAX HIF逻辑107(参见图2)确定主机命令是RDMA读请求还是RDMA写请求。如果主机命令被确定为RDMA写命令,则在操作206中,LL-DAX HIF逻辑107通过检查主机命令的操作码值来确定RDMA写命令是LL-DAX写命令还是LL-DAX删除命令(其与RDMA写命令一起传输)。在操作207中,当LL-DAX HIF逻辑107确定主机命令是LL-DAX写命令时(例如,当命令的操作码值为0时),LL-DAX HIF逻辑107首先在操作208中将接收到的数据保存到闪存介质(例如,LL-DAX存储109,如图2中所示)或高速缓存,然后LL-DAXHIF逻辑107在操作209中确认RDMA写(例如,对LL-DAX写命令的确认通过LL-DAX HIF逻辑107传输到主机)。如果eSSD具有功率损耗保护缓冲区,则可以将接收到的写数据写入高速缓存,然后可以确认RDMA写分组。
为防止由于数据保存的持续时间导致主机端的RDMA写超时,主机RDMA栈可以编程有足够大的超时值。另外,LL-DAX QP接收缓冲区106(参见图2)需要适当地调整大小以允许由于数据保存的持续时间而导致的一定量的写突发。当eSSD闪存转换层(FTL)繁忙且不能排空接收缓冲区时,吸收写突发将为主机提供更好的性能。例如,在一个或多个实施例中,50MB的接收缓冲区将允许40Gbps速度下的10ms突发被吸收而不会对主机产生背压。所使用的背压机制是标准的RDMANACK分组。
如图6中所示,使用RDMA写请求传输LL-DAX删除命令。在操作210中,当LL-DAX HIF逻辑107确定主机命令是LL-DAX删除命令时(例如,当命令的操作码值是16时),LL-DAX HIF逻辑107首先在操作211中启动对闪存转换层(FTL)映射表格的更新,然后LL-DAX HIF逻辑107在操作212中确认RDMA写分组(例如,在操作212中,由LL-DAX HIF逻辑107将对用于传输LL-DAX删除命令的LL-DAX写命令的确认传输到主机)。如图6中所示,用于传输LL-DAX删除命令的RDMA写请求的有效载荷携带一个或多个被应用程序删除或解除分配的块地址范围。eSSD利用解除分配的地址信息进行闪存介质管理。
继续参考图6,当LL-DAX HIF逻辑107在操作205中确定主机命令是RDMA读命令时,LL-DAX HIF逻辑107然后在操作213中通过检查主机命令的操作码值来确定RDMA读命令是LL-DAX读命令还是LL-DAX识别命令(其与RDMA读命令一起传输)。在操作214中,当LL-DAXHIF逻辑107确定主机命令是LL-DAX读命令时(例如,当命令的操作码值是1时),LL-DAX HIF逻辑107首先在操作215中从闪存介质(例如,LL-DAX存储109)或从高速缓存获取所请求的数据,然后在操作216中用RDMA读响应分组将所请求的数据传输到主机。在一个或多个实施例中,取决于网络最大传输单元(MTU),可能存在多个响应分组。最后一个RDMA读响应分组确认LL-DAX读命令。
如图6中所示,使用RDMA读请求传输LL-DAX识别命令(即,将LL-DAX识别命令作为RDMA读请求的一部分来接收)。LL-DAX识别命令与LL-DAX读命令具有相似的执行流程。在操作217中,当LL-DAX HIF逻辑107确定主机命令是LL-DAX识别命令时(例如,当命令的操作码值是2时),LL-DAX HIF逻辑107首先在操作218中从闪存介质(例如,LL-DAX存储109)或从高速缓存获取识别数据结构,然后在操作219中使用RDMA读取响应分组将识别数据结构传送到主机。
LL-DAX块存储软件操作
再次参考图2,LL-DAX块存储软件层103提供对应用程序或其它系统软件层的存储访问。LL-DAX软件103执行与DAX存储相关的各种功能,包括发现、应用程序侧接口、数据传送和错误处理。
首先,LL-DAX软件103需要发现LL-DAX eSSD 101并建立与LL-DAX eSSD 101的通信信道。LL-DAX eSSD 101的网络地址可以以任何合适的方法被提供给LL-DAX软件103,诸如例如由包含LL-DAX eSSD 101的网络地址的存储管理员生成的文本文件。发现服务可以由存储管理员进行管理。这类发现方法通常用于现有的存储基础设施。
一旦LL-DAX软件103已经发现并建立了与LL-DAX eSSD 101的通信信道,LL-DAX软件103请求RDMA传输层104建立到LL-DAX eSSD 101的所需数目的新队列对(QP)120。一旦建立了一个或多个QP 120,LL-DAX软件103使用RDMA读请求发布LL-DAX识别命令。LL-DAXeSSD 101通过传送关于LL-DAX存储109的信息(例如,识别LL-DAX存储109的参数,诸如LL-DAX存储109的各种能力、特征和特性)来响应LL-DAX识别命令。因此,在LL-DAX识别命令之后,LL-DAX驱动器理解了在数据存储的正常操作期间使用的底层LL-DAX存储109的各种能力、特征和特性。
LL-DAX软件103向应用提供用于访问LL-DAX存储109的接口。LL-DAX是内核模块并且它使用输入/输出控制(IOCTL)系统调用来提供读/写接口。LL-DAX软件103不以加载存储库语义操作。LL-DAX驱动程序可以使用与LL-DAX驱动器相关联的设备句柄来访问应用程序。应用程序可以使用该句柄和LL-DAX存储地址发出读操作和写操作。这些应用程序请求被LL-DAX软件103转换成适当的RDMA层请求。LL-DAX软件103发出RDMA请求并跟踪RDMA请求的完成。当请求完成时,返回应用程序调用。当分配在LL-DAX存储109中的数据结构被删除或解除分配时,LL-DAX软件103将这些事件转换成LL-DAX删除命令,并将这些命令发送到eSSD 101。利用LL-DAX删除命令使eSSD减少与eSSD中的后台操作相关的垃圾收集。
另外,类似于文件系统,LL-DAX软件103可以实现一些基本的存储空间管理功能。例如,在一个或多个实施例中,LL-DAX软件103可以实现存储空间分配和解除分配功能。在一个或多个实施例中,LL-DAX软件103可以使用LL-DAX存储109执行应用程序的基本访问控制。当应用程序需要一定量的存储时,应用程序请求分配所期望的存储量。LL-DAX软件103可以维护用于LL-DAX存储109的分配表。LL-DAX软件103从可用空间中分配所请求的存储空间并且将该空间的存储句柄返回给请求者。存储句柄然后被应用程序用于后续的数据读/写访问。另外,在一个或多个实施例中,为了提供更大的灵活性、数据可访问性和空间管理,LL-DAX块存储软件103可以包括文件信息转换功能。因此,在一个或多个实施例中,LL-DAX应用程序可以与另一应用程序(例如,非LL-DAX应用程序)共享其LL-DAX数据。
虽然已经参考示例实施例描述了本发明,但是本领域技术人员将认识到,可以对所描述的实施例执行各种改变和修改,所有这些都不脱离本公开的精神和范围。此外,各种技术领域的技术人员将认识到,本文描述的本公开将提出其它任务的解决方案以及其它应用程序的调适。申请人旨在通过本文的权利要求来覆盖本公开的所有这些用途,以及为了公开的目的而可以对本文所选的本公开的示例性实施例进行的那些改变和修改,所有这些都不偏离本公开的精神和范围。因此,本公开的示例实施例在所有方面都应被认为是说明性的而非限制性的,本公开的精神和范围由所附权利要求及其等效物指示。
Claims (21)
1.一种对通过以太网连接的至少一个光纤高速非易失性存储器NVMe-oF固态驱动器SSD设备中的非易失性闪存进行低延迟直接数据访问的方法,所述方法包括:
从主机的低延迟直接访问LL-DAX块存储软件层向所述闪存传输远程直接存储器访问RDMA写请求,所述RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码,其中,所述LL-DAX块存储软件层被配置为绕过所述主机的文件系统层、操作系统层、块存储层和NVMe-oF层,并且获得对存储在所述闪存中的数据的低延迟直接访问;
在所述主机处接收指示所述数据已被保存到所述闪存的RDMA级确认;
从所述LL-DAX块存储软件层向所述闪存传输RDMA读请求,所述RDMA读请求包括存储地址、数据传送的长度和操作码;以及
在所述主机处从所述闪存接收对应于所述RDMA读请求的RDMA读响应数据分组。
2.根据权利要求1所述的方法,其中在RDMA首部字段中携带所述RDMA写请求和所述RDMA读请求的所述存储地址、所述数据传送的长度以及所述操作码。
3.根据权利要求1所述的方法,还包括使用光纤高速非易失性存储器NVMe-oF协议将RDMA写请求和RDMA读请求从所述主机传输到所述闪存。
4.根据权利要求1所述的方法,其中传输所述RDMA写请求和传输所述RDMA读请求包括使用多个RDMA队列对QP进行传输。
5.根据权利要求4所述的方法,还包括当两个或更多个RDMA QP具有主机命令时,使用LL-DAX主机接口HIF逻辑执行仲裁,所述仲裁选择所述主机命令中的一个用于执行。
6.根据权利要求4所述的方法,其中所述多个RDMA QP中的第一RDMA QP专用于第一命令,并且所述多个RDMA QP中的第二RDMA QP专用于与所述第一命令不同的第二命令。
7.根据权利要求6所述的方法,其中所述第一命令是写命令,并且所述第二命令是读命令。
8.根据权利要求1所述的方法,还包括从所述主机处的所述LL-DAX块存储软件层向所述闪存传输识别命令,并且其中所述闪存响应于所述识别命令而将关于所述闪存的信息传输到所述主机。
9.根据权利要求8所述的方法,其中所述信息包括所述闪存的所支持的特征、能力和特性。
10.根据权利要求8所述的方法,其中所述识别命令与所述RDMA读请求一起传输。
11.根据权利要求1所述的方法,还包括从所述主机处的所述LL-DAX块存储软件层向所述闪存传输删除命令,所述删除命令包括块地址范围的起始块地址和结束块地址。
12.根据权利要求11所述的方法,其中所述删除命令与所述RDMA写请求一起传输。
13.根据权利要求1所述的方法,其中所述RDMA读请求和所述RDMA写请求使用从由RoCEv1、RoCE v2和iWARP组成的RDMA传输协议组中选择的传输协议进行传输。
14.根据权利要求4所述的方法,其中所述LL-DAX块存储软件层包括超时值,并且所述RDMA QP包括被配置成防止在传输所述RDMA写请求期间超时的接收缓冲区。
15.根据权利要求1所述的方法,其中所述闪存的LL-DAX存储容量与NVMe-oF命名空间共享。
16.一种用于对非易失性闪存进行低延迟直接数据访问的系统,所述系统包括:
通过以太网连接的至少一个高速非易失性存储器NVMe固态驱动器SSD设备,所述至少一个NVMe SSD设备包括所述非易失性闪存;以及
包括处理器和低延迟直接访问LL-DAX块存储软件层的主机设备,其中,所述LL-DAX块存储软件层被配置为绕过所述主机的文件系统层、操作系统层、块存储层和光纤高速非易失性存储器NVMe-oF层,并且获得对存储在所述非易失性闪存中的数据的低延迟直接访问,所述LL-DAX块存储软件层中存储有指令,所述指令在由所述处理器执行时使所述处理器:
向所述非易失性闪存传输远程直接存储器访问RDMA写请求,所述RDMA写请求包括数据、存储地址、数据传送操作的长度和操作码;
接收指示所述数据已被保存到所述非易失性闪存的确认;
向所述非易失性闪存传输RDMA读请求,所述RDMA读请求包括存储地址、数据传送的长度和操作码;以及
从所述非易失性闪存接收对应于所述RDMA读请求的数据分组。
17.根据权利要求16所述的系统,其中所述主机设备还包括如下指令,所述指令在由所述处理器执行时,使所述处理器使用光纤高速非易失性存储器NVMe-oF协议将RDMA写请求或RDMA读请求传输到所述非易失性闪存。
18.根据权利要求16所述的系统,其中所述NVMe SSD设备包括被配置成在两个或更多个RDMA队列对QP中的主机命令之间进行仲裁的LL-DAX主机接口HIF逻辑。
19.根据权利要求18所述的系统,其中所述两个或更多个RDMA RDMA QP中的第一RDMAQP专用于第一命令,并且所述两个或更多RDMA RDMA QP中的第二RDMA QP专用于与所述第一命令不同的第二命令。
20.根据权利要求16所述的系统,其中所述LL-DAX块存储软件层包括超时值,并且其中所述至少一个NVMe SSD设备包括被配置成防止在所述RDMA写请求的传输期间超时的接收缓冲区。
21.根据权利要求16所述的系统,其中存储在所述LL-DAX块存储软件层中的所述指令在由所述处理器执行时,使所述处理器向所述非易失性闪存传输识别命令或者向所述非易失性闪存传输删除命令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762489991P | 2017-04-25 | 2017-04-25 | |
US62/489,991 | 2017-04-25 | ||
US15/655,738 | 2017-07-20 | ||
US15/655,738 US10733137B2 (en) | 2017-04-25 | 2017-07-20 | Low latency direct access block storage in NVME-of ethernet SSD |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108733601A CN108733601A (zh) | 2018-11-02 |
CN108733601B true CN108733601B (zh) | 2023-08-04 |
Family
ID=63854447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810285587.3A Active CN108733601B (zh) | 2017-04-25 | 2018-04-02 | NVMe-oF以太网SSD中的低延迟直接访问块存储 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10733137B2 (zh) |
JP (1) | JP7001533B2 (zh) |
KR (1) | KR102494568B1 (zh) |
CN (1) | CN108733601B (zh) |
TW (1) | TWI732110B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11983138B2 (en) * | 2015-07-26 | 2024-05-14 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US11461258B2 (en) | 2016-09-14 | 2022-10-04 | Samsung Electronics Co., Ltd. | Self-configuring baseboard management controller (BMC) |
US10346041B2 (en) | 2016-09-14 | 2019-07-09 | Samsung Electronics Co., Ltd. | Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host |
US10210123B2 (en) | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US10620855B2 (en) * | 2016-09-06 | 2020-04-14 | Samsung Electronics Co., Ltd. | System and method for authenticating critical operations on solid-state drives |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
US10782994B2 (en) * | 2017-12-19 | 2020-09-22 | Dell Products L.P. | Systems and methods for adaptive access of memory namespaces |
US11115490B2 (en) * | 2018-07-31 | 2021-09-07 | EMC IP Holding Company LLC | Host based read cache for san supporting NVMEF with E2E validation |
US11481342B2 (en) | 2019-06-25 | 2022-10-25 | Seagate Technology Llc | Data storage system data access arbitration |
US11709774B2 (en) * | 2019-08-07 | 2023-07-25 | Intel Corporation | Data consistency and durability over distributed persistent memory systems |
US20220404994A1 (en) * | 2019-11-27 | 2022-12-22 | Hewlett-Packard Development Company, L.P. | Direct access (dax) file access responsive to interception of file access function call |
US11256448B2 (en) | 2019-12-16 | 2022-02-22 | Samsung Electronics Co., Ltd. | Network storage gateway |
WO2021173137A1 (en) * | 2020-02-27 | 2021-09-02 | Google Llc | Secure element that leverages external resources |
CN113051206B (zh) * | 2020-05-04 | 2024-10-18 | 威盛电子股份有限公司 | 桥接电路与计算机系统 |
TWI774255B (zh) * | 2020-05-04 | 2022-08-11 | 威盛電子股份有限公司 | 橋接電路與電腦系統 |
US11720413B2 (en) * | 2020-06-08 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for virtualizing fabric-attached storage devices |
CN113778319A (zh) | 2020-06-09 | 2021-12-10 | 华为技术有限公司 | 网卡的数据处理方法以及网卡 |
CN113965627A (zh) * | 2020-07-02 | 2022-01-21 | 北京瀚海云星科技有限公司 | 一种发送数据的方法、低延时接收数据的方法及相关装置 |
US11334507B2 (en) * | 2020-08-21 | 2022-05-17 | Samsung Electronics Co., Ltd. | Method and system for communicating data packets in remote direct memory access networks |
CN114827234B (zh) * | 2022-04-29 | 2024-09-06 | 广东浪潮智慧计算技术有限公司 | 一种数据传输方法、系统、装置及存储介质 |
US11960419B2 (en) | 2022-07-19 | 2024-04-16 | Samsung Electronics Co., Ltd. | Systems and methods for data prefetching for low latency data read from a remote server |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104283938A (zh) * | 2013-07-08 | 2015-01-14 | 英特尔公司 | 用于在存储服务器之间复制数据的技术 |
CN104683430A (zh) * | 2013-07-08 | 2015-06-03 | 英特尔公司 | 用于从远程可访问存储设备进行初始化的技术 |
CN104781801A (zh) * | 2012-12-21 | 2015-07-15 | 英特尔公司 | 使固态驱动器配置成采用存储模式或存储器模式操作的技术 |
WO2017040706A1 (en) * | 2015-09-02 | 2017-03-09 | Cnex Labs, Inc. | Nvm express controller for remote access of memory and i/o over ethernet-type networks |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051212B2 (en) * | 2001-04-11 | 2011-11-01 | Mellanox Technologies Ltd. | Network interface adapter with shared data send resources |
US7860941B1 (en) * | 2001-07-17 | 2010-12-28 | Pmc-Sierra Us, Inc. | InfiniBand layer 4 router and methods for implementing same in an InfiniBand based external storage device |
US20050091334A1 (en) * | 2003-09-29 | 2005-04-28 | Weiyi Chen | System and method for high performance message passing |
JP4275504B2 (ja) | 2003-10-14 | 2009-06-10 | 株式会社日立製作所 | データ転送方法 |
US7826470B1 (en) * | 2004-10-19 | 2010-11-02 | Broadcom Corp. | Network interface device with flow-oriented bus interface |
US7580406B2 (en) * | 2004-12-31 | 2009-08-25 | Intel Corporation | Remote direct memory access segment generation by a network controller |
US20130086311A1 (en) | 2007-12-10 | 2013-04-04 | Ming Huang | METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS |
US8046559B2 (en) * | 2008-03-27 | 2011-10-25 | Intel Corporation | Memory rank burst scheduling |
US9130864B2 (en) * | 2011-06-27 | 2015-09-08 | Citrix Systems, Inc. | Prioritizing classes of network traffic to provide a predetermined quality of service |
WO2013109640A1 (en) | 2012-01-17 | 2013-07-25 | Intel Corporation | Techniques for command validation for access to a storage device by a remote client |
US8988987B2 (en) * | 2012-10-25 | 2015-03-24 | International Business Machines Corporation | Technology for network communication by a computer system using at least two communication protocols |
US9256384B2 (en) * | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
US9715519B2 (en) * | 2013-03-15 | 2017-07-25 | Sandisk Technologies Llc | Managing updates to multiple sets of metadata pertaining to a memory |
US9967340B2 (en) * | 2013-04-11 | 2018-05-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Network-displaced direct storage |
US9483431B2 (en) * | 2013-04-17 | 2016-11-01 | Apeiron Data Systems | Method and apparatus for accessing multiple storage devices from multiple hosts without use of remote direct memory access (RDMA) |
US10063638B2 (en) * | 2013-06-26 | 2018-08-28 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over ethernet-type networks |
US9430412B2 (en) | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US9411775B2 (en) * | 2013-07-24 | 2016-08-09 | Intel Corporation | iWARP send with immediate data operations |
US9361171B2 (en) * | 2014-03-07 | 2016-06-07 | ProfitBricks, Inc. | Systems and methods for storage of data in a virtual storage device |
KR20160138448A (ko) * | 2014-03-08 | 2016-12-05 | 다이아만티 인코포레이티드 | 통합 네트워크 및 스토리지를 위한 방법 및 시스템 |
WO2016196766A2 (en) | 2015-06-03 | 2016-12-08 | Diamanti, Inc. | Enabling use of non-volatile media - express (nvme) over a network |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
US9529773B2 (en) | 2014-05-02 | 2016-12-27 | Cavium, Inc. | Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller |
US9565269B2 (en) | 2014-11-04 | 2017-02-07 | Pavilion Data Systems, Inc. | Non-volatile memory express over ethernet |
US10140029B2 (en) * | 2014-12-10 | 2018-11-27 | Netapp, Inc. | Method and apparatus for adaptively managing data in a memory based file system |
US9851919B2 (en) * | 2014-12-31 | 2017-12-26 | Netapp, Inc. | Method for data placement in a memory based file system |
US10104017B2 (en) * | 2015-05-12 | 2018-10-16 | Jeda Networks, Inc. | Methods, systems and apparatus for the virtualization of high performance networks |
WO2016182756A1 (en) | 2015-05-14 | 2016-11-17 | Apeiron Data Systems | Accessing multiple storage devices from multiple hosts without remote direct memory access (rdma) |
CN106664290B (zh) * | 2015-05-26 | 2019-12-06 | 华为技术有限公司 | 一种光电混合网络的数据传输方法及装置 |
US9760314B2 (en) | 2015-05-29 | 2017-09-12 | Netapp, Inc. | Methods for sharing NVM SSD across a cluster group and devices thereof |
KR102430187B1 (ko) * | 2015-07-08 | 2022-08-05 | 삼성전자주식회사 | RDMA NVMe 디바이스의 구현 방법 |
CN106775434B (zh) * | 2015-11-19 | 2019-11-29 | 华为技术有限公司 | 一种NVMe网络化存储的实现方法、终端、服务器及系统 |
US10466922B2 (en) * | 2015-12-07 | 2019-11-05 | Netapp, Inc. | Accelerating concurrent access to a file in a memory-based file system |
US9813338B2 (en) * | 2015-12-10 | 2017-11-07 | Cisco Technology, Inc. | Co-existence of routable and non-routable RDMA solutions on the same network interface |
US9965441B2 (en) * | 2015-12-10 | 2018-05-08 | Cisco Technology, Inc. | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics |
EP3286631A4 (en) * | 2016-01-29 | 2018-05-30 | Hewlett-Packard Enterprise Development LP | Remote direct memory access |
US10877674B2 (en) * | 2016-01-29 | 2020-12-29 | Hewlett Packard Enterprise Development Lp | Determining layout templates identifying storage drives |
US10089134B2 (en) * | 2016-06-30 | 2018-10-02 | Western Digital Technologies, Inc. | Controlling access to namespaces of a storage device |
US10592113B2 (en) * | 2016-07-18 | 2020-03-17 | Storart Technology (Shenzhen) Co., Ltd. | Method for transferring command from host to device controller and system using the same |
US20180032249A1 (en) * | 2016-07-26 | 2018-02-01 | Microsoft Technology Licensing, Llc | Hardware to make remote storage access appear as local in a virtualized environment |
US9747039B1 (en) * | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10372374B2 (en) * | 2016-11-08 | 2019-08-06 | Excelero Storage Ltd. | System and method for providing input/output determinism for servers hosting remotely accessible storages |
EP3757810B1 (en) * | 2016-12-28 | 2023-04-05 | Huawei Technologies Co., Ltd. | Packet forwarding method, device, and system in nvme over fabric |
US10769081B2 (en) * | 2016-12-30 | 2020-09-08 | Intel Corporation | Computer program product, system, and method to allow a host and a storage device to communicate between different fabrics |
US10229065B2 (en) * | 2016-12-31 | 2019-03-12 | Intel Corporation | Unified hardware and software two-level memory |
US11543967B2 (en) * | 2017-02-23 | 2023-01-03 | Samsung Electronics Co., Ltd. | Method for controlling BW SLA in NVME-of ethernet SSD storage systems |
US10503427B2 (en) * | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
US10338838B2 (en) * | 2017-03-24 | 2019-07-02 | Samsung Electronics Co., Ltd. | Multi-mode NVMe over fabrics device for supporting CAN (controller area network) bus or SMBus interface |
US10282094B2 (en) * | 2017-03-31 | 2019-05-07 | Samsung Electronics Co., Ltd. | Method for aggregated NVME-over-fabrics ESSD |
US10459665B2 (en) * | 2017-04-03 | 2019-10-29 | Samsung Electronics Co., Ltd. | System and method of configuring NVMe-oF devices using a baseboard management controller (BMC) |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
US10958729B2 (en) * | 2017-05-18 | 2021-03-23 | Intel Corporation | Non-volatile memory express over fabric (NVMeOF) using volume management device |
KR20190033284A (ko) * | 2017-09-21 | 2019-03-29 | 삼성전자주식회사 | PCIe P2P 접속된 스토리지 장치들 사이의 데이터 전송 방법 및 시스템 |
US10459640B2 (en) * | 2017-09-29 | 2019-10-29 | Netapp, Inc. | High availability storage access using quality of service based path selection in a storage area network environment |
-
2017
- 2017-07-20 US US15/655,738 patent/US10733137B2/en active Active
- 2017-12-18 KR KR1020170174318A patent/KR102494568B1/ko active IP Right Grant
-
2018
- 2018-03-22 TW TW107109742A patent/TWI732110B/zh active
- 2018-04-02 CN CN201810285587.3A patent/CN108733601B/zh active Active
- 2018-04-25 JP JP2018084344A patent/JP7001533B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104781801A (zh) * | 2012-12-21 | 2015-07-15 | 英特尔公司 | 使固态驱动器配置成采用存储模式或存储器模式操作的技术 |
CN104283938A (zh) * | 2013-07-08 | 2015-01-14 | 英特尔公司 | 用于在存储服务器之间复制数据的技术 |
CN104683430A (zh) * | 2013-07-08 | 2015-06-03 | 英特尔公司 | 用于从远程可访问存储设备进行初始化的技术 |
WO2017040706A1 (en) * | 2015-09-02 | 2017-03-09 | Cnex Labs, Inc. | Nvm express controller for remote access of memory and i/o over ethernet-type networks |
Also Published As
Publication number | Publication date |
---|---|
TWI732110B (zh) | 2021-07-01 |
JP7001533B2 (ja) | 2022-01-19 |
US10733137B2 (en) | 2020-08-04 |
JP2018185814A (ja) | 2018-11-22 |
TW201839623A (zh) | 2018-11-01 |
KR102494568B1 (ko) | 2023-02-03 |
KR20180119464A (ko) | 2018-11-02 |
CN108733601A (zh) | 2018-11-02 |
US20180307650A1 (en) | 2018-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733601B (zh) | NVMe-oF以太网SSD中的低延迟直接访问块存储 | |
CN109582614B (zh) | 针对远程存储器访问的nvm express控制器 | |
US7496699B2 (en) | DMA descriptor queue read and cache write pointer arrangement | |
EP1573559B1 (en) | Method, system, and program for handling input/output commands | |
US7370174B2 (en) | Method, system, and program for addressing pages of memory by an I/O device | |
US8504795B2 (en) | Method, system, and program for utilizing a virtualized data structure table | |
US11586565B2 (en) | Non-volatile storage system and data storage access protocol for non-volatile storage devices | |
US8788726B2 (en) | Data transmission system, storage medium and data transmission program | |
EP1330719A1 (en) | Infiniband channel adapter for performing direct dma between pci bus and infiniband link | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
CN101150488A (zh) | 一种零拷贝网络报文接收方法 | |
US20060018330A1 (en) | Method, system, and program for managing memory requests by devices | |
US20110082950A1 (en) | Computer system and computer system input/output method | |
CN102843435A (zh) | 一种在集群系统中存储介质的访问、响应方法和系统 | |
CN1331070C (zh) | 数据通信的方法及设备 | |
WO2022233174A1 (zh) | 计算机设备及内存注册方法 | |
US6801963B2 (en) | Method, system, and program for configuring components on a bus for input/output operations | |
EP1546855A2 (en) | Method, system, and program for returning data to read requests received over a bus | |
US20220326855A1 (en) | Peripheral component interconnect express interface device and operating method thereof | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
WO2024152588A1 (zh) | 内存访问的页错误处理方法及装置 | |
US7532625B2 (en) | Block transfer for WLAN device control | |
CN116225315A (zh) | 基于pci-e光纤卡的宽带数据高速录取系统、存储架构和方法 |
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 |