CN112673341A - 具有可配置存储的NVMe直接虚拟化 - Google Patents
具有可配置存储的NVMe直接虚拟化 Download PDFInfo
- Publication number
- CN112673341A CN112673341A CN201980059141.1A CN201980059141A CN112673341A CN 112673341 A CN112673341 A CN 112673341A CN 201980059141 A CN201980059141 A CN 201980059141A CN 112673341 A CN112673341 A CN 112673341A
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual
- physical
- controller
- controllers
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 279
- 230000003863 physical function Effects 0.000 claims abstract description 84
- 230000002093 peripheral effect Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 7
- 238000005192 partition Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/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
-
- 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
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction 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/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
- 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/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
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)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种与一或多个存储器装置操作性耦接的系统控制器被配置成:提供多个虚拟存储器控制器,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器与所述一或多个存储器装置的不同部分相关联;并且提供多个物理功能,其中所述多个物理功能中的每个物理功能对应于所述多个虚拟存储器控制器中的不同虚拟存储器控制器。所述系统控制器进一步通过快速外围组件互连PCIe接口将所述多个物理功能呈现给主机计算系统,所述主机计算系统用于将所述多个物理功能中的每个物理功能分配给在所述主机计算系统上运行的不同虚拟机。
Description
技术领域
本公开通常涉及存储器系统,并且更具体地,涉及具有可配置存储的NVMe直接虚拟化。
背景技术
存储器子系统可以是存储系统,如固态驱动器(SSD)或硬盘驱动器(HDD)。存储器子系统可以是存储器模块,如双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)或非易失性双列直插式存储器模块(NVDIMM)。存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。通常,主机系统可以利用存储器子系统来将数据存储在存储器组件处并从存储器组件中检索数据。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。
图1展示了根据本公开的一些实施例的用于NVMe直接虚拟化的示例计算环境。
图2展示了根据本公开的一些实施例的主机系统与实施NVMe直接虚拟化的存储器子系统之间的示例物理主机接口。
图3展示了根据本公开的一些实施例的用于NVMe直接虚拟化的存储器子系统中的存储器部分映射。
图4展示了根据本公开的一些实施例的用于具有NVMe直接虚拟化的存储器子系统的装置层级和拓扑。
图5展示了根据本公开的一些实施例的实施NVMe直接虚拟化的物理控制器。
图6展示了根据本公开的一些实施例的在存储器子系统中的NVMe直接虚拟化的方法。
图7是本公开的实施例可以在其中操作的示例计算机系统的框图。
具体实施方式
本公开的各方面涉及在存储器子系统中具有可配置存储的快速非易失性存储器(NVMe)直接虚拟化。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的实例是通过外围互连(例如,输入/输出总线、存储区域网络)耦接到中央处理单元(CPU)的存储装置。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器和硬盘驱动器(HDD)。存储器子系统的另一个实例是通过存储器总线耦接到CPU的存储器模块。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)、非易失性双列直插式存储器模块(NVDIMM)等。在一些实施例中,存储器子系统可以是混合存储器/存储子系统。通常,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可以提供要存储在存储器子系统中的数据,并且可以请求从存储器子系统中检索数据。
某些常规存储器子系统利用单根输入/输出虚拟化(SR-IOV)规范。SR-IOV是一种规范,其出于可管理性和性能方面的原因,允许在各种硬件功能之间隔离快速外围组件互连(PCI)(PCIe)资源,同时还允许在虚拟环境中共享单个物理PCIe装置。SR-IOV为物理服务器机器上的不同虚拟组件(例如,网络适配器)提供了不同的虚拟功能。SR-IOV还允许虚拟环境中的不同虚拟机共享单个PCIe硬件接口。物理功能允许枚举许多虚拟功能并且管理程序然后可以将这些虚拟功能分配给一或多个虚拟机。此解决方案需要两组驱动器,包含用于枚举虚拟功能的物理功能驱动器,并且内核需要支持完整的支持SR-IOV的堆叠,并且然后虚拟功能需要另一个只能运行虚拟功能的驱动器。另外,大多数管理程序环境不支持SR-IOV,从而使得所述解决方案不适用于许多情况。
本公开的各方面通过具有一种存储器子系统来解决上述和其它缺陷,所述存储器子系统使用快速非易失性存储器(NVMe)虚拟化方案来允许动态地配置原本不支持SR-IOV的云计算服务。此解决方案提供对于主机操作系统或在其上运行的虚拟机自然可见的物理功能,并且不依赖于通过管理程序和PCIe执行的软件转换。在一个实施方案中,固件或其它逻辑(如存储器子系统中的NVMe虚拟化模块)生成多个虚拟NVMe控制器。每个虚拟NVMe控制器被分配了底层物理非易失性存储装置的区段、分片、部分等。每个虚拟NVMe控制器还具有对应的PCIe物理功能,从而使每个虚拟NVMe控制器呈现为连接到介于存储器子系统与主机系统之间的PCIe总线的可单独寻址的PCIe装置(例如,物理控制器)。因此,在存储器子系统中可能仅存在单个底层存储装置,凭借多个虚拟NVMe控制器,所述单个底层存储装置作为多个单独存储装置呈现给通过PCIe总线连接的主机系统。在另一个实施例中,在存储器子系统中可以存在多个底层存储装置,所述底层存储装置被呈现为由虚拟NVMe控制器代表的更多数量的存储装置。
本文所描述的NVMe虚拟化技术允许通常呈现为单个PCIe装置的连接到PCIe总线的存储器子系统将其自身呈现为多个可单独寻址的PCIe装置。使用各自具有对应的物理功能的虚拟NVMe控制器消除了对存储器子系统中另外的物理控制器和通常将与此类物理控制器相关联的另外硬件资源的需要。另外,NVMe虚拟化还可以实现与SR-IOV规范相关联的性能,包含在原本不支持SR-IOV的环境中,主机系统中的不同虚拟机与存储器子系统共享单个PCIe接口的能力。因此,代替主机系统中执行虚拟化的PCIe根复合体,存储器子系统本身可以实施虚拟化,而无需管理程序或主机系统的其它软件参与。主机系统将每个物理功能视为单独物理存储装置,所述单独物理存储装置可以分配给主机操作系统或在其上运行的多个虚拟机之一。以这种方式,单个底层存储资源可以以完全透明的方式被主机上的多个实体共享。下文中关于图1-7提供了这些NVMe虚拟化技术的另外的细节。
图1展示了根据本公开的一些实施例的包含存储器子系统110的示例计算环境100。存储器子系统110可以包含媒体,如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或其组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。通常,计算环境100可以包含使用存储器子系统110的主机系统120。例如,主机系统120可以将数据写入存储器子系统110并且从存储器子系统110读取数据。
主机系统120可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可以包含或耦接到存储器子系统110,使得主机系统120可以从存储器子系统110读取数据或将数据写入所述存储器子系统。主机系统120可以通过物理主机接口耦接到存储器子系统110。如本文所使用的,“耦接到”通常是指组件之间的连接,所述连接可以是间接的通信连接或直接的通信连接(例如,无中间组件),无论是有线的还是无线的,包含如电、光、磁性等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、快速外围组件互连(PCIe)接口、通用串行总线(USB)接口、光纤信道、串行附接的SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦接时,主机系统120可以进一步利用快速NVM(NVMe)接口以对存储器组件112A到112N进行存取。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(negative-and)(NAND(与非))型闪速存储器。存储器组件112A到112N中的每个存储器组件可以包含如单级单元(SLC)或多级单元(MLC)(例如,三级单元(TLC)或四级单元(QLC))等存储器单元的一或多个阵列。在一些实施例中,特定存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每个存储器单元可以存储由主机系统120使用的数据的一或多个位(例如,数据块)。尽管描述了如与非型闪速存储器等非易失性存储器组件,但是存储器组件112A到112N可以基于如易失性存储器等任何其它类型的存储器。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(negative-or)(NOR(或非))闪速存储器、电可擦可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格数据存取阵列基于体电阻的改变来执行位存储。另外,相比于许多基于闪存的存储器,交叉点非易失性存储器可以执行就地写入操作,其中可以对非易失性存储器单元进行编程而无需预先对非易失性存储器单元进行擦除。此外,存储器组件112A到112N的存储器单元可以被分组为存储器页面或数据块,所述存储器页面或数据块可以是指用于存储数据的存储器组件的单元。数据块可以进一步被分组为存储器组件112A到112N中的每个存储器组件上的一或多个平面,其中可以同时在平面中的每个平面上执行操作。来自不同平面的对应数据块可以在条带中彼此相关联,而不是跨多个平面。
存储器系统控制器115(以下被称为“控制器”)可以与存储器组件112A到112N通信以执行如在存储器组件112A到112N处读取数据、写入数据或擦除数据等操作以及其它此类操作。控制器115可以包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。控制器115可以包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所展示的实例中,控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程(包含处理存储器子系统110与主机系统120之间的通信)的指令。在一些实施例中,本地存储器119可以包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(ROM)。虽然图1中的示例存储器子系统110被展示为包含控制器115,但是在本公开的另一个实施例中,存储器子系统110可以不包含控制器115,而是可以依赖于(例如,由外部主机或与存储器子系统分离的处理器或控制器提供的)外部控制。
通常,控制器115可以从主机系统120接收命令或操作并且可以将命令或操作转换为指令或适当的命令以实现对存储器组件112A到112N的期望存取。控制器115可以负责其它操作,如损耗均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转换。控制器115可以进一步包含主机接口电路系统,以通过物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收的命令转换为命令指令以对存储器组件112A到112N进行存取并将与存储器组件112A到112N相关联的响应转换为用于主机系统120的信息。
存储器子系统110还可以包含未展示的另外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,DRAM)和可以从控制器115接收地址并解码所述地址以对存储器组件112A到112N进行存取的地址电路系统(例如,行解码器和列解码器)。
存储器子系统110包含可以用于执行NVMe直接虚拟化的NVMe虚拟化模块113。在一个实施例中,NVMe虚拟化模块113执行固件或其它逻辑,以在存储器子系统110中提供多个虚拟NVMe控制器。NVMe虚拟化模块113将每个虚拟NVMe控制器与底层存储器组件112A到112N的特定部分相关联,其中每个部分可通过唯一的命名空间寻址。NVMe虚拟化模块113进一步将对应的PCIe物理功能分配给每个虚拟NVMe控制器,从而使每个虚拟NVMe控制器呈现为连接到介于存储器子系统110和主机系统120之间的PCIe总线的可单独寻址的PCIe装置(例如,物理控制器)。主机系统120(包含在其上运行的单独的虚拟机或分区)因此可以通过物理主机接口(例如,PCIe总线)单独地和并行地对存储组件112A到112N的由虚拟NVMe控制器表示的每个部分进行存取。关于NVMe虚拟化模块113的操作的进一步细节在下文进行了描述。
图2展示了根据本公开的一些实施例的主机系统与实施NVMe直接虚拟化的存储器子系统之间的示例物理主机接口。在一个实施例中,存储器子系统110的控制器115通过如PCIe总线210等物理主机接口连接到主机系统120。在一个实施例中,在控制器115上运行的NVMe虚拟化模块113生成并管理控制器115内的多个虚拟NVMe控制器202-208。虚拟NVMe控制器202-208是虚拟实体,凭借与每个虚拟NVMe控制器202-208相关联的物理功能212-218,所述虚拟实体作为物理控制器呈现给连接到PCIe总线210的其它装置如主机系统120。图2展示了四个虚拟NVMe控制器202-208和四个对应的物理功能212-218。然而,在其它实施例中,可以存在任何其它数量的NVMe控制器,所述NVMe控制器各自具有对应的物理功能。所有虚拟NVMe控制器202-208具有相同的优先级和相同的功能。因此,与SR-IOV相比,不存在主控制器或辅助控制器的概念,在所述SR-IOV中,当主控制器处于操作状态下时,主控制器可以创建辅助控制器。这意味着在引导时间(boot time)下,SR-IOV系统将看不到任何辅助控制器,直到主控制器驱动器创建它们为止。
虚拟NVMe控制器202-208中的每个虚拟NVMe控制器管理底层存储器组件112A到112N的与其相关联的对应部分的存储存取操作。例如,虚拟NVMe控制器202可以通过PCIe总线210从主机系统120接收数据存取请求,包含在存储器组件112A的第一部分中读取、写入或擦除数据的请求。响应于所述请求,虚拟NVMe控制器202可以对存储在第一部分中的所标识地址处的数据执行所请求的存储器存取操作,并且适当地将所请求的数据和/或确认或错误消息返回给主机系统120。虚拟NVMe控制器204-208可以以相同或类似的方式对针对存储器组件112A到112N的其自身对应部分的数据存取请求起作用。
如上所述,NVMe虚拟化模块113将物理功能212-218之一与虚拟NVMe控制器202-208中的每个虚拟NVMe控制器相关联,以便允许每个虚拟NVMe控制器202-208在PCIe总线210上呈现为物理控制器。例如,物理功能212可以对应于虚拟NVMe控制器202,物理功能214可以对应于虚拟NVMe控制器204,物理功能216可以对应于虚拟NVMe控制器206,并且物理功能218可以对应于虚拟NVMe控制器208。物理功能212-218是具有全部特征的PCIe功能,其可以像任何其它PCIe装置一样被发现、管理和操纵,并且因此可以用于配置和控制PCIe装置(例如,虚拟NVMe控制器202-208)。每个物理功能212-218可以具有一些与其相关联的虚拟功能。虚拟功能是与物理功能以及与和所述物理功能相关联的虚拟功能共享一或多种资源的轻量级PCIe功能。每个虚拟功能具有用于映射其寄存器组的PCI存储器空间。虚拟功能装置驱动器在寄存器组上操作以实现其功能,并且虚拟功能呈现为可由主机系统120通过PCIe总线210进行存取的实际PCIe装置。
如以上所指出的,可以将每个物理功能212-218分配给主机系统120中的虚拟机232-236的任何一个虚拟机。当在虚拟NVMe控制器202-208处从虚拟机232-236接收到I/O数据时,虚拟机驱动器为对应的读取/写入命令提供了客户物理地址。NVMe虚拟化模块113将物理功能号转换为总线、装置和功能(BDF)号,并且然后将命令添加到直接存储器存取(DMA)操作以对客户物理地址执行DMA操作。在一个实施例中,控制器115进一步将客户物理地址转变为用于存储器子系统110的系统物理地址。
此外,每个物理功能212-218可以在特权模式或正常模式下实施。当在特权模式下实施时,物理功能具有单个管理点,所述单个管理点可以控制在正常模式下实施的其它功能的资源操纵和存储配置(provisioning)。另外,特权模式下的物理功能可以执行管理选项,包含例如启用/禁用多个物理功能、存储和服务质量(QoS)配置、固件和控制器更新、供应商唯一统计数据和事件、诊断、安全擦除/加密等。通常,第一物理功能可以实施特权模式并且物理功能中的其余物理功能可以实施正常模式。然而,在其它实施例中,物理功能中的任何物理功能可以被配置成在特权模式下操作。因此,可以存在一或多个在特权模式下运行的功能。
主机系统120通过执行在硬件上方和虚拟机下方的软件层224(通常被称为“管理程序”)来运行多个虚拟机232、234、236,如图2示意性所示。在一个说明性实例中,管理程序224可以是由主机系统120执行的主机操作系统222的组件。可替代地,管理程序224可以由在主机操作系统222下运行的应用提供,或者可以直接在主机系统120上运行而无需在其下方的操作系统。管理程序224可以对包含处理器、存储器和I/O装置的物理层进行抽象,并且将此抽象作为包含虚拟处理器、虚拟存储器和虚拟I/O装置的虚拟装置呈现给虚拟机232、234、236。虚拟机232、234、236各自可以执行客户操作系统,所述客户操作系统可以利用底层虚拟装置,所述底层虚拟装置可以例如映射到由存储器子系统110中的虚拟NVMe控制器202-208之一管理的存储器组件112A到112N的一部分。一或多个应用可以在客户操作系统下的每个虚拟机上运行。
每个虚拟机232、234、236可以包含一或多个虚拟处理器。处理器虚拟化可以通过以下来实施:管理程序224调度一或多个物理处理器上的时隙,使得从客户操作系统的角度来看,那些时隙是在虚拟处理器上进行调度。存储器虚拟化可以通过页面表(PT)实施,所述页面表是将客户存储器地址转换为物理存储器地址的存储器结构。管理程序224可以以比客户操作系统高的特权级别运行,并且后者可以以比客户应用高的特权级别运行。
在一个实施方案中,在主机系统120上可以存在表示虚拟机232、234、236的多个分区。与虚拟机232相对应的父分区是根分区(例如,根环0),所述根分区具有控制其它子分区(例如,常规环0)的生命周期的另外特权,所述子分区对应于例如虚拟机234和236。每个分区具有对应的虚拟存储器,并且与呈现虚拟装置相反,子分区显示被分配给它们的物理装置。当主机系统120最初启动时,父分区可以直接看见所有物理装置。直通机制(例如,PCIe直通(PCIe Pass-Through)或直接装置分配)允许父分区将NVMe装置(例如,虚拟NVMe控制器202-208之一)分配给子分区。相关联的虚拟NVMe控制器202-208可以作为虚拟存储资源呈现给虚拟机232、234、236中的每个虚拟机,客户操作系统或在其中运行的客户应用可以对所述虚拟存储资源进行存取。在一个实施例中,例如,虚拟机232与虚拟NVMe控制器202相关联,虚拟机234与虚拟NVMe控制器204相关联,并且虚拟机236与虚拟NVMe控制器206相关联。在另一个实施例中,一个虚拟机可以与两个或更多个NVMe控制器相关联。如下文将更详细描述的,虚拟机232、234、236可以使用对应的总线、装置和功能(BDF)号标识相关联的虚拟NVMe控制器。
在一个实施例中,NVMe虚拟化模块113进一步实施虚拟NVMe控制器202-208中的每个虚拟NVMe控制器的存取控制服务。存取控制服务管理哪些装置对虚拟NVMe控制器202-208具有存取权限。存取权限可以定义例如主机系统120上的哪个虚拟机232-236可以对虚拟NVMe控制器202-208中的每个虚拟NVMe控制器进行存取,以及虚拟机232-236中的每个虚拟机可以对虚拟NVMe控制器202-208中的每个虚拟NVMe控制器执行哪些操作。在一个实施例中,NVMe虚拟化模块113单独地控制对虚拟NVMe控制器202-208中的每个虚拟NVMe控制器的存取权限。例如,在特权模式下,NVMe虚拟化模块113可以授予虚拟机232使用虚拟NVMe控制器202读取和写入数据的权限,但仅授予使用虚拟NVMe控制器204读取数据的权限。类似地,在特权模式下,NVMe虚拟化模块113可以仅授予虚拟机232使用虚拟NVMe控制器204读取和写入数据的权限。可以为虚拟NVMe控制器202定义存取权限的任何组合。当接收到针对虚拟NVMe控制器202-208之一的存储器存取请求时,NVMe虚拟化模块113可以基于定义存取控制服务的存取策略分析请求的条件(例如,请求者、目标、操作、请求的数据地址等)。例如,存取策略可以存储在本地存储器119中。如果请求满足对应的存取策略(请求的条件与对应的存取策略中指定的条件匹配),则NVMe虚拟化模块113可以准予存取请求。否则,请求可能被拒绝。
图3展示了根据本公开的一些实施例的用于NVMe直接虚拟化的存储器子系统中的存储器部分映射。如上所述,NVMe虚拟化模块113将存储器子系统110中的每个NVMe控制器映射到存储器组件112A到112N之一的对应部分。如图3所展示的,虚拟NVMe控制器202映射到存储器组件112A的部分302,虚拟NVMe控制器204映射到存储器组件112A的部分304,虚拟NVMe控制器206映射到存储器组件112N的部分306,并且虚拟NVMe控制器208映射到存储器组件112N的部分308。在其它实施例中,相应部分可以跨越存储器组件112A到112N中的两个或更多个存储器组件。每个部分302-308可以具有固定大小或可以具有不同的大小。例如,部分302可以大于部分304,所述部分304可以大于部分306,所述部分306的大小可以与部分308的大小相同。在一个实施例中,每个部分302-308由唯一的命名空间表示。命名空间是当用NVMe协议配置存储器组件时可以被格式化为逻辑块的一或多个存储器组件112A到112N的数量。NVMe协议提供对命名空间的存取,所述命名空间呈现为可以在不进行任何修改的情况下在其上部署文件系统和应用的标准块装置。每个虚拟NVMe控制器202-208可以具有一或多个单独的命名空间,每个命名空间由唯一的命名空间ID(NSID)标识。另外,可以存在一或多个共享命名空间,所述共享命名空间包括可由虚拟NVMe控制器202-208中的两个或更多个虚拟NVMe控制器存取的多个部分302-308。
另外,为了分配存储器的部分302-308,每个虚拟NVMe控制器202-208还可以具有关联数量的队列对。NVMe虚拟化模块113可以有固定数量的可以分布在虚拟NVMe控制器202-208之间的输入/输出(I/O)队列对和管理队列对。I/O队列对用于接收来自主机系统120的存储器存取请求,并且管理队列对用于接收管理命令。分配给每个虚拟NVMe控制器202-208的I/O队列对的数量控制在对应的虚拟NVMe控制器处可以接收多少并发存储器存取请求。例如,如果虚拟NVMe控制器202被分配了十个I/O队列对,则虚拟NVMe控制器202可以在拒绝后续请求之前从主机系统120接收至多十个存储器存取请求。当处理当前请求时,存储器存取请求被保存在相关联的I/O队列对中。一旦虚拟NVMe控制器202完成了当前请求的处理,就可以从相关联的I/O队列对中检索下一个请求以进行处理,并且可以将另一个存储器存取请求添加到队列。在一个实施例中,NVMe虚拟化模块将可用的I/O队列对均匀分布在虚拟NVMe控制器202-208之间。在另一个实施例中,分配给每个虚拟NVMe控制器的I/O队列对的数量在不同的虚拟NVMe控制器202-208之间不相等,并且基于一些其它因素,如对应存储器部分302-308的大小、虚拟NVMe控制器上的过去活动的级别等。在任何实施例中,每个虚拟NVMe控制器被分配至少一个管理队列对。
图4展示了根据本公开的一些实施例的用于具有NVMe直接虚拟化的存储器子系统的装置层级和拓扑。在一个实施例中,主机系统120包含PCIe根复合体422,所述PCIe根复合体用作主机系统120的物理组件和虚拟组件与PCIe总线210之间的连接。PCIe根复合体422可以代表如虚拟机232、234、236之一中的虚拟处理装置等处理装置生成事务请求。根据实施例,PCIe根复合体422可以实施为离散装置或可以与主机系统120中的物理处理装置集成。PCIe根复合体422可以具有多个通信端口,使得PCIe根复合体422可以向多个PCIe装置(如连接到PCIe总线210的虚拟NVMe控制器202-208)发送命令并从所述多个PCIe装置接收命令。
如上所述,虚拟NVMe控制器202-208中的每个虚拟NVMe控制器凭借各自具有单独的物理功能而呈现为连接到PCIe总线210的单独物理PCIe装置。每个物理功能为虚拟NVMe控制器202-208中的对应虚拟NVMe控制器提供对应的配置空间。在一个实施例中,每个配置空间的长度为256字节,并且可通过知道对应的总线、装置和功能(BDF)号来寻址。BDF号可以包含指示PCIe总线的八位值、指示对应装置的五位值和指示相关联的功能的三位值。因此,可以唯一地标识至多256条总线,每条总线具有至多32个装置,每个装置支持八种功能。在一个实施例中,可以使用替代路由解释(ARI)来将可以在装置中实施的物理功能的数量从正常的最大八个增加到256个。在图4所展示的实例中,PCIe总线210被赋予值3,并且因此虚拟NVMe控制器202-208中的每个虚拟NVMe控制器的BDF号包含值3。另外,虚拟NVMe控制器202-208中的每个虚拟NVMe控制器具有唯一的装置值(在这种情况下分别为0、1、2和3)。此外,由于虚拟NVMe控制器202-208中的每个虚拟NVMe控制器仅具有单个物理功能,所以每个虚拟NVMe控制器的功能值为0。这使得虚拟NVMe控制器202-208中的每个虚拟NVMe控制器具有唯一的BDF号,PCIe根复合体422可以使用所述BDF号来寻址期望的虚拟NVMe控制器。在一个实施例中,控制器115维护将每个虚拟NVMe控制器的物理功能号映射到唯一的BDF的表或其它数据结构。另外,每个物理功能可以用命名空间标识符(NSID)创建其自身的命名空间(例如,卷)。对于每个功能,这些NSID可以从0开始到N-1。NSID在整个存储器子系统110上可以是唯一的,并且在一个实施例中,物理功能号附加到每个NSID的最高有效位。
图5展示了根据本公开的一些实施例的实施NVMe直接虚拟化的物理控制器。如上所述,控制器115包含NVMe虚拟化模块113和虚拟NVMe控制器202-208。虚拟NVMe控制器202-208耦接到PCIe端口505,所述PCIe端口使得能够通过PCIe总线210与主机系统120通信。在一个实施例中,控制器115进一步包含媒体控制器520。媒体控制器520管理存储器子系统110中的存储媒体的操作,所述存储媒体包含存储器组件112A到112N以及任选的易失性存储器,如一或多个动态随机存取存储器(DRAM)装置510。例如,当虚拟NVMe控制器202-208之一接收到对存储器组件112A到112N之一中的数据进行存取的请求时,虚拟NVMe控制器将所述请求提供给媒体控制器520,所述媒体控制器检索并返回所请求的数据、写入所请求的数据或从存储器组件112A到112N中擦除所请求的数据。
在一个实施例中,控制器115进一步包含服务质量(QoS)模块522和边带管理(SM)总线524。QoS可以为每个虚拟NVMe控制器202-208实施单独的服务质量管理。当如存储器组件112A到112N之一等大型存储装置被切割成较小的分区时,将QoS特性与每个单独的分区相关联可能是有益的,每个分区均由虚拟NVMe控制器202-208控制并且每个分区可以由不同的客户端(例如,主机系统120上的虚拟机)使用。为了满足这些要求,QoS模块522将QoS控制附加到每个虚拟NVMe控制器202-208。QoS控制可以包含例如单个存储分区大小、带宽或其它特性。QoS模块522可以随着时间推移监测虚拟NVMe控制器202-208的性能,并且可以根据需要重新配置资源分配以确保符合QoS要求。
SM总线524与如存储器子系统110中的基板管理控制器(BMC)等平台管理器(未示出)通信以与平台硬件对接。平台管理器可以与存储器子系统110中内置的不同类型的传感器对接,以报告如温度、冷却风扇速度、电源状态、操作系统状态等参数。平台管理器监测这些传感器,并且如果所述参数中的任何参数未处于特定的预先设置的限制内,则所述平台管理器可以生成警报,从而指示潜在的故障。控制器115可以通过SM总线524从平台管理器接收这些警报和/或向平台管理器提供状态信息。
图6是根据本公开的一些实施例的在存储器子系统中的NVMe直接虚拟化的示例方法的流程图。方法600可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的NVMe虚拟化模块113执行。尽管以特定序列或顺序示出,但除非另外指定,否则可以修改过程的顺序。因此,展示的实施例应被理解为只是实例,并且展示的过程可以按不同的顺序执行,并且一些过程可以并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
在操作610处,处理装置提供多个虚拟存储器控制器,如虚拟NVMe控制器202-208。虚拟NVMe控制器202-208是虚拟实体,凭借与每个虚拟NVMe控制器202-208相关联的物理功能212-218,所述虚拟实体作为物理控制器呈现给连接到PCIe总线210的其它装置如主机系统120。在一个实施例中,虚拟存储器控制器在控制器115内创建,但在其被启用(如响应于通过管理接口从系统管理员接收到输入)之前可能不会被使用。
在操作620处,处理装置将一或多个存储器装置如存储器组件112A到112N划分成多个部分320-308,并且在操作630处,处理装置将如虚拟NVMe控制器202-208等多个虚拟存储器控制器中的每个虚拟存储器控制器与多个部分302-308之一相关联。在一个实施例中,NVMe虚拟化模块113将存储器子系统110中的每个NVMe控制器映射到存储器组件112A到112N之一的对应部分。在其它实施例中,相应部分可以跨越存储器组件112A到112N中的两个或更多个存储器组件,并且每个部分302-308可以具有固定或不同的大小。
在操作640处,处理装置提供多个物理功能212-218,其中多个物理功能212-218中的每个物理功能对应于多个虚拟存储器控制器(如虚拟NVMe控制器202-208)中的不同虚拟存储器控制器。所述多个物理功能212-218中的每个物理功能在如PCIe总线210等快速外围组件互连(PCIe)接口上将所述多个虚拟存储器控制器中的对应虚拟存储器控制器作为物理存储器控制器表示给主机系统120。在一个实施例中,响应于通过管理接口从系统管理员接收到输入而创建多个物理功能212-218。
在操作650处,处理装置通过如PCIe总线210等PCIe接口将多个物理功能212-218呈现给如主机系统120等主机计算系统。主机系统120将多个物理功能212-218中的每个物理功能分配给运行在主机系统120上的不同虚拟机,如虚拟机232、234、236之一。多个物理功能212-218中的每个物理功能为多个虚拟存储器控制器中的对应虚拟存储器控制器提供配置空间,其中每个配置空间可通过知道唯一的总线、装置和功能(BDF)号来寻址。另外,多个物理功能212-218中的第一物理功能如物理功能212可以在特权模式下实施并且可以被配置成对多个物理功能中可以在正常模式下实施的其余物理功能(例如,物理功能214-218)执行管理操作。
在操作660处,处理装置从在主机系统120上运行的如虚拟机232、234、236之一等所分配虚拟机接收存储器存取请求。存储器存取请求可以与相关联部分如一或多个存储器装置(如存储器组件112A到112N)的部分302-308之一有关。
在操作670处,处理装置将所分配虚拟机(如虚拟机232、234、236之一)和存储器存取请求与和多个虚拟存储器控制器(如虚拟NVMe控制器202-208)相关联的存取控制策略进行比较,并且响应于所分配虚拟机和存储器存取请求满足存取控制策略的一或多个条件而授权对多个虚拟存储器控制器进行存取。
在操作680处,处理装置处理存储器存取请求。在一个实施例中,虚拟NVMe控制器202-208中的一或多个虚拟NVMe控制器可以执行请求的存储器存取操作如读取、写入或擦除操作,并且可以适当地将所请求的数据和/或确认或错误消息返回给主机系统120。
图7展示了计算机系统700的示例机器,在所述计算机系统内,可以执行用于使机器执行本文所讨论的方法中的任何一或多种方法的指令集。在一些实施例中,计算机系统700可以对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦接到或利用存储器子系统(例如,图1的存储器子系统110)或可以用于执行控制器的操作(例如,以执行操作系统,从而执行对应于图1的读取窗口预算组件113的操作)。在替代实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力进行操作,作为对等(或分布式)网络环境中的对等机器,或作为云计算基础架构或环境中的服务器或客户端机器。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或网桥或能够(顺序地或以其它方式)执行指定所述机器要采取的动作的指令集的任何机器。进一步地,尽管展示了单个机器,但是术语“机器”还应被视为包含单独地或联合地执行指令集(或多个指令集)以执行本文所讨论的方法中的任何一或多种方法的机器的任何集合。
示例计算机系统700包含通过总线730相互通信的处理装置702、主存储器704(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)如同步DRAM(SDRAM)或兰巴斯(Rambus)DRAM(RDRAM)等)、静态存储器706(例如,闪速存储器、静态随机存取存储器(SRAM)等)和数据存储系统718。
处理装置702表示一或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器或实施指令集组合的处理器。处理装置702还可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702被配置成执行用于执行本文中所讨论的操作和步骤的指令726。计算机系统700可以进一步包含网络接口装置708以通过网络720进行通信。
数据存储系统718可以包含其上存储有使本文所描述的方法或功能中的任何一或多种方法或功能具体化的指令726的一或多个集或软件的机器可读存储媒体724(也称为计算机可读媒体)。在由计算机系统700执行指令726期间,所述指令还可以完全地或至少部分地驻留在主存储器704内和/或处理装置702内,主存储器704和处理装置702还构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718和/或主存储器704可以对应于图1的存储器子系统110。
在一个实施例中,指令726包含用于实施与图1的NVMe虚拟化模块113相对应的功能的指令。虽然在示例实施例中示出的机器可读存储媒体724是单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码由机器执行且使机器执行本公开的方法中的任何一或多种方法的一组指令的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不局限于固态存储器、光学媒体和磁性媒体。
已经在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了前面详细描述的说明的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其它技术人员最有效地传递其工作实质的方式。算法在这里并且通常被认为是产生期望的结果的操作的自相一致序列。操作是需要物理操纵物理量的操作。通常但不一定,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于常见用法的原因,证明有时将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。
然而,应当记住的是,这些和类似术语中的全部术语将与适当的物理数量相关联并且仅是应用于这些量上的方便标签。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置对在计算机系统的寄存器和存储器内表示为物理(电子)量的数据进行操纵,并将其转换为在计算机系统的存储器或寄存器或其它此类信息存储系统内以类似方式表示为物理量的其它数据。
本公开还涉及一种用于执行本文的操作的设备。此设备可以被专门构造用于所需目的,或者其可以包含通过计算机中存储的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,所述计算机可读存储媒体如但不限于各自耦接到计算机系统总线的任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或者适合于存储电子指令的任何类型的媒体。
本文所提出的算法和显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明,构造用于执行所述方法的更具专用性的设备是方便的。用于各种这些系统的结构将如下文的描述中阐述那样呈现。另外,本公开不参考任何特定的编程语言进行描述。应理解,可以使用各种编程语言来实施如本文描述的本公开的教导。
本公开可以被提供为计算机程序产品或软件,所述计算机程序产品或软件可以包含其上存储有指令的机器可读媒体,所述指令可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪速存储器组件等。
在前述说明书中,已经参考其具体示例实施例对本公开的实施例进行描述。将显而易见的是,在不脱离如以下权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对所述实施例进行各种修改。因此,说明书和附图将被视为是说明性而非限制性的。
Claims (20)
1.一种存储器系统,其包括:
一或多个存储器装置;以及
与所述一或多个存储器装置操作性耦接的系统控制器,所述系统控制器用于:
提供多个虚拟存储器控制器,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器与所述一或多个存储器装置的不同部分相关联;
提供多个物理功能,其中所述多个物理功能中的每个物理功能对应于所述多个虚拟存储器控制器中的不同虚拟存储器控制器;并且
通过快速外围组件互连PCIe接口将所述多个物理功能呈现给主机计算系统,所述主机计算系统用于将所述多个物理功能中的每个物理功能分配给在所述主机计算系统上运行的不同虚拟机。
2.根据权利要求1所述的存储器系统,其中所述系统控制器进一步用于:
将所述一或多个存储器装置划分为多个部分;并且
将所述多个虚拟存储器控制器中的每个虚拟存储器控制器与所述多个部分之一相关联。
3.根据权利要求1所述的存储器系统,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器用于接收并处理来自在所述主机计算系统上运行的所分配虚拟机的存储器存取请求,所述存储器存取请求与所述一或多个存储器装置的相关联部分有关。
4.根据权利要求3所述的存储器系统,其中所述系统控制器进一步用于:
确定所述所分配虚拟机和所述存储器存取请求是否满足与所述多个虚拟存储器控制器相关联的存取控制策略的一或多个条件;并且
响应于所述所分配虚拟机和所述存储器存取请求满足所述存取控制策略的所述一或多个条件而授权对所述多个虚拟存储器控制器进行存取。
5.根据权利要求1所述的存储器系统,其中所述多个物理功能中的每个物理功能用于在所述PCIe接口上将所述多个虚拟存储器控制器中的对应虚拟存储器控制器作为物理存储器控制器表示给所述主机计算系统。
6.根据权利要求1所述的存储器系统,其中所述多个物理功能中的每个物理功能为所述多个虚拟存储器控制器中的对应虚拟存储器控制器提供配置空间,并且其中每个配置空间可通过知道唯一的总线、装置和功能BDF号来寻址。
7.根据权利要求1所述的存储器系统,其中所述多个物理功能中的第一物理功能在特权模式下实施并且被配置成对所述多个物理功能中在正常模式下实施的其余物理功能执行管理操作。
8.一种方法,其包括:
由存储器系统控制器生成多个虚拟存储器控制器,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器与存储器系统中的一或多个存储器装置的不同部分相关联;
由所述存储器系统控制器生成多个物理功能,其中所述多个物理功能中的每个物理功能对应于所述多个虚拟存储器控制器中的不同虚拟存储器控制器;以及
由所述存储器系统控制器通过快速外围组件互连PCIe接口将所述多个物理功能呈现给主机计算系统,所述主机计算系统用于将所述多个物理功能中的每个物理功能分配给在所述主机计算系统上运行的不同虚拟机。
9.根据权利要求8所述的方法,其进一步包括:
将所述一或多个存储器装置划分为多个部分;以及
将所述多个虚拟存储器控制器中的每个虚拟存储器控制器与所述多个部分之一相关联。
10.根据权利要求8所述的方法,其进一步包括:
由所述多个虚拟存储器控制器中的每个虚拟存储器控制器接收并处理来自在所述主机计算系统上运行的所分配虚拟机的存储器存取请求,所述存储器存取请求与所述一或多个存储器装置的相关联部分有关。
11.根据权利要求10所述的方法,其进一步包括:
将所述所分配虚拟机和所述存储器存取请求与和所述多个虚拟存储器控制器相关联的存取控制策略进行比较;以及
响应于所述所分配虚拟机和所述存储器存取请求满足所述存取控制策略的一或多个条件而授权对所述多个虚拟存储器控制器进行存取。
12.根据权利要求8所述的方法,其中所述多个物理功能中的每个物理功能用于在所述PCIe接口上将所述多个虚拟存储器控制器中的对应虚拟存储器控制器作为物理存储器控制器表示给所述主机计算系统。
13.根据权利要求8所述的方法,其中所述多个物理功能中的每个物理功能为所述多个虚拟存储器控制器中的对应虚拟存储器控制器提供配置空间,并且其中每个配置空间可通过知道唯一的总线、装置和功能BDF号来寻址。
14.根据权利要求8所述的方法,其中所述多个物理功能中的第一物理功能在特权模式下实施并且被配置成对所述多个物理功能中在正常模式下实施的其余物理功能执行管理操作。
15.一种非暂时性计算机可读存储媒体,其包括指令,所述指令当由处理装置执行时使所述处理装置:
由存储器系统中的多个虚拟存储器控制器中的第一虚拟存储器控制器从在通过主机接口总线与所述存储器系统耦接的主机计算系统上运行的所分配虚拟机接收存储器存取请求;
标识所述存储器系统中的一或多个存储器装置的一部分,所述部分对应于所述第一虚拟存储器控制器,并且其中所述一或多个存储器装置的所述部分在所述主机接口总线上通过第一物理功能作为物理存储器表示给所述主机计算系统;并且
通过所述主机接口总线将来自所述一或多个存储器装置的所标识部分的数据提供给在所述主机计算系统上运行的所述所分配虚拟机。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述存储器存取请求指示来自所述一或多个存储器装置的所标识部分的所述数据。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器与所述存储器系统中的所述一或多个存储器装置的不同部分相关联。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述主机接口总线包括快速外围组件互连PCIe接口。
19.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述多个虚拟存储器控制器中的每个虚拟存储器控制器具有对应的物理功能,所述主机计算系统用于将每个物理功能分配给在所述主机计算系统上运行的不同虚拟机。
20.根据权利要求19所述的非暂时性计算机可读存储媒体,其中每个物理功能为所述多个虚拟存储器控制器中的对应虚拟存储器控制器提供配置空间,并且其中每个配置空间可通过知道唯一的总线、装置和功能BDF号来寻址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410297034.5A CN118193424A (zh) | 2018-08-01 | 2019-07-31 | 具有可配置存储的NVMe直接虚拟化 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862713411P | 2018-08-01 | 2018-08-01 | |
US62/713,411 | 2018-08-01 | ||
US16/355,271 | 2019-03-15 | ||
US16/355,271 US11068203B2 (en) | 2018-08-01 | 2019-03-15 | NVMe direct virtualization with configurable storage |
PCT/US2019/044513 WO2020028573A1 (en) | 2018-08-01 | 2019-07-31 | NVMe DIRECT VIRTUALIZATION WITH CONFIGURABLE STORAGE |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410297034.5A Division CN118193424A (zh) | 2018-08-01 | 2019-07-31 | 具有可配置存储的NVMe直接虚拟化 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112673341A true CN112673341A (zh) | 2021-04-16 |
CN112673341B CN112673341B (zh) | 2024-04-02 |
Family
ID=69228670
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980059141.1A Active CN112673341B (zh) | 2018-08-01 | 2019-07-31 | 具有可配置存储的NVMe直接虚拟化 |
CN202410297034.5A Pending CN118193424A (zh) | 2018-08-01 | 2019-07-31 | 具有可配置存储的NVMe直接虚拟化 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410297034.5A Pending CN118193424A (zh) | 2018-08-01 | 2019-07-31 | 具有可配置存储的NVMe直接虚拟化 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11068203B2 (zh) |
KR (1) | KR20210024195A (zh) |
CN (2) | CN112673341B (zh) |
WO (1) | WO2020028573A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251118A (zh) * | 2023-11-16 | 2023-12-19 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130159572A1 (en) * | 2011-12-16 | 2013-06-20 | International Business Machines Corporation | Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to multi-function hierarchies |
US20200342109A1 (en) * | 2019-04-29 | 2020-10-29 | Hewlett Packard Enterprise Development Lp | Baseboard management controller to convey data |
US20240211418A9 (en) * | 2019-06-24 | 2024-06-27 | Samsung Electronics Co., Ltd. | Multi-function flexible computational storage device |
US11558296B2 (en) * | 2020-09-18 | 2023-01-17 | Serialtek, Llc | Transaction analyzer for peripheral bus traffic |
US11650937B2 (en) * | 2019-12-31 | 2023-05-16 | Western Digital Technologies, Inc. | Storage system and method for secure host controller memory buffer access |
US11704059B2 (en) | 2020-02-07 | 2023-07-18 | Samsung Electronics Co., Ltd. | Remote direct attached multiple storage function storage device |
US11372785B2 (en) * | 2020-05-06 | 2022-06-28 | Microsoft Technology Licensing, Llc | Local non-volatile memory express virtualization device |
KR20220003757A (ko) * | 2020-07-02 | 2022-01-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US20220094434A1 (en) * | 2020-09-24 | 2022-03-24 | Intel Corporation | Characterizing data transmitted over an optical link based on one or more wavelengths used in transmission |
KR102568906B1 (ko) | 2021-04-13 | 2023-08-21 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
KR102570943B1 (ko) | 2021-04-13 | 2023-08-28 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US11928070B2 (en) | 2021-04-13 | 2024-03-12 | SK Hynix Inc. | PCIe device |
KR20240007417A (ko) * | 2022-07-08 | 2024-01-16 | 에스케이하이닉스 주식회사 | 시스템 리소스의 요구성능을 보장하는 데이터 저장 장치 및 그 동작 방법과, 이를 위한 메모리 컨트롤러 |
US20240103721A1 (en) * | 2022-09-22 | 2024-03-28 | Microsoft Technology Licensing, Llc | Scalable controller for managing data storages |
US20240202015A1 (en) * | 2022-12-14 | 2024-06-20 | Advanced Micro Devices, Inc | Accessing Multiple Physical Partitions of a Hardware Device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130000253A (ko) * | 2011-06-22 | 2013-01-02 | 한국과학기술원 | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 |
US20140281040A1 (en) * | 2013-03-13 | 2014-09-18 | Futurewei Technologies, Inc. | Namespace Access Control in NVM Express PCIe NVM with SR-IOV |
US20160098372A1 (en) * | 2014-10-03 | 2016-04-07 | Futurewei Technologies, Inc. | METHOD TO USE PCIe DEVICE RESOURCES BY USING UNMODIFIED PCIe DEVICE DRIVERS ON CPUs IN A PCIe FABRIC WITH COMMODITY PCI SWITCHES |
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 |
KR20170013713A (ko) * | 2015-07-28 | 2017-02-07 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 가상화 시스템 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8141092B2 (en) * | 2007-11-15 | 2012-03-20 | International Business Machines Corporation | Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition |
US8489699B2 (en) | 2010-08-13 | 2013-07-16 | Vmware, Inc. | Live migration of virtual machine during direct access to storage over SR IOV adapter |
US9430642B2 (en) | 2013-09-17 | 2016-08-30 | Microsoft Technology Licensing, Llc | Providing virtual secure mode with different virtual trust levels each having separate memory access protections, interrupt subsystems and private processor states |
US9262192B2 (en) * | 2013-12-16 | 2016-02-16 | Vmware, Inc. | Virtual machine data store queue allocation |
WO2016196766A2 (en) | 2015-06-03 | 2016-12-08 | Diamanti, Inc. | Enabling use of non-volatile media - express (nvme) over a network |
US9823849B2 (en) * | 2015-06-26 | 2017-11-21 | Intel Corporation | Method and apparatus for dynamically allocating storage resources to compute nodes |
US10649674B2 (en) * | 2018-05-03 | 2020-05-12 | Western Digital Technologies, Inc. | Extended controller pre-initialization using boot partitions in solid state systems |
US10564872B2 (en) * | 2018-06-29 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for dynamic allocation to a host of memory device controller memory resources |
-
2019
- 2019-03-15 US US16/355,271 patent/US11068203B2/en active Active
- 2019-07-31 CN CN201980059141.1A patent/CN112673341B/zh active Active
- 2019-07-31 KR KR1020217004837A patent/KR20210024195A/ko not_active Application Discontinuation
- 2019-07-31 WO PCT/US2019/044513 patent/WO2020028573A1/en active Application Filing
- 2019-07-31 CN CN202410297034.5A patent/CN118193424A/zh active Pending
-
2021
- 2021-06-22 US US17/304,522 patent/US11836380B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130000253A (ko) * | 2011-06-22 | 2013-01-02 | 한국과학기술원 | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 |
US20140281040A1 (en) * | 2013-03-13 | 2014-09-18 | Futurewei Technologies, Inc. | Namespace Access Control in NVM Express PCIe NVM with SR-IOV |
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 |
US20160098372A1 (en) * | 2014-10-03 | 2016-04-07 | Futurewei Technologies, Inc. | METHOD TO USE PCIe DEVICE RESOURCES BY USING UNMODIFIED PCIe DEVICE DRIVERS ON CPUs IN A PCIe FABRIC WITH COMMODITY PCI SWITCHES |
KR20170013713A (ko) * | 2015-07-28 | 2017-02-07 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 가상화 시스템 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251118A (zh) * | 2023-11-16 | 2023-12-19 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
CN117251118B (zh) * | 2023-11-16 | 2024-02-13 | 上海创景信息科技有限公司 | 支持虚拟NVMe仿真与集成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11068203B2 (en) | 2021-07-20 |
US20200042246A1 (en) | 2020-02-06 |
CN112673341B (zh) | 2024-04-02 |
US11836380B2 (en) | 2023-12-05 |
WO2020028573A1 (en) | 2020-02-06 |
KR20210024195A (ko) | 2021-03-04 |
CN118193424A (zh) | 2024-06-14 |
US20210311665A1 (en) | 2021-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112673341B (zh) | 具有可配置存储的NVMe直接虚拟化 | |
CN113795828B (zh) | 多功能装置的服务类别 | |
US11698876B2 (en) | Quality of service control of logical devices for a memory sub-system | |
US11126375B2 (en) | Arbiter circuit for commands from multiple physical functions in a memory sub-system | |
US11663133B2 (en) | Memory tiering using PCIe connected far memory | |
KR102519904B1 (ko) | 영구 메모리 할당 및 구성 | |
US9003071B2 (en) | Namespace access control in NVM express PCIe NVM with SR-IOV | |
CN113126904B (zh) | 存储器命令的功能仲裁和服务质量 | |
US11675724B2 (en) | Memory sub-system with multiple ports having single root virtualization | |
WO2018113030A1 (en) | Technology to implement bifurcated non-volatile memory express driver | |
US20240320029A1 (en) | Managing data placement for direct assigned virtual machines in a memory sub-system | |
US11972125B2 (en) | Memory sub-system dynamic QOS pool | |
US10579392B2 (en) | System and method for mapping physical memory with mixed storage class memories | |
CN112988861A (zh) | 控制与键-值数据库相关联的输入/输出流的服务质量 |
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 |