CN113396399A - 具有带单根虚拟化的多个端口的存储器子系统 - Google Patents
具有带单根虚拟化的多个端口的存储器子系统 Download PDFInfo
- Publication number
- CN113396399A CN113396399A CN201980091437.1A CN201980091437A CN113396399A CN 113396399 A CN113396399 A CN 113396399A CN 201980091437 A CN201980091437 A CN 201980091437A CN 113396399 A CN113396399 A CN 113396399A
- Authority
- CN
- China
- Prior art keywords
- host system
- memory device
- host
- memory
- subset
- 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 title description 230
- 230000006870 function Effects 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims description 37
- 230000002093 peripheral effect Effects 0.000 claims description 8
- 238000012005 ligant binding assay Methods 0.000 abstract 2
- 230000008569 process Effects 0.000 description 17
- 239000000872 buffer Substances 0.000 description 14
- 238000002955 isolation Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 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
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Dram (AREA)
Abstract
一种处理装置执行包含以下各项的操作:检测连接到存储器装置的多个接口端口中的第一接口端口的第一主机系统,所述第一主机系统是多个主机系统中的一个。检测连接到所述多个接口端口中的第二接口端口的第二主机系统,所述第二主机系统是所述多个主机系统中的一个。使用根输入/输出虚拟化SR‑IOV将与所述存储器装置相关联的多个虚拟函数VF的第一子集指派给所述第一主机系统并且使用SR‑IOV将所述多个VF的第二子集指派给所述第二主机系统。将逻辑块地址LBA的第一对应的范围分配给VF的所述第一子集中的每个VF并且将LBA的第二对应的范围分配给VF的第二子集中的每个VF。
Description
技术领域
本公开大体上涉及存储器系统,且更确切地说,涉及具有带单根虚拟化的多个端口的存储器子系统。
背景技术
存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件中检索数据。
附图说明
根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2说明根据本公开的一些实施例的包含具有带单根虚拟化的多个端口的存储器子系统的实例计算系统。
图3说明根据本公开的一些实施例的用于SR-IOV虚拟化的存储器子系统中的虚拟函数存储器部分映射。
图4是根据本公开的一些实施例的管理存储器子系统的多个具备SR-IOV能力的接口端口的实例方法的流程图。
图5是根据本公开的一些实施例的支持存储器子系统的多个具备SR-IOV能力的接口端口的将虚拟函数指派给虚拟机的实例方法。
图6是本公开的实施例可以在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及支持在存储器子系统中具有单根输入/输出(I/O)虚拟化的多个端口。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可以利用存储器子系统,所述存储器子系统包含一或多个存储器组件,例如,存储数据的存储器装置。主机系统可以提供将存储在存储器子系统处的数据且可以请求将从存储器子系统中检索的数据。
在常规存储器子系统中,单个接口端口可以用于在存储器子系统与主机系统之间传输数据。具有多个虚拟机的多个主机(例如,不同的芯片上系统(SOC)装置)可以与存储器子系统交互。虚拟机可以是物理主机系统或主机系统的其它此类物理资源的模拟。因此,存储器子系统可以用于存储和检索用于由多个主机系统提供的不同的虚拟机的数据。为了管理从存储器子系统的存储器装置到在不同的主机系统处的不同的虚拟机的数据的传输,存储器子系统的存储资源可以通过利用单根输入/输出虚拟化(SR-IOV)的单个接口端口的使用而共享。在一些实施例中,SR-IOV可以提供接口的资源的隔离,例如,外围组件互连高速(PCIe),其用于通过不同的虚拟机从存储器子系统读取数据并且将数据写入到存储器子系统。举例来说,SR-IOV可以提供由单独的虚拟机各自指派或使用的不同的虚拟函数(VF)。
如果常规存储器子系统将由多个主机系统使用,那么存储器子系统的单个接口端口用于与不同的主机系统的不同的虚拟机共享存储器子系统的存储资源。为了管理具有单个接口端口的多个主机系统的利用,交换机可以用作存储器子系统与主机系统中的每一个之间的中介。举例来说,交换机可以是通过用于主机系统中的每一个的单个接口端口提供对存储器子系统的存取的PCIe交换机。交换机可以因此将利用单根输入/输出虚拟化的单个接口端口依序(即,在不同的存取时间周期期间)暴露于不同的主机系统中的每一个。举例来说,由SR-IOV提供的不同的虚拟函数中的所有的虚拟函数可以暴露于所有的主机系统。然而,单独的交换机的利用可以给存储器子系统添加成本和功率消耗费用,这是因为交换机是将与主机系统耦合的单独的且离散的组件。另外,单独的交换机存在存储器子系统的单点故障的风险,这是因为所有的主机系统都使用交换机连接到存储器子系统,因此交换机中的故障可以造成所有的主机系统都无法连接到存储器子系统。
本公开的方面通过在存储器子系统中引入多个接口端口使得存储器子系统可以被共享用于通过多个主机系统的存储解决了以上和其它缺陷。多个接口端口中的每一个支持单根虚拟化。举例来说,多个启用单根输入/输出虚拟化(SR-IOV)的接口端口可以由存储器子系统提供以启用对多个主机系统的存取而不需要单独的交换机。接口端口可以是PCIe端口或物理端口。存储器子系统的多个接口端口可以彼此同时地存取,使得多个主机系统可以在相同时间或至少在部分地重叠的存取时间周期期间存取存储器子系统。每个接口端口(例如,PCIe接口端口)可以使用SR-IOV以给每个主机系统提供虚拟函数的单独的群组。在实施方案中,存储器子系统可以具有可以由存储器子系统提供的最大数量的虚拟函数。因此,如果存储器子系统提供大量的接口端口,那么每个端口可以被指派较少数量的虚拟函数,使得指派给所有端口的虚拟函数的总数量并不超过存储器子系统所支持的虚拟函数的最大数量。类似地,如果存储器子系统提供较少数量的接口端口,那么每个端口可以被指派存储器子系统的更多的总虚拟函数。
在一些实施例中,存储器子系统可以包含两个或大于两个具备SR-IOV能力的接口端口。举例来说,存储器子系统可以由两个或大于两个主机系统利用,其中多个虚拟机可以在每个主机系统上运行。每个接口端口(例如,PCIe端口)可以是具备SR-IOV能力的并且因此可以将虚拟函数的群组提供到主机系统中的一个的虚拟机。SR-IOV是允许出于可管理性和性能原因在各种硬件函数之中的外围组件互连(PCI)高速(PCIe)资源的隔离同时还允许单个物理PCIe装置将在虚拟环境中共享的规范。SR-IOV将不同的虚拟函数(VF)提供到物理服务器机器上的不同的虚拟组件(例如,网络适配器)。SR-IOV还允许虚拟环境中的不同的虚拟机共享单个PCIe硬件接口。
在一个实施方案中,存储器子系统可以将每个接口端口的标识(例如,地址或其它此类标识)和具备SR-IOV能力的接口端口所支持的虚拟函数的群组提供到主机系统的虚拟机的群组。主机系统的每个虚拟机可以被指派接口端口的一个虚拟函数。因而,因为存储器子系统提供多个接口端口并且每个端口暴露可以由不同的主机系统利用的虚拟函数的单独的群组,所以并不需要在存储器子系统与主机系统之间的交换机的使用。
在一些实施例中,每个虚拟函数可以被指派存储器子系统的名称空间或逻辑块地址空间的一部分。举例来说,被指派有不同的虚拟函数的每个虚拟机可以具有对存储器子系统的逻辑块地址(LBA)空间的不同的部分的存取。逻辑块地址空间可以被映射到存储器子系统的物理块地址空间。
在一些实施例中,存储器子系统控制器可以在不同的接口端口之间划分其总带宽。因此,每个接口端口可以与存储器子系统控制器的单独的缓冲器耦合,所述缓冲器可以用于临时存储从相应的接口端口接收到的和/或从控制器接收到的数据以在相应的接口端口上发射。
本公开的优点包含但不限于利用具有多个主机系统的存储器子系统的整体成本的减少,这是因为不需要单独的交换机的利用。随着多主机SOC和多VM(虚拟机)虚拟化环境的利用在企业数据中心(例如,汽车IVI(车载信息娱乐)、ADAS(高级驾驶员辅助系统)等)中变得更加普遍,多主机SOC的成本和功率消耗的减少是所期望的。此外,单独的交换机的利用的消除进一步消除了单点故障(即,单独的交换机)。因为存取是使用单独的接口端口提供到多个主机的,所以一个端口中的故障将仅影响连接到受到故障影响的端口的主机系统,而其它端口可以继续如预期的起作用,因此改进存储器子系统的可靠性。另外,存储器子系统的功率消耗可以减少,这是因为单独的交换机并不包含在存储器子系统中。此外,SR-IOV的使用消除了对用于虚拟化存储环境的超级监督器的需要。因此可以消除由超级监督器引入的软件额外开销,节省在系统层级的显著的成本和功率并且允许在存储器子系统与主机SOC之间的裸金属连接。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可以包含媒体,例如,一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或这些的组合。
存储器子系统110可以是存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器,以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),以及非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可以是计算装置,例如,桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车,或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可以包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁性连接等连接。
主机系统120可以包含处理器芯片组以及由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110例如将数据写入到存储器子系统110并且从存储器子系统110读取数据。
主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于,串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤信道、串行附接的SCSI(SAS)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM高速(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号的接口。
存储器装置可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),例如,动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)类型快闪存储器和就地写入存储器,例如,三维交叉点(“3D交叉点”)存储器。3D交叉点存储器装置是可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变而执行位存储的非易失性存储器单元的交叉点阵列。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可以执行就地写入操作,其中可以在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
虽然描述了例如3D交叉点类型和NAND类型快闪存储器的非易失性存储器组件,但是存储器装置130可以基于任何其它类型的非易失性存储器,例如,只读存储器(ROM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM),以及非易失性存储器单元的交叉点阵列。
一种类型的存储器单元,例如,单层级单元(SLC)可以每单元存储一个位。其它类型的存储器单元,例如,多层级单元(MLC)、三层级单元(TLC)和四层级单元(QLC)可以每单元存储多个位。在一些实施例中,存储器装置130中的每一个可以包含一或多个存储器单元阵列,例如,SLC、MLC、TLC、QLC,或这些的任何组合。在一些实施例中,特定存储器装置可以包含存储器单元的SLC部分,以及MLC部分、TLC部分,或QLC部分。存储器装置130的存储器单元可以分组为可以指代用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可以被分组以形成块。一些类型的存储器(例如,3D交叉点)可以将跨裸片和信道的页分组以形成管理单元(Mu)。
存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据之类的操作以及其它此类操作。存储器子系统控制器115可以包含硬件,例如,一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可以包含具有用于执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。
存储器子系统控制器115可以包含经配置以执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可以包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可以包含用于存储微码的只读存储器(ROM)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110可不包含存储器子系统控制器115,且可替代地依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可以从主机系统120接收命令或操作,并且可以将所述命令或操作转换成指令或适当的命令以实现对存储器装置130的所期望的存取。存储器子系统控制器115可以负责其它操作,例如,耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名称空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可以进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可以包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可以从存储器子系统控制器115接收地址并且对地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115进行操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可以在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含多个SR-IOV端口组件113,其可以用于支持存储器子系统中的多个具备SR-IOV能力的端口,使得存储器子系统可以由多个主机系统共享用于存储。在实施方案中,存储器子系统110可以使用存储器子系统110的多个具备SR-IOV能力的接口端口由多个主机系统共享,而无需单独的交换机。(例如,具有多主机能力的PCIe交换机)。存储器子系统110的多个接口端口可以彼此同时地运行,使得多个主机系统可以在相同时间或在时间上至少部分地重叠地存取存储器子系统110,方法是允许每个主机系统连接到存储器子系统的一个接口端口。每个接口端口(例如,PCIe接口端口)可以使用SR-IOV以将存储器子系统110的虚拟函数的群组提供到连接到接口端口的主机系统。在实施方案中,存储器子系统110可以具有可以由存储器子系统提供的最大数量的虚拟函数。在此情况下,指派给每个接口端口的虚拟函数的数量可以通过用存储器子系统110的接口端口的数量除以存储器子系统的虚拟函数的总数量来确定。
在实施方案中,存储器子系统110可以包含两个或大于两个具备SR-IOV能力的接口端口。举例来说,存储器子系统可以由两个或大于两个主机系统120利用,其中多个虚拟机可以在每个主机系统上运行。每个接口端口(例如,PCIe端口)可以是具备SR-IOV能力的并且因此可以将虚拟函数的群组提供到主机系统中的一个的虚拟机。SR-IOV是允许出于可管理性和性能原因在各种硬件函数之中的外围组件互连(PCI)高速(PCIe)资源的隔离同时还允许单个物理PCIe装置将在虚拟环境中共享的规范。SR-IOV将不同的虚拟函数(VF)提供到物理服务器机器上的不同的虚拟组件(例如,网络适配器)。SR-IOV还允许虚拟环境中的不同的虚拟机共享单个PCIe硬件接口。
在一个实施方案中,多个SR-IOV端口组件113可以将每个接口端口的标识(例如,地址或其它此类标识)和具备SR-IOV能力的接口端口所支持的虚拟函数的群组提供到主机系统120的虚拟机的群组。主机系统120的每个虚拟机可以被指派接口端口的一个虚拟函数。因而,因为存储器子系统110提供各自暴露可以由不同的主机系统利用的虚拟函数的单独的群组的多个接口端口,所以并不需要在存储器子系统110与主机系统120之间的交换机的使用。
在一些实施方案中,多个SR-IOV端口组件113可以将存储器子系统110的名称空间或逻辑块地址空间的一部分指派给每个虚拟函数。举例来说,被指派有虚拟函数的每个虚拟机可以具有对存储器子系统110的逻辑块地址空间(LBA)的不同的部分的存取。逻辑块地址空间可以被映射到存储器子系统的物理块地址空间。在一些实施方案中,存储器子系统控制器115可以确定虚拟函数的群组被指派给具有用于每个虚拟函数的特定LBA范围的接口端口。在相同或替代实施例中,控制器115可以修改指派给接口端口中的每一个的虚拟函数的数量。举例来说,可以提供给与特定接口端口耦合的主机系统的虚拟机的虚拟函数的数量可以是基于通过主机系统的虚拟机的存储器子系统110的存储资源的使用增大或减小的。在一些实施例中,不同的LBA范围(例如,映射到对应的不同量的物理块地址的不同量的逻辑块地址)可以被指派给不同的虚拟函数。举例来说,接口端口的虚拟函数可以被指派与另一接口端口的虚拟函数相比较大的LBA范围。不同的LBA范围可以基于连接到接口端口的主机系统的不同的虚拟机或应用程序的使用。
在一些实施方案中,存储器子系统控制器115的每个接口端口可以与存储器子系统控制器115的单独的存储器缓冲器耦合。以此方式,控制器115可以在不同的接口端口之间划分其带宽,使得所有端口可以并行地工作。因此,每个接口端口可以在指派给接口端口的缓冲器中临时存储从控制器115接收到的数据。类似地,控制器115可以将从相应的接口端口接收到的数据存储在专用于端口的缓冲器中直至控制器115准备好处理来自端口的数据为止。
图2说明根据本公开的一些实施例的包含具有带单根虚拟化的多个端口的存储器子系统110的实例计算系统200。存储器子系统110可以连接到多个主机系统210-240。每个主机系统210-240可以与图1的主机系统120相同或类似。在实施方案中,每个主机系统210-240可以是单独的芯片上系统(SOC)或提供虚拟机的群组的另一主机系统。举例来说,每个主机系统210-240可以是提供或执行虚拟机的群组的单独的处理器核心或处理装置。每个主机系统210-240可以通过由存储器子系统110的存储器子系统控制器115提供的接口端口250A-D中的一个与存储器子系统110耦合。举例来说,PCIe接口可以在每个主机系统与接口端口之间被利用使得每个主机系统210-240与存储器子系统110的不同的接口端口250A-D耦合。在另一实例中,两个主机系统可以与单个接口端口250A-D耦合(例如,使用单独的PCIe交换机),因此增大可以存取存储器子系统110的主机系统的数量。
在说明性实例中,主机系统210-240可以是芯片上系统(SOC)主机并且存储器子系统110可以具有四个PCIe端点端口。每个接口端口可以具有一个通道并且可以自动检测每个链路以连接到每个主机SOC RC(根复合体)。在实施方案中,接口端口链路/通道组合可以包含:4个端口,1个通道;3个端口,1个通道;2个端口,2个通道;以及1个端口,4个通道。PCIePHY层可以多达四种方式分支,每个接口端口一个以便共享存储器子系统110的后端存储的带宽。每个接口端口将该端口上的VF的群组暴露给每个主机SOC,其继而具有跨越其CPU核心运行的多个VM。
在实施方案中,接口端口250A可以连接到主机系统210。接口端口250A可以被分配虚拟函数(VF)251A-C。为了允许共享存储器子系统110的资源的隔离,端口250A的每个VF251A-C可以由主机系统210的一个虚拟机(VM)211A-C利用。在此情况下,VF 251A可以被指派给主机系统210的VM 211A,VF 251B可以被指派给主机系统210的VM 211B,并且VF 251C可以被指派给主机系统210的VM 211C。在实施方案中,存储器子系统110的每个VF 251A-L可以被分配存储器装置130-140的LBA的对应的范围,使得每个VF 251A-L具有存储器子系统中110中的专用的名称空间。
具备SR-IOV能力的端口250B可以被分配VF 251D-F。为了允许由不同的VM和主机系统使用的资源的隔离,端口250B的每个VF 251D-F可以由主机系统220的一个VM 221A-C利用。在此情况下,VF 251D可以被指派给主机系统220的VM 221A,VF251E可以被指派给主机系统220的VM 221B,并且VF 251F可以被指派给主机系统220的VM 221C。类似地,具备SR-IOV能力的端口250C可以连接到主机系统230,并且可以被分配VF 251G-I。VF 251G可以被指派给主机系统230的VM 231A,VF 251H可以被指派给主机系统230的VM 231B,并且VF251I可以被指派给主机系统230的VM231C。同样地,具备SR-IOV能力的端口250D可以连接到主机系统240,并且可以被分配VF 251J-L。VF 251J可以被指派给主机系统240的VM 241A,VF 251K可以被指派给主机系统240的VM 241B,并且VF 251L可以被指派给主机系统240的VM 241C。
在实施方案中,每个VM 211A-C、221A-C、231A-C和241A-C可以使用其指派的VF来存取存储器装置130-140中的一个内的单独的名称空间。举例来说,每个VF 251A-L可以被分配专用于该VF的存储器装置130-140a的LBA的特定范围。这使得与VF相关联的VM能够存取存储器的单独的部分,如本文中在下文更详细地解释。
在某些实施方案中,存储器子系统控制器115的每个接口端口250A-D可以与控制器115的存储器缓冲器258中的单独的缓冲器耦合。单独的缓冲器使得控制器115能够服务于接口端口250A-D并且隔离进出每个端口的数据,使得接口端口250A-D可以并行地工作。因此,每个接口端口250A-D可以将从控制器115接收到的数据存储在指派给接口端口的缓冲器中以用于由端口250A-D进一步处理。类似地,控制器115可以将从相应的接口端口接收到的数据存储在专用于端口的缓冲器中直至控制器115准备好处理来自端口的数据为止。在说明性实例中,存储器缓冲器258使得同时的存储器存取请求能够在接口端口250A-D处被接收到。在当前请求在对应的接口端口处被处理时存储器存取请求可以保留在相关联的存储器缓冲器中。一旦接口端口已经完成当前请求的处理,则可以从相关联的存储器缓冲器中检索下一个请求以供处理,并且可以将另一存储器存取请求添加到存储器缓冲器。
图3说明根据本公开的一些实施例的用于SR-IOV虚拟化的存储器子系统中的虚拟函数存储器部分映射。如上文所描述,多个SR-IOV端口组件113将存储器装置130-140中的一个的对应的部分分配给存储器子系统110中的每个虚拟函数(VF)320A-D。多个VF 320A-D是使用SR-IOV 313提供在存储器子系统110中的,如本文中在上文更详细地解释。如图3中所说明,VF 320A是存储器装置130的所分配的部分302,VF 320B是存储器装置130的所分配的部分304,VF 320C是存储器装置140的所分配的部分306,并且VF 320D是存储器装置140的所分配的部分308。在其它实施例中,相应的部分可以跨越存储器装置130-140中的两个或大于两个。每个部分302-308可以具有固定大小或者可以具有不同的大小。举例来说,部分302可以大于部分304,部分304可以大于部分306,部分306可以与部分308相同大小。在一个实施例中,每个部分302-308由唯一名称空间表示。当存储器装置通过NVMe协议配置时,名称空间是一定量的一或多个存储器装置130-140,其可以被格式化成逻辑块(例如,LBA空间的范围)。NVMe协议提供对名称空间的存取,其呈现为文件系统和应用程序可以部署在上面而没有任何修改的标准块装置。每个虚拟函数320A-D可以具有一或多个单独的名称空间,每个由唯一名称空间ID(NSID)识别。
在说明性实例中,存储器子系统110可以提供每个VF 320A-D的标识(例如,虚拟PCIe接口),其可以通过装置标识的PCIe接口来支持。在一些实施例中,每个部分302-308可以是存储器装置130-140的LBA空间的布置。因此,被指派虚拟函数的主机系统的每个虚拟机(例如,通过使用VF的装置标识连接到VF)可以被指派存储器子系统110的逻辑块地址空间的不同的部分。逻辑块地址空间可以被映射到存储器子系统110的物理块地址空间。
在一些实施例中,存储器子系统110的控制器115可以指定虚拟函数的群组被指派给具有用于每个虚拟函数的特定LBA范围的接口端口。在相同或替代实施例中,控制器可以修改指派给接口端口中的每一个的虚拟函数的数量。举例来说,可以提供给与特定接口端口耦合的主机系统的虚拟机的虚拟函数的数量可以是基于通过主机系统的虚拟机的存储器子系统的存储资源的使用增大或减小的。在一些实施例中,不同的LBA范围(例如,映射到对应的不同量的物理块地址的不同量的逻辑块地址)可以被指派给不同的虚拟函数。举例来说,接口端口的虚拟函数可以被指派与另一接口端口的虚拟函数相比较大的LBA范围。不同的LBA范围可以基于对应的主机系统的不同的虚拟机或应用程序的使用。
图4是根据本公开的一些实施例的管理存储器子系统的多个具备SR-IOV能力的接口端口的实例方法的流程图。方法400可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400通过图1的多个SR-IOV端口组件113来执行。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作410处,处理逻辑检测作为多个主机系统中的一个的可以连接到存储器装置的第一主机系统。第一主机系统连接到存储器装置的多个接口端口中的第一接口端口。在一个实施方案中,多个接口端口中的每一个可以是外围组件互连高速(PCIe)端口,并且每个PCIe是具备SR-IOV能力的,如本文中在上文更详细地解释。
在一个实例中,多个接口端口可以通过多个主机系统同时存取而不需要单独的交换机。因此,存储器子系统可以使用多个接口端口提供对其存储装置到主机系统的同时的存取,如本文中更详细地解释。
在操作420处,处理逻辑检测作为多个主机系统中的一个的可以连接到存储器装置的第二主机系统。第二主机系统连接到存储器装置的多个接口端口中的第二接口端口,第二接口端口不同于存储器装置的第一接口端口。
在操作430处,处理逻辑使用根输入/输出虚拟化(SR-IOV)将与存储器装置相关联的总虚拟函数(VF)的第一子集指派给第一主机系统。在实施方案中,VF的第一子集对应于共享每个接口端口的物理资源的虚拟PCIe接口的群组。另外,对于多个主机系统中的每一个,处理逻辑可以将指派给相应的主机系统的VF的对应的子集中的对应的VF指派给在相应的主机系统上运行的多个虚拟机中的对应的虚拟机,如本文中更详细地描述。
在操作440处,处理逻辑将存储器装置的逻辑块地址(LBA)的第一对应的范围分配给指派给第一主机系统的虚拟函数的第一子集中的每个VF。在实施方案中,逻辑块地址空间可以被映射到存储器子系统的一或多个存储器装置的物理块地址空间,如本文中在上文更详细地解释。
在操作430处,处理逻辑使用根输入/输出虚拟化(SR-IOV)将与存储器装置相关联的总虚拟函数(VF)的第一子集指派给第一主机系统。在实施方案中,VF的第一子集对应于共享每个接口端口的物理资源的虚拟PCIe接口的群组。另外,对于多个主机系统中的每一个,处理逻辑可以将指派给相应的主机系统的VF的对应的子集中的对应的VF指派给在相应的主机系统上运行的多个虚拟机中的对应的虚拟机,如本文中更详细地描述。
在操作440处,处理逻辑将存储器装置的逻辑块地址(LBA)的第一对应的范围分配给指派给第一主机系统的虚拟函数的第一子集中的每个VF。在实施方案中,逻辑块地址空间可以被映射到存储器子系统的一或多个存储器装置的物理块地址空间,如本文中在上文更详细地解释。
在操作450处,处理逻辑使用根输入/输出虚拟化(SR-IOV)将与存储器装置相关联的总VF的第二子集指派给第二主机系统。在实施方案中,VF的第一子集对应于共享每个接口端口的物理资源的虚拟PCIe接口的群组。
在操作460处,处理逻辑将存储器装置的逻辑块地址(LBA)的第二对应的范围分配给指派给第二主机系统的虚拟函数的第二子集中的每个VF。在实施方案中,逻辑块地址空间可以被映射到存储器子系统的一或多个存储器装置的物理块地址空间,如本文中在上文更详细地解释。
图5是根据本公开的一些实施例的支持存储器子系统的多个具备SR-IOV能力的接口端口的将虚拟函数指派给虚拟机的实例方法。方法500可以通过处理逻辑来执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500通过图1的多个SR-IOV端口组件113来执行。虽然以特定序列或次序来示出,但是除非另外指定,否则可以修改过程的次序。因此,所说明的实施例应仅作为实例来理解,且所说明的过程可以不同的次序来执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作510处,处理逻辑使用具备SR-IOV能力的端口提供对主机SOC的存储器装置存取。在实施方案中,存储器子系统可以检测到主机SOC连接到存储器子系统的多个PCIe端口中的一个PCIe端口,如本文中更详细地描述。此外,响应于检测主机SOC,存储器子系统可以将PCIe端口指派给主机SOC,方法是将具备SR-IOV能力的PCIe端口的装置标识提供给主机SOC。
在操作520处,处理逻辑检测指派给PCIe端口的多个虚拟函数。在实施方案中,存储器子系统可以识别PCIe总线或接口所支持的虚拟函数。举例来说,存储器子系统可以提供每个虚拟函数的标识(例如,虚拟PCIe接口),其可以通过所识别的端口的PCIe接口来支持,如本文中更详细地描述。
在操作530处,处理逻辑检测在主机SOC上运行的第一虚拟机(VM)和第二VM。在实施方案中,主机SOC的每个VM可以被指派PCIe端口的专用VF,以便使VM存取存储器子系统的存储空间的对应的部分。因此,在操作540处,处理逻辑将PCIe端口的多个虚拟函数中的第一VF指派给主机SOC的第一VM。来自第一VM的所有存储器存取请求由PCIe端口的第一VF来服务。类似地,在操作550处,处理逻辑将PCIe端口的多个虚拟函数中的第二VF指派给主机SOC的第二VM。来自第二VM的所有存储器存取请求由PCIe端口的第二VF来服务。如本文中更详细地解释,通过使用指派给相应的主机SOC的PCIe端口的其指派的VF每个VM可以具有存储器子系统的存储器装置的专用部分。
图6说明计算机系统600的实例机器,在所述实例机器内可以执行用于使所述机器执行本文中所论述的方法中的任何一或多个的指令的集合。在一些实施例中,计算机系统600可以对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或者可以用于执行控制器的操作(例如,以执行操作系统来执行对应于图1的多个SR-IOV端口组件113的操作)。在替代实施例中,机器可以连接(例如,网络连接)到LAN、内联网、外联网和/或因特网中的其它机器。机器可以作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定将由所述机器采取的动作的指令的集合的任何机器。此外,虽然说明单个机器,但是还应认为术语“机器”包含机器的任何集合,所述集合单独地或联合地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多个。
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统618,其经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如,微处理器、中央处理单元,或类似者。更确切地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器,或类似者。处理装置602经配置以执行指令626以用于执行本文中所论述的操作和步骤。计算机系统600可以进一步包含网络接口装置608以在网络620上通信。
数据存储系统618可以包含机器可读存储媒体624(也被称为计算机可读媒体),其上存储有指令626的一或多个集合或体现本文中所描述的方法或功能中的任何一或多个的软件。指令626也可以在其由计算机系统600执行期间完全地或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可以对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于图1的多个SR-IOV端口组件113的功能性的指令。虽然在实例实施例中将机器可读存储媒体624示出为单个媒体,但是应认为术语“机器可读存储媒体”包含存储指令的一或多个集合的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令的集合且使得机器执行本公开的方法中的任何一或多个的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已经就计算机存储器内的数据位的操作的算法和符号表示而言呈现了之前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。算法在这里并且通常被认为是引起所期望的结果的操作的自洽序列。操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。已经证明有时候,主要出于通用的原因,将这些信号称为位、值、元件、符号、字符、术语、数字或类似者是方便的。
然而,应牢记,所有这些和类似术语应与适当的物理量相关联,且仅仅是应用于这些量的方便的标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于预期目的而专门构造,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或者它可证明构造用于执行所述方法的更加专业化的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。将了解,可以使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可以包含在其上存储有可以用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已经参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义而非限制性意义上看待说明书和图式。
Claims (20)
1.一种系统,其包括:
存储器装置;
多个接口端口,其以操作方式与所述存储器装置耦合;以及
处理装置,其以操作方式与所述存储器装置耦合以执行包括以下各项的操作:
检测连接到所述存储器装置的所述多个接口端口中的第一接口端口的第一主机系统,其中所述第一主机系统是多个主机系统中的一个;
检测连接到所述存储器装置的所述多个接口端口中的第二接口端口的第二主机系统,其中所述第二主机系统是所述多个主机系统中的一个;
使用根输入/输出虚拟化SR-IOV将与所述存储器装置相关联的多个虚拟函数VF的第一子集指派给所述第一主机系统;
将所述存储器装置的逻辑块地址LBA的第一对应的范围分配给虚拟函数的所述第一子集中的每个VF;
使用SR-IOV将与所述存储器装置相关联的所述多个VF的第二子集指派给所述第二主机系统;以及
将所述存储器装置的LBA的第二对应的范围分配给虚拟函数的所述第二子集中的每个VF。
2.根据权利要求1所述的系统,其中对于所述多个接口端口中的每个接口端口,所述处理装置进一步执行包括以下各项的操作:
检测连接到所述相应的接口端口的所述多个主机系统中的对应的主机系统;
使用根输入/输出虚拟化SR-IOV将与所述存储器装置相关联的所述多个虚拟函数VF的对应的子集指派给所述对应的主机系统;以及
将所述存储器装置的逻辑块地址LBA的对应的范围指派给虚拟函数的所述对应的子集中的每个VF。
3.根据权利要求1所述的系统,其中所述多个接口端口包括外围组件互连高速PCIe端口。
4.根据权利要求3所述的系统,其中所述多个PCIe端口中的所述每个PCIe端口是具备SR-IOV能力的。
5.根据权利要求3所述的系统,其中VF的所述子集对应于共享所述第一PCIe端口的物理资源的多个虚拟PCIe接口。
6.根据权利要求1所述的系统,其中对于所述多个主机系统中的每个主机系统,所述处理装置进一步执行包括以下各项的操作:
将指派给所述相应的主机系统的VF的所述子集中的对应的VF指派给所述相应的主机系统的多个虚拟机中的对应的虚拟机。
7.根据权利要求1所述的系统,其中所述第一主机系统以及所述第二主机系统同时存取它们的相应的端口。
8.根据权利要求1所述的系统,其中所述多个主机系统被提供对所述存储器装置的存取而没有单独的交换机。
9.一种方法,其包括:
检测连接到存储器装置的多个接口端口中的第一接口端口的第一主机系统,其中所述第一主机系统是多个主机系统中的一个;
检测连接到所述存储器装置的所述多个接口端口中的第二接口端口的第二主机系统,其中所述第二主机系统是所述多个主机系统中的一个;
使用根输入/输出虚拟化SR-IOV将与所述存储器装置相关联的多个虚拟函数VF的第一子集指派给所述第一主机系统;
将所述存储器装置的逻辑块地址LBA的第一对应的范围分配给虚拟函数的所述第一子集中的每个VF;
使用SR-IOV将与所述存储器装置相关联的所述多个VF的第二子集指派给所述第二主机系统;以及
将所述存储器装置的LBA的第二对应的范围分配给虚拟函数的所述第二子集中的每个VF。
10.根据权利要求9所述的方法,其中所述多个接口端口包括外围组件互连高速PCIe端口。
11.根据权利要求10所述的方法,其中所述多个PCIe端口中的所述每个PCIe端口是具备SR-IOV能力的。
12.根据权利要求10所述的方法,其中VF的所述子集对应于共享所述第一PCIe端口的物理资源的多个虚拟PCIe接口。
13.根据权利要求9所述的方法,其中对于所述多个主机系统中的每个主机系统:
将指派给所述相应的主机系统的VF的所述子集中的对应的VF指派给所述相应的主机系统的多个虚拟机中的对应的虚拟机。
14.根据权利要求9所述的方法,其中所述第一主机系统以及所述第二主机系统同时存取它们的相应的端口。
15.根据权利要求9所述的方法,其中所述多个主机系统被提供对所述存储器装置的存取而没有单独的交换机。
16.一种系统,其包括:
存储器装置;
多个接口端口,其以操作方式与所述存储器装置耦合;以及
处理装置,其以操作方式与所述存储器装置耦合以执行包括以下各项的操作:
使用存储器装置的多个接口端口提供对利用所述存储器装置的多个主机系统的存取,其中所述多个接口端口中的每个接口端口连接到所述多个主机系统中的单独的主机系统;以及
使用单根输入/输出虚拟化SR-IOV将所述存储器装置的多个虚拟函数VF的对应的子集指派给所述多个主机系统中的每个主机系统。
17.根据权利要求16所述的系统,其中对于所述多个主机系统中的每个主机系统,所述处理装置进一步执行包括以下各项的操作:
将所述存储器装置的逻辑块地址LBA的对应的范围指派给被指派给所述相应的主机系统的虚拟函数的所述对应的子集中的每个虚拟函数。
18.根据权利要求16所述的系统,其中所述多个接口端口包括外围组件互连高速PCIe端口。
19.根据权利要求18所述的系统,其中所述多个PCIe端口中的所述每个PCIe端口是具备SR-IOV能力的。
20.根据权利要求16所述的系统,其中对于所述多个主机系统中的每个主机系统,所述处理装置进一步执行包括以下各项的操作:
将指派给所述相应的主机系统的VF的所述对应的子集中的对应的VF指派给所述相应的主机系统的多个虚拟机中的对应的虚拟机。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862778515P | 2018-12-12 | 2018-12-12 | |
US62/778,515 | 2018-12-12 | ||
US16/711,337 | 2019-12-11 | ||
US16/711,337 US11194750B2 (en) | 2018-12-12 | 2019-12-11 | Memory sub-system with multiple ports having single root virtualization |
PCT/US2019/066065 WO2020123860A1 (en) | 2018-12-12 | 2019-12-12 | Memory sub-system with multiple ports having single root virtualization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113396399A true CN113396399A (zh) | 2021-09-14 |
CN113396399B CN113396399B (zh) | 2024-07-26 |
Family
ID=71071584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980091437.1A Active CN113396399B (zh) | 2018-12-12 | 2019-12-12 | 具有带单根虚拟化的多个端口的存储器子系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11194750B2 (zh) |
CN (1) | CN113396399B (zh) |
WO (1) | WO2020123860A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11704059B2 (en) * | 2020-02-07 | 2023-07-18 | Samsung Electronics Co., Ltd. | Remote direct attached multiple storage function storage device |
US11449456B2 (en) * | 2020-06-02 | 2022-09-20 | Microchip Technology Inc. | System and method for scheduling sharable PCIe endpoint devices |
US11593294B2 (en) * | 2021-05-20 | 2023-02-28 | Pensando Systems Inc. | Methods and systems for loosely coupled PCIe service proxy over an IP network |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707991A (zh) * | 2012-05-17 | 2012-10-03 | 中国科学院计算技术研究所 | 多根i/o 虚拟化共享方法和系统 |
CN104461958A (zh) * | 2014-10-31 | 2015-03-25 | 杭州华为数字技术有限公司 | 支持sr-iov的存储资源访问方法、存储控制器及存储设备 |
US20150169487A1 (en) * | 2013-12-13 | 2015-06-18 | Plx Technology, Inc. | Switch with synthetic device capability |
CN108027747A (zh) * | 2015-07-29 | 2018-05-11 | Netapp股份有限公司 | 在存储阵列系统中执行为单处理器环境设计的控制器固件的多处理 |
CN108139937A (zh) * | 2015-10-13 | 2018-06-08 | 华为技术有限公司 | 多根i/o虚拟化系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3350043B2 (ja) * | 1990-07-27 | 2002-11-25 | 株式会社日立製作所 | 図形処理装置及び図形処理方法 |
US8473947B2 (en) | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
US8521941B2 (en) | 2010-12-28 | 2013-08-27 | Plx Technology, Inc. | Multi-root sharing of single-root input/output virtualization |
US8990459B2 (en) * | 2011-04-30 | 2015-03-24 | Ineda Systems Pvt. Ltd | Peripheral device sharing in multi host computing systems |
US9311127B2 (en) | 2011-12-16 | 2016-04-12 | International Business Machines Corporation | Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies |
US9734096B2 (en) * | 2013-05-06 | 2017-08-15 | Industrial Technology Research Institute | Method and system for single root input/output virtualization virtual functions sharing on multi-hosts |
KR102387932B1 (ko) | 2014-07-31 | 2022-04-15 | 삼성전자주식회사 | 멀티 포트, 멀티 펑션 PCIe 장치의 호스트 명령어의 QoS 유지 방법 및 그 시스템 |
US10282220B2 (en) * | 2015-11-05 | 2019-05-07 | Dell Products, L.P. | Dynamic allocation of queue depths for virtual functions in a converged infrastructure |
US10587434B2 (en) * | 2017-07-14 | 2020-03-10 | Nicira, Inc. | In-band management interface with user space datapath |
US20190042329A1 (en) * | 2018-06-29 | 2019-02-07 | Utkarsh Y. Kakaiya | System with programmable multi-context accelerator circuitry |
-
2019
- 2019-12-11 US US16/711,337 patent/US11194750B2/en active Active
- 2019-12-12 CN CN201980091437.1A patent/CN113396399B/zh active Active
- 2019-12-12 WO PCT/US2019/066065 patent/WO2020123860A1/en active Application Filing
-
2021
- 2021-12-06 US US17/543,665 patent/US11675724B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707991A (zh) * | 2012-05-17 | 2012-10-03 | 中国科学院计算技术研究所 | 多根i/o 虚拟化共享方法和系统 |
US20150169487A1 (en) * | 2013-12-13 | 2015-06-18 | Plx Technology, Inc. | Switch with synthetic device capability |
CN104461958A (zh) * | 2014-10-31 | 2015-03-25 | 杭州华为数字技术有限公司 | 支持sr-iov的存储资源访问方法、存储控制器及存储设备 |
CN108027747A (zh) * | 2015-07-29 | 2018-05-11 | Netapp股份有限公司 | 在存储阵列系统中执行为单处理器环境设计的控制器固件的多处理 |
CN108139937A (zh) * | 2015-10-13 | 2018-06-08 | 华为技术有限公司 | 多根i/o虚拟化系统 |
Non-Patent Citations (1)
Title |
---|
李帅;孙磊;郭松辉;: "减少上下文切换的虚拟密码设备中断路径优化方法", 计算机应用, no. 07 * |
Also Published As
Publication number | Publication date |
---|---|
US11194750B2 (en) | 2021-12-07 |
US20200192848A1 (en) | 2020-06-18 |
US20220092013A1 (en) | 2022-03-24 |
US11675724B2 (en) | 2023-06-13 |
WO2020123860A1 (en) | 2020-06-18 |
CN113396399B (zh) | 2024-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675724B2 (en) | Memory sub-system with multiple ports having single root virtualization | |
US11282567B2 (en) | Sequential SLC read optimization | |
US11461256B2 (en) | Quality of service levels for a direct memory access engine in a memory sub-system | |
CN112805676B (zh) | 基于数据总线模式对读取操作和写入操作的调度 | |
US11604749B2 (en) | Direct memory access (DMA) commands for noncontiguous source and destination memory addresses | |
CN115543866A (zh) | 部分超级块存储器管理 | |
CN114724611A (zh) | 存储器子系统中的存储器装置的双交错编程 | |
US20240028239A1 (en) | Zone block staging component for a memory sub-system with zoned namespace | |
US20220050629A1 (en) | Completion management | |
KR20220070034A (ko) | 로드 명령을 위한 타임 투 리브 | |
WO2022027578A1 (en) | Memory overlay using host memory buffer | |
US12086412B2 (en) | Balancing performance between interface ports in a memory sub-system | |
US20240320029A1 (en) | Managing data placement for direct assigned virtual machines in a memory sub-system | |
US11189347B2 (en) | Resource management for memory die-specific operations | |
US11733925B2 (en) | Enabling multiple data capacity modes at a memory sub-system | |
US11734191B2 (en) | User process identifier based address translation | |
US20230058232A1 (en) | Partition command queues for a memory device | |
US20240069738A1 (en) | Accessing memory devices via switchable channels | |
US20220052948A1 (en) | Data packet management | |
CN115705853A (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 |