CN108062201A - 用于固态驱动器的自虚拟化闪速存储器 - Google Patents
用于固态驱动器的自虚拟化闪速存储器 Download PDFInfo
- Publication number
- CN108062201A CN108062201A CN201710831420.8A CN201710831420A CN108062201A CN 108062201 A CN108062201 A CN 108062201A CN 201710831420 A CN201710831420 A CN 201710831420A CN 108062201 A CN108062201 A CN 108062201A
- Authority
- CN
- China
- Prior art keywords
- unit
- storage
- bit
- pattern
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
通常,控制器可以执行自虚拟化技术。存储设备可以包括存储访问、以及控制器,所述存储访问包括多个单元。控制器可以确定当每个单元被配置为处于具有每一单元的比特的最大可允许数量的第一级模式时,虚拟机工作负载的存储访问的最大量。控制器可以将每个单元配置为处于第二级模式,所述第二级模式具有小于最大值的每一单元的比特的数量。控制器可以确定每个单元中所使用的比特的总数量,并且将这个总数与每个单元中所使用的比特的阈值数量进行比较。基于该比较,控制器可以将一个或多个单元重新配置为处于第三级模式,所述第三级模式具有大于用于第二级模式的数量的每一单元的比特的数量。
Description
技术领域
本公开涉及数据存储管理。
背景技术
固态驱动器(solid-state drives,SSD)可以在期望相对低延迟和高性能存储的应用中被用在计算机中。SSD可以利用多个、并行数据通道来从存储器设备(memorydevice)读取和写入存储器设备,其可以导致高的顺序的读取和写入速度。
SSD可以利用非易失性存储器(on-volatile memory,NVM)设备,诸如闪速存储器、相变存储器(phase change memory,PCM)、电阻式随机存取存储器(resistive randomaccess memory,ReRAM)、磁阻式随机存取存储器(magnetoresistive random accessmemory,MRAM)设备等。在一些示例中,每个存储器设备包括以页面排列的多个存储器单元,并且每个块包括多个页面。存储器设备中的每个单元可以被配置为根据特定单元的级别模式,存储比特的不同数量。除了存储差异之外,不同级别模式可以具有不同程度的效率、可靠性和安全性。
在I/O虚拟化中,出于可管理性和性能原因,单根输入/输出虚拟化(single rootinput/output virtualization,SR-IOV)是被配置为提供外围组件互连(peripheralcomponent interconnect,)快速资源的隔离的接口。SR-IOV支持从虚拟机到输入/输出设备的直接路径,从管理程序中移除软件开销,从而潜在地隔离设备的性能,同时仍然保持虚拟机资源分配的公平性。
发明内容
在一个示例中,本公开涉及一种方法,该方法包括:由控制器确定当存储访问中的每个单元被配置为处于第一级模式时,固态驱动器(SSD)上的虚拟机工作负载的存储访问的最大量。存储访问中的每个单元被配置为处于第一级模式包括存储访问中的每个单元具有每一单元的比特的最大可允许数量。该方法还包括由控制器将虚拟机的存储访问中的每个单元配置为处于第二级模式。存储访问中的每个单元被配置为处于第二级模式包括存储访问中的每个单元具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量。该方法还包括由控制器确定在存储访问的每个单元中所使用的比特的总数量。该方法还包括由控制器将在存储访问的每个单元中所使用的比特的总数量与在存储访问的每个单元中所使用的比特的阈值数量进行比较。该方法还包括基于该比较,由控制器将虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式。存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的每个单元具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
在另一示例中,本公开涉及包括存储访问、以及控制器的存储设备(storagedevice),其中存储访问包括多个单元。控制器被配置为确定当存储访问中的每个单元被配置为处于第一级模式时,虚拟机工作负载的存储访问的最大量。存储访问中的每个单元被配置为处于第一级模式包括存储访问中的每个单元具有每一单元的比特最大可允许数量。控制器还被配置为将虚拟机的存储访问中的每个单元配置为处于第二级模式。存储访问中的每个单元被配置处于第二级模式包括存储访问中的每个单元具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量。控制器还被配置为确定在存储访问的每个单元中所使用的比特的总数量。控制器还被配置为将在存储访问的每个单元中所使用的比特的总数量与在存储访问的每个单元中所使用的比特的阈值数量进行比较。控制器还被配置为基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式。存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的每个单元具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
在另一示例中,本公开涉及存储指令的计算机可读存储介质,当该指令执行时,使存储设备的控制器确定当存储访问中的每个单元被配置为处于第一级模式时,固态驱动器(SSD)上的虚拟机工作负载的存储访问的最大量。存储访问中的每个单元被配置为处于第一级模式包括存储访问中的每个单元具有每一单元的比特的最大可允许数量。该指令还使控制器将虚拟机的存储访问中的每个单元配置为处于第二级模式。存储访问中的每个单元被配置为处于第二级模式包括存储访问中的每个单元具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量。该指令还使控制器确定在存储访问的每个单元中所使用的比特的总数量。该指令还使控制器将在存储访问的每个单元中所使用的比特的总数量与在存储访问的每个单元中所使用的比特的阈值数量进行比较。基于该比较,该指令还使控制器将虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式。存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的每个单元具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
本公开的一个或多个示例的细节在附图和下面的描述中来阐述。本公开的其它特征、主题和优点将从说明书和附图、以及从权利要求书中变得显而易见。
附图说明
图1是示出根据本公开的一个或多个技术的包括连接到主机设备的存储设备的示例性系统的概念和原理框图,其中存储设备被配置为基于存储器使用来执行自虚拟化(self-virtualization)。
图2是示出根据本公开的一个或多个技术的存储设备中的示例性存储器设备的概念框图。
图3是示出根据本公开的一个或多个技术的被配置为基于存储器使用执行自虚拟化的示例性控制器的概念和原理框图。
图4A是示出根据本公开的一个或多个技术的包含由控制器将数据块分组为用于自虚拟化处理的存储访问的存储器设备的示例性细节的概念和原理框图。
图4B是示出根据本公开的一个或多个技术的包含由控制器将数据块分组为用于自虚拟化处理的存储访问的存储器设备的示例性细节的另一概念和原理框图。
图4C是根据本公开的一个或多个技术的描绘对于被配置为处于各种级别单元模式的存储访问的每个虚拟机的性能水平和物理容量利用率的图。
图4D是示出根据本公开的一个或多个技术的不同级别单元模式中的各种电压组的概念图。
图5是示出根据本公开的一个或多个技术由存储设备的控制器执行的示例性自虚拟化操作的流程图。
图6是示出根据本公开的一个或多个技术的由存储设备的控制器执行的更详细的示例性自虚拟化操作的流程图。
具体实施方式
本公开描述了用于在用于诸如固态驱动器(SSD)的存储设备的单根输入/输出虚拟化(SR-IOV)期间,执行自虚拟化的技术,其可以在常规数据处理的过程期间帮助提高存储设备的操作效率。在自虚拟化处理期间,存储设备可以动态地改变存储访问中的每个单元可以被配置为基于贯穿存储访问的存储可用性来存储的比特的数量。
存储设备可以包括存储访问、与存储访问连接的虚拟机、以及控制器。存储访问可以包括多个数据的块,并且每个数据的块可以被划分为多个数据的页面。每个数据的页面还可以被划分为多个数据的单元。进一步地,每个数据的单元可以被配置为根据特定单元的级别模式来存储不同数量的比特。
控制器可以确定当存储访问中的每个单元被配置为处于第一级模式时、或者当存储访问中的每个单元存储每一单元的比特的最大可允许数量(例如,每一单元3个比特,诸如处于三级单元(triple-level cell,TLC)模式)时,虚拟机的存储访问的最大量。然后,当存储访问中的每个单元被配置为处于第二级模式时、或者当存储访问中的每个单元存储小于最大值的每一单元的比特的数量(例如,每一单元1个比特,诸如处于单级单元(single-level cell,SLC)模式)时,控制器可以将虚拟机的存储访问中的每个单元配置为处于第二级模式。
在某些时候,诸如在垃圾收集处理期间,控制器可以确定在存储访问的每个单元中所使用的比特的总数量,并且将这个总数与在存储访问的每个单元中所使用的比特的阈值数量进行比较。基于该比较,控制器可以将存储访问中的一个或多个单元重新配置为处于第三级模式,或者对于存储访问中的每个单元存储大于用于第二级模式的数量的每一单元的比特的数量(例如,每一单元2个比特,诸如处于多级单元(multiple-level cell,MLC)模式)。
当单元处于SLC模式时,单元的容量可以仅为处于TLC模式的容量的三分之一,但是控制器可以以对SLC单元更小的压力(stress)具有更快的读取和写入速度。当单元处于MLC模式时,容量是SLC单元的两倍,但是控制器仍然可以以对MLC单元更小的压力具有比单元处于TLC模式时更快的读取和写入速度。在本公开的一些示例中,单一SSD可以包括多个存储访问:处于SLC模式的一个或多个存储访问、处于MLC模式的一个或多个存储访问、以及处于TLC模式的一个或多个存储访问。每个存储访问可以与特定的虚拟机工作负载相对应。然而,每一个存储访问可以能够被配置为在TLC模式下操作。
来自主机的虚拟机可以被分组为三个类别:高优先级、中优先级和低优先级。当主机正在运行处理繁重的工作负载时,高优先级的虚拟机可以被利用,并且因此,向存储设备请求低响应。当主机正在编辑先前写入的数据时,中优先级的虚拟机可以被利用。当主机正在执行备份程序时,低优先级的虚拟机可以被利用,其不请求快速的响应时间并且不要求高吞吐量。
基于来自虚拟机的标签(tag),SSD控制器可以将SLC存储访问分配给高优先级客户、将MLC存储访问分配给中优先级客户、以及将TLC存储访问分配给低优先级的客户。当SLC存储访问或MLC存储访问正在存储足够的数据使存储访问中存储的比特的数量超过比特的阈值数量时,控制器可以将SLC或MLC存储访问中的一个或多个单元重新配置为处于更慢、更高容量的级别模式(例如,将SLC单元重新配置为MLC单元,或将MLC单元重新配置为TLC单元)。
本文所描述的技术可以通过不同地应用若干验证和读取参考级别将单元放置于SSD内的各种级别模式中,而不是静态地强制存储访问中的单元来存储比特的某一数量。硬件分区技术可以很简单,但是是刚性的,并且可能不会充分利用在SSD内的并行性。根据本文描述的技术,可以向客户设备提供服务的三个通用级别。也就是说,控制器可以向访问SSD的客户设备提供SLC级质量、MLC级质量和TLC级质量。在SSD的裸芯中可以存在多种类型的单元,其可以保证客户设备可以利用由用于性能隔离的三个单独的组提供的最大的可能的带宽。
图1是示出根据本公开的一个或多个技术的包括连接到主机设备4的存储设备6的示例性系统2的概念和原理框图,其中存储设备6被配置为基于存储器使用来执行自虚拟化。例如,主机设备4可以利用包括在存储设备6中的非易失性存储器设备来存储和检索数据。在一些示例中,存储环境2可以包括可以作为存储阵列来操作的多个存储设备,诸如存储设备6。例如,存储环境2可以包括被配置为廉价/独立磁盘(inexpensive/independentdisks,RATD)的冗余阵列的多个存储设备6,其共同地起到主机设备4的大量存储设备的作用。
存储环境2可以包括可以将数据存储到一个或多个存储设备和/或从一个或多个存储设备(例如,存储设备6)检索数据的主机设备4。如图1中所示,主机设备4可以经由接口14与存储设备6通信。主机设备4可以包括大范围的设备中的任何一个,包括计算机服务器、网络附加存储(network attached storage,NAS)单元、桌上型计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、诸如所谓“智能”电话的手持式电话、平板计算机、电视机、相机、显示设备、数字媒体播放器、视频游戏机、视频流设备等。
如图1中所示,存储设备6可以包括控制器8、非易失性存储器阵列10(non-volatile memory array 10,NVMA 10)、电力供应11、易失性存储器12、以及接口14。在一些示例中,为了清楚起见,存储设备6可以包括图1中未示出的附加组件。例如,存储设备6可以包括印刷板(printed board,PB),存储设备6的组件被机械地附接到该印刷板,并且该印刷板包括电互连存储设备6的组件的导电迹线等。在一些示例中,存储设备6的物理尺寸和连接器配置可以遵照一个或多个标准形状因数。一些示例性标准形状因数包括但不限于3.5”硬盘驱动器(hard disk drive,HDD)或SSD、2.5”HDD或SSD、1.8”HDD或SSD、外围组件互连扩展的(-extended,-X)、快速( Express,PCIe)(例如,PCIe x1、PCIe x4、PCIe x8、PCIe x16、PCIe迷你卡、等)、M.2等。在一些示例中,存储设备6可以被直接耦合(例如,直接焊接)到主机设备4的母板。
存储设备6可以包括用于与主机设备4接口的接口14。接口14可以包括用于与主机设备4交换数据的数据总线和用于与主机设备4交换命令的控制总线中的一个或两者。接口14可以根据任何合适的协议来操作。例如,接口14可以根据以下协议中的一个或多个来操作:高级技术附件(advanced technology attachment,ATA)(例如,串行-ATA(serial-ATA,SATA)和并行-ATA(parallel-ATA,PATA))、光纤通道、小型计算机系统接口(smallcomputer system interface,SCSI)、串行附接的SCSI(serially attached SCSI,SAS)、外围组件互连 -快速(-express,)、非易失性存储器快速(Non-Volatile Memory Express,NVMeTm)等。接口14的电连接(例如,数据总线、控制总线、或两者)被电连接到控制器8,以提供主机设备4和控制器8之间的电连接,允许主机设备4和控制器8之间交换数据。在一些示例中,接口14的电连接还可以允许存储设备6从主机设备4接收电力。
存储设备6包括NVMA 10,NVMA 10包括多个存储器设备16Aa-16Nn(统称为“存储器设备16”)。存储器设备16中的每一个可以被配置为存储和/或检索数据。例如,存储器设备16的存储器设备可以接收数据和来自控制器8的指示存储器设备存储数据的消息。类似地,存储器设备16的存储器设备可以从控制器8接收指示存储器设备检索数据的消息。在一些示例中,存储器设备16中的每一个可以被称为裸芯。在一些示例中,单一物理芯片可以包括多个裸芯(即多个存储器设备16)。在一些示例中,存储器设备16中的每一个可以被配置为存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,存储器设备16可以包括任何类型的非易失性存储器设备。存储器设备16的一些示例包括但不限于闪速存储器设备(例如,与非(NAND)或者或非(NOR))、相变存储器(phase-change memory,PCM)器件、电阻式随机存取存储器(resistive random-access memory,ReRAM)器件、磁阻式随机存取存储器(magnetoresistive random-accessmemory,MRAM)器件、铁电随机存取存储器(ferroelectric random-access memory,F-RAM)、全息存储器设备、以及任何其它类型的非易失性存储器设备。
在一些示例中,存储器设备16可以包括闪速存储器设备。闪速存储器设备可以包括基于NAND或NOR的闪速存储器设备,并且可以基于用于每个闪速存储器单元的晶体管的浮置栅极中包含的电荷来存储数据。在NAND闪速存储器设备中,闪速存储器设备可以被划分为多个块,块中的每一个可以被划分为多个页面。特定存储器设备内的多个页面中的每个页面可以包括多个NAND单元。NAND单元的行可以使用字线电连接以定义多个页面中的页面。多个页面中的每一个中的相应的单元可以被电连接到相应的位线。在一些示例中,控制器8可以在页面级别下将数据写入NAND闪速存储器设备以及从其读取数据,并且在块级别下从NAND闪速存储器设备擦除数据。以下参考图2讨论存储器设备16的额外的细节。
图2是示出包括多个块17A-17N(统称为“块17”)的示例性存储器设备16Aa的概念框图,其中每个块包括多个页面19Aa-19Nm(统称为“页面19”)。块17中的每个块可以包括多个NAND单元。NAND单元的行可以使用字线串行电连接以定义页面(页面19中的一页)。多个页面19中的每一个中的相应的单元可以被电连接到相应的位线。控制器8可以在页面级别下将数据写入NAND闪速存储器设备以及从其读取数据,并且在块级别下从NAND闪速存储器设备擦除数据。两个或更多块的组可以被称为逻辑块地址集。例如,逻辑块地址集20A可以包括块17A-17B,并且逻辑块地址集20B可以包括块17M-17N。
图2的示例描述了三维(three-dimensional,3D)闪速存储器。然而,当前公开的技术可以被应用于存储器的其它布置,诸如下一代存储器设备(诸如不具有块或者页面结构的那些)。因而,本文所描述的技术也可以被应用于存储器的虚拟块或者其它布置。
返回到图1,在一些示例中,控制器8被单独地连接到存储器设备16的每个存储器设备可能不实际。因而,存储器设备16和控制器8之间的连接可以被复用。作为示例,存储器设备16可以被分组到通道18A-18N(统称为“通道18”)中。例如,如图1中所示,存储器设备16Aa-16An可以被分组到第一通道18A中,以及存储器设备16Na-16Nn可以被分组到第N通道18N中。被分组到通道18中的每一个的存储器设备16可以共享到控制器8的一个或多个连接。例如,分组到第一通道18A中的存储器设备16可以被附接到公共I/O总线和公共控制总线。存储设备6可以包括用于通道18中的每个相应的通道的公共I/O总线和公共控制总线。在一些示例中,通道18中的每个通道可以包括芯片使能(chip enable,CE)线的集合,其可以被用来复用每个通道上的存储器设备。例如,每个CE线可以被连接到存储器设备18的相应的存储器设备。以这种方式,可以减少控制器8与存储器设备18之间的单独连接的数量。另外,由于每个通道具有连接到控制器8的独立集合,所以连接的减少可能不会显著影响数据吞吐量速率,因为控制器8可以同时向每个通道发出不同的命令。
存储设备6可以包括可以向存储设备6的一个或多个组件提供电力的电力供应11。当在标准模式下操作时,电力供应11可以使用由外部设备(诸如主机设备4)提供的电力来向一个或多个组件提供电力。例如,电力供应11可以使用经由接口14从主机设备4接收的电力向一个或多个组件提供电力。在一些示例中,电力供应11可以包括一个或多个电力存储组件,该电力存储组件被配置为当在关闭模式(诸如停止从外部设备接收电力)下操作时向一个或多个组件提供电力。以这种方式,电力供应11可以起到机载备用电力供应的作用。一个或多个电力存储组件的一些示例包括但不限于电容器、超级电容器、电池等。
存储设备6还可以包括可以被控制器8用来存储信息的易失性存储器12。在一些示例中,控制器8可以使用易失性存储器12作为高速缓冲存储器(cache)。例如,控制器8可以将高速缓冲存储器信息存储在易失性存储器12中直到该高速缓冲存储器信息被写入到存储器设备16。易失性存储器12可以消耗从电力供应11接收的电力。易失性存储器12的例子包括但不限于随机存取存储器(random-access memory,RAM)、动态随机存取存储器(dynamic random access memory,DRAM)、静态RAM(static RAM,SRAM)和同步动态RAM(synchronous dynamic RAM,SDRAM-例如,双数据速率(double data rate,DDR)1、DDR2、DDR3、DDR3L、低功率DDR(low power DDR,LPDDR)3、DDR4等)。
主机设备4可以通过一个或多个虚拟机13(以下称为“虚拟机13”)访问存储设备6。虚拟机13可以是计算机系统的仿真。虚拟机13可以基于计算机架构并提供类似于物理计算机的功能。在实施方式中,虚拟机13可以涉及专用的硬件、软件、或者其组合。控制器8可以将主机设备4分配给虚拟机13,使得主机设备4可以访问NVMA 10或者其某些部分。通过这种访问,虚拟机13可以提供主机设备4和NVMA 10之间的接口,使得主机设备4可以与NVMA 10交互以检索被存储到NVMA 10的数据或者向NVMA 10写入数据。
存储设备6包括可以管理存储设备6的一个或多个操作的控制器8。例如,控制器8可以管理从存储器设备16读取数据和/或将数据写入存储器设备16。控制器8可以经由接口14与主机设备4接口,并且管理向非易失性存储器12和存储器设备16存储数据和从非易失性存储器12和存储器设备16检索数据。作为一个示例,控制器8可以管理向存储器设备16和非易失性存储器12写入以及从存储器设备16和非易失性存储器12读取。在一些示例中,控制器8可以是硬件控制器。在其它示例中,控制器8可以被实施到的数据存储设备6中作为软件控制器。
控制器8可以为虚拟机13提供执行环境。虽然图1的示例中所示出为执行虚拟机13或以其它方式包括虚拟机13,但是虚拟机13可以表示软件或者其它计算机可执行指令,其配置主机4以提供机器的虚拟表示。实际上,虚拟机13表示主机4的基于时间的分割(例如,在处理器循环、寄存器、高速缓冲存储器等方面),其被保留以用于将虚拟机13呈现给控制器8。在这方面,虚拟机13可以表示被存储到主机4或其它存储器的计算机可执行指令,使主机4可以检索并执行该可执行指令以将虚拟机工作负载呈现给控制器8。
根据本公开的技术,控制器8可以确定当存储访问中的每个单元被配置为处于第一级模式时,NVMA 10中的虚拟机13的存储访问的最大量。当存储访问中的每个单元被配置为处于第一级模式时,存储访问中的每个单元可以具有每一单元的比特的最大可允许数量。存储访问可以是存储器设备16的任何部分或者整个NVMA 10。
例如,在图1的示例中,虚拟机13的存储访问可以包括整个NVMA 10(即图2中所示的页面19中的每一个中的所有单元)。NVMA 10可以包括数量为X的单元,X个单元中的每一个具有每一单元的3个比特的最大容量(即当单元处于TLC模式时)。因而,虚拟机13的存储访问的最大量可以是总共3X个比特。
控制器8可以将虚拟机13的存储访问中的每个单元配置为处于第二级模式。当存储访问中的每个单元被配置为第二级模式时,存储访问中的每个单元可以具有小于每一单元的最大可允许数量的比特的每一单元的比特的数量。例如,控制器8可以将NVMA 10中的128个单元中的每一个配置为处于SLC模式,使得128个单元中的每一个被配置为每一单元仅存储单一比特,而不是当单元被配置为处于TLC模式时的每一单元的比特的最大可允许数量。因而,NVMA 10可以根据配置而仅被配置为存储最大3X个比特中的X个。在一些实例中,主机设备4可以不知道较低的容量(即X个比特)。因而,主机设备4可以仅知道真实的最大容量(即3X个比特)。
在某些时候,诸如在垃圾收集期间或者在控制器8对NVMA 10执行一定数量的写入操作之后,控制器8可以确定在存储访问的每个单元中所使用的比特的总数量,并且将在存储访问的每个单元中所使用的比特的总数量与在存储访问的每个单元中所使用的比特的阈值数量进行比较。在一些实例中,比特的阈值数量可以是当前模式给定的最大容量的某百分比,诸如75%、80%、或者100%等。
基于该比较,控制器8可以将虚拟机13的存储访问中的单元中的一个或多个重新配置为处于第三级模式。当存储访问中的单元中的一个或多个被配置为处于第三级模式时,存储访问中的每个单元可以具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。例如,控制器8可以确定在NVMA 10的每个单元(当前全部处于SLC模式)上所使用的比特的总数量等于0.95X个比特。0.95X-比特总数可以超过用于NVMA 10的比特的阈值数量。
基于这个比较,控制器8可以将存储访问中的单元中的一个或多个重新配置为处于MLC模式,使得单元中的一个或多个可以每一单元存储两个比特,而不是每一单元存储一个比特。在一些实例中,控制器8可以仅重新配置足够的单元,使得比特的总数量不再超过比特的阈值数量(即使得比特的总数量小于阈值的指定的百分比)。在其它实例中,控制器8可以将整个存储访问重新配置为处于第三级模式。
通过以这种方式配置和重新配置存储访问,控制器8可以提高存储设备6内的数据管理的总体效率。当存储设备6包含较少数据时,因为速度和效率可能比容量更重要,所以控制器8可以在较低容量模式下操作存储访问。然而,当存储设备6累积越来越多的数据时,在尽可能少地牺牲速度、可靠性、以及安全性的同时,控制器8可以改变存储访问以允许更高的容量。
图3是示出根据本公开的一个或多个技术的被配置为基于存储器使用执行自虚拟化的示例性控制器8的概念和原理框图。在一些示例中,控制器8可以包括虚拟机13、配置模块22、写入模块24、读取模块28、以及多个通道控制器32A-32N(统称为“通道控制器32”)。在其它示例中,控制器8可以包括额外的模块或硬件单元,或者可以包括更少的模块或硬件单元。控制器8可以包括一个或多个微处理器、数字信号处理器(digital signalprocessors,DSP)、专用集成电路(application specific integrated circuits,ASIC)、现场可编程门阵列(field programmable gate arrays,FPGA)、或者其它数字逻辑电路。
控制器8可以经由接口14与主机设备4接口,并且管理向存储器设备16存储数据和从存储器设备16检索数据。例如,控制器8的写入模块24可以管理向存储器设备16写入。例如,写入模块24可以接收可以被称为用户数据的数据,以及经由接口14从主机设备4接收指示存储设备6存储与逻辑地址相关联的数据的消息。写入模块24可以管理将用户数据写入到存储器设备16。
例如,写入模块24可以管理由主机设备4使用的逻辑地址之间的转换,以管理被写入模块24使用的数据和物理块地址的存储位置,以将数据直接写入到存储器设备。控制器8的写入模块24可以利用将由存储器设备16存储的数据的逻辑地址(或逻辑块地址)转换为由存储器设备16存储的数据的物理块地址的闪存转换层或间接表。例如,主机设备4可以将由存储器设备16存储的数据的逻辑块地址利用于到存储设备6的指令或消息中,而写入模块24利用数据的物理块地址来控制将数据写入存储器设备16(类似地,读取模块28可以利用物理块地址来控制从存储器设备16读取数据)。物理块地址与存储器设备16的实际的物理块相对应。在一些示例中,写入模块24可以将闪存转换层或表存储在易失性存储器12中。在接收一个或多个的物理块地址时,写入模块24可以定义和/或选择一个或多个物理块,并且将消息传达到通道控制器32A-32N(统称为“通道控制器32”),其使得通道控制器32将数据写入物理块。
通道控制器32中的每个通道控制器可以被连接到通道18中的相应的通道。在一些示例中,控制器8可以包括与存储设备2的通道18的数量相同的数量的通道控制器32。通道控制器32可以执行对连接到相应的通道的存储器设备16的寻址、编程、擦除和读取的紧密控制,例如,在写入模块24和/或读取模块28的控制下。
根据本公开的技术,控制器8的配置模块22可以确定当存储访问中的每个单元被配置为处于第一级模式时,NVMA 10中的虚拟机13的存储访问的最大量。当存储访问中的每个单元被配置为处于第一级模式时,存储访问中的每个单元可以具有每一单元的比特的最大允许数量。存储访问可以是存储器设备16的任何部分或者整个NVMA 10。
例如,在图3的示例中,虚拟机13的存储访问可以包括NVMA 10的三分之一。当每个单元具有每一单元三个比特的最大容量时(即当单元处于TLC模式时),整个NVMA 10可以包括3千兆字节(gigabytes,GB)总存储量。因而,虚拟机13的存储访问的最大量可以是1GB。
在这样的实例中,虚拟机13可以包括多个不同的虚拟机,虚拟机中的每一个可以提供对NVMA内的唯一存储访问的访问。因而,每个虚拟机可以被配置为将相应的主机设备连接到不同的存储访问。
在一些示例中,NVMA 10可以包括多个块,每个块包括多个页面,并且每个页面包括多个单元。在这样的示例中,每个块的第一部分(例如,块的一个或多个页面或者块内的页面的单元的某部分)可以被配置为处于第一级模式(即TLC模式),每个块的第二部分(例如,块的一个或多个页面或者块内的页面的单元的某部分)可以被配置为处于第二级模式(即SLC模式),并且每个块的第三部分(例如,块的一个或多个页面或者块内的页面的单元的某部分)可以被配置为处于第三级模式(即MLC模式)。
在其他示例中,包括四级单元(quad-level cell,QLC)模式的模式不同的组合可以被用于块的不同部分(例如,块的一个或多个页面或者块内的页面的单元的某部分)。每个块可以被分割为每一块少至一个部分(即块的每个页面具有统一的级别模式)。每个块还可以具有多个部分,包括两部分、三部分、四部分或者更多,其中每个部分最初被配置为处于不同的级别模式。每个部分可以属于不同的存储访问,并且每个存储访问可以与主机设备的不同的虚拟机工作负载相对应。
配置模块22可以将虚拟机13的存储访问中的每个单元配置为处于第二级模式。当存储访问中的每个单元被配置为处于第二级模式时,存储访问中的每个单元可以具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量。例如,控制器8可以将NVMA10中的1GB存储访问中的每个单元配置为处于SLC模式,使得单元中的每一个被配置为每一单元仅存储单一比特,而不是当单元被配置在TLC模式时的每一单元的比特的最大可允许数量。因而,NVMA 10可以根据配置而仅被配置为存储最大1GB的1/3GB。在一些实例中,主机设备4可以不知道较低的容量(即1/3GB)。因而,主机设备4可以仅知道真实的最大容量(即1GB)。
如上所述,NVMA 10可以被划分为三个存储访问。三个存储访问中的每一个可以具有相同的最大容量,将NVMA 10均匀地划分为三分之一。如上所述,配置模块22可以最初将存储访问中的一个配置为处于SLC模式。配置模块22可以最初将NVMA 10的第二存储访问配置为处于MLC模式。配置模块22可以最初将NVMA 10的第三存储访问配置为处于TLC模式。通过利用用于存储访问的三种不同的级别模式,控制器8可以向主机提供对最适合它们的需要的存储访问的访问。例如,控制器8可以将要求用于长期存储的高安全级别的主机定向到被配置为处于SLC模式的存储访问。相反地,控制器8可以将需要短期存储和较低安全级别的主机定向到被配置为处于TLC模式的存储访问。
图4D描述了这样的配置。在图4D中,假设特殊程序和读取命令(即NAND闪速存储器支持),使得在设备的寿命期间能够灵活地变化验证参考级别和读取参考级别的数量。当存储设备6被配置为处于SLC模式时的编程和读取操作变得比存储设备6被配置为处于QLC模式时的编程和读取操作快得多,并且QLC NAND最初能够在SLC模式下操作。因为编程和擦除循环所涉及到的电子隧道较少,所以闪存单元损坏随着高度编程状态的级别降低而变得更小。在SLC模式期间的损坏远小于在QLC模式期间的损坏,所以初始的SLC模式操作不会很大程度上降低整个NAND的可靠性。
在图4D中,电压组52表示在SLC模式下的单元的不同配置。由于在每个单元中仅存储一个比特,所以单元可以被配置为0或者1。因而,对于验证参考级别和读取参考级别操作中的每一个,仅需要单一电荷。
电压组54表示在MLC模式下的单元的不同配置。由于在每个单元中存储两个比特,所以单元可以被配置为00、01、10、或者11。因而,每个验证参考级别操作需要三个电荷,并且每个读取参考级别操作需要平均3/2个电荷,增加了当相比于SLC模式时所涉及的电子隧道的量,并且降低了存储驱动的整体稳定性。
电压组56表示在TLC模式下的单元的不同配置。由于在每个单元中存储三个比特,所以单元可以被配置为000、001、010、011、100、101、110、或111。因而,每个验证参考级别操作需要七个电荷,并且每个读取参考级别操作需要平均7/3个电荷,增加了当相比于MLC和SLC模式时所涉及的电子隧道的量,并且降低了存储驱动器的整体稳定性。
电压组58表示在QLC模式下的单元的不同配置。因为每个单元中存储四个比特,所以单元可以被配置为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、或1111。因而,每个验证参考级别操作需要十五个电荷,并且每个读取参考级别操作需要平均15/4个电荷,增加了当相比于TLC、MLC和SLC模式时所涉及的电子隧道的量,并且降低了存储驱动器的整体稳定性。
在图4D中所示的配置之间切换时,配置模块22可以改变穿过每个单元的电压。可以通过将电荷注入到单元的浮动栅极来编程单一单元,以导致电压状态V1-V16中的一个是单元阈值电压。电压组52可以仅包括这些电压状态中的两个。电压组54可以仅包括这些电压状态中的四个。电压组56可以仅包括这些电压状态中的八个。电压组58可以包括这些电压状态中的每一个。读取模块28可以使通道控制器18中的一个或多个通过施加落在V1-V16的两个“相邻”可能单元电压之间的读取参考电压R1-R15来区分第v个单元的可能电压,以从单元读取数据。如图4D中示出的示例所示,读取模块28可以使用第一读取参考电压R1来从单元的剩余电压V2-V16中区分电压V1。类似地,读取模块28可以使用第二读取参考电压R2来区分{V1,V2}选择和{V3-V16}选择。换句话说,读取模块28可以使用第二参考读取电压区分具有V1或V2的电压的单元与具有V3-V16中的任何的电压的单元。读取模块28可以使用第三参考读取电压R3来区分电压V4-V16和剩余电压V1-V3等。这里还示出了被配置为处于SLC模式的单元如何比被配置为处于QLC模式的单元承受更少的压力。
现在返回图3,在这样的示例中,配置模块22可以从主机设备接收对访问NVMA 10的请求。配置模块22可以确定主机设备的客户级别。客户级别可以基于主机设备的安全级别、对主机设备的数据存储要求、或者关于可能影响主机设备的数据存储需求的主机设备的任何其他信息。至少部分地基于主机设备的客户级别,控制器8可以将主机设备分配给特定的虚拟机工作负载,使得主机设备被分配给最接近匹配主机设备的虚拟机的需求的虚拟机工作负载。
在某些时候,诸如在垃圾收集期间或者在写入模块24对NVMA 10中的存储访问执行一定数量的写入操作之后,配置模块22可以确定在存储访问的每个单元中所使用的比特的总数量,并且将在存储访问的每个单元中所使用的比特的总数量与在存储访问的每个单元中所使用的比特的阈值数量进行比较。在一些实例中,比特的阈值数量可以是当前模式给定的最大容量的某百分比,诸如75%、80%、或者100%等。
基于该比较,配置模块22可以将虚拟机13的存储访问中的单元中的一个或多个重新配置为处于第三级模式。当存储访问中的单元中的一个或多个被配置为处于第三级模式时,存储访问中的单元中的一个或多个可以具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。例如,控制器8可以确定在存储访问的每个单元(当前全部处于SLC模式)上所使用的比特的总数量等于可用比特的95%。95%比特使用可以超过用于存储访问的比特的阈值数量。
基于该比较,配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于MLC模式,使得单元中的一个或多个可以每一单元存储两个比特,而不是每一单元存储一个比特。在一些实例中,控制器8可以仅重新配置足够的单元的页面,使得比特的总数量不再超过比特的阈值数量(即使得比特的总数量小于阈值的指定的百分比)。在其它实例中,配置模块22可以确定要求处于第三级模式的单元的页面的数量,以便让写入模块24能够将整个所接收的数据请求写入到存储访问。在仍然其它实例中,控制器8可以将整个存储访问重新配置为处于第三级模式。在图2的示例中,配置模块22可以将整个存储访问重新配置为处于MLC模式。因而,存储访问的新存储容量可以是2/3GB。
在某些实例中,在稍后的时间,诸如在垃圾收集、SR/IOV期间或在写入模块24对NVMA 10中的存储访问执行一定数量的写入操作之后,配置模块22可以再次将在存储访问的每个单元中所使用的比特的总数量与被配置为处于第三级模式(即MLC模式)的存储访问的每个单元中所使用的比特的第二阈值数量进行比较。如果所使用的比特的总数量超过第二阈值,则配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于第一级模式(即TLC模式)。这样做时,配置模块22将使存储访问的容量增加为满1GB的最大容量。因而,控制器8可以在存储访问中利用更安全和有效的数据存储的模式,直到由于需要增加的容量而有必要降低存储访问的速度。
贯穿以上示例,参考了被配置为被分割为三个存储访问以及利用三种不同的级别模式的NVMA 10。在某些实例中,NVMA 10可以仅被配置为被分割为两个存储访问和/或仅利用两个级别模式。在这样的实例中,配置模块22可以配置两个存储访问内的单元在第一级模式(例如,SLC模式)和第二级模式(MLC模式)之间变化。
在其它实例中,NVMA 10可以被分割为四个存储访问和/或利用四个不同的级别模式。例如,NVMA 10可以具有最大存储容量4GB,其中每个存储访问覆盖1GB。在这样的实例中,第一级模式可以是四级单元(quad-level cell,QLC)模式,其中用于QLC模式的每一单元的比特的最大可允许数量等于每一单元四个比特。配置模块22可以最初将存储访问中的单元配置为处于SLC模式,意味着存储访问可以具有1/4GB的容量。
类似地,对于上述过程,当在存储访问的单元中的每一个中所使用的比特的总数量超过第一阈值数量时,配置模块22可以将存储访问重新配置为处于MLC模式,从而使存储访问的容量增加到1/2GB。在某些实例中,在稍后的时间,诸如在垃圾收集、SR/IOV期间或在写入模块24对NVMA 10中的存储访问执行一定数量的写入操作之后,配置模块22可以再次将在存储访问的每个单元中所使用的比特的总数量与被配置为处于第三级模式(即MLC模式)的存储访问的每个单元中所使用的比特的第二阈值数量进行比较。如果所使用的比特的总数量超过第二阈值,则配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于第四级模式,诸如TLC模式。这样做时,配置模块22将使存储访问的容量增加到3/4GB。
再次,在甚至更后的时间,诸如在垃圾收集、SR/IOV期间或在写入模块24对NVMA10中的存储访问执行一定数量的写入操作之后,配置模块22可以再次将在存储访问的每个单元中所使用的比特的总数量与被配置为处于第四级模式(即TLC模式)的存储访问的每个单元中所使用的比特的第三阈值数量进行比较。如果所使用的比特的总数量超过第三阈值,则配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于第一级模式(即QLC模式)。这样做时,配置模块22将使存储访问的容量增加到最大容量1GB。
图4A是示出根据本公开的一个或多个技术的包含由控制器分组为用于自虚拟化处理的存储访问40A-40C的数据块的存储器设备16Aa的示例性细节的概念和原理框图。为了便于例示,将共同参考图1、图2和图3的存储器设备16Aa的数据块17A-17N(此后为“数据块17”)和控制器8来描述图4的示例性技术。然而,该技术可以与硬件或者软件的任何组合一起使用。
在图4A的示例中,存储器设备16Aa的数据存储部分包括多个块17A-17N。块17A-17N中的每一个还包括多个页面19。页面19中的每一个包括多个单元。存储器设备16Aa还包括三个存储访问40A-40C。存储访问40A-40C中的每个存储访问包括块17A-17N中的每一个的一部分。在一些示例中,存储访问40A-40C中的每一个可以包括块17A-17N中的每一个的三分之一。在其它示例中,存储访问40A-40C中的每一个可以包括块17A-17N中的每一个的不相等的百分比,其中该百分比基于访问相应的存储访问40A-40C的主机设备的典型需求。
虚拟机13A-13C可以包括以上针对图1和图3描述的虚拟机13的功能。在图4的示例中,虚拟机13A可以向主机设备提供对存储访问40A的访问。类似地,虚拟机13B可以向主机设备提供对存储访问40B的访问。最后,虚拟机13C可以向主机设备提供对存储访问40C的访问。
根据本文描述的技术,控制器8可以最初将存储访问40A-40C中的每一个配置为处于不同的级别模式。例如,控制器8可以最初将存储访问40A中的页面19A-19Na的单元配置为处于SLC模式,其中页面19A-19Na中的每个单元被配置为每一单元仅存储一个比特。因而,存储访问40A可以仅被配置为最初存储比特的最大可能量的三分之一。类似地,控制器8可以最初将存储访问40B中的页面19Ab-19Nb的单元配置为处于MLC模式,其中页面19Ab-19Nb中的每个单元被配置为每一单元存储两个比特。因而,存储访问40B可以仅被配置为最初存储比特的最大可能量的三分之二。最后,控制器8可以最初将存储访问40C中的页面19Am-19Nm的单元配置为处于TLC模式,其中页面19Am-19Nm中的每个单元被配置为每一单元仅存储最大三个比特。因此,存储访问40C可以仅被配置为最初存储比特的最大可能量的三分之一。
在垃圾回收或SR-TOV期间,控制器8可以确定在存储访问40A中所使用的比特的数量。如果控制器8确定比特的数量超过比特的阈值数量,则控制器8可以将存储访问40A的页面19Aa-19Na中的单元中的一个或多个重新配置为处于MLC模式而不是SLC模式。类似地,如果控制器8确定在存储访问40B中所使用的比特的数量超过第二阈值(或者在存储访问40A被转换为MLC模式之后,在存储访问40A中所使用的比特的数量超过第二阈值),则控制器8可以将存储访问40B中的页面19Ab-19Nb中的单元中的一个或多个(或者存储访问40A中的页面19A-19Na中的单元中的一个或多个)重新配置为处于TLC模式。因而,控制器8可以在存储访问40A-40C中利用更安全和有效的数据存储的模式,直到由于需要增加的容量而有必要降低存储访问的安全性。
图4B是示出根据本公开的一个或多个技术的包含由控制器将数据块分组为用于自虚拟化处理的存储访问的存储器设备的示例性细节的另一概念和原理图。总SSD 6容量等于X+Y+Z。X是虚拟机(“VM”)1 13A的容量,Y是VM2 13B的容量,以及Z是VM3 13C的容量。这些虚拟机的优先级为VM1 13A,然后VM2 13B,然后VM3 13C。VM1可以被利用于第一类进程,VM2可以被利用于第二类进程,VM3可以被利用于第三类进程。
图4C是根据本公开的一个或多个技术的描绘用于各种级别单元模式的每个虚拟机工作负载的性能水平和物理容量利用率的图表50。在图表50中,SSD可以具有三个存储访问,存储访问中的每一个可使用不同的相应的虚拟机工作负载来访问。如图表50中所示,虽然物理容量利用率百分比最小,但是被配置为处于SLC模式的存储访问(使用VM1的虚拟机工作负载访问)中的单元的性能水平为最高。被配置为处于MLC模式的存储访问(使用VM2的虚拟机工作负载访问或者一旦存储容量太高以使相应的存储访问处于SLC模式的VM1的虚拟机工作负载访问)中的单元的性能水平为第二高,并且物理容量利用率百分比是最大容量的三分之二。被配置为处于TLC模式的存储访问(使用VM3的虚拟机工作负载访问或者一旦存储容量过高以使相应的存储访问处于MLC模式的VM1或VM2的虚拟机工作负载访问)中的单元的性能级别为最低,尽管存储访问的物理容量利用率百分比为最高。
图5是示出根据本公开的一个或多个技术由存储器设备的控制器执行的示例性自虚拟化操作的流程图。为了便于例示,将同时参考图1和图3的存储设备6和控制器8来描述图5的示例性技术。然而,该技术可以与硬件或者软件的任何组合一起使用。
根据本公开的技术,控制器8可以确定当存储访问中的每个单元被配置为处于第一级模式(62)时,NVMA 10中的虚拟机13的存储访问的最大量。当存储访问中的每个单元被配置为处于第一级模式时,存储访问中的每个单元可以具有每一单元的比特的最大可允许数量。存储访问可以是存储器设备16的任何部分或者整个NVMA 10。
例如,在图1的示例中,虚拟机13的存储访问可以包括整个NVMA 10(即页面19中的单元中的每一个)。NVMA 10可以包括总共256个单元,256个单元中的每一个具有每一单元3个比特的最大容量(即当单元处于TLC模式时)。因而,虚拟机13的存储访问的最大量可以是总共768个比特。
控制器8可以将虚拟机13的存储访问中的每个单元配置为处于第二级模式(64)。当存储访问中的每个单元被配置为处于第二级模式时,存储访问中的每个单元可以具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量。例如,控制器8可以将NVMA10中的256个单元中的每一个配置为处于SLC模式,使得256个单元中的每一个被配置为每一单元仅存储单一比特,而不是当单元被配置为处于TLC模式时的每一单元的比特的最大可允许数量。因而,NVMA 10可以根据配置而仅被配置为存储最大768个比特中的256个。在一些实例中,主机设备4可以不知道较低的容量(即256个比特)。因而,主机设备4可以仅知道真实的最大容量(即768个比特)。
在某些时候,诸如在垃圾收集期间或者在控制器8对NVMA 10执行一定数量的写入操作之后,控制器8可以确定在存储访问(66)的每个单元中所使用的比特的总数量,并且将在存储访问的每个单元中所使用的比特的总数量与在存储访问(68)的每个单元中所使用的比特的阈值数量进行比较。在一些实例中,比特的阈值数量可以是当前模式给定的最大容量的某百分比,诸如75%、80%、或者100%等。
基于该比较,控制器8可以将虚拟机13的存储访问中的单元19中的一个或多个重新配置为处于第三级模式(70)。当存储访问中单元中的一个或多个被配置为处于第三级模式时,存储访问中的单元中的一个或多个可以具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。例如,控制器8可以确定在NVMA 10的每个单元(当前全部处于SLC模式)所使用的比特的总数量等于254个比特。254-比特总数可以超过用于NVMA 10的比特的阈值数量。
基于此比较,控制器8可以将存储访问中的单元中的一个或多个重新配置为处于MLC模式,使得单元中的一个或多个可以每一单元存储两个比特,而不是每一单元存储一个比特。在一些实例中,控制器8可以仅重新配置足够的单元,使得比特的总数量不再超过比特的阈值数量(即使得比特的总数量小于阈值的指定的百分比)。在其它实例中,控制器8可以将整个存储访问重新配置为处于第三级模式。
图6是示出根据本公开的一个或多个技术由存储器设备的控制器执行的更详细的示例性自虚拟化操作的流程图。为了便于例示,将同时参考图1和图3的存储设备6和控制器8来描述图6的示例性技术。然而,该技术可以与硬件或者软件的任何组合一起使用。
根据本公开的技术,控制器8可以确定当存储访问中的每个单元被配置为处于TLC模式(80)时,NVMA 10中的虚拟机13的存储访问的最大量。例如,在图1的示例中,虚拟机13的存储访问可以包括NVMA 10的三分之一。当每个单元具有每一单元三个比特的最大容量时(即当单元处于TLC模式时),整个NVMA 10可以包括3千兆字节(GB)总存储。因而,虚拟机13的存储访问的最大量可以是1GB。
控制器8可以将虚拟机13的存储访问中的每个单元配置为处于SLC模式(82)。因而,单元中的每一个被配置为每一单元仅存储单一比特,而不是当单元被配置为处于TLC模式时的每一单元的比特的最大可允许数量。换句话说,NVMA 10可以根据配置而仅被配置为存储最大1GB的1/3GB。在一些实例中,主机设备4可以不知道较低的容量(即1/3GB)。因而,主机设备4可以仅知道真实的最大容量(即1GB)。
在某些时候,诸如在垃圾收集期间或者在写入模块24对NVMA 10中的存储访问执行一定数量的写入操作之后,配置模块22可以确定在存储访问(84)的每个单元中所使用的比特的总数量,并且将在存储访问的每个单元中所使用的比特的总数量与在存储访问(86)的每个单元中所使用的比特的阈值数量进行比较。在一些实例中,比特的阈值数量可以是当前模式给定的最大容量的某百分比,诸如75%、80%、或者100%等。
基于该比较,配置模块22可以将虚拟机13的存储访问中的单元中的一个或多个重新配置为处于MLC模式(88)。例如,控制器8可以确定在NVMA 10的每个单元(当前全部处于SLC模式)上所使用的比特的总数量等于可使用的比特的95%。95%比特使用可以超过用于NVMA 10的比特的阈值数量。基于此比较,配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于MLC模式,使得单元中的一个或多个可以每一单元存储两个比特,而不是每一单元存储一个比特。在一些实例中,控制器8可以仅重新配置足够的单元,使得比特的总数量不再超过比特的阈值数量(即使得比特的总数量小于阈值的指定的百分比)。在其它实例中,配置模块22可以确定要求处于第三级模式的单元的数量,以便让写入模块24能够将整个所接收的数据请求写入到存储访问。在其它实例中,控制器8可以将整个存储访问重新配置为处于第三级模式。在图6的示例中,配置模块22可以将整个存储访问重新配置为处于MLC模式。因而,用于存储访问的新存储容量可以是2/3GB。
在某些实例中,在稍后的时间,诸如在垃圾收集、SR/IOV期间或在写入模块24对NVMA 10中的存储访问执行一定数量的写入操作之后,配置模块22可以再次将在存储访问的每个单元中所使用的比特的总数量与被配置为处于第三级模式(即MLC模式)(90)的存储访问的每个单元中所使用的比特的第二阈值数量进行比较。如果所使用的比特的总数超过第二阈值,则配置模块22可以将存储访问中的单元中的一个或多个重新配置为处于TLC模式(92)。这样做时,配置模块22将使存储访问的容量增加到满1GB的最大容量。因而,控制器8可以在存储访问中利用更安全和有效的数据存储的模式,直到由于需要增加的容量而有必要降低存储访问的安全性。
示例1。一种方法,包括:由控制器确定当存储访问中的每个单元被配置为处于第一级模式时,虚拟机工作负载的存储访问的最大量,其中存储访问中的单元中的每一个被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量;由控制器将虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,其中存储访问中的单元中的每一个被配置为处于第二级模式包括存储访问中的单元中的每一个具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;由控制器确定在存储访问的单元中的每一个中所使用的比特的总数量;由控制器将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;并且基于该比较,由控制器将虚拟机的存储访问中的单元中的一个或多个重新配置为处于第三级模式,其中存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的单元中的每一个具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
示例2。根据示例1的方法,其中第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,其中用于MLC模式的每一单元的比特的数量为每一单元两个比特,其中存储访问包括第一存储访问,其中将第一存储访问中的单元中的每一个配置为处于第二级模式包括最初将第一存储访问中的单元中的每一个配置为处于SLC模式,并且其中该方法还包括:由控制器最初将SSD的第二存储访问配置为处于MLC模式,其中第二存储访问与第二虚拟机工作负载相关联;以及由控制器最初将SSD的第三存储访问配置为处于TLC模式,其中第三存储访问与第三虚拟机工作负载相关联,其中重新配置第一存储访问包括:响应于确定在第一存储访问中的单元中的每一个中所使用的比特的数量超过比特的阈值数量,由控制器将第一存储访问中的单元中的每一个重新配置为处于MLC模式。
示例3。示例1-2中任一项的方法,其中第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,并且其中用于MLC模式的每一单元的比特的数量为每一单元两个比特。
示例4。示例3的方法,其中所使用的比特的阈值数量包括比特的第一阈值数量,该方法还包括:由控制器将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;并且基于该比较,由控制器将虚拟机的存储访问中的一个或多个单元重新配置为处于第一级模式,其中存储访问中的一个或多个单元被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
示例5。示例1-4中任一项的方法,其中虚拟机包括第一虚拟机,该方法还包括:由控制器确定当存储访问中的单元中的每一个被配置为处于第一级模式时,SSD上的第二虚拟机的存储访问的最大量;以及由控制器将第二虚拟机的存储访问中的单元中的每一个配置为处于第三级模式。
示例6。示例5的方法,还包括:由控制器从主机设备接收对访问SSD的请求;由控制器确定主机设备的客户级别;以及至少部分地基于主机设备的客户级别,由控制器将主机设备分配给第一虚拟机或第二虚拟机之一。
示例7。示例1-6中任一项的方法,其中重新配置一个或多个单元包括:由控制器接收对将数据写入存储访问的请求;由控制器确定要求处于第三级模式的单元的数量,以便控制器将所接收的数据写入到存储访问;以及由控制器将存储访问中所确定的数量的单元重新配置为处于第三级模式。
示例8。示例1-7中任一项的方法,其中重新配置一个或多个单元包括:由控制器将整个存储访问重新配置为处于第三级模式。
示例9。示例1-8中任一项的方法,其中第一级模式包括四级单元(QLC)模式,其中用于QLC模式的每一单元的比特的最大可允许数量等于每一单元四个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,其中用于MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中该方法还包括:由控制器将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;并且基于该比较,由控制器将虚拟机的存储访问中的一个或多个单元重新配置为处于第四级模式,其中存储访问中的一个或多个单元被配置为处于第四级模式包括存储访问中的单元中的每一个具有大于用于第三级模式的每一单元的比特的数量的每一单元的比特的数量。
示例10。示例9的方法,其中第四级模式包括三级单元(TLC)模式,其中TLC模式的每一单元的比特的数量为每一单元三个比特,并且其中该方法还包括:由控制器将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第三阈值数量进行比较;并且基于该比较,由控制器将虚拟机的存储访问中的一个或多个单元重新配置为处于第一级模式,其中存储访问中的一个或多个单元被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
示例11。示例1-10中任一项的方法,其中重新配置一个或多个单元包括:在垃圾收集处理期间由控制器重新配置一个或多个单元。
示例12。示例1-11中任一项的方法,其中存储访问包括第一存储访问,其中SSD包括多个块,其中该方法还包括:由控制器最初将包括所述多个块中的每个块的第一部分的第一存储访问配置为处于第一级模式,其中第一存储访问与第一虚拟机工作负载相关联;由控制器最初将包括所述多个块中的每个块的第二部分的第二存储访问配置为处于第二级模式,其中第二存储访问与第二虚拟机工作负载相关联;以及由控制器最初将包括多个块中的每个块的第三部分的第三存储访问配置为处于第三级模式,其中第三存储访问与第三虚拟机工作负载相关联。
示例13。示例1-12中任一项的方法,其中重新配置一个或多个单元包括:由控制器将一个或多个单元重新配置为单根输入/输出虚拟化处理的一部分。
示例14。一种存储设备,包括:存储访问,其包括多个单元;以及控制器,被配置为:确定当存储访问中的单元中的每一个被配置为处于第一级模式时,虚拟机工作负载的存储访问的最大量,其中存储访问中的单元中的每一个被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量;将虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,其中存储访问中的单元中的每一个被配置为处于第二级模式包括存储访问中的单元中的每一个具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;确定在存储访问的单元中的每一个中所使用的比特的总数;将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;并且基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式,其中存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的单元中的每一个具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
示例15。根据示例14的存储设备,其中第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,其中用于MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中控制器还被配置为:将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;并且基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第一级模式,其中存储访问中的一个或多个单元被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
示例16。示例14-15中任一项的存储设备,其中虚拟机包括第一虚拟机,其中控制器还被配置为:确定当存储访问中的单元中的每一个被配置为处于第一级模式时,SSD上的第二虚拟机的存储访问的最大量;将第二虚拟机的存储访问中的单元中的每一个配置为处于第三级模式;从主机设备接收对访问SSD的请求;确定主机设备的客户级别;以及至少部分地基于主机设备的客户级别将主机设备分配给第一虚拟机或第二虚拟机之一。
示例17。示例14-16中任一项的存储设备,其中第一级模式包括四级单元(QLC)模式,其中用于QLC模式的每一单元的比特的最大可允许数量等于每一单元四个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,其中用于MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中控制器还被配置为:将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第四级模式,其中存储访问中的一个或多个单元被配置为处于第四级模式包括存储访问中的单元中的每一个具有大于用于第三级模式的每一单元的比特的数量的每一单元的比特的数量,其中第四级模式包括三级单元(TLC)模式,并且其中用于TLC模式的每一单元的比特的数量为每一单元三个比特;将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第三阈值数量进行比较;并且基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第一级模式,其中存储访问中的一个或多个单元被配置为处于第一级模式包括存储访问中的单元的每一个具有每一单元的比特的最大可允许数量。
示例18。示例14-17中任一项的方法,其中存储访问包括第一存储访问,其中SSD包括多个块,其中控制器进一步被配置为:最初将包括多个块中的每个块的第一部分的第一存储访问配置为处于第一级模式,其中第一存储访问与第一虚拟机工作负载相关联;最初将包括多个块中的每个块的第二部分的第二存储访问配置为处于第二级模式,其中第二存储访问与第二虚拟机工作负载相关联;以及最初将包括多个块中的每个块的第三部分的第三存储访问配置为处于第三级模式,其中第三存储访问与第三虚拟机工作负载相关联。
示例19。一种存储指令的计算机可读存储介质,当该指令执行时,使存储设备的控制器:确定当存储访问中的单元中的每一个被配置为处于第一级模式时,在固态驱动器(SSD)上的虚拟机工作负载的存储访问的最大量,其中存储访问中的单元中的每一个被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量;将虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,其中存储访问中的单元中的每一个被配置为处于第二级模式包括存储访问中的单元中的每一个具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;确定在存储访问的单元中的每一个中所使用的比特的总数量;将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;以及基于该比较,将虚拟机的存储访问中的单元中的一个或多个重新配置为处于第三级模式,其中存储访问中的一个或多个单元被配置为处于第三级模式包括存储访问中的单元中的每一个具有大于用于第二级模式的每一单元的比特的数量的每一单元的比特的数量。
示例20。示例19的计算机可读存储介质,其中第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中第二级模式包括单级单元(SLC)模式,其中用于SLC模式的每一单元的比特的数量为每一单元一个比特,其中第三级模式包括多级单元(MLC)模式,其中用于MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中指令还使控制器:将在存储访问的单元中的每一个中所使用的比特的总数量与在存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;并且基于该比较,将虚拟机的存储访问中的一个或多个单元重新配置为处于第一级模式,其中存储访问中的一个或多个单元被配置为处于第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
示例21。一种设备,包括用于执行示例1-13的任何组合的方法的装置。
示例22。一种用指令编码的计算机可读存储介质,当该指令执行时,使计算设备的至少一个处理器执行示例1-13的任何组合的方法。
示例23。一种设备,包括可由一个或多个处理器操作以执行示例1-13的任何组合的方法的至少一个模块。
本公开中描述的技术可以至少部分地在硬件、软件、固件、或者其任何组合中来实施。例如,所描述的技术的各个方面可以在一个或多个处理器内来实施,该处理器包括一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或者任何其它等效的集成或离散的逻辑电路、以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指单独的或者与其它逻辑电路或任何其它等效电路组合的前述逻辑电路中的任何一种。包括硬件的控制单元还可以执行本公开的一个或多个技术。
这样的硬件、软件和固件可以在相同设备内或在分开的设备内实施,以支持本公开中描述的各种技术。此外,所描述的单元、模块或组件中的任何一个可以被一起实施或被分开实施为离散的但可互操作的逻辑设备。将不同特征描述为模块或单元意图突出不同的功能方面,并不意味着这些模块或单元必须通过分开的硬件、固件或软件组件来实施。相反,与一个或多个模块或者单元相关联的功能可以由分开的硬件、固件或软件组件执行、或者集成在公共或分开的硬件、固件或软件组件中。
本公开中描述的技术还可以在包括用指令编码的计算机可读存储介质的制品中被具体实现或被编码。在包括计算机可读存储介质编码的制品中嵌入或编码的指令可以使一个或多个可编程处理器或其他处理器实施本文所描述的一个或多个技术,诸如当在计算机可读存储介质中包括或编码的指令由一个或多个处理器执行时。计算机可读存储介质可以包括随机存取存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可编程只读存储器(programmable read only memory,PROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)、电可擦除可编程只读存储器(electronically erasable programmable read only memory,EEPROM)、闪速存储器、硬盘、光盘ROM(compact disc ROM,CD-ROM)、软盘、卡带、磁性介质、光学介质或其它计算机可读介质。在一些示例中,制品可以包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可以包括非瞬时性介质。术语“非瞬时性”可以指示存储介质没有在载波或传播信号中具体实现。在某些示例中,非瞬时性存储介质可以存储能够随时间变化(例如,在RAM或高速缓冲存储器中)的数据。
已经描述了本公开的各种示例。考虑了所描述的系统、操作或者功能的任何组合。这些以及其它示例在下面的权利要求的范围之内。
Claims (20)
1.一种方法,包括:
由控制器确定当存储访问中的每个单元被配置为处于具有每一单元的比特的最大可允许数量的第一级模式时,固态驱动器(SSD)上的虚拟机工作负载的存储访问的最大量;
由所述控制器将所述虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,所述第二级模式具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;
由所述控制器确定在所述存储访问的单元中的每一个中所使用的比特的总数量;
由所述控制器将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;以及
基于所述比较,由所述控制器将所述虚拟机的存储访问中的单元中的一个或多个重新配置为处于第三级模式,所述第三级模式具有大于用于所述第二级模式的每一单元的比特的数量的每一单元的比特的数量。
2.如权利要求1所述的方法,其中所述第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中所述第二级模式包括单级单元(SLC)模式,其中用于所述SLC模式的每一单元的比特的数量为每一单元一个比特,其中所述第三级模式包括多级单元(MLC)模式,其中用于所述MLC模式的每一单元的比特的数量为每一单元两个比特,
其中所述存储访问包括第一存储访问,其中将所述第一存储访问中的单元中的每一个配置为处于所述第二级模式包括最初将所述第一存储访问中的单元中的每一个配置为处于所述SLC模式,
并且其中所述方法还包括:
由所述控制器最初将所述SSD的第二存储访问配置为处于所述MLC模式,其中所述第二存储访问与第二虚拟机工作负载相关联;以及
由所述控制器最初将所述SSD的第三存储访问配置为处于所述TLC模式,其中所述第三存储访问与第三虚拟机工作负载相关联,
其中重新配置所述第一存储访问包括:
响应于确定在所述第一存储访问中的单元中的每一个中所使用的比特的数量超过比特的阈值数量,由所述控制器将所述第一存储访问中的单元中的每一个重新配置为处于所述MLC模式。
3.如权利要求1所述的方法,其中所述第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中所述第二级模式包括单级单元(SLC)模式,其中用于所述SLC模式的每一单元的比特的数量为每一单元一个比特,其中所述第三级模式包括多级单元(MLC)模式,并且其中用于所述MLC模式的每一单元的比特的数量为每一单元两个比特。
4.如权利要求3所述的方法,其中所使用的比特的阈值数量包括比特的第一阈值数量,所述方法还包括:
由所述控制器将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;以及
基于所述比较,由所述控制器将所述虚拟机的存储访问中的一个或多个单元重新配置为处于具有每一单元的比特的最大可允许数量的第一级模式。
5.如权利要求1所述的方法,其中所述虚拟机包括第一虚拟机,所述方法还包括:
由所述控制器确定当所述存储访问中的单元中的每一个被配置为处于第一级模式时,所述SSD上的第二虚拟机的存储访问的最大量;以及
由所述控制器将所述第二虚拟机的存储访问中的单元中的每一个配置为处于所述第三级模式。
6.如权利要求5所述的方法,还包括:
由所述控制器从主机设备接收对访问所述SSD的请求;
由所述控制器确定所述主机设备的客户级别;以及
至少部分地基于所述主机设备的客户级别,由所述控制器将所述主机设备分配给所述第一虚拟机或所述第二虚拟机之一。
7.如权利要求1所述的方法,其中重新配置所述一个或多个单元包括:
由所述控制器接收对将数据写入到所述存储访问的请求;
由所述控制器确定要求处于所述第三级模式的单元的数量,以便所述控制器将接收到的数据写入到所述存储访问;以及
由所述控制器将所述存储访问中所确定的数量的单元重新配置为处于所述第三级模式。
8.如权利要求1所述的方法,其中重新配置所述一个或多个单元包括:
由所述控制器将所述整个存储访问重新配置为处于所述第三级模式。
9.如权利要求1所述的方法,其中所述第一级模式包括具有每一单元四个比特的每一单元的比特的最大可允许数量的四级单元(QLC)模式,其中所述第二级模式包括具有每一单元一个比特的单级单元(SLC)模式,其中所述第三级模式包括具有每一单元两个比特的多级单元(MLC)模式,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中所述方法还包括:
由所述控制器将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;以及
基于所述比较,由所述控制器将所述虚拟机的存储访问中的一个或多个单元重新配置为处于所述第四级模式,所述第四级模式具有大于用于所述第三级模式的每一单元的比特的数量的每一单元的比特的数量。
10.如权利要求9所述的方法,其中所述第四级模式包括具有每一单元三个比特的三级单元TLC模式,并且其中所述方法还包括:
由所述控制器将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第三阈值数量进行比较;以及
基于所述比较,由所述控制器将所述虚拟机的存储访问中的一个或多个单元重新配置为处于所述第一级模式,所述第一级模式具有每一单元的比特的最大可允许数量。
11.如权利要求1所述的方法,其中重新配置所述一个或多个单元包括:
在垃圾收集处理期间由所述控制器重新配置所述一个或多个单元。
12.如权利要求1所述的方法,其中所述存储访问包括第一存储访问,其中所述SSD包括多个块,其中所述方法还包括:
由所述控制器最初将包括所述多个块中的每个块的第一部分的第一存储访问配置为处于所述第一级模式,其中所述第一存储访问与第一虚拟机工作负载相关联;
由所述控制器最初将包括所述多个块中的每个块的第二部分的第二存储访问配置为处于所述第二级模式,其中所述第二存储访问与第二虚拟机工作负载相关联;以及
由所述控制器最初将包括所述多个块中的每个块的第三部分的第三存储访问配置为处于所述第三级模式,其中所述第三存储访问与第三虚拟机工作负载相关联。
13.如权利要求1所述的方法,其中重新配置所述一个或多个单元包括:
由所述控制器将所述一个或多个单元重新配置为单根输入/输出虚拟化处理的一部分。
14.一种存储设备,包括:
存储访问,其包括多个单元;以及
控制器,其被配置为:
确定当所述存储访问中的单元中的每一个被配置为处于第一级模式时,虚拟机工作负载的存储访问的最大量,其中所述存储访问中的单元中的每一个被配置为处于所述第一级模式包括所述存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量;
将所述虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,其中所述存储访问中的单元中的每一个被配置为处于所述第二级模式包括所述存储访问中的单元中的每一个具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;
确定在所述存储访问的单元中的每一个中所使用的比特的总数量;
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;以及
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式,其中所述存储访问中的一个或多个单元被配置为处于所述第三级模式包括所述存储访问中的单元中的每一个具有大于用于所述第二级模式的每一单元的比特的数量的每一单元的比特的数量。
15.如权利要求14所述的存储设备,其中所述第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中所述第二级模式包括单级单元(SLC)模式,其中用于所述SLC模式的每一单元的比特的数量为每一单元一个比特,其中所述第三级模式包括多级单元(MLC)模式,其中用于所述MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中所述控制器还被配置为:
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;以及
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于所述第一级模式,其中所述存储访问中的一个或多个单元被配置为处于所述第一级模式包括所述存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
16.如权利要求14所述的存储设备,其中所述虚拟机包括第一虚拟机,其中所述控制器还被配置为:
确定当所述存储访问中的单元中的每一个被配置为处于所述第一级模式时,所述SSD上的第二虚拟机的存储访问的最大量;
将所述第二虚拟机的存储访问中的单元中的每一个配置为处于所述第三级模式;
从主机设备接收对访问所述SSD的请求;
确定所述主机设备的客户级别;以及
至少部分地基于所述主机设备的客户级别,将所述主机设备分配给所述第一虚拟机或所述第二虚拟机之一。
17.如权利要求14所述的存储设备,其中所述第一级模式包括四级单元(QLC)模式,其中用于所述QLC模式的每一单元的比特的最大可允许数量等于每一单元四个比特,其中所述第二级模式包括单级单元(SLC)模式,其中用于所述SLC模式的每一单元的比特的数量为每一单元一个比特,其中所述第三级模式包括多级单元(MLC)模式,其中用于所述MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中所述控制器还被配置为:
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于第四级模式,其中所述存储访问中的一个或多个单元被配置为处于第四级模式包括所述存储访问中的单元中的每一个具有大于用于所述第三级模式的每一单元的比特的数量的每一单元的比特的数量,其中所述第四级模式包括三级单元(TLC)模式,并且其中用于所述TLC模式的每一单元的比特的数量为每一单元三个比特;
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第三阈值数量进行比较;以及
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于所述第一级模式,其中所述存储访问中的单元中的一个或多个被配置为处于所述第一级模式包括所述存储访问中的单元的每一个具有每一单元的比特的最大可允许数量。
18.如权利要求14所述的存储设备,其中所述存储访问包括第一存储访问,其中所述SSD包括多个块,其中所述控制器进一步被配置为:
最初将包括所述多个块中的每个块的第一部分的所述第一存储访问配置为处于所述第一级模式,其中所述第一存储访问与第一虚拟机工作负载相关联;
最初将包括所述多个块中的每个块的第二部分的第二存储访问配置为处于所述第二级模式,其中所述第二存储访问与第二虚拟机工作负载相关联;以及
最初将包括所述多个块中的每个块的第三部分的第三存储访问配置为处于所述第三级模式,其中所述第三存储访问与第三虚拟机工作负载相关联。
19.一种存储指令的计算机可读存储介质,当所述指令执行时,使存储设备的控制器:
确定当所述存储访问中的单元中的每一个被配置为处于第一级模式时,固态驱动器(SSD)上的虚拟机工作负载的存储访问的最大量,其中所述存储访问中的单元中的每一个被配置为处于所述第一级模式包括存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量;
将所述虚拟机的存储访问中的单元中的每一个配置为处于第二级模式,其中所述存储访问中的单元中的每一个被配置为处于所述第二级模式包括所述存储访问中的单元中的每一个具有小于每一单元的比特的最大可允许数量的每一单元的比特的数量;
确定在所述存储访问的单元中的每一个中所使用的比特的总数量;
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的阈值数量进行比较;以及
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于第三级模式,其中所述存储访问中的单元中的一个或多个被配置为处于所述第三级模式包括所述存储访问中的单元中的每一个具有大于用于所述第二级模式的每一单元的比特的数量的每一单元的比特的数量。
20.如权利要求19所述的计算机可读存储介质,其中所述第一级模式包括三级单元(TLC)模式,其中每一单元的比特的最大可允许数量等于每一单元三个比特,其中所述第二级模式包括单级单元(SLC)模式,其中用于所述SLC模式的每一单元的比特的数量为每一单元一个比特,其中所述第三级模式包括多级单元(MLC)模式,其中用于所述MLC模式的每一单元的比特的数量为每一单元两个比特,其中所使用的比特的阈值数量包括比特的第一阈值数量,并且其中指令还使所述控制器:
将在所述存储访问的单元中的每一个中所使用的比特的总数量与在所述存储访问的单元中的每一个中所使用的比特的第二阈值数量进行比较;以及
基于所述比较,将所述虚拟机的存储访问中的一个或多个单元重新配置为处于所述第一级模式,其中所述存储访问中的一个或多个单元被配置为处于所述第一级模式包括所述存储访问中的单元中的每一个具有每一单元的比特的最大可允许数量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/347,472 US20180129440A1 (en) | 2016-11-09 | 2016-11-09 | Self-virtualizing flash memory for solid state drive |
US15/347,472 | 2016-11-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108062201A true CN108062201A (zh) | 2018-05-22 |
Family
ID=62063889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710831420.8A Pending CN108062201A (zh) | 2016-11-09 | 2017-09-15 | 用于固态驱动器的自虚拟化闪速存储器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180129440A1 (zh) |
CN (1) | CN108062201A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
WO2020248206A1 (zh) * | 2019-06-14 | 2020-12-17 | 华为技术有限公司 | 一种硬盘控制方法及相关设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102106266B1 (ko) * | 2018-03-16 | 2020-05-04 | 성균관대학교산학협력단 | 이종 메모리 어레이를 이용한 메모리 장치 및 그 동작 방법 |
US10768816B2 (en) * | 2018-04-23 | 2020-09-08 | Western Digital Technologies, Inc. | Method and apparatus to manipulate customer data without using the host interface |
TW202018513A (zh) * | 2018-11-07 | 2020-05-16 | 威剛科技股份有限公司 | 固態硬碟及其資料存取的方法 |
US11062077B1 (en) * | 2019-06-24 | 2021-07-13 | Amazon Technologies, Inc. | Bit-reduced verification for memory arrays |
WO2022193270A1 (en) * | 2021-03-19 | 2022-09-22 | Micron Technology, Inc. | Write booster buffer flush operation |
KR20230058230A (ko) | 2021-10-22 | 2023-05-03 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090259797A1 (en) * | 2008-04-10 | 2009-10-15 | Sandisk Il Ltd. | Method, apparatus and computer readable medium for storing data on a flash device using multiple writing modes |
CN102171666A (zh) * | 2008-10-03 | 2011-08-31 | 微软公司 | 配置空间虚拟化 |
CN103268203A (zh) * | 2013-05-20 | 2013-08-28 | 深圳市京华科讯科技有限公司 | 存储虚拟化处理方法 |
CN103823786A (zh) * | 2012-11-19 | 2014-05-28 | 威睿公司 | 外部高速缓存设备上的管理程序i/o分级 |
CN105373416A (zh) * | 2014-08-19 | 2016-03-02 | 三星电子株式会社 | 存储器控制器、存储装置、服务器虚拟化系统及其方法 |
US20160070602A1 (en) * | 2014-09-10 | 2016-03-10 | Fujitsu Limited | Workload distribution management apparatus and control method |
CN105653202A (zh) * | 2014-09-26 | 2016-06-08 | Hgst荷兰有限公司 | 一种用于逻辑存储管理的多级方案 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9245653B2 (en) * | 2010-03-15 | 2016-01-26 | Intelligent Intellectual Property Holdings 2 Llc | Reduced level cell mode for non-volatile memory |
US10008250B2 (en) * | 2015-03-27 | 2018-06-26 | Intel Corporation | Single level cell write buffering for multiple level cell non-volatile memory |
US10007458B2 (en) * | 2015-12-18 | 2018-06-26 | Microsemi Solutions (U.S.), Inc. | Method of configuring memory cells in a solid state drive based on read/write activity and controller therefor |
-
2016
- 2016-11-09 US US15/347,472 patent/US20180129440A1/en not_active Abandoned
-
2017
- 2017-09-15 CN CN201710831420.8A patent/CN108062201A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090259797A1 (en) * | 2008-04-10 | 2009-10-15 | Sandisk Il Ltd. | Method, apparatus and computer readable medium for storing data on a flash device using multiple writing modes |
CN102171666A (zh) * | 2008-10-03 | 2011-08-31 | 微软公司 | 配置空间虚拟化 |
CN103823786A (zh) * | 2012-11-19 | 2014-05-28 | 威睿公司 | 外部高速缓存设备上的管理程序i/o分级 |
CN103268203A (zh) * | 2013-05-20 | 2013-08-28 | 深圳市京华科讯科技有限公司 | 存储虚拟化处理方法 |
CN105373416A (zh) * | 2014-08-19 | 2016-03-02 | 三星电子株式会社 | 存储器控制器、存储装置、服务器虚拟化系统及其方法 |
US20160070602A1 (en) * | 2014-09-10 | 2016-03-10 | Fujitsu Limited | Workload distribution management apparatus and control method |
CN105653202A (zh) * | 2014-09-26 | 2016-06-08 | Hgst荷兰有限公司 | 一种用于逻辑存储管理的多级方案 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
WO2020248206A1 (zh) * | 2019-06-14 | 2020-12-17 | 华为技术有限公司 | 一种硬盘控制方法及相关设备 |
CN114008580A (zh) * | 2019-06-14 | 2022-02-01 | 华为技术有限公司 | 一种硬盘控制方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US20180129440A1 (en) | 2018-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062201A (zh) | 用于固态驱动器的自虚拟化闪速存储器 | |
US10089134B2 (en) | Controlling access to namespaces of a storage device | |
US12045168B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US9927999B1 (en) | Trim management in solid state drives | |
US20130329491A1 (en) | Hybrid Memory Module | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
US10235069B2 (en) | Load balancing by dynamically transferring memory range assignments | |
CN107301134A (zh) | 存储装置中的磨损均衡 | |
US10636455B2 (en) | Enhanced NVDIMM architecture | |
US11775188B2 (en) | Communications to reclaim storage space occupied by proof of space plots in solid state drives | |
US11662939B2 (en) | Checking status of multiple memory dies in a memory sub-system | |
US11960756B2 (en) | Management of storage space in solid state drives to support proof of space activities | |
US12086432B2 (en) | Gradually reclaim storage space occupied by a proof of space plot in a solid state drive | |
CN111796759B (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN113946283B (zh) | 存储器装置的分区命名空间中的部分区存储器单元处置 | |
KR20220153055A (ko) | 메모리 서브시스템의 워크로드 레벨에 기초한 전력 모드 설정 | |
US11681467B2 (en) | Checking status of multiple memory dies in a memory sub-system | |
US20240160349A1 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
KR20220103340A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11762553B2 (en) | Runtime selection of memory devices and storage devices in a disaggregated memory system | |
WO2023034449A1 (en) | Managing host input/output in a memory system executing a table flush | |
US11733925B2 (en) | Enabling multiple data capacity modes at a memory sub-system | |
US11860732B2 (en) | Redundancy metadata media management at a memory sub-system | |
US20230393760A1 (en) | Safe area for critical control data | |
US20230297520A1 (en) | Compute express link memory and storage module |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180522 |