CN113885783B - 存储器系统及其操作方法 - Google Patents
存储器系统及其操作方法 Download PDFInfo
- Publication number
- CN113885783B CN113885783B CN202110249073.4A CN202110249073A CN113885783B CN 113885783 B CN113885783 B CN 113885783B CN 202110249073 A CN202110249073 A CN 202110249073A CN 113885783 B CN113885783 B CN 113885783B
- Authority
- CN
- China
- Prior art keywords
- virtual function
- function controller
- memory
- controller
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 44
- 230000006870 function Effects 0.000 claims abstract description 409
- 230000004044 response Effects 0.000 claims abstract description 32
- 238000004891 communication Methods 0.000 claims abstract description 22
- 230000008569 process Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 14
- 230000003863 physical function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0653—Monitoring storage devices or 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/0656—Data buffering 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/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
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种存储器系统,该存储器系统包括:第一虚拟功能控制器,与主机的第一虚拟机通信,并且被配置为从第一虚拟机接收用于访问命名空间的命令,并且向第一虚拟机提供对该命令的响应;第二虚拟功能控制器,与主机的第二虚拟机通信,并且被配置为联接到命名空间,并且基于第一虚拟功能控制器和第二虚拟功能控制器的状态信息来从第一虚拟功能控制器接收命令;缓冲存储器,与第一虚拟功能控制器和第二虚拟功能控制器通信,并且被配置为提供用于与命令相对应的数据的空间;以及存储器控制器,与第一虚拟功能控制器和第二虚拟功能控制器通信,并且被配置为基于命令访问命名空间,并且向缓冲存储器提供数据。
Description
相关申请的交叉引用
本专利文件要求于2020年7月2日提交的申请号为10-2020-0081367的韩国专利申请的优先权,该韩国专利申请的公开内容通过引用整体并入本文。
技术领域
本公开的各个实施例涉及一种支持多个虚拟功能的存储器系统。
背景技术
计算机环境范例已经转变成使计算系统可随时随地使用的普适计算。因此,诸如移动电话、数码相机和膝上型计算机的便携式电子装置的使用已经迅速增加。这些便携式电子装置通常使用具有一个或多个存储器装置的存储器系统来存储数据。存储器系统可以用作便携式电子装置的主存储器装置或辅助存储器装置。
因为存储器系统不需要机械驱动部件,所以该存储器系统具有诸如优异的稳定性和耐久性、高信息访问速度和低功耗的优点。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
发明内容
本公开的各个实施例涉及一种支持多个虚拟功能的存储器系统以及存储器系统的操作方法。所提出的存储器系统可以具有提高的访问性能。
根据实施例,一种存储器系统包括:第一虚拟功能控制器,与主机的第一虚拟机通信,并且被配置为从第一虚拟机接收用于访问命名空间的命令,并且向第一虚拟机提供对该命令的响应;第二虚拟功能控制器,与主机的第二虚拟机通信,并且被配置为联接到命名空间,并且基于第一虚拟功能控制器和第二虚拟功能控制器的状态信息来从第一虚拟功能控制器接收命令;缓冲存储器,与第一虚拟功能控制器和第二虚拟功能控制器通信,并且被配置为提供用于与命令相对应的数据的空间;以及存储器控制器,与第一虚拟功能控制器和第二虚拟功能控制器通信,并且被配置为基于命令来访问命名空间,并且向缓冲存储器提供数据。
根据实施例,一种用于操作存储器系统的方法包括:由存储器系统中的与主机的第一虚拟机通信的第一虚拟功能控制器接收用于访问存储器系统中的命名空间的命令,主机进一步包括第二虚拟机和第三虚拟机,第二虚拟机和第三虚拟机分别与第二虚拟功能控制器和第三虚拟功能控制器通信,并且与命名空间联接;由第一虚拟功能控制器基于第一虚拟功能控制器、第二虚拟功能控制器和第三虚拟功能控制器的状态信息,选择第二虚拟功能控制器和第三虚拟功能控制器中的一个作为所选择的虚拟功能控制器;由第一虚拟功能控制器向所选择的虚拟功能控制器发送命令;由第一虚拟功能控制器从所选择的虚拟功能控制器接收访问信息以访问与命令相对应的数据;并且由第一虚拟功能控制器将数据发送到第一虚拟机。
附图说明
图1和图2是示出根据所公开技术的实施例的包括存储器系统的数据处理系统的示图。
图3是示出当单个虚拟功能执行多个命令操作时数据处理系统的操作的示图。
图4至图6是示出根据所公开技术的第一实施例的存储器系统的操作的示图。
图7至图9是示出根据所公开技术的第二实施例的存储器系统的操作的示图。
具体实施方式
在下文中,将参照附图详细地描述本公开的各个实施例。
图1和图2是示出根据所公开技术的实施例的包括存储器系统300的数据处理系统100的示图。
参照图1,数据处理系统100可以包括主机系统200以及与主机系统200通信的存储器系统300。
主机系统200可以包括诸如移动电话、MP3播放器和膝上型计算机的各种便携式电子装置中的任意一种或者诸如台式计算机、游戏机、电视(TV)和投影仪的各种非便携式电子装置中的任意一种。
主机系统200可以包括至少一个操作系统(OS),该至少一个OS可以管理和控制主机系统200的全部功能和操作,并且提供主机系统200和使用数据处理系统100或存储器系统300的用户之间的互操作。OS可以支持与用户的使用目的和用途相对应的功能和操作,并且根据主机系统200的移动性,OS可以分为通用OS和移动OS。根据用户的使用环境,通用OS可以分为个人OS和企业OS。
存储器系统300可以响应于主机系统200的请求来操作以存储主机系统200的数据。例如,存储器系统300可以被实施为诸如以下的各种类型的存储装置中的任意一种:固态驱动器(SSD)、多媒体卡(MMC)、安全数字(SD)卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SMC)和记忆棒。MMC可以包括嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)和微型-MMC等。SD卡可以包括迷你-SD卡和微型-SD卡。
存储器系统300可以被实施为各种类型的存储装置中的任意一种。这样的存储装置的示例可以包括诸如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器装置。存储装置的其他示例可以包括诸如以下的非易失性存储器装置:只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM或ReRAM)和闪速存储器。闪速存储器可以具有三维(3D)堆叠结构。
主机系统200可以包括主机计算机210、主机存储器270和接口端口250。
主机计算机210可以驱动主机系统200的OS,并且运行程序的命令。主机计算机210可以被实施为单核或多核。
主机系统200可以驱动多个虚拟机(VM)212、214和216。多个虚拟机212、214和216可以被实施为诸如主机计算机210的物理机器中的软件。虚拟机212、214和216中的每一个可以用作客户操作系统。多个虚拟机212、214和216可以包括虚拟功能(VF)驱动器,用于联接到主机系统200的装置之间的通信。在图1中,多个虚拟机212、214和216以及VF驱动器由虚线表示。
主机存储器270可以是存储与由主机系统200驱动的OS有关的数据的易失性存储器。例如,主机存储器270可以被实施为诸如动态随机存取存储器(DRAM)和静态RAM(SRAM)的易失性存储器。
接口端口250可以支持与联接到主机系统200的装置的数据通信。例如,接口端口250可以支持主机系统200和存储器系统300之间的数据通信。
主机系统200可以进一步包括用于管理多个虚拟机212、214和216的虚拟机管理器(VMM)230。虚拟机管理器230也可以被称为管理程序(hypervisor)。虚拟机管理器230可以向虚拟机212、214和216中的每一个分配硬件资源,并且允许虚拟机212、214和216中的每一个访问所分配的资源。
当在虚拟机管理器230的中介协调下执行多个虚拟机212、214和216与其他装置之间的数据输入/输出(I/O)时,可能发生数据I/O的瓶颈。为了防止该瓶颈,接口端口250可以支持诸如单根I/O虚拟化(SR-IOV)的服务器虚拟化技术。
存储器系统300可以包括多个存储器装置352、354、356和358、存储器控制器330、缓冲存储器370和物理功能(PF)控制器310。存储器系统300可以支持SR-IOV。
物理功能控制器310可以支持存储器系统300和与其联接的主机系统200之间的数据通信。例如,物理功能控制器310可以支持通过接口端口250与主机计算机210的通信。另外,物理功能控制器310可以控制PCIe功能。
PCIe功能是指由PCIe总线控制访问的装置或模块。PCIe功能可以包括物理功能和虚拟功能。
物理功能可以是支持SR-IOV扩展功能的全PCIe功能。
虚拟功能可以是轻量化的(lightweight)功能,包括数据移动所需的资源。例如,虚拟功能可以包括多个存储器装置352、354、356和358的存储空间的至少一部分,并且包括虚拟功能控制器,该虚拟功能控制器使虚拟功能控制器与虚拟机212、214和216之间能够进行数据移动。
在主机系统200中驱动的虚拟机212、214和216可以通过各个虚拟功能控制器来访问存储器系统300。在图1的示例中,第一虚拟机212可以对应于第一虚拟功能控制器312,第二虚拟机214可以对应于第二虚拟功能控制器314,并且第三虚拟机216可以对应于第三虚拟功能控制器316。虚拟机212、214和216中的每一个可以通过使用虚拟功能驱动器来与相应的虚拟功能控制器进行通信。在图1中,多个虚拟功能控制器312、314和316由虚线表示。
当使用SR-IOV时,可以在虚拟机和与之对应的虚拟功能控制器之间移动数据,而无需通过虚拟机管理器230。例如,第一虚拟机212可以在主机存储器270中存储对存储器的访问命令。第一虚拟机212可以向第一虚拟功能控制器312提供指示主机存储器270中存储访问命令的位置的指针,而无需通过虚拟机管理器230。第一虚拟功能控制器312可以通过使用该指针来访问主机存储器270以获取访问命令。在图1中,多个虚拟机212、214和216与虚拟功能控制器312、314和316之间的虚拟化连接被表示为虚线箭头。另外,在图1中,主机计算机210、主机存储器270、接口端口250和物理功能控制器310之间的物理连接关系被表示为实线箭头以支持虚拟化连接。
多个存储器装置352、354、356和358可以是非易失性存储器装置,并且即使不供应电力也可以保留所存储的数据。多个存储器装置352、354、356和358可以通过编程操作存储从主机系统200提供的数据,并且可以通过读取操作将所存储的数据提供给主机系统200。存储器装置352、354、356和358中的每一个可以包括多个存储块,存储块中的每一个可以包括多个页面,并且页面中的每一个可以包括联接到字线的多个存储器单元。在实施例中,多个存储器装置352、354、356和358可以是闪速存储器,例如,NAND闪速存储器。闪速存储器可以具有3D堆叠结构。
当多个存储器装置352、354、356和358是闪速存储器装置时,闪速存储器装置可以将数据存储在包括存储器单元晶体管的存储器单元阵列中。多个存储器装置352、354、356和358可以具有存储器管芯、平面、存储块和页面的分层结构。例如,多个存储器装置352、354、356和358中的每一个可以对应于一个存储器管芯。一个存储器管芯可以包括多个平面,并且多个平面可以并行地处理由存储器管芯接收的命令。平面中的每一个可以包括多个存储块。存储块中的每一个可以是擦除操作的最小单位。一个存储块可以包括多个页面。页面中的每一个可以是写入操作的最小单位。
存储器控制器330可以被实施为微处理器或中央处理单元(CPU)的处理器。存储器控制器330可以响应于来自主机系统200的请求来控制多个存储器装置352、354、356和358。例如,存储器控制器330可以向主机系统200提供从多个存储器装置352、354、356和358读取的数据,并且将从主机系统200提供的数据存储在多个存储器装置352、354、356和358中。对于此操作,存储器控制器330可以控制多个存储器装置352、354、356和358的读取操作、编程操作和擦除操作。
另外,存储器控制器330可以对多个存储器装置352、354、356和358执行后台操作。例如,对多个存储器装置352、354、356和358的后台操作可以包括垃圾收集(GC)操作、损耗均衡(WL)操作、映射清除操作、坏块管理操作等。
缓冲存储器370可以存储与存储器系统300的写入操作和读取操作有关的数据。例如,缓冲存储器370可以响应于来自主机系统200的写入命令来缓冲待存储在存储器装置中的数据。进一步地,缓冲存储器370可以响应于来自主机系统200的读取命令来缓冲由存储器控制器330从存储器装置加载的数据。
缓冲存储器370可以被实施为易失性存储器。例如,缓冲存储器370可以被实施为静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)。缓冲存储器370可以设置在存储器控制器330的内部或外部。图1示出设置在存储器控制器330外部的缓冲存储器370。
存储器系统300中包括的构成元件可以集成到单个半导体装置中。例如,物理功能控制器310,存储器控制器330,多个存储器装置352、354、356和358以及缓冲存储器370可以集成为一个半导体装置以构成固态驱动器(SSD)。当存储器系统300用作SSD时,可提高联接到存储器系统300的主机系统200的操作速度。另外,物理功能控制器310,存储器控制器330,多个存储器装置352、354、356和358以及缓冲存储器370可以集成为一个半导体装置以构成存储卡。例如,物理功能控制器310,存储器控制器330,多个存储器装置352、354、356和358以及缓冲存储器370可以集成为一个半导体装置以构成诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)卡,紧凑型闪存(CF)卡,智能媒体(SM)卡,记忆棒,包括缩小尺寸的MMC(RS-MMC)和微型-MMC的多媒体卡(MMC),包括迷你-SD卡、微型-SD卡和SDHC卡的安全数字(SD)卡,或者通用闪存(UFS)装置。
图2是示出用于虚拟机通过虚拟功能控制器访问存储器系统的方法的示图。
图2示出包括主机系统200和存储器系统300的数据处理系统100。图2的主机系统200和存储器系统300分别对应于上面参照图1描述的主机系统200和存储器系统300。
存储器系统300可以包括多个命名空间NS_A、NS_B、NS_C和NS_D,多个命名空间中的每一个是可寻址逻辑存储器空间或与存储器系统300中的物理存储器空间相关联的域。存储器控制器330可以在逻辑上将在图1中示出的四个存储器装置352、354、356和358的存储空间分配给四个命名空间NS_A、NS_B、NS_C和NS_D。例如,存储器控制器330可以将预定范围内的逻辑地址分配给四个命名空间NS_A、NS_B、NS_C和NS_D中的每一个。基于实施方案,命名空间NS_A、NS_B、NS_C和NS_D可以具有相同的存储容量或不同的存储容量。
存储器控制器330可以向每个虚拟功能提供一个或多个命名空间。可以将命名空间中的每一个提供给一个或多个虚拟功能。仅提供给一个虚拟功能的命名空间可以被称为专用命名空间,并且提供给多个虚拟功能的命名空间可以被称为共享命名空间。
命名空间中的每一个都可以具有唯一的命名空间标识符(NSID)。在图2的示例中,多个命名空间NS_A、NS_B、NS_C和NS_D可以分别被标识为NSID1、NSID2、NSID3和NSID4。主机系统200可以指定NSID和逻辑地址以访问命名空间中的每一个的存储空间。
虚拟功能控制器可以访问一个或多个命名空间。虚拟机可以通过虚拟功能控制器访问一个或多个命名空间。在图2的示例中,第一虚拟机212可以通过第一虚拟功能控制器312访问命名空间NS_A和NS_D。第二虚拟机214可以通过第二虚拟功能控制器314访问命名空间NS_B和NS_D。第三虚拟机216可以通过第三虚拟功能控制器316访问命名空间NS_C和NS_D。
命名空间NS_A、NS_B和NS_C中的每一个都可以是只能由对应的虚拟功能控制器访问的专用命名空间。命名空间NS_D可以是可由多个虚拟功能控制器访问的共享命名空间。
虚拟机中的每一个可以向存储器系统300提供命令,并且使用一个或多个命令队列从存储器系统300接收对命令的响应。例如,虚拟机中的每一个可以使用提交队列SQ和完整队列CQ。提交队列SQ和完整队列CQ可以被包括在主机存储器270中。例如,虚拟机可以将命令排队到提交队列SQ中,并且通过使用提交队列门铃寄存器(doorbell register),将所排队的命令的位置通知给与该命令相对应的虚拟功能控制器。虚拟功能控制器可以访问该位置以获得命令,并且将该命令排队到内部命令队列CMDQ。当排队到内部命令队列CMDQ的命令被完全处理时,虚拟功能控制器可以通过使用完成队列门铃寄存器来提供响应。提交队列门铃寄存器和完成队列门铃寄存器可以被包括在主机存储器270中。
当使用SR-IOV时,虚拟机中的每一个可以避免通过虚拟机管理器230并且使用相应的虚拟功能控制器,以便与存储器系统300交换命令和数据。因此,可以减少多个虚拟机和多个虚拟功能控制器之间的数据输入/输出的瓶颈。
然而,当主机系统200向多个虚拟功能控制器之中的一个虚拟功能控制器提供多个访问命令时,可能延迟通过虚拟功能控制器的响应。
图3是示出当单个虚拟功能执行多个命令操作时数据处理系统100的操作的示图。
图3示出当第一虚拟功能控制器312接收第一读取命令和第二读取命令时的操作时序。
在步骤S302中,第一虚拟功能控制器312可以从第一虚拟机212接收第一读取命令。
例如,第一虚拟功能控制器312可以通过使用提交队列门铃寄存器从第一虚拟机212接收主机存储器270中的与存储第一读取命令的位置相对应的地址。第一虚拟功能控制器312可以通过使用该地址从主机存储器270中获取第一读取命令。
在步骤S304中,第一虚拟功能控制器312可以将与第一读取命令相对应的第一读取数据加载到缓冲存储器370。
例如,第一虚拟功能控制器312可以向缓冲存储器370分配待加载第一读取数据的缓冲空间。第一虚拟功能控制器312可以向存储器控制器330提供第一读取命令。存储器控制器330可以基于第一读取命令中包括的NSID和逻辑地址,将第一读取数据从存储第一读取数据的存储器装置加载到所分配的缓冲空间。
在步骤S306中,第一虚拟功能控制器312可以向第一虚拟机212提供加载到缓冲存储器370的第一读取数据。
例如,第一虚拟功能控制器312可以向主机存储器270提供第一读取数据,并且通过使用完成队列门铃寄存器向第一虚拟机212提供响应。
基于第一虚拟功能控制器312的控制,存储器控制器330处理从第一虚拟机212接收的命令,并且向第一虚拟机212提供响应。在第一虚拟功能控制器312控制存储器控制器330使得存储器控制器330处理从第一虚拟机212接收的命令并且将响应提供给第一虚拟机212的同时,第一虚拟功能控制器312可以处于忙碌状态。参照图3,在正执行步骤S304和S306的同时,第一虚拟功能控制器312处于忙碌状态。可以将虚拟功能控制器设计为在虚拟功能控制器处于忙碌状态的情况下不处理命令,以保证虚拟功能的原子性。因此,尽管虚拟功能控制器已经接收到命令,但是如果该虚拟功能控制器处于忙碌状态,则可以不处理所接收的命令。
例如,在步骤S308中,在第一虚拟功能控制器312响应于第一读取命令而加载第一读取数据的同时,第一虚拟功能控制器312可能从第一虚拟机212接收第二读取命令。在第一虚拟功能控制器312加载第一读取数据并且向主机提供第一读取数据之前,第一虚拟功能控制器312可以不处理第二读取命令。
当第一虚拟功能控制器312终止由于第一读取命令的忙碌状态时,第一虚拟功能控制器312可以处理第二读取命令并且向第一虚拟机212提供对第二读取命令的响应。
例如,在步骤S310中,当第一虚拟功能控制器312不再忙碌时,第一虚拟功能控制器312可以向存储器控制器330提供第二读取命令,并且控制存储器控制器330以将与第二读取命令相对应的第二读取数据加载到缓冲存储器370。
然后,在步骤S312中,第一虚拟功能控制器312可以向第一虚拟机212提供第二读取数据。
当第一虚拟功能控制器312执行步骤S306时,存储器控制器330以及多个存储器装置352、354、356和358可能未执行针对主机命令的操作。例如,第一虚拟功能控制器312可能处于忙碌状态,但是其他虚拟功能控制器可能处于空闲状态。因此,在存储器控制器330以及多个存储器装置352、354、356和358即使处于不执行针对主机命令的任何操作的空闲状态也不处理第二读取命令的这种情况下,存储器系统300的访问效率有限。
本公开的一些实施例提供了一种提供给特定虚拟功能控制器的命令在某些条件下由另一特定虚拟功能控制器处理的存储器系统。例如,与相应的虚拟功能控制器通信的特定虚拟机通过该相应的虚拟功能控制器提供针对共享命名空间的命令。当满足某些条件时,该命令可以由该相应的虚拟功能控制器以外的其他虚拟功能控制器来处理。
例如,当第一虚拟功能控制器312由于第一读取命令而处于忙碌状态时,如果针对共享命名空间的第二读取命令被提供给第一虚拟功能控制器312,则第一虚拟功能控制器312可以控制处于空闲状态并且共享该共享命名空间的第二虚拟功能控制器314来处理第二读取命令。第二虚拟功能控制器314可以将针对第二读取命令的读取数据加载到缓冲存储器370,并且向第一虚拟功能控制器312提供针对缓冲存储器370中的加载了该读取数据的空间的访问信息。通过这样做,第一虚拟功能控制器312可以向第一虚拟机212提供读取数据。根据这些实施例,可以提高对共享命名空间的访问性能。
在本公开的一些实施例中,存储器系统300可以进一步包括指示每个虚拟功能控制器处于忙碌状态还是空闲状态的状态寄存器318。参照图1,状态寄存器318可以联接到控制多个虚拟功能控制器312、314和316的物理功能控制器310。物理功能控制器310可以向虚拟功能控制器提供信号,并且当物理功能控制器310在预定时间内没有接收到对该信号的响应时,物理功能控制器310可以在状态寄存器318中指示该虚拟功能控制器处于忙碌状态。
在下文中,将参照图4至图9详细描述本公开的实施例。
图4至图6是示出根据第一实施例的存储器系统300的操作的示图。
图4是示出根据所公开技术的第一实施例的虚拟功能控制器的操作的流程图。图4示出第一虚拟功能控制器312执行步骤S402、S404、S406、S408、S410、S412、S414和S416。
在步骤S402中,第一虚拟功能控制器312可以从主机系统200接收用于访问命名空间的读取命令。读取命令可以包括NSID。
在步骤S404中,第一虚拟功能控制器312可以基于读取命令中包括的命名空间标识符(NSID)来确定读取命令是否用于访问共享命名空间。
当读取命令不是用于访问共享命名空间(即,在步骤S404中为“否”)时,第一虚拟功能控制器312可以在步骤S406中直接处理读取命令。
例如,第一虚拟功能控制器312可以分配缓冲存储器370的用于加载与读取命令相对应的读取数据的空间,并且向存储器控制器330提供读取命令。存储器控制器330可以将与读取命令相对应的读取数据加载到缓冲存储器370的所分配的空间。
在步骤S416中,响应于读取命令,第一虚拟功能控制器312可以向主机系统200提供加载到缓冲存储器370的所分配的空间的读取数据。
当读取命令是用于访问共享命名空间(即,在步骤S404中为“是”)时,在步骤S408中,第一虚拟功能控制器312可以确定第一虚拟功能控制器312是否处于忙碌状态。
当第一虚拟功能控制器312不处于忙碌状态(即,在步骤S408中为“否”)时,第一虚拟功能控制器312可以执行步骤S406和S416。
当第一虚拟功能控制器312处于忙碌状态(即,在步骤S408中为“是”)时,在步骤S410中,第一虚拟功能控制器312可以确定在共享该共享命名空间的虚拟功能控制器之中是否存在处于空闲状态的虚拟功能控制器。
在图2的示例中,第一至第三虚拟功能控制器312、314和316联接到命名空间NS_D。因此,在图2的示例中,第一至第三虚拟功能控制器312、314和316共享命名空间NS_D。第一虚拟功能控制器312可以确定第二虚拟功能控制器314和第三虚拟功能控制器316是否处于空闲状态。
联接到物理功能控制器310的状态寄存器318可以表示虚拟功能控制器处于忙碌状态还是空闲状态。第一虚拟功能控制器312可以访问联接到物理功能控制器310的状态寄存器318,并且确定第二虚拟功能控制器314和第三虚拟功能控制器316是否处于空闲状态。
当第二虚拟功能控制器314和第三虚拟功能控制器316都处于忙碌状态(即,在步骤S410中为“否”)时,第一虚拟功能控制器312可以重复执行步骤S408和S410,直到第一至第三虚拟功能控制器312、314和316中的任意一个变为空闲状态。
当第二虚拟功能控制器314和第三虚拟功能控制器316中的至少一个处于空闲状态(即,在步骤S410中为“是”)时,在步骤S412中,第一虚拟功能控制器312可以选择处于空闲状态的虚拟功能控制器,并且向所选择的虚拟功能控制器提供读取命令。第一虚拟功能控制器312向所选择的虚拟功能控制器提供读取命令的操作可以由物理功能控制器310控制。
所选择的虚拟功能控制器可以处理读取命令。例如,所选择的虚拟功能控制器可以针对读取命令分配缓冲存储器370的空间,接收读取命令并且将所接收的读取命令传输到存储器控制器330。可以将与读取命令相对应的读取数据加载到缓冲存储器370的所分配的空间。
在步骤S414中,第一虚拟功能控制器312可以从所选择的虚拟功能控制器获得针对缓冲存储器370的所分配的空间的访问信息,并且可以执行步骤S416。例如,所选择的虚拟功能控制器可以向第一虚拟功能控制器312提供指示缓冲存储器370的所分配的空间的地址。
根据本公开的第一实施例,在虚拟功能控制器处于忙碌状态的同时该虚拟功能控制器接收用于访问共享命名空间的读取命令时,共享该共享命名空间且处于空闲状态的另一虚拟功能控制器被配置为处理该读取命令。因此,可以分散虚拟功能控制器之间的吞吐量,并且可以提高存储器系统300的访问性能。
图5示出基于所公开技术的第一实施例的存储器系统的构成元件之间的事务。
图5示出第一虚拟功能控制器312、第二虚拟功能控制器314、状态寄存器318和存储器控制器330的事务。省略或简要描述已经参照图4描述的内容。
在步骤S502中,第一虚拟功能控制器312可以从主机系统200接收第一读取命令。如在步骤S404、S406、S408和S410中所述,第一虚拟功能控制器312可以检查第一读取命令是否是用于访问共享命名空间的命令以及第一虚拟功能控制器312是否处于忙碌状态。作为示例,图5示出本公开的第一实施例,其中如步骤S406所述,第一虚拟功能控制器312直接处理命令。
在步骤S504、S506和S508中,第一虚拟功能控制器312可以处理第一读取命令。
在步骤S504中,第一虚拟功能控制器312可以向存储器控制器330提供第一读取命令。第一虚拟功能控制器312可以向缓冲存储器370分配待加载与第一读取命令相对应的第一读取数据的存储器空间。
在步骤S506中,存储器控制器330可以响应于第一读取命令从存储器装置加载第一读取数据。
当存储器控制器330加载所有的第一读取数据时,在步骤S508中,存储器控制器330可以向第一虚拟功能控制器312提供响应。
在步骤S510中,第一虚拟功能控制器312可以向主机系统200提供第一读取数据。
在步骤S504、S506、S508和S510期间,第一虚拟功能控制器312可能处于忙碌状态。当第一虚拟功能控制器312处于忙碌状态时,第一虚拟功能控制器312可以从主机系统200接收命令。
例如,在执行步骤S506的同时,在步骤S512中,第一虚拟功能控制器312可以从主机系统200接收第二读取命令。
在步骤S514中,第一虚拟功能控制器312可以确定第二读取命令是否是用于访问共享命名空间的命令。在图5的示例中,假设第二读取命令是用于访问共享命名空间的命令。
在步骤S516中,第一虚拟功能控制器312可以确定自身的状态。在图5的示例中,由于第一虚拟功能控制器312正在处理第一读取命令,因此可以确定第一虚拟功能控制器312处于忙碌状态。
在步骤S518中,第一虚拟功能控制器312可以访问状态寄存器318,以便确定共享该共享命名空间的虚拟功能控制器的状态。
在步骤S520中,状态寄存器318可以响应于第一虚拟功能控制器312的访问来提供虚拟功能控制器中的每一个的状态信息。
在步骤S522中,第一虚拟功能控制器312可以选择处于空闲状态的一个虚拟功能控制器,以便控制所选择的虚拟功能控制器以处理第二读取命令。在图5的示例中,假设第二虚拟功能控制器314处于空闲状态,并且第二虚拟功能控制器314被第一虚拟功能控制器312选中。
在步骤S524中,第一虚拟功能控制器312可以向第二虚拟功能控制器314提供第二读取命令。
在步骤S526、S528和S530中,第二虚拟功能控制器314可以处理第二读取命令。
在步骤S526中,第二虚拟功能控制器314可以向存储器控制器330提供第二读取命令。第二虚拟功能控制器314可以向缓冲存储器370分配待加载与第二读取命令相对应的第二读取数据的存储器空间。
在步骤S528中,存储器控制器330可以响应于第二读取命令从存储器装置的共享命名空间加载第二读取数据。
图5示出在完全执行了在步骤S506中的加载第一读取数据的操作之后执行步骤S528的情况。但是,在某些情况下,可能会同时加载第一读取数据和第二读取数据。如参照图1所描述的,存储器系统300中包括的多个存储器装置352、354、356和358中的每一个可以并行操作。可以根据存储第一读取数据和第二读取数据的各个存储器装置以及存储器控制器330的命令调度来确定是同时读取还是顺序读取第一读取数据和第二读取数据。例如,当第一读取数据和第二读取数据存储在不同的存储器装置中时,可以同时加载第一读取数据和第二读取数据。当第一读取数据和第二读取数据存储在相同的存储器装置中时,可以在所有的第一读取数据都被加载之后再加载第二读取数据。
根据实施例,存储器控制器330可以将存储空间分配给命名空间,使得共享命名空间和专用命名空间包括不同存储器装置的存储空间。当第一读取命令是用于访问专用命名空间的命令,并且第二读取命令是用于访问共享命名空间的命令时,可以从多个存储器装置352、354、356和358同时加载第一读取数据和第二读取数据。
当完全加载了第二读取数据时,在步骤S530中,存储器控制器330可以向第二虚拟功能控制器314提供响应。
在步骤S532中,第二虚拟功能控制器314可以向第一虚拟功能控制器312提供针对缓冲存储器370中的加载了第二读取数据的空间的访问信息。
在步骤S534中,第一虚拟功能控制器312可以基于该访问信息来访问缓冲存储器370的空间,并且向主机系统200提供第二读取数据。
图6示意性地示出根据上面参照图5描述的第一实施例的操作时序。
图6示出在相同时间轴上的第一虚拟功能VF1和第二虚拟功能VF2的操作时序。图6表示参照图5描述的步骤中的一些的操作时序。
参照图6,在步骤S502中,第一虚拟功能控制器312可以从主机系统200接收第一读取命令,在步骤S506中,存储器控制器330可以加载第一读取数据,并且在步骤S510中,第一虚拟功能控制器312可以向主机系统200提供第一读取数据。在步骤S506和S510中,第一虚拟功能控制器312可以处于忙碌状态。在忙碌状态下,第一虚拟功能控制器312可以不处理新命令。
在步骤S512中,第一虚拟功能控制器312可以在处于忙碌状态时接收第二读取命令。当第二读取命令是用于访问共享命名空间的命令时,第一虚拟功能控制器312可以控制处于空闲状态的第二虚拟功能控制器314以处理第二读取命令。
在步骤S528中,存储器控制器330可以加载第二读取数据。在步骤S510中第一虚拟功能控制器312向主机系统200提供第一读取数据的同时,在步骤S528中,存储器控制器330可以在第二虚拟功能控制器314的控制下加载第二读取数据。
在步骤S534中,第一虚拟功能控制器312可以向主机系统200提供第二读取数据。
根据本公开的第一实施例,可以将集中在特定虚拟功能控制器中的数据吞吐量分布到其他虚拟功能控制器。将图3与图6进行比较,当一个虚拟功能控制器接收到多个命令时,与一个虚拟功能控制器处理多个命令的情况相比,在多个虚拟功能控制器以分布式方式处理多个命令的情况下,可以减少整个命令处理时间。
图7至图9是示出根据第二实施例的存储器系统300的操作的示图。
图7是示出根据第二实施例的虚拟功能控制器的操作的流程图。图7示出第一虚拟功能控制器312执行步骤S702、S704、S706、S708、S710、S712、S714、S716和S718。
在步骤S702中,第一虚拟功能控制器312可以从主机系统200接收用于访问命名空间的读取命令。读取命令可以包括NSID和逻辑地址。
在步骤S704中,第一虚拟功能控制器312可以基于读取命令中包括的NSID来确定该读取命令是否用于访问共享命名空间。
当该读取命令不是用于访问共享命名空间(即,在步骤S704中为“否”)时,在步骤S706中,第一虚拟功能控制器312可以直接处理读取命令。当第一虚拟功能控制器312将读取命令传输到存储器控制器330时,可以将与读取命令相对应的读取数据加载到缓冲存储器370的所分配的空间。
在步骤S718中,第一虚拟功能控制器312可以响应于读取命令向主机系统200提供所加载的读取数据。
当读取命令是用于访问共享命名空间(即,在步骤S704中为“是”)时,在步骤S708中,第一虚拟功能控制器312可以基于NSID和逻辑地址确定在其他虚拟功能控制器之中是否存在意图读取相同的数据的虚拟功能控制器。
例如,第一虚拟功能控制器312可以通过将在步骤S702中接收的读取命令的NSID和逻辑地址与由各个虚拟功能控制器接收的并且尚未处理的读取命令的NSID和逻辑地址进行比较,来确定是否存在意图读取相同的数据的虚拟功能控制器。
当不存在意图读取相同的数据的虚拟功能控制器(即,在步骤S708中为“否”)时,第一虚拟功能控制器312可以执行步骤S706和S718。
当存在意图读取相同的数据的虚拟功能控制器(即,在步骤S708中为“是”)时,在步骤S710中,第一虚拟功能控制器312可以确定第一虚拟功能控制器312当前是否处于空闲状态。
图7以意图读取相同的数据的虚拟功能控制器是第二虚拟功能控制器314为示例来示出第二实施例。
当第一虚拟功能控制器312处于空闲状态(即,在步骤S710中为“是”)时,第一虚拟功能控制器312可以执行步骤S714、S716和S718。
在步骤S714中,第一虚拟功能控制器312可以分配缓冲存储器370中的待存储读取数据的空间,以便直接处理读取命令,并且向存储器控制器330提供该读取命令。存储器控制器330可以将读取数据从存储器装置加载到缓冲存储器370的所分配的空间。
在步骤S716中,第一虚拟功能控制器312可以向第二虚拟功能控制器314提供关于缓冲存储器370的所分配的空间的访问信息。第一虚拟功能控制器312和第二虚拟功能控制器314可以访问缓冲存储器370的所分配的空间。
在步骤S718中,第一虚拟功能控制器312可以响应于读取命令来访问缓冲存储器370的所分配的空间,并且向主机系统200提供读取数据。类似地,已经获得访问信息的第二虚拟功能控制器314可以响应于用于访问相同存储器位置的读取命令来访问缓冲存储器370的所分配的空间并且向主机系统200提供读取数据。
当第一虚拟功能控制器312处于忙碌状态(即,在步骤S710中为“否”)时,在步骤S712中,第一虚拟功能控制器312可以确定第二虚拟功能控制器314是否处于空闲状态。第一虚拟功能控制器312可以通过联接到物理功能控制器310的状态寄存器318来确定第二虚拟功能控制器314是否处于空闲状态。
当第二虚拟功能控制器314处于空闲状态(即,在步骤S712中为“是”)时,第一虚拟功能控制器312可以执行步骤S720、S722和S718。
在步骤S720中,第一虚拟功能控制器312可以向第二虚拟功能控制器314提供读取命令。
第二虚拟功能控制器314可以分配缓冲存储器370的用于加载读取数据的空间,并且可以向存储器控制器330提供读取命令。存储器控制器330可以将读取数据从存储器装置加载到缓冲存储器370的所分配的空间。第二虚拟功能控制器314可以向第一虚拟功能控制器312提供访问信息,使得第一虚拟功能控制器312可以访问缓冲存储器370的所分配的空间。
在步骤S722中,第一虚拟功能控制器312可以从第二虚拟功能控制器314获得访问信息。
在步骤S718中,第一虚拟功能控制器312可以响应于读取命令向主机系统200提供所加载的读取数据。当第二虚拟功能控制器314处理用于访问相同的存储器位置的读取命令时,第二虚拟功能控制器314可以向主机系统200提供加载到缓冲存储器370的所分配的空间的读取数据。
当第二虚拟功能控制器314处于忙碌状态(即,在步骤S712中为“否”)时,第一虚拟功能控制器312可以重复执行步骤S710和S712,直到第一虚拟功能控制器312和第二虚拟功能控制器314中的任意一个变为空闲状态。
根据本公开的第二实施例,当两个或更多个虚拟功能控制器接收用于访问共享命名空间的相同的存储器位置的读取命令时,仅处于空闲状态的一个虚拟功能控制器可以处理该读取命令,并且可以向另一虚拟功能控制器提供关于缓冲存储器370中的加载了读取数据的空间的访问信息。当两个或更多个虚拟机期望读取相同的存储器位置的数据时,能够首先处理读取命令的虚拟功能控制器即使从存储器装置仅加载一次读取数据,该虚拟功能控制器也可以向两个或更多个虚拟机提供该读取数据。因此,可以提高存储器系统300的访问性能。
图8示出根据第二实施例的存储器系统300的构成元件之间的事务。
具体地,图8示出第一虚拟功能控制器312、第二虚拟功能控制器314、状态寄存器318和存储器控制器330的事务,并且省略或简要描述已经参照图7描述的内容。
在步骤S802中,第一虚拟功能控制器312可以从主机系统200接收读取命令。
在步骤S804中,第一虚拟功能控制器312可以确定读取命令是否是用于访问共享命名空间的命令。在图8的示例中,假设读取命令是用于访问共享命名空间的命令。
在步骤S806中,第一虚拟功能控制器312可以确定另一虚拟功能控制器是否接收到用于读取与该读取命令相同的数据的读取命令。
例如,第一虚拟功能控制器312可以通过访问其他虚拟功能控制器的命令队列来确定是否接收到用于访问相同的地址的读取命令。图8仅示出第一虚拟功能控制器312检查第二虚拟功能控制器314的命令队列,但是第一虚拟功能控制器312也可以检查共享该共享命名空间的第三虚拟功能控制器316的命令队列。
在步骤S808中,第二虚拟功能控制器314可以提供对是否存在用于读取与该读取命令相同的数据的命令的响应。
在图8的示例中,假设用于读取相同的数据的读取命令在第二虚拟功能控制器314的命令队列中排队。
在下文中,由第一虚拟功能控制器312接收的读取命令被称为第二读取命令。由第二虚拟功能控制器314在第二读取命令之前接收并且在命令队列中排队的用于读取相同的数据的读取命令被称为第一读取命令。
在步骤S810中,第一虚拟功能控制器312可以确定第一虚拟功能控制器312处于忙碌状态还是空闲状态。在图8的示例中,假设第一虚拟功能控制器312的状态是处于空闲状态。同时,因为第一读取命令在第二虚拟功能控制器314中排队,所以第二虚拟功能控制器314当前可以处于忙碌状态。
在步骤S812、S814和S816中,第一虚拟功能控制器312可以处理第二读取命令。因为第一读取命令和第二读取命令是针对相同的存储器位置的命令,所以当第一虚拟功能控制器312处理第二读取命令时,可以由第二虚拟功能控制器314将针对第一读取命令的相同处理结果提供给主机系统200。
在步骤S812中,第一虚拟功能控制器312可以分配缓冲存储器370的空间,并且向存储器控制器330提供针对相同的存储器位置的读取命令。
在步骤S814中,存储器控制器330可以将与读取命令相对应的读取数据从存储器装置加载到缓冲存储器370的所分配的空间。
在步骤S816中,存储器控制器330可以向第一虚拟功能控制器312提供响应。
在步骤S818中,第一虚拟功能控制器312可以向第二虚拟功能控制器314提供针对缓冲存储器370的所分配的空间的访问权限。第一虚拟功能控制器312和第二虚拟功能控制器314对缓冲存储器370的所分配的空间具有权限。
在步骤S820中,第一虚拟功能控制器312可以访问缓冲存储器370的所分配的空间,并且向主机系统200提供读取数据。
在步骤S822中,第二虚拟功能控制器314可以访问缓冲存储器370的所分配的空间,并且向主机系统200提供读取数据。
图9示意性地示出根据上面参照图8描述的第二实施例的操作时序。
图9示出在相同的时间轴上的第一虚拟功能VF1和第二虚拟功能VF2的操作时序。图9表示参照图8描述的步骤中的一些的操作时序。
参照图9,第二虚拟功能控制器314可以从主机系统200接收针对共享命名空间的第一读取命令,并且将第一读取命令排队在命令队列CMDQ中。在这种情况下,当前处于忙碌状态的第二虚拟功能控制器314可以不处理第一读取命令。
在步骤S802中,第一虚拟功能控制器312可以从主机系统200接收用于访问与第一读取命令相同的存储器位置的第二读取命令,并且将第二读取命令排队在命令队列CMDQ中。第一虚拟功能控制器312可以通过执行步骤S804、S806、S808和S810来检查在第二虚拟功能控制器314中排队的第一读取命令。
在步骤S814中,存储器控制器330可以处理第二读取命令,并且将存储器位置中的数据加载到缓冲存储器370的所分配的空间。在步骤S818中,第一虚拟功能控制器312可以向第二虚拟功能控制器314提供针对缓冲存储器370的所分配的空间的访问权限。
在步骤S820中,第一虚拟功能控制器312可以响应于第二读取命令而向主机系统200提供数据。
在步骤S822中,第二虚拟功能控制器314可以响应于第一读取命令而向主机系统200提供数据。
根据本公开的第二实施例,当多个虚拟功能控制器处理各个读取命令以便读取共享命名空间的相同数据时,一个虚拟功能控制器可以处理一个读取命令,并且可以向另一虚拟功能控制器提供缓冲存储器370的访问信息。然后,多个虚拟功能控制器可以向多个虚拟机提供对各个读取命令的响应。因此,可以省略对存储器装置的至少一次读取操作,从而提高存储器系统300的访问性能。
根据本公开的实施例,当第一虚拟功能控制器312接收到用于访问共享命名空间的读取命令时,第一虚拟功能控制器312可以确定共享该共享命名空间的虚拟功能控制器是处于忙碌状态还是空闲状态。当第一虚拟功能控制器312处于忙碌状态并且第二虚拟功能控制器314处于空闲状态时,第一虚拟功能控制器312可以控制第二虚拟功能控制器314以处理读取命令。当第二虚拟功能控制器314将共享命名空间的数据加载到缓冲存储器370的所分配的空间时,第二虚拟功能控制器314可以向第一虚拟功能控制器312提供针对所分配的空间的访问权限。第一虚拟功能控制器312可以基于该访问权限向主机系统200提供加载到所分配的空间的数据。
根据本公开的实施例,当处于忙碌状态的特定虚拟功能控制器通过使用另一虚拟功能控制器访问共享命名空间时,可以分散虚拟功能控制器的数据吞吐量,并且可以提高存储器系统300的访问性能。
根据本公开的实施例,可以提供一种可以支持多个虚拟功能并提供提高的访问性能的存储器系统和用于该存储器系统的操作方法。
尽管已经在本公开的详细描述中描述了特定的实施例,但是基于本专利文件中公开或示出的内容,可以对所公开的实施例进行各种修改或改进,并且可以形成其他的实施例。
Claims (17)
1.一种存储器系统,包括:
第一虚拟功能控制器,与主机的第一虚拟机通信,并且从所述第一虚拟机接收用于访问命名空间的命令,并且向所述第一虚拟机提供对所述命令的响应;
第二虚拟功能控制器,与所述主机的第二虚拟机通信,并且联接到所述命名空间,并且基于所述第一虚拟功能控制器和所述第二虚拟功能控制器的状态信息来从所述第一虚拟功能控制器接收所述命令;
缓冲存储器,与所述第一虚拟功能控制器和所述第二虚拟功能控制器通信,并且提供用于与所述命令相对应的数据的空间;以及
存储器控制器,与所述第一虚拟功能控制器和所述第二虚拟功能控制器通信,并且基于所述命令访问所述命名空间,并且向所述缓冲存储器提供所述数据,
其中所述第一虚拟功能控制器在所述第一虚拟功能控制器处于忙碌状态并且所述第二虚拟功能控制器处于空闲状态时,向所述第二虚拟功能控制器提供所述命令。
2.根据权利要求1所述的存储器系统,其中所述第一虚拟功能控制器在所述第一虚拟功能控制器处于空闲状态时,处理所述命令,而不将所述命令提供给所述第二虚拟功能控制器。
3.根据权利要求1所述的存储器系统,进一步包括状态寄存器,所述状态寄存器指示所述第一虚拟功能控制器和所述第二虚拟功能控制器的所述状态信息。
4.根据权利要求3所述的存储器系统,其中所述状态寄存器基于相应的虚拟功能控制器当前是否正在处理另一命令来指示所述状态信息。
5.根据权利要求1所述的存储器系统,其中所述第二虚拟功能控制器向所述第一虚拟功能控制器提供关于所述缓冲存储器中存储所述数据的空间的访问信息。
6.根据权利要求1所述的存储器系统,其中所述存储器控制器将所述数据加载到所述缓冲存储器的所述空间,并且向所述第一虚拟功能控制器或所述第二虚拟功能控制器提供关于所述空间的位置的访问信息。
7.根据权利要求1所述的存储器系统,进一步包括:
第一专用命名空间,仅通过所述第一虚拟功能控制器访问;以及
第二专用命名空间,仅通过所述第二虚拟功能控制器访问。
8.根据权利要求1所述的存储器系统,进一步包括:
第三虚拟功能控制器,与所述主机的第三虚拟机通信,并且联接到所述命名空间,并且基于所述第一虚拟功能控制器、所述第二虚拟功能控制器和所述第三虚拟功能控制器的状态信息来从所述第一虚拟功能控制器接收所述命令。
9.根据权利要求8所述的存储器系统,其中所述第一虚拟功能控制器选择所述第二虚拟功能控制器和所述第三虚拟功能控制器中的一个作为所选择的虚拟功能控制器,并且向所选择的虚拟功能控制器发送所述命令。
10.一种操作存储器系统的方法,包括:
由存储器系统中的与主机的第一虚拟机通信的第一虚拟功能控制器接收用于访问所述存储器系统中的命名空间的命令,所述主机进一步包括第二虚拟机和第三虚拟机,所述第二虚拟机和所述第三虚拟机分别与第二虚拟功能控制器和第三虚拟功能控制器通信,并且联接到所述命名空间;
由所述第一虚拟功能控制器基于所述第一虚拟功能控制器、所述第二虚拟功能控制器和所述第三虚拟功能控制器的状态信息,选择所述第二虚拟功能控制器和所述第三虚拟功能控制器中的一个作为所选择的虚拟功能控制器;
由所述第一虚拟功能控制器将所述命令发送到所选择的虚拟功能控制器;
由所述第一虚拟功能控制器从所选择的虚拟功能控制器中接收访问信息以访问与所述命令相对应的数据;并且
由所述第一虚拟功能控制器将所述数据发送到所述第一虚拟机,
其中所述第一虚拟功能控制器在所述第一虚拟功能控制器处于忙碌状态并且所述第二虚拟功能控制器处于空闲状态时,向所述第二虚拟功能控制器提供所述命令。
11.根据权利要求10所述的方法,进一步包括:检测到所述第一虚拟功能控制器处于忙碌状态,并且其中响应于所述检测而执行所述选择。
12.根据权利要求10所述的方法,其中从所述存储器系统中的状态寄存器获得所述第一虚拟功能控制器、所述第二虚拟功能控制器和所述第三虚拟功能控制器的所述状态信息。
13.根据权利要求10所述的方法,其中所述状态信息基于相应的虚拟功能控制器当前是否正在处理另一命令。
14.根据权利要求12所述的方法,其中所述访问信息包括缓冲存储器中存储所述数据的空间的位置。
15.根据权利要求10所述的方法,进一步包括:由所述存储器系统的存储器控制器将所述数据从所述命名空间加载到缓冲存储器。
16.根据权利要求15所述的方法,进一步包括:从所述存储器控制器向所选择的虚拟功能控制器提供所述数据。
17.根据权利要求16所述的方法,进一步包括:从所选择的虚拟功能控制器向所述第一虚拟功能控制器提供所述访问信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0081367 | 2020-07-02 | ||
KR1020200081367A KR20220003757A (ko) | 2020-07-02 | 2020-07-02 | 메모리 시스템 및 메모리 시스템의 동작방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113885783A CN113885783A (zh) | 2022-01-04 |
CN113885783B true CN113885783B (zh) | 2024-03-01 |
Family
ID=79013073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110249073.4A Active CN113885783B (zh) | 2020-07-02 | 2021-03-08 | 存储器系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11782746B2 (zh) |
KR (1) | KR20220003757A (zh) |
CN (1) | CN113885783B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110770708A (zh) * | 2017-06-16 | 2020-02-07 | 阿里巴巴集团控股有限公司 | 用于硬件虚拟化的方法和装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756598B1 (en) * | 2010-03-31 | 2014-06-17 | Netapp, Inc. | Diskless virtual machine cloning by separately cloning a virtual drive and configuration data of a source virtual machine for combination into a cloned virtual machine |
EP2725488A1 (en) * | 2011-06-21 | 2014-04-30 | Fujitsu Limited | Information processing device, virtual machine management method and virtual machine management program |
US8601473B1 (en) * | 2011-08-10 | 2013-12-03 | Nutanix, Inc. | Architecture for managing I/O and storage for a virtualization environment |
US9237195B2 (en) | 2012-04-27 | 2016-01-12 | Netapp, Inc. | Virtual storage appliance gateway |
US9772866B1 (en) * | 2012-07-17 | 2017-09-26 | Nutanix, Inc. | Architecture for implementing a virtualization environment and appliance |
US9003071B2 (en) * | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US11243707B2 (en) * | 2014-03-12 | 2022-02-08 | Nutanix, Inc. | Method and system for implementing virtual machine images |
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 |
US20170228173A9 (en) * | 2014-05-02 | 2017-08-10 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US9294567B2 (en) * | 2014-05-02 | 2016-03-22 | Cavium, Inc. | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller |
US9430268B2 (en) | 2014-05-02 | 2016-08-30 | Cavium, Inc. | Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers |
US20170180325A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Technologies for enforcing network access control of virtual machines |
US11550558B2 (en) * | 2016-02-12 | 2023-01-10 | Nutanix, Inc. | Virtualized file server deployment |
US10228874B2 (en) * | 2016-12-29 | 2019-03-12 | Intel Corporation | Persistent storage device with a virtual function controller |
JP2019008730A (ja) * | 2017-06-28 | 2019-01-17 | 東芝メモリ株式会社 | メモリシステム |
US10917438B2 (en) * | 2018-01-25 | 2021-02-09 | Cisco Technology, Inc. | Secure publishing for policy updates |
US11068203B2 (en) * | 2018-08-01 | 2021-07-20 | Micron Technology, Inc. | NVMe direct virtualization with configurable storage |
-
2020
- 2020-07-02 KR KR1020200081367A patent/KR20220003757A/ko unknown
-
2021
- 2021-01-13 US US17/148,301 patent/US11782746B2/en active Active
- 2021-03-08 CN CN202110249073.4A patent/CN113885783B/zh active Active
-
2023
- 2023-08-01 US US18/363,324 patent/US20230376340A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110770708A (zh) * | 2017-06-16 | 2020-02-07 | 阿里巴巴集团控股有限公司 | 用于硬件虚拟化的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US11782746B2 (en) | 2023-10-10 |
CN113885783A (zh) | 2022-01-04 |
US20220004418A1 (en) | 2022-01-06 |
KR20220003757A (ko) | 2022-01-11 |
US20230376340A1 (en) | 2023-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113377283B (zh) | 具有分区命名空间的存储器系统及其操作方法 | |
CN110730945B (zh) | 可扩展的低时延存储接口 | |
US10909031B2 (en) | Memory system and operating method thereof | |
CN110096221B (zh) | 存储器系统及其控制方法 | |
CN105549898A (zh) | 操作数据存储装置和主机及移动计算装置的方法 | |
US20190171392A1 (en) | Method of operating storage device capable of reducing write latency | |
JP2022548642A (ja) | タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
CN113625973B (zh) | 数据写入方法、装置、电子设备及计算机可读存储介质 | |
US20220121581A1 (en) | Controller and operation method thereof | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
KR102653373B1 (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
EP4064022A1 (en) | Cooperative storage architecture | |
KR101979732B1 (ko) | 비휘발성 메모리 컨트롤러 및 비휘발성 메모리 시스템 | |
CN113805792A (zh) | 存储器系统及其操作方法 | |
CN113885783B (zh) | 存储器系统及其操作方法 | |
CN111522504B (zh) | 存储器控制器以及包括存储器控制器的存储器系统 | |
KR20220127076A (ko) | 컨트롤러 및 컨트롤러의 동작 방법 | |
KR102549540B1 (ko) | 스토리지 장치 및 그 동작 방법 | |
KR102254101B1 (ko) | 데이터 처리 시스템 및 이의 동작 방법 | |
CN110032333B (zh) | 存储器系统及其操作方法 | |
US20240020250A1 (en) | Memory system, memory controller and operation method thereof | |
US11656996B2 (en) | Controller for managing order information of data, operation method thereof, and memory system including the same | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
US20240184712A1 (en) | Memory system with improved map table update efficiency, memory controller therefor, and operating method thereof |
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 |