CN110825670A - 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换 - Google Patents

基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换 Download PDF

Info

Publication number
CN110825670A
CN110825670A CN201910731114.6A CN201910731114A CN110825670A CN 110825670 A CN110825670 A CN 110825670A CN 201910731114 A CN201910731114 A CN 201910731114A CN 110825670 A CN110825670 A CN 110825670A
Authority
CN
China
Prior art keywords
ssds
storage access
host
storage
completion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910731114.6A
Other languages
English (en)
Inventor
S·富里
S·苏里
郭丽萍
刘智龙
李英东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Marvell World Trade Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Marvell World Trade Ltd filed Critical Marvell World Trade Ltd
Publication of CN110825670A publication Critical patent/CN110825670A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0044Versatile modular eurobus [VME]

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)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开的实施例涉及用于提供主机存储装置服务的基于NVMe协议的一个或者多个主机与固态驱动器(SSD)之间的受管理交换。高速非易失性存储器(NVMe)交换机位于主机和存储装置之间。经由高速***计算机接口(PCIe)从主机接收第一存储装置访问命令,以访问存储装置。第一存储装置访问命令符合NVMe,并且存储装置包括两个或者更多个固态驱动器(SSD)。基于第一存储装置访问命令,相应的第二存储装置访问命令被发送至两个或者更多个SSD。基于相应的第二存储装置访问命令,从两个或者更多个SSD中的每个SSD接收相应的完成。基于从两个或者更多个SSD中的每个SSD接收到的完成,经由PCIe接口向主机发送完成。

Description

基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换
相关申请的交叉引用
本公开要求于2018年8月8日所提交的、名称为“用于基于 NVMe协议的受管理交换的方法和装置”的62/716,275号美国临时专利申请的优先权,还要求于2019年8月5日所提交的、名称为“用于提供主机存储装置服务的基于NVMe协议的一个或者多个主机与固态驱动器(SSD)之间的受管理交换”的16/532,081号美国专利申请的优先权,该等申请通过引用而被整体并入本文。
技术领域
本公开涉及向主机提供存储装置服务,即基于高速非易失性存储器(NVMe)协议管理一个或多个主机与固态设备(SSD)之间的交换,以提供主机存储装置服务。主机存储装置服务包括虚拟化服务、性能和容错服务、双主机服务以及其他服务。
背景技术
PCIe(高速***组件互连),其官方缩写为PCIe或者高速PCI,是一种高速串行计算机扩展总线标准。PCIe作为主机和***组件(诸如附接的固态驱动器(SSD))之间的母板级互连而操作。主机用作向用户或者网络上的其他节点提供信息资源、服务和/或应用的服务器。主机也使用由高速非易失性存储器(也被称为NVMe或者高速 NVM)定义的用于SSD访问的命令集来管理SSD,以获取运行所需的存储装置服务。由主机对SSD的管理进一步增加了硬件、软件和驻留在主机上的固件的复杂度。
发明内容
本公开涉及NVMe交换机,NVMe交换机被布置以在减少主机直接地管理固态设备(SSD)形式的存储装置的需求的同时向主机提供各种存储装置服务。NVMe交换机协调主机与存储装置***中的 SSD之间的存储装置访问命令和完成的交换,以提供这些服务。
根据描述的***和技术的方面,一种方法包括:经由高速***计算机接口(PCIe)从主机接收第一存储装置访问命令,以访问存储装置,其中第一存储装置访问命令符合高速非易失性存储器 (NVMe),并且存储装置包括两个或者更多个固态驱动器(SSD);基于第一存储装置访问命令,向两个或者更多个SSD发送相应的第二存储装置访问命令;基于相应的第二存储装置访问命令,从两个或者更多个SSD中的每个SSD接收相应的完成;以及基于从两个或者更多个SSD中的每个SSD接收的完成,经由PCIe接口向主机发送完成。
根据描述的***和技术的另一方面,一种存储指令的非瞬态计算机可读介质,当指令由一个或多个处理器执行时,使得一个或多个处理器至少:经由高速***计算机接口(PCIe)接口从主机接收第一存储装置访问命令,以访问存储装置,其中第一存储装置访问命令符合高速非易失性存储器(NVMe),并且存储装置包括两个或者更多个固态驱动器(SSD);基于第一存储装置访问命令,向两个或者更多个SSD发送相应的第二存储装置访问命令;基于相应的第二存储装置访问命令,从两个或者更多个SSD中的每个SSD接收相应的完成;以及基于从两个或者更多个SSD中的每个接收的完成,经由所述PCIe向主机发送完成。
根据描述的***和技术的又一方面,一种高速非易失性存储器 (NVMe)交换机包括:命令队列;完成队列;在NVMe交换机中存储的指令,当指令由NVMe交换机的一个或多个处理器执行时,使得NVMe交换机至少:经由高速***计算机接口(PCIe)接口从主机接收第一存储装置访问命令,以访问存储装置,其中第一存储装置访问命令符合高速非易失性存储器(NVMe),并且存储装置包括两个或者更多个固态驱动器(SSD);基于第一存储装置访问命令,经由命令队列,向两个或者更多个SSD发送相应的存储装置访问命令;基于相应的第二存储装置访问指令,经由完成队列,从两个或者更多个SSD中的每个SSD接收相应的完成;以及基于从两个或者更多个SSD中的每个SSD接收的完成,经由PCIe接口向主机发送完成。
在这方面,NVMe交换机允许减小在主机上获取各种存储装置服务的开销。
附图说明
图1图示存储装置***的示例配置,该存储装置***允许在减少主机直接地管理固态驱动器(SSD)形式的存储装置的需求的同时向主机提供各种存储装置服务。
图2是使得高速非易失性存储器(NVMe)交换机能够将存储装置抽象化为VD的功能的示例流程图。
图3是使得NVMe交换机能够将存储装置抽象化以向主机提供一定级别的存储装置性能和/或存储装置容错的功能的示例流程图。
图4是当存储装置***具有两个或者更多个主机时用于处理存储装置访问命令的功能的示例流程图。
图5是与在NVMe交换机执行NVMe预留访问相关联的功能的示例流程图。
图6是NVMe交换机的示例框图。
这些附图仅用于图示示例实施例的目的,应当理解,这些实施例不限于附图中示出的装置和手段。
具体实施方式
本公开提供涉及通过基于高速非易失性存储器(NVMe)标准管理一个或多个主机与固态设备(SSD)之间的交换以向主机提供存储装置服务的示例和细节。主机存储装置服务包括虚拟化服务、一定级别的存储装置性能和/或存储装置容错、双主机服务以及其他服务。本文描述的原则可以被应用于控制其他类型的存储装置的性能,诸如硬盘驱动器(HDD)或者混合SSD/HDD驱动器。
图1图示了存储装置***100的示例配置,存储装置***100 在减少主机直接地管理固态设备(SSD)形式的存储装置的需求的同时向主机提供各种存储装置服务。存储装置***可以包括一个或多个主机102、包括一个或多个固态驱动器(SSD)104的存储装置、以及高速非易失性存储器(NVMe)交换机106。一个或多个主机102 可以用作向用户或者网络上的其他节点提供信息资源、服务和/或应用的服务器。在一些示例中,主机可以包括虚拟机(VM)。VM可以使用高速***组件互连(PCIe)单根输入/输出虚拟化(SR-IOV) 在主机上实现。SSD 104是基于集成电路(IC)的存储装置机构,其可以永久地存储数据以使得主机102能够提供所需的功能。与硬盘驱动器(HDD)相比,SSD 104能够提供更高的带宽和更低的延迟。 NVMe交换机106可以被放置在主机102和SSD 104之间。NVMe 交换机106处理NVMe命令以控制一个或多个主机102与SSD 104 之间基于PCIe的点对点交换机连接,以使得每个SSD104具有其自身与一个或多个主机102的专用连接。
NVMe交换机106包括PCIe集群110、管理处理器112、命令处理器114、数据处理器116和PCIe集群108。在一些示例中,PCIe 集群110可以是促进NVMe交换机106与两个或者更多个主机 102-104之间通信的PCIe端点集群,而PCIe集群108可以是促进 NVMe交换机106与一个或者多个SSD 104之间通信的PCIe根联合体(root complex)集群。命令处理器114处理来自主机102的命令。命令可以是从SSD 104获取数据并且向主机提供、或者将来自主机的数据存储在SSD 104中的NVMe命令。命令处理器114可以向命令添加标记。该标记可以指示该命令是从特定的主机接收的。然后,命令被发送至SSD 104。SSD 104可以基于命令向NVMe交换机发送 PCIe存储器请求,诸如PCIe存储器读取请求。PCIe存储器请求可以包括标记,该标记使得数据处理器116能够向指定的主机发送 PCIe存储器请求以执行与主机相关联的命令。管理处理器112执行针对NVMe交换机106的管理功能。例如,如果NVMe或者PCIe事务不符合命令处理器114所可以执行的(例如,因为错误或者PCIe 存储器请求的复杂度/大小),该功能可能被卸载至管理处理器112。作为另一示例,管理处理器112可以管理SSD104的分区、预留访问和与SSD 104相关联的命名空间。
在示例中,一个或者多个主机102可以按照NVMe来各自实现队列对以促进SSD访问。队列对由提交队列和完成队列构成。如所示出的,一个主机可以具有命令队列118和提交队列120,而另一主机可以具有命令队列122和提交队列124。主机102也可以具有附加的队列,诸如管理队列。主机可以生成获取存储在SSD中的数据、或者将数据存储到SSD的NVMe命令,NVMe命令被放置在提交队列中。当命令由SSD执行时,指示NVMe命令的执行的完成可以被存储在完成队列中,然后,该完成队列由命令处理器114处理。进一步,NVMe交换机106可以具有设备队列管理器150。设备队列管理器150提供队列对以促进NVMe交换机106与SSD104之间NVMe 命令的通信。针对SSD 104的每个SSD,设备队列管理器118具有对应的提交队列和完成队列。如所示出的,第一SSD(SSD1)可以具有提交队列126和完成队列128,第二SSD(SSD2)可以具有提交队列130和完成队列132,第三SSD(SSD3)可以具有提交队列 134和完成队列136,以及第四SSD(SSD4)可以具有提交队列138 和完成队列140。在这方面,命令处理器114可以终止来自主机102 的与对SSD 104的访问相关联的NVMe命令,并且可以经由设备队列管理器150中的队列向SSD 104分发附加的命令,以促进向主机提供各种存储装置服务,诸如虚拟化服务、一定级别的存储装置性能和/或存储装置容错、以及到两个或者更多个主机的访问,如下文将进一步详细说明的。主机102不需要管理存储装置***100以取得这些服务。
示例虚拟化服务
在一些示例中,NVMe交换机可以促进将SSD虚拟化为虚拟盘 (VD)。VD是软件组件,其仿真诸如SSD的真实的物理驱动器,但是看上去像并且在表现上地像真实的物理设备。NVMe交换机也可以支持与物理主机相关联的虚拟命名空间和用于VM的私有虚拟命名空间的创建。
图2是使得NVMe交换机能够将诸如SSD的存储装置抽象化为 VD的功能的示例流程图200。NVMe交换机可以在减少对主机需要管理存储装置以取得这些服务的需求的同时向主机提供虚拟化服务。NVMe交换机可以向主机呈现驱动器。主机可以访问作为物理驱动器的设备,但是NVMe交换机可以通过提供聚合服务以基于 SSD中的两个或者更多个SSD而作为VD服务该访问。NVMe交换机可以以软件、硬件或者硬件和软件的组合来实现该抽象化。在设立中,这些功能可以由NVMe交换机的命令处理器来执行。
在202,可以从主机接收第一存储装置访问命令,诸如NVMe 存储命令或者NVMe获取命令。第一存储装置访问命令可以是要访问驱动器。NVMe交换器可以通过终止来自主机的存储装置访问命令并且不向SSD发送该存储装置访问命令而将多个SSD虚拟化为 VD。
相反,在204,NVMe交换机可以向与VD相关联的两个或者更多个SSD发送相应的第二存储装置访问命令。例如,如果VD与四个物理SSD相关联,并且来自主机的存储装置访问命令需要访问这四个物理SSD,命令处理器可以向与VD相关联的四个SSD中的每个SSD发送第二存储装置访问命令。存储装置访问命令被***到与这四个SSD相关联的提交队列中,以向SSD中的每个SSD发送第二存储装置访问命令。
在206,NVMe交换机可以从两个或者更多个SSD中的每个SSD 接收相应的完成,该完成指示被发送至SSD的相应的第二存储装置访问命令的完成。例如,NVMe交换机可以从四个SSD中的每个SSD 接收完成。在示例中,完成被***到设备队列管理器的与生成该完成的SSD相关联的相应的完成队列中。
主机可以预期从存储装置***接收针对其存储装置访问命令的单个完成。从主机的视角,到VD的访问与到单个物理驱动器的访问是相同的,即便VD可以与多个SSD相关联。
在208,基于从SSD接收的完成,NVMe交换机可以经由命令处理器向主机发送完成,在一些示例中,从SSD接收的完成是被发送给主机的单个完成。通过发送单个完成以指示第一存储装置访问命令的完成,该驱动器被虚拟化为对于预期将接收到单个完成的主机的单个驱动器。
管理处理器也可以允许将容量与VD或者最大可用存储装置相关联。NVMe交换机可以执行由主机请求的存储装置操作,但是如果存储装置操作超出VD的容量,管理处理器可以向主机指示错误。管理处理器也可以促进产生命名空间。命名空间管理是定义被分配以命名空间的存储装置的逻辑块的过程。单个命名空间通常可以与单个SSD或者VD相关联。管理处理器可以允许将单个命名空间划分为与单个SSD或者VD相关联的多个虚拟命名空间。例如,管理处理器可以具有偏移表,偏移表将虚拟命名空间与单个命名空间中的不同存储器偏移相关联。为了说明,命名空间0可以被再划分成虚拟命名空间1到10,其中每个虚拟命名空间与命名空间0中的相应的存储器偏移相关联。在这方面,每个虚拟命名空间与命名空间中的唯一的多个逻辑块相关联。NVMe交换机可以向具有命名空间 ID(NSID)的主机通知这些虚拟命名空间,并且主机可以使用NVMe 命名命令预留虚拟命名空间。然后,主机可以使用NSID来获得到命名空间的访问。
在一些示例中,管理处理器可以限制虚拟命名空间的访问。该虚拟命名空间可以是私有的或者由只有一个主机(如果主机包括 VM)可访问。该虚拟命名空间被称为私有虚拟命名空间。对私有虚拟命名空间的访问限于一个VM,因为命名空间可以位于SSD上,该SSD也由其他VM或者其他主机访问。访问被限限制以防止一个 VM的私有虚拟命名空间被另一VM有意或者无意地写入或者读取。管理处理器可以通过PCIe虚拟功能(VF)向VM提供私有虚拟命名空间。PCIe VF可以定义与VM的私有虚拟命名空间相关联的逻辑块,其之后经由存储装置访问命令被访问。进一步,在一些示例中,与对虚拟私有命名空间的访问相关联的服务质量和带宽测量可以由 NVMe交换机通过节流(throttle)过程来控制,因为与虚拟私有命名空间相关联的SSD可以由其它VM或者主机访问。用于VM的服务质量和带宽测量的控制允许确保用于其他VM的最低服务质量和带宽,并且减小运行VM的真实的物理主机上的开销。
示例性能和/或容错服务
在一些示例中,NVMe交换机可以促进控制存储装置性能,诸如对存储装置的读/写访问的带宽。NVMe交换机也可以促进向主机提供容错服务。
图3是使得NVMe交换机能够在减少对主机需要管理存储装置设备以取得这些服务的需求的同时抽象化存储装置以向主机提供一定级别的存储装置性能和/或容错存储装置的功能的示例流程图 300。存储装置性能和/或容错可以采用许多形式,包括SSD运行为闪存簇(JBOF)或者独立磁盘冗余阵列(RAID)。NVMe交换机可以以软件、硬件或者硬件和软件的组合来实现该抽象化。在实施例中,这些功能可以由NVMe交换机的命令处理器来执行。
在302,从主机接收第一存储装置访问命令(诸如NVMe存储或者获取命令)以访问存储装置。主机可以预期存储装置提供一定性能,诸如RAID 0,或者与RAID 1至RAID 10相关联的读取性能和/或容错的均衡。通过终止来自主机的存储装置访问命令并且不将其向SSD发送,NVMe交换机可以在主机不需要管理SSD的情况下提供这些服务,以取得读性能和/或容错。
相反,在304,NVMe交换机可以向两个或者更多个SSD发送相应的第二存储装置访问命令,以实现与从主机接收的第一存储装置访问命令相关联的存储装置操作的一定级别的性能和/或容错。在 RAID 0或者JBOF中,数据可以从多个SSD被并行地被写入或者读取,增加存储装置操作的带宽。NVMe交换机将第二存储装置访问命令***到两个或者更多个SSD的相应的提交队列中,以向SSD中的每个SSD发送第二存储装置访问命令,以从两个或者更多个SSD 中并行地读取数据和/或向两个或者更多个SSD中并行地写入数据。在RAID 1到RAID 10中,与存储装置操作相关联的数据可以通过对多个SSD上的数据进行镜像或者条带化来复制以改善容错。在示例中,NVMe交换机将第二存储装置访问命令***到两个或者更多个 SSD的相应的提交队列中,以向SSD中的每个SSD发送第二存储装置访问命令,以从两个或者更多个SSD中并行地读取数据和/或向与镜像或条带化相关联的两个或者更多个SSD中并行地写入数据。当一个SSD失败时,第二存储装置访问命令可以通过在另一驱动器中读取数据而被用于读取数据,并且被用于当故障的驱动器被替换时在新的驱动器的重建中读取或者写入数据。
在306,NVMe交换机可以从两个或者更多个SSD中的每个SSD 接收相应的完成,该完成指示被发送至SSD的相应的第二存储装置访问命令的完成。例如,NVMe交换机可以从四个SSD中的每个SSD 接收完成。在示例中,完成被***到设备队列管理器中与生成完成的SSD相关联的相应的完成队列中。
从主机的视角,以预期的性能和/或容错对存储装置设备的访问被抽象化至主机。在这方面,即便预期的存储装置性能和/或容错涉及对多个SSD的访问主机可以预期从存储装置***接受针对其存储装置访问请求的单个完成。
在308,基于从SSD接收的完成,NVMe可以向主机发送完成。被发送至主机的完成可以是单个完成,以指示被发送至SSD的命令的完成。通过发送单个完成以指示第一存储装置访问命令的完成,由主机访问的驱动器具有预期的性能和/或容错,而不需要主机管理 SSD以取得这些服务。
示例双主机服务
PCIe连接可以包括2条、4条、8条或者16条数据传输通道 (lane)。每条传输通道可以包括两对线,一对用于发送并且一对用于接收。在一些示例中,两个或者更多个主机可以被耦接至PCIe连接,并且在之后被连接到NVMe交换机。例如,PCIe连接可以被分隔成四条通道,并且两条通道可以被分配给每个主机。进一步,被耦接至PCIe交换机的SSD可以具有在两个或者更多个主机之间共享的单端口。在这方面,当存储装置***具有两个或者更多个主机时, NVMe交换机可以负责将来自单端口的数据路由至适当的主机,以执行存储装置访问命令。在其他示例中,两个或者更多个主机可以包括VM。NVMe交换机与可以负责将数据从单端口路由至VM,以执行存储装置访问命令。
图4是当存储装置***具有两个或者更多个主机时用于处理存储装置访问命令的功能的示例流程图400。在一些示例中,NVMe 交换机也可以被耦接至单端口SSD,而非双端口SSD。不同于允许两个主机访问的双端口SSD,单端口SSD可以只允许一个主机访问。该功能促进将存储装置访问命令与发送存储装置访问命令的主机相关联。NVMe交换机可以以软件、硬件或者硬件和软件的组合来实现该处理。在示例中,这些功能可以由NVMe交换机的数据处理器和命令处理器中的一个或多个来执行。进一步,当存储装置***具有两个或者更多个主机时,在流程图400中的功能可以被用于实现如上所述的虚拟化服务、读/写性能的控制以及容错服务。
在402,从主机接收第一存储装置访问命令。主机可以是被耦接至NVMe交换机的两个或者更多个主机中的一个主机,NVMe交换机接收第一存储装置访问命令。第一存储装置访问命令可以从与主机相关联的PCIe地址接收,其中每个主机具有其自身的PCIe地址。两个或者更多个主机可以是连接至PCI端口的真实的物理主机。在 404,基于与将存储装置访问命令路由至NVMe交换机相关联的元数据,NVMe交换机可以标识发送第一存储装置访问命令的主机。 NVMe交换机可以终止来自主机的第一存储装置访问命令。相反,为了执行第一存储装置访问命令,在406,NVMe交换机可以向SSD 发送具有标记的第二存储装置访问命令,该标记指示向NVMe交换机发送第一存储装置访问命令的主机。在一些示例中,该标记可以被***NVMe物理区域页面地址的高位字节中。在408,NVMe交换机可以基于第二存储装置访问命令接收来自SSD的PCIe存储器请求,该第二存储装置访问命令具有在与第一存储装置访问命令相关联的标记中所标识的主机的指示。例如,PCIe存储器请求可以是从主机中与最初从主机接收的读或者写命令相关联的数据缓冲器中获取的数据,并且标记可以被***PCIe存储器请求中的NVMe物理区域页面地址的高位字节中。通过包含标记,SSD能够告知命令处理器PCIe存储器请求将被路由至由该标记所标识的主机。SSD可能能够以与它们被发送至SSD的顺序不同的顺序来处理存储装置访问命令,并且NVMe交换机仍然将能够标识与存储装置访问命令相关联的PCIe存储器请求被发送的主机。在410,基于主机的指示,NVMe 交换机可以将PCIe存储器请求路由至主机。数据处理器可以执行该路由,并且在一些示例中,数据处理器可以从PCIe存储器请求中移除标记,并且随后将PCIe存储器请求路由至主机。
在示例中,NVMe交换机可以支持NVMe预留。管理处理器可以定义预留表,以协调由两个主机对共享的命名空间的访问。预留表可以指示主机是否具有适当的权限以在共享的命名空间中执行所请求的操作。如果主机没有适当的权限,所请求的操作被拒绝。
图5是与执行NVMe预留访问的NVMe交换机相关联的功能的示例流程图500。NVMe交换机可以以软件、硬件或者硬件和软件的组合来实现该抽象化。在示例中,这些功能可以由NVMe交换机的命令处理器、管理处理器和数据处理器中的一个或多个来执行。
在502,NVMe交换机可以接收来自主机的存储装置访问命令,以访问命名空间。主机可能想要读取命名空间的数据或者向命名空间写入数据。在一些示例中,命名空间可以是在两个或者更多个主机之间可共享的。进一步,每个主机可以具有对共享的命名空间的某些访问允许。例如,一个主机可能能够对命名空间读和写,而其他主机可能只能够读取命名空间的数据。权限可以由预留表定义,预留表指示与每个主机相关联的允许。NVMe交换机可以终止来自主机的存储装置访问命令。在504,NVMe交换机可以基于预留表确定主机是否具有对命名空间的访问。取决于由主机对命名空间的访问的类型(例如,写入访问、读取访问),以及由预留表指示的主机拥有的预留(例如,写入权限、读取权限),管理处理器可以确定存储装置访问命令是否将被完成或者拒绝。例如,如果主机正请求写入访问,并且它具有写入允许,则访问被授权。作为另一示例,如果主机正请求写入访问,并且它具有读取允许,则该访问被拒绝。在506,如果主机具有对命名空间的访问,NVMe交换机向SSD发送存储装置访问命令,并且向主机发送访问的完成。在一些示例中,当SSD向NVMe交换机发送指示存储装置访问命令(诸如读取或者写入)的完成的完成时,访问的完成可以被发送至主机。在508,如果主机不具有对命名空间的访问,NVMe交换机发送拒绝访问的错误。
示例装置
图6是用于在减少主机管理固态设备(SSD)的需求的同时向主机提供各种存储装置服务的NVMe交换机106的简化示例框图。 NVMe交换机106包括在NVMe交换机106上协调操作的交换机处理器602(可能包括多个处理器、多个核心、多个节点和/或实现多线程等)。NVMe交换机106包括存储器604。存储器604可以是***存储器(例如,高速缓存、随机访问存储装置(RAM)、静态RAM (SRAM)、动态RAM(DRAM)、零电容RAM、双晶体管RAM、嵌入式DRAM(eDRAM)、扩展的数据输出RAM(EDO RAM)、双数据速率RAM(DDR RAM)、电可擦除可编程只读存储装置 (EEPROM)、纳米RAM(NRAM)、电阻性RAM(RRAM)、硅 -氧-氮-氧-硅存储器(SONOS)、参数随机访问存储器(PRAM)等) 或者非瞬态机器可读媒体/介质的任何一个或多个其他可能的实现。
NVMe交换机106也包括总线606(例如,***组件互连(PCI)、工业标准架构(ISA)、高速PCI、新总线(NuBus)、高级可扩展总线AXI总线等)。接口608被耦合至总线606,其促进与SSD的非易失性存储器阵列和主机的通信。在这方面,接口608可以包括分别向主机和SSD提供通信的PCIe EP集群和PCIe RC集群。
在减少主机管理SSD的需求的同时,管理处理器610、数据处理器612和命令处理器614可以实现之前描述的功能的任何一个,诸如VD、RAID和双主机功能。这些功能可以以硬件和/或存储在非瞬态机器可读介质/媒体上的软件(例如,计算机代码、程序指令、程序代码、计算机指令)来实现。在一些情况中,处理器602和存储器604可以代替或者作为管理处理器610、数据处理器612和命令处理器614的附加来实现或者促进实现功能。NVMe交换机106可以进一步包括一个或多个命令和提交队列616,以促进向SSD发送 NVMe命令。进一步,实现可以包括更少的或者图6中未图示的附加的组件(例如,视频卡、音频卡、附加的网络接口、***设备等)。处理器602和存储器604被耦耦合至总线606。尽管图示为被耦接至总线606,存储器604可以被耦合至处理器602。
少量实现已详细描述如上,并且有可能进行各种修改。已公开的主题,包括在本说明书中描述的功能性操作,可以在电子电路、计算机硬件、固件、软件或者其组合中实现,诸如在本说明书中公开的结构部件及其结构性等同:包括潜在的可操作以使得一个或多个数据处理装置(诸如处理器)执行描述的操作的程序,诸如在非瞬态计算机可读介质中编码的程序,非瞬态计算机可读介质可以是存储器设备、存储装置设备、机器可读存储装置基板、或者其他物理的机器可读介质,或者它们的一个或者多个的组合。
程序(也称为计算机程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言来编写,包括编译或者解译语言,或者声明性或者过程是语言,并且它可以以任何形式来部署,包括作为独立程序或者作为独立模块、组件、子例程或者适用于计算环境中的其他单元。程序可以被存储在存有其他程序或者数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、在专属于有问题的程序的单个文件中、或者在多个协调文件中(例如,存储一个或多个模块、子程序或者代码的部分的文件)。程序可以被部署在一个计算机或者多个计算机上执行,该多个计算机位于一个站点或者跨多个站点分布,并且由通信网络互连。
虽然本说明书包含多个细节,这些不应被解读为对要求的范围的限制,而是作为可能对特定实现是具体的特征的说明。在分离的实现的环境下在本说明书中描述的某些特征也可以组合在单个实现中实现。相反地,在单个实现的环境中描述的各种特征也可以在多个实现中分离地实现或者在任何适当的子组合中实现。此外,尽管特征可以在如上描述中在某些组合中作用,并且甚至在一些情形中,可以如同最初要求的将要求的组合中的一个或多个特征从该组合中去除,并且要求的组合可以指向子组合或者子组合的变形。
类似地,虽然操作在附图中以特定顺序进行描绘,这不应被理解为需要该操作以示出的该特定顺序或者相继次序来执行,或者需要所有图示操作被执行以实现所需的结果。在某些情况中,多任务和并行处理可能是有利的。此外,在上述实现中的各种***组件的分离不应被理解为在所有实现中需要该分离。
在列表之前的用语“至少一个”的使用连同“和”不应作为排他性列表,并且不应被解读为使用来自每个类别的一个项目的类别列表,除非特别指明。引用“A、B和C中的至少一个”的语句可以被只有一个被列举的项目、多个被列举的项目、以及列表中的条目的一个或多个和未列举的其他项目所侵犯。其他实现落入以下权利要求的范围。

Claims (20)

1.一种方法,包括:
经由高速***计算机接口(PCIe)接口,从主机接收第一存储装置访问命令,以访问存储装置,其中所述第一存储装置访问命令符合高速非易失性存储器(NVMe),并且所述存储装置包括两个或者更多个固态驱动器(SSD);
基于所述第一存储装置访问命令,向所述两个或者更多个SSD发送相应的第二存储装置访问命令;
基于所述相应的第二存储装置访问命令,从所述两个或者更多个SSD中的每个SSD接收相应的完成;以及
基于从所述两个或者更多个SSD中的每个SSD接收的所述完成,经由所述PCIe接口向所述主机发送完成。
2.根据权利要求1所述的方法,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令包括:发送所述相应的第二存储装置访问命令,以并行地写入相同的数据或者从所述两个或者更多个SSD读取不同的数据。
3.根据权利要求1所述的方法,进一步包括:确定来自所述两个或者更多个SSD中的每个SSD的所述相应的完成指示:与每个SSD相关联的所述相应的第二存储装置访问命令是在经由所述PCIe接口向所述主机发送所述完成之前被完成的。
4.根据权利要求1所述的方法,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令包括:发送所述相应的第二存储装置访问命令,以并行地从所述两个或者更多个SSD读取不同的数据或者写入相同的数据。
5.根据权利要求1所述的方法,其中所述主机是两个或者更多个主机,所述方法进一步包括:标识与所述第一存储装置访问命令相关联的所述主机;其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令包括:向所述两个或者更多个SSD发送具有所述指示的所述相应的第二存储装置访问命令。
6.根据权利要求1所述的方法,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的提交队列,向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令。
7.根据权利要求1所述的方法,其中从所述两个或者更多个SSD中的每个SSD接收所述相应的完成包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的完成队列,从所述两个或者更多个SSD的中每个SSD接收所述相应的完成。
8.根据权利要求1所述的方法,进一步包括:确定所述主机是否具有对命名空间的访问,并且如果所述主机具有所述访问,则向所述主机发送所述访问的完成。
9.一种存储指令的非瞬态计算机可读介质,所述指令当由一个或多个处理器执行时,使得所述一个或多个处理器至少:
经由高速***计算机接口(PCIe)接口从主机接收第一存储装置访问命令,以访问存储装置,其中所述第一存储装置访问命令符合高速非易失性存储器(NVMe),并且所述存储装置包括两个或者更多个固态驱动器(SSD);
基于所述第一存储装置访问命令,向所述两个或者更多个SSD发送相应的第二存储装置访问命令;
基于所述相应的第二存储装置访问命令,从所述两个或者更多个SSD中的每个SSD接收相应的完成;以及
基于从所述两个或者更多个SSD中的每个SSD接收的所述完成,经由所述PCIe向所述主机发送完成。
10.根据权利要求9所述的非瞬态计算机可读介质,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的所述指令包括:发送所述相应的第二存储装置访问命令以并行地从所述两个或者更多个SSD读取不同数据或者写入相同数据的指令。
11.根据权利要求9所述的非瞬态计算机可读介质,进一步包括:确定来自所述两个或者更多个SSD中的每个SSD的所述相应的完成指示与每个SSD相关联的所述相应的第二存储装置访问命令是在经由所述PCIe接口向所述主机发送所述完成之前被完成的指令。
12.根据权利要求9所述的非瞬态计算机可读介质,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的所述指令包括:发送所述相应的第二存储装置访问命令以写入数据或者从所述两个或者更多个SSD读取数据的指令。
13.根据权利要求9所述的非瞬态计算机可读介质,其中所述主机是两个或者更多个主机,所述非瞬态计算机可读介质进一步包括:标识与所述第一存储装置访问命令相关联的所述主机的指令;其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的所述指令包括:向所述两个或者更多个SSD发送具有所述指示的所述相应的第二存储装置访问命令的指令。
14.根据权利要求9所述的非瞬态计算机可读介质,其中向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的所述指令包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的提交队列向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的指令。
15.根据权利要求9所述的非瞬态计算机可读介质,其中从所述两个或者更多个SSD中接收所述相应的完成的所述指令包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的完成队列从所述两个或者更多个SSD中的每个SSD接收所述相应的完成的指令。
16.根据权利要求9所述的非瞬态计算机可读介质,其中所述主机包括虚拟机(VM),所述非瞬态计算机可读介质进一步包括:用于向所述VM提供虚拟私有命名空间的指令。
17.一种高速非易失性存储器(NVMe)交换机,包括:
命令队列;
完成队列;
在所述NVMe交换机的存储器中存储的指令,所述指令当由所述NVMe交换机的一个或多个处理器执行时,使得所述NVMe交换机至少:
经由高速***计算机接口(PCIe)接口,从主机接收第一存储装置访问命令,以访问存储装置,其中所述第一存储装置访问命令符合高速非易失性存储器(NVMe),并且所述存储装置包括两个或者更多个固态驱动器(SSD);
基于所述第一存储装置访问命令,经由所述命令队列,向所述两个或者更多个SSD发送相应的第二存储装置访问命令;
基于所述相应的第二存储装置访问指令,经由所述完成队列,从所述两个或者更多个SSD中的每个SSD接收相应的完成;以及
基于从所述两个或者更多个SSD中的每个SSD接收的所述完成,经由所述PCIe接口向所述主机发送完成。
18.根据权利要求17所述的高速非易失性存储器(NVMe)交换机,其中所述存储装置访问命令是存储请求或者获取请求。
19.根据权利要求17所述的高速非易失性存储器(NVMe)交换机,其中向所述两个或者更多个SSD发送所述相应的存储装置访问命令的所述指令包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的提交队列向所述两个或者更多个SSD发送所述相应的第二存储装置访问命令的指令。
20.根据权利要求17所述的高速非易失性存储器(NVMe)交换机,其中从所述两个或者更多个SSD中的每个SSD接收所述相应的完成的所述指令包括:经由与所述两个或者更多个SSD中的每个SSD相关联的相应的完成队列从所述两个或者更多个SSD接收所述相应的完成的指令。
CN201910731114.6A 2018-08-08 2019-08-08 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换 Pending CN110825670A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862716275P 2018-08-08 2018-08-08
US62/716,275 2018-08-08
US16/532,081 US11544000B2 (en) 2018-08-08 2019-08-05 Managed switching between one or more hosts and solid state drives (SSDs) based on the NVMe protocol to provide host storage services
US16/532,081 2019-08-05

Publications (1)

Publication Number Publication Date
CN110825670A true CN110825670A (zh) 2020-02-21

Family

ID=67587452

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910731114.6A Pending CN110825670A (zh) 2018-08-08 2019-08-08 基于NVMe协议的主机与固态驱动器(SSD)之间的受管理交换

Country Status (4)

Country Link
US (2) US11544000B2 (zh)
EP (2) EP3608792B1 (zh)
KR (1) KR20200017363A (zh)
CN (1) CN110825670A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN113687770A (zh) * 2020-05-19 2021-11-23 慧与发展有限责任合伙企业 调节跨速率失配网络的NVMe-oF命令请求和数据流的***和方法
CN114880977A (zh) * 2022-05-11 2022-08-09 北京百度网讯科技有限公司 软硬件联合仿真***、方法、装置、设备和存储介质

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614986B2 (en) 2018-08-07 2023-03-28 Marvell Asia Pte Ltd Non-volatile memory switch with host isolation
US11068165B2 (en) * 2019-06-27 2021-07-20 Western Digital Technologies, Inc. Non-volatile memory data write management
US11176063B2 (en) * 2019-11-01 2021-11-16 EMC IP Holding Company LLC Optimized use of processor memory for I/O operations
JP2021086583A (ja) * 2019-11-29 2021-06-03 キヤノン株式会社 情報処理装置、制御装置および制御装置の制御方法
US11068421B1 (en) * 2020-02-20 2021-07-20 Silicon Motion, Inc. Memory device and associated flash memory controller
US11372785B2 (en) * 2020-05-06 2022-06-28 Microsoft Technology Licensing, Llc Local non-volatile memory express virtualization device
US20220200867A1 (en) * 2020-12-18 2022-06-23 Western Digital Technologies, Inc. Management of non-volatile memory express nodes
US12014052B2 (en) 2021-03-22 2024-06-18 Google Llc Cooperative storage architecture
US11755438B2 (en) * 2021-03-31 2023-09-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Automatic failover of a software-defined storage controller to handle input-output operations to and from an assigned namespace on a non-volatile memory device
KR102555800B1 (ko) * 2021-04-06 2023-07-17 에스케이하이닉스 주식회사 스토리지 시스템 및 그 동작 방법
US11861228B2 (en) * 2021-08-06 2024-01-02 Micron Technology, Inc. Memory status command aggregation
US11899978B2 (en) 2021-12-06 2024-02-13 Samsung Electronics Co., Ltd. Method and system to abort a command for PCIe based non-volatile memory express solid-state drive
US11941295B2 (en) 2022-01-11 2024-03-26 Western Digital Technologies, Inc. Data storage device and method for providing an adaptive data path
JP2023107418A (ja) 2022-01-24 2023-08-03 キオクシア株式会社 ストレージデバイスおよびストレージシステム
CN114650198B (zh) * 2022-03-31 2023-01-06 联想(北京)有限公司 确定存储架构的方法和装置
CN116909484A (zh) * 2023-08-02 2023-10-20 中科驭数(北京)科技有限公司 数据处理方法、装置、设备及计算机可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080104283A1 (en) * 2006-10-31 2008-05-01 George Shin Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
WO2015080690A1 (en) * 2013-11-26 2015-06-04 Intel Corporation Method and apparatus for storing data
CN104781801A (zh) * 2012-12-21 2015-07-15 英特尔公司 使固态驱动器配置成采用存储模式或存储器模式操作的技术
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US20180074757A1 (en) * 2016-09-09 2018-03-15 Toshiba Memory Corporation Switch and memory device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804766B1 (en) 1997-11-12 2004-10-12 Hewlett-Packard Development Company, L.P. Method for managing pages of a designated memory object according to selected memory management policies
US7412492B1 (en) 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
US7657663B2 (en) 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
WO2011004548A1 (ja) 2009-07-06 2011-01-13 日本電気株式会社 I/oシステム、下流pciエクスプレスブリッジ、インターフェース共有方法、およびプログラム
WO2012006190A1 (en) 2010-06-29 2012-01-12 Huawei Technologies Co., Ltd. Delegate gateways and proxy for target hosts in large layer 2 and address resolution with duplicated internet protocol addresses
US8601198B2 (en) 2011-06-30 2013-12-03 Intel Corporation Controllable transaction synchronization for merging peripheral devices
IN2013KN03842A (zh) 2012-10-27 2015-05-01 Huawei Tech Co Ltd
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)
US9152592B2 (en) * 2013-09-06 2015-10-06 Cisco Technology, Inc. Universal PCI express port
WO2015035574A1 (zh) 2013-09-11 2015-03-19 华为技术有限公司 一种故障处理的方法、计算机***和装置
US9501441B2 (en) 2013-12-16 2016-11-22 Dell Products, Lp Mechanism to boot multiple hosts from a shared PCIe device
WO2015100672A1 (zh) 2013-12-31 2015-07-09 华为技术有限公司 一种扩展PCIe总线域的方法和装置
US20150261709A1 (en) 2014-03-14 2015-09-17 Emilio Billi Peripheral component interconnect express (pcie) distributed non- transparent bridging designed for scalability,networking and io sharing enabling the creation of complex architectures.
US9501245B2 (en) * 2014-05-02 2016-11-22 Cavium, Inc. Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host
US9842075B1 (en) 2014-09-12 2017-12-12 Amazon Technologies, Inc. Presenting multiple endpoints from an enhanced PCI express endpoint device
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9547557B2 (en) 2014-11-10 2017-01-17 Dell Products L.P. Peripheral bus error containment and recovery
US9749448B2 (en) 2014-11-25 2017-08-29 Intel Corporation Header parity error handling
US10235097B2 (en) * 2015-07-21 2019-03-19 Samsung Electronics Co., Ltd. Area and performance optimized namespace sharing method in virtualized PCIE based SSD controller
US9952788B2 (en) * 2015-09-29 2018-04-24 Cnex Labs, Inc. Method and apparatus for providing a shared nonvolatile memory system using a distributed FTL scheme
US20170212579A1 (en) * 2016-01-25 2017-07-27 Avago Technologies General Ip (Singapore) Pte. Ltd. Storage Device With Power Management Throttling
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
EP4202705A1 (en) * 2016-04-04 2023-06-28 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10365706B2 (en) 2017-03-03 2019-07-30 Qualcomm Incorporated Asymmetric power states on a communication link
US10521273B2 (en) 2017-06-08 2019-12-31 Cisco Technology, Inc. Physical partitioning of computing resources for server virtualization
US10896089B2 (en) * 2018-04-06 2021-01-19 Western Digital Technologies, Inc. System level data-loss protection using storage device local buffers
US10636577B2 (en) 2018-05-25 2020-04-28 Qualcomm Incorporated Safe handling of link errors in a peripheral component interconnect express (PCIE) device
US11614986B2 (en) 2018-08-07 2023-03-28 Marvell Asia Pte Ltd Non-volatile memory switch with host isolation
US10977199B2 (en) 2018-08-08 2021-04-13 Marvell Asia Pte, Ltd. Modifying NVMe physical region page list pointers and data pointers to facilitate routing of PCIe memory requests

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080104283A1 (en) * 2006-10-31 2008-05-01 George Shin Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing
CN104781801A (zh) * 2012-12-21 2015-07-15 英特尔公司 使固态驱动器配置成采用存储模式或存储器模式操作的技术
US9298648B2 (en) * 2013-05-08 2016-03-29 Avago Technologies General Ip (Singapore) Pte Ltd Method and system for I/O flow management using RAID controller with DMA capabilitiy to directly send data to PCI-E devices connected to PCI-E switch
CN105556930A (zh) * 2013-06-26 2016-05-04 科内克斯实验室公司 针对远程存储器访问的nvm express控制器
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
WO2015080690A1 (en) * 2013-11-26 2015-06-04 Intel Corporation Method and apparatus for storing data
CN105700826A (zh) * 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US20180074757A1 (en) * 2016-09-09 2018-03-15 Toshiba Memory Corporation Switch and memory device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111651269A (zh) * 2020-05-18 2020-09-11 青岛镕铭半导体有限公司 实现设备虚拟化的方法、装置及计算机可读存储介质
CN113687770A (zh) * 2020-05-19 2021-11-23 慧与发展有限责任合伙企业 调节跨速率失配网络的NVMe-oF命令请求和数据流的***和方法
CN113687770B (zh) * 2020-05-19 2023-03-24 慧与发展有限责任合伙企业 调节跨速率失配网络的NVMe-oF命令请求和数据流的***和方法
CN114880977A (zh) * 2022-05-11 2022-08-09 北京百度网讯科技有限公司 软硬件联合仿真***、方法、装置、设备和存储介质

Also Published As

Publication number Publication date
US11544000B2 (en) 2023-01-03
US20200050402A1 (en) 2020-02-13
EP3608792B1 (en) 2023-12-27
EP4318203A2 (en) 2024-02-07
EP4318203A3 (en) 2024-04-10
EP3608792A1 (en) 2020-02-12
US20230145212A1 (en) 2023-05-11
KR20200017363A (ko) 2020-02-18

Similar Documents

Publication Publication Date Title
US20230145212A1 (en) Switch Device for Interfacing Multiple Hosts to a Solid State Drive
US9760497B2 (en) Hierarchy memory management
JP6329318B2 (ja) 情報処理装置
US9423981B2 (en) Logical region allocation with immediate availability
US20120290786A1 (en) Selective caching in a storage system
US9547446B2 (en) Fine-grained control of data placement
JP2014021972A (ja) 複数の仮想マシンとして動作する複数のシステムによって共有されるストレージ・キャッシングでの柔軟性を改善するための方法および構造
US10581969B2 (en) Storage system using cloud based ranks as replica storage
US8930568B1 (en) Method and apparatus for enabling access to storage
WO2019053534A1 (en) DYNAMIC DATA TRANSLATION USING CLOUD LEVELS
CN110275840B (zh) 在存储器接口上的分布式过程执行和文件***
US20140281072A1 (en) Link layer virtualization in sata controller
US20190082008A1 (en) Storage system using cloud storage as a rank
US11782634B2 (en) Dynamic use of non-volatile ram as memory and storage on a storage system
US20230051825A1 (en) System supporting virtualization of sr-iov capable devices
US20150134902A1 (en) Using deterministic logical unit numbers to dynamically map data volumes
US10437495B1 (en) Storage system with binding of host non-volatile memory to one or more storage devices
US9715460B1 (en) Enabling a first virtual storage director running in a container maintained by a hypervisor to achieve direct memory access to memory of a second virtual storage director running in a different container
US11188425B1 (en) Snapshot metadata deduplication
JP2018113075A (ja) 情報処理装置
US11481147B1 (en) Buffer allocation techniques
US11972112B1 (en) Host IO device direct read operations on peer memory over a PCIe non-transparent bridge
US20210373781A1 (en) Snapshot metadata management
KR20230172729A (ko) 스토리지 장치 및 이의 동작 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20201224

Address after: Hamilton, Bermuda Islands

Applicant after: Marvell International Ltd.

Address before: Saint Michael

Applicant before: MARVELL WORLD TRADE Ltd.

Effective date of registration: 20201224

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: Hamilton, Bermuda Islands

Applicant before: Marvell International Ltd.

Effective date of registration: 20201224

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination