CN102810068A - 存储装置、存储系统和使存储装置虚拟化的方法 - Google Patents
存储装置、存储系统和使存储装置虚拟化的方法 Download PDFInfo
- Publication number
- CN102810068A CN102810068A CN2012101749973A CN201210174997A CN102810068A CN 102810068 A CN102810068 A CN 102810068A CN 2012101749973 A CN2012101749973 A CN 2012101749973A CN 201210174997 A CN201210174997 A CN 201210174997A CN 102810068 A CN102810068 A CN 102810068A
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual
- data
- flash memory
- piece
- 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
Images
Classifications
-
- 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
-
- 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
-
- 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
Abstract
本发明提供了存储装置、存储系统和使存储装置虚拟化的方法。该存储装置包括包含一个或多个非易失性存储器的存储介质和控制器。所述控制器控制所述非易失性存储器,通过所述非易失性存储器中的至少一个向外部主机提供虚拟存储器,并擦除相应的非易失性存储器的存储器块,所述非易失性存储器的存储器块包括与在虚拟存储器中的数据相对应的物理地址处的数据。
Description
相关申请的交叉引用
本申请要求于2011年7月29日提出的美国临时申请No.61/513,014的优先权,其全部内容通过引用被合并于此。本申请还要求于2011年5月30日在韩国知识产权局(KIPO)提出的韩国专利申请No.10-2011-0051178的优先权,其全部内容通过引用被合并到本申请中。
背景技术
现代电子装置通常使用大量的存储器。例如,诸如个人计算机、笔记本电脑、智能手机、数字视频录像机和其它之类的装置经常配备有几千兆字节或甚至几兆兆字节的存储器。此外,诸如便携式闪存卡和紧凑型闪存卡之类的辅助存储器装置可以被用来补充许多装置的数据存储。
这些大容量存储器可以采用多种形式,包括各种形式的非易失性存储器和易失性存储器。例如,由于相对较高的集成密度和相对较低的成本,硬盘驱动器(HDD)是提供大容量存储器的一种常用的方法。类似地,由于相对较高的速度和较低的成本,动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)也是常用的。遗憾的是,所有这些类型的存储器都有一些显著的缺点。例如,HDD具有许多移动部件,并且相对更容易受到来自机械冲击的缺陷的影响。同时,DRAM和SRAM都是易失性形式的存储器,因此,在断电时它们不保存数据。
对于上述各种类型存储器的一些越来越常用的替代产品是诸如闪存之类的非易失性存储器。闪存具有许多具有吸引力的属性,包括相对较高的集成密度、逐渐降低的成本、承受物理冲击的能力、非易失性数据存储及其它。由于这些和其它属性,以及采用闪存在从便携式装置到家电产品和其它的各种各样的电子装置中使用。
发明内容
本发明的各示例实施例涉及数据存储,更具体地,涉及使用闪存的存储装置、存储系统和使存储装置虚拟化的方法。
在一个实施例中,一种操作包括控制器和非易失性存储器的固态驱动器的示例性方法,所述方法包括以下步骤:利用所述非易失性存储器创建虚拟存储器驱动器,所述虚拟存储器驱动器包括多个物理地址;将计算机文件存储在所述虚拟存储器驱动器中的与所述多个物理地址的第一组相对应的第一组位置处;将所述多个物理地址的所述第一组关联到表中的单个逻辑地址;将所述虚拟存储器驱动器中的所述计算机文件移动到与所述多个物理地址的第二组相对应的第二组位置;以及将所述多个物理地址的所述第二组关联到所述表中的所述单个逻辑地址。
在一个实施例中,一种示例性存储装置,其包括:多个非易失性存储器;控制器,其被配置为控制所述多个非易失性存储器,所述控制器被配置为使用至少第一非易失性存储器来向外部主机提供虚拟存储器,并且所述控制器被配置为响应于对存储在所述虚拟存储器中的第一数据的删除请求,擦除所述第一非易失性存储器的第一存储器块,所述第一非易失性存储器的所述第一存储器块包括存储在所述虚拟存储器中的所述第一数据。所述示例性存储装置的所述控制器被配置为响应于对存储在所述虚拟存储器中的所述第一数据的删除请求,通过生成内部TRIM命令来擦除所述第一非易失性存储器的所述第一存储器块。
在一个实施例中,一种操作包括控制器和非易失性存储器的固态驱动器的方法,所述方法包括步骤:利用所述非易失性存储器创建虚拟存储器驱动器,所述虚拟存储器驱动器具有与多个物理地址相对应的多个逻辑地址;将计算机文件存储在所述虚拟存储器驱动器中的所述多个物理地址的第一组处;将所述虚拟存储器驱动器中的所述计算机文件移动到所述多个物理地址的第二组;以及执行与所述多个物理地址的所述第一组的至少一部分相关联的非易失性存储器的无用存储单元收集操作,所述多个物理地址的所述第一组的所述至少一部分与所述计算机文件的已被移动的那些部分相对应,其中,将所述计算机文件存储在所述虚拟存储器驱动器中的步骤包括以各部分的第一序列存储所述计算机文件;并且所述控制器为与所述多个物理地址的所述第一组的至少一部分相关联的非易失性存储器生成内部TRIM命令,所述多个物理地址的所述第一组的所述至少一部分与所述计算机文件的已被移动的那些部分相对应;其中,对所述虚拟存储器驱动器中的所述计算机文件进行移动的步骤包括重新安排所述计算机文件的各部分的所述第一序列,以便以各部分的第二序列存储所述计算机文件,所述第二序列与所述第一序列不同。
附图说明
通过参考附图对本发明的各示例性实施例进行详细描述,本公开的上述及其它方面和特征将变得显而易见。在附图中:
图1是示出了根据一些示例实施例的包括存储装置的存储系统的框图。
图2是示出了根据一些实施例的图1的存储装置的例子的框图。
图3示出了存储在图2中的ROM内的固件300的例子。
图4是示出了根据一些示例实施例的包括在图2中的存储介质中的多个闪存中的一个闪存的框图。
图5是示出了图4中的存储器单元阵列的例子的框图。
图6和图7是示出了根据一些示例实施例的使存储装置虚拟化的方法的流程图。
图8是根据一些示例实施例用于对在闪存装置内执行的无用存储单元收集进行解释的示图。
图9是示出了图8中的一页的示图。
图10和图11是根据一些示例实施例用于对虚拟存储器(或虚拟磁盘)进行解释的示图。
图12是示出了根据一些示例实施例的虚拟化文件表的示图。
图13示出了根据一些示例实施例存储装置在图1的存储系统中提供虚拟存储器。
图14示出了根据一些示例实施例的虚拟化文件表。
图15示出了根据一些示例实施例的对图1的存储系统中的虚拟存储器中的数据执行虚拟修整(trim)操作。
图16是示出了在具有图14的VFT 360的虚拟存储器VS中的虚拟修整VTRIM命令的示例性操作的流程图。
图17是用于示出根据一些示例实施例的存储装置的操作的时序图。
图18A和图18B示出了根据一些示例实施例的在闪存中执行虚拟修整命令。
图19是示出了根据一些示例实施例的实现虚拟化的计算机系统的框图。
图20是示出了根据一些示例实施例的在虚拟存储器中写入数据的方法的流程图。
图21是示出了根据一些示例实施例的在虚拟存储器中删除数据的方法的流程图。
图22是示出了根据一些示例实施例的使用存储装置的电子装置的框图。
图23是示出了根据一些示例实施例的使用存储装置的存储服务器的例子的框图。
图24是示出了根据一些示例实施例的使用存储装置的服务器系统的例子的框图。
图25是示出了根据一些示例实施例的用于提供云计算服务的系统的例子的框图。
图26是示出了根据一些示例实施例的图25中的管理服务器的例子的框图。
具体实施方式
在下文中,将参照附图更完整地描述各个示例实施例,在附图中示出了一些示例实施例。然而,本发明可以以许多种不同的形式来具体实现,并且不应解释为限定于在此描述的示例实施例。即,各个示例性实施例仅仅是例子,并不需要在此描述各种细节多种实施和变化也是可能的。应该强调的是,本公开提供了可替换示例的细节,但这些可替换示例的列举并不是穷举。此外,各个示例之间的任何细节上的一致性不应被解释为需要这些细节,为在此描述的每个特征列出各种可能的变化是不可能的。在确定本发明的要求时,应该参照权利要求书的语言。在附图中,为了清楚起见,各个层和区域的尺寸和相对尺寸可能被夸大。相同的附图标记始终表示相同的元件。
应当理解,虽然在此可能使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语限定。除非另有说明,这些术语用来对一个元件、组件、区域、层和/或部分与另一个元件、组件、区域、层和/或部分进行区分。因此,在不背离本公开的教导的情况下,下文中讨论的第一元件、组件、区域、层和/或部分可被称为第二元件、组件、区域、层和/或部分,类似地,第二元件、组件、区域、层和/或部分也可被称为第一元件、组件、区域、层和/或部分。在此所使用的术语“和/或”包含相关的多个列举项中的一个或多个的任何和全部组合,并可可以被缩写为“/”。
应当理解,当一个元件或层被称作“连接”或“耦接”到另一个元件或层时,其可以被直接连接或耦接到另一个元件或层,或者也可以存在中间元件或层。与之相反,当一个元件或层被称作“直接连接”或“直接耦接”到另一个元件或层时,不存在中间元件。
应当理解,虽然在此可能使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语限定。这些术语仅用来对一个元件、组件、区域、层或部分与另一个区域、层或部分进行区分。因此,在不背离本公开的教导的情况下,下文中讨论的第一元件、组件、区域、层或部分也可被称为第二元件、组件、区域、层或部分。
在此使用的术语仅仅是为了描述特定示例实施例的目的,而不是要限定这些示例实施例。除非上下文清楚地说明,否则,在此使用的单数形式“一”,“一个”和“该”也不应当排除复数形式。还应当理解,在本说明书中使用术语“包括”和/或“包括……的”时,其指定了所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或它们的组。
除非另有定义,在此所使用的全部术语(包括技术术语和科学术语)具有与本申请所属的技术领域的普通技术人员普遍理解的含义相同的含义。还应当理解,诸如那些在常用辞典中定义的术语,应当被解释为具有与它们在相关领域的上下文中的含义一致的含义,而不应该在理想化或过度正式的意义上对其进行解释,除非在此明确地进行了这样的定义。
图1是示出了包括根据一些示例实施例的存储装置的存储系统的框图。
参照图1,存储系统10包括主机50和连接到主机50的存储装置100。
存储装置100可以包括一个或多个非易失性存储器。非易失性存储器可以包括NAND闪存、垂直式NAND、NOR闪存、电阻式随机存取存储器(RRAM)、相变存储器(PRAM)、磁阻式随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)和/或自旋转移力矩随机存取存储器(STT-RAM)中的一个或多个。在一些实施例中,可以以三维阵列结构实现非易失性存储器。在一些实施例中,非易失性存储器可以包括浮动栅极闪存和/或电荷俘获闪存。
在一些实施例中,存储装置100可以是固态驱动器(SSD)。
存储装置100可以包括用于向主机50提供虚拟存储器VS的固件300。例如,响应于虚拟化请求,固件300可以在存储装置100中创建虚拟存储器VS。虚拟存储器VS也可以被称为虚拟驱动器。虚拟存储器可以包括具有虚拟地址的多个虚拟文件,所述虚拟地址与存储装置100中的多个物理地址相对应。虚拟地址也可以被称为逻辑地址。虚拟地址可以是被虚拟管理模块用来存取或识别存储在虚拟存储器中的数据的地址。
在一些实施例中,固件300可以生成虚拟化文件表(VFT)360,用于将虚拟存储器VS中的数据与其中存储有虚拟存储器VS的存储装置100的物理区域的相应物理地址相关联。在一些实施例中,固件300可以响应于删除虚拟存储器中的数据的请求(当对于虚拟存储器中的数据的删除请求发生时)生成虚拟修整VTRIM命令。经由对非易失性存储器装置的一个或多个存储器块进行擦除,VTRIM命令可以将虚拟存储器的要被删除的数据擦除,其中包括在与虚拟存储器的相关虚拟地址相对应的物理地址处的数据。虚拟修整VTRIM命令可以是存储装置100内部生成的、由固件300生成的、并且在存储介质200上执行的命令。虚拟修整VTRIM命令也可以被称为内部TRIM命令。将在下文中参照例如图14至图18B对示例性虚拟修整VTRIM命令和示例性虚拟化文件表VFT详细内容作进一步的描述。
主机50可以将数据DATA存储到存储装置100中,或者可以从存储装置100中读取数据DATA。主机50可以将命令CMD和地址ADD传输到存储装置100。在一些实施例中,主机50可以是个人计算机、数码相机、PDA、移动电话、智能电视机和服务器中的一种。主机50可以包括在主机50上运行的操作系统(OS)60。主机50和存储装置100可以通过下列各种接口协议中的一种彼此相互连接,诸如USB(通用串行总线)协议、MMC(多媒体卡)协议、PCI(外围组件互连)协议、PCI-E(PCI-express)协议、ATA(高级技术附件)协议、串行ATA(SATA)协议、ESATA(外部SATA)协议、并行ATA协议、SCSI(小型计算机系统接口)协议、ESDI(增强小型磁盘接口)协议和IDE(集成驱动器电子)协议。
图2是根据一些实施例示出了图1的存储装置的例子的框图。
参照图2,存储装置100可以包括控制器105和存储介质200。
存储介质200可以包括多个闪存组210~2n0。闪存组210~2n0中的每一个组通过多个通道CH1~CHn中相应的一个通道连接到控制器105。闪存组210可以包括多个闪存211~21m,闪存组2n0可以包括多个闪存2n1~2nm。在一些实施例中,存储介质可以向主机50提供多个虚拟存储器VS1~VSk。闪存211~21m,……,2n1~2nm中的每一个都可以是NAND闪存。NAND闪存可以是单层单元(SLC)闪存或多层单元(MLC)闪存。
闪存组210~2n0可以包括多个闪存211~21m、2n1~2nm。闪存组211~21m、2n1~2nm中的每一组都可以是相同类型的非易失性存储器。例如,闪存组2n0中的闪存2n1~2nm中的每一个都可以是SLC闪存、MLC闪存、One-NAND闪存、PRAM或MRAM。闪存组210~2n0中的每一组的非易失性存储器的类型可以不同。在一些实施例中,一些闪存组可以包括相同类型的非易失性存储器,而其它一个或多个闪存组可以包括其它类型的非易失性存储器。在一些实施例中,通道CH1~CHn中的一个可以连接到包括SLC闪存的闪存组;通道CH1~CHn中的另一个可以连接到包括MLC闪存的闪存组;通道CH1~CHn中的再一个可以连接到包括One-NAND闪存的闪存组。可替换地,每一个通道可以与单层闪存或多层闪存连接。多层闪存可以被配置为在每一个存储器单元中存储M比特数据,其中,M是大于或等于2的整数。
控制器105可以包括处理器110、只读存储器(ROM)120、主机接口130、高速缓冲存储器140和闪存接口150。控制器105还可以包括随机存取存储器160。
主机接口130可以在处理器110控制下根据通信协议与主机交换数据。在一些实施例中,通信协议可以是下列中的一个:USB协议、MMC协议、PCI协议、PCI-E协议、ATA协议、SATA协议、ESATA协议、并行ATA协议、SCSI协议、ESDI协议和IDE协议。所使用的通信协议的类型并不限于在此所描述的例子。
通过主机接口130从主机50输入的数据或将被传输到主机50的数据可以通过高速缓冲存储器140传输。在一些实施例中,要被传输到主机50的数据和从主机50传输出来的数据可以在处理器110控制下不经由系统总线170传输。
高速缓冲存储器140可以临时存储在主机50和闪存211~21m,……,2n1~2nm之间传输的数据,并且/或者可以存储在处理器110中运行的程序。在处理器110中运行的程序可以存储在闪存211~21m,……,2n1~2nm和/或ROM 120中。
高速缓冲存储器140是一种可以用易失性存储器实现的缓冲存储器。例如,高速缓冲存储器140可以包括SRAM或DRAM。在一些实施例中,高速缓冲存储器140可以位于控制器105之外。
闪存接口(或存储器接口)150执行控制器105和闪存211~21m,……,2n1~2nm之间接口,以便存储数据。闪存接口150可以被配置为至少支持NAND闪存、One-NAND闪存、MLC闪存和/或SLC闪存。闪存接口150能够支持的闪存类型并不限于在此所描述的例子。
虽然图2中没有示出,但是控制器105还可以包括用于在闪存211~21m,……,2n1~2nm中修整错误的错误修整码(ECC)引擎。可以通过硬件/电路以本领域已知的方式来实现ECC引擎。
RAM 160可以用来提高更新存储在闪存211~21m,……,2n1~2nm中的数据的速度。RAM 160也可以临时存储正在或将要在处理器110中运行的程序。例如,当在闪存211~21m,……,2n1~2nm中的一个闪存中要被更新的数据量或者跨越一个或多个闪存211~21m的数据量大于该一个或多个闪存的块的大小时,将该一个或多个闪存中不会被更新的数据被移动到RAM 160中。然后,在该一个或多个闪存中可以将要被更新的区域擦除。其后,在一些实施例中,已经被移动到RAM 160的数据也可以被移回该一个或多个闪存中。在一些实施例中,已经被移动到RAM 160的数据被复制到在该一个或多个闪存中新擦除的原始存储这些数据的块。然后,在这些实施例中,已经被临时存储在RAM 160中的数据可以被存储在块中的相同的物理位置处,并且可以不用更新针对这些临时存储的数据的映射表。在其它实施例中,将已经被移动到RAM 160的数据复制到不同的一个或多个闪存或者复制到相同的一个或多个闪存中的不同位置。例如,已经被移动到RAM 160的数据可以被复制到最初从中移出这些数据的相同的一个或多个闪存,但由于数据量小于闪存中的原始数据量,所以存储这些复制数据处的一个或多个物理位置可能与原始存储这些数据处的物理位置不同。在这些实施例中,该一个或多个闪存的映射表会被更新。
ROM 120可以向主机50提供作为固件300的形式的程序,该程序可以允许主机50利用存储装置100来创建虚拟存储器VS(虚拟驱动器)。固件300可以被装载到处理器100中或者被装载到RAM 160中,并且在启动存储装置100时(例如,当存储装置100连接到主机50时),固件300可以在控制器105中运行。
图3示出了固件300的例子,固件300可以构成存储在图2的ROM 120中(并且为了更快的存取有可能被传输到RAM 160中)由处理器110执行的软件代码。
参照图3,固件300管理闪存211~21m,……,2n1~2nm。固件300可以包括闪存地址翻译器310、块管理模块320和虚拟化管理模块330。在图3中,由固件300管理的闪存211~21m,……,2n1~2nm被表示为闪存组FG1~FGn。
闪存211~21m,……,2n1~2nm可以响应于来自主机50的读取请求或写入请求从主机50接收逻辑地址。存储在主机50中的、与闪存211~21m,……,2n1~2nm相对应的逻辑地址没有必要与闪存211~21m,……,2n1~2nm的物理地址一对一地匹配。闪存地址翻译器310将来自主机50的逻辑地址转换成闪存211~21m,……,2n1~2nm的相应的物理地址。闪存地址翻译器310可以使用地址映射表,在其中写有逻辑地址和相应的物理地址并对它们进行维护。例如,根据所使用的一个或多个映射单元(例如,页、块、存储器单元阵列、等等),地址映射表会具有不同的数据量。在一些实施例中,地址映射表根据所使用的不同的映射单元可以具有不同的映射方案。在一些实施例中,地址映射表可以在控制器105上运行。
地址映射方法可以是页映射方法、块映射方法和混合映射方法中的一种。页映射表用于页映射方法。页映射表被用于执行以页为单元的映射操作,且页映射表存储逻辑页和相应的物理页。块映射表用于块映射方法。块映射表被用于执行以块为单元的映射操作,且块映射表存储逻辑块和相应的物理块。混合映射方法同时使用页映射方法和块映射方法,或者彼此结合地使用这两种方法。
固件300包括块管理模块320。闪存的存储器块可能有缺陷,有缺陷的存储器块被称为坏块。生成坏块的原因有多种,包括但不限于列失效、干扰和磨损。
坏块或其中的部分不能可靠地存储数据(例如,坏块中的缺陷阻止在坏块的部分中进行正确的编程、长期的存储和/或读取数据)。闪存可以包括保留区,其包含用于替换坏块的一个或多个保留块。闪存还可以包括用户区,用户区不包括保留块,用户区包含一个或多个数据块。例如,闪存区的单元区可以包括用户区和保留区。用户(例如,主机、终端用户、等等)可以不察觉或识别保留区,或者不能能够对保留区进行存取,而可以只能够对用户区进行存取以存储数据。在一些实施例中,存储在新确定的坏块中的数据被移动到自由块或之前保留而现在可用的块中。应当注意,在操作数据块期间,自由块和/或保留块可以改变它们的状态。自由块可以被编程以变成数据块。数据块可以被标记为脏的(例如,脏块)并被放在擦除队列中。脏块可以在闪存的非活动期被擦除并变成自由块(准备好接受新数据)。此外,固件300可以用保留块交换闪存中的其它块。例如,磨损均衡操作可以确定已被大量擦除的块应该被保留块交换,使保留块成为自由块或数据块,并且使已被大量擦除的块成为保留块。这样,保留块不必是存储器的固定的物理部分,而可以是由固件300保留的待将来使用的一些块。保留块也可以被闪存使用来存储非用户数据,诸如闪转换表、块擦除计数、读取计数、等等。用户不可以存取非用户数据。
在程序操作或者响应于对闪存211~21m,……,2n1~2nm的写入请求的擦除操作失败时,块管理模块320可以注册坏块或者用保留块来替换坏块。块管理模块320可以管理闪存211~21m,……,2n1~2nm的磨损均衡以提高闪存211~21m,……,2n1~2nm的寿命。在一些实施例中,在更新闪存211~21m,……,2n1~2nm中的数据时,块管理模块320可以合并闪存211~21m,……,2n1~2nm的块。
虚拟化管理模块330可以响应于来自主机50或在主机50上运行的应用程序的虚拟化请求,经由闪存211~21m,……,2n1~2nm中的一个闪存(介入闪存,intervening flash memory)向主机50提供至少一个虚拟存储器VS1~VSk。例如,虚拟化管理模块330可以在闪存211~21m,……,2n1~2nm中的一个闪存中创建虚拟存储器VS,并指定该闪存中的多个块来存储要被存储在虚拟存储器VS中的数据。虚拟化管理模块330也可以生成虚拟化文件表(VFT)360,其用于将存储在虚拟存储器VS中的数据与相应闪存(闪存211~21m,……,2n1~2nm中的至少一个闪存)的相应物理地址相关联。例如,对虚拟存储器进行存取的应用程序或主机50将把虚拟存储器中的数据与虚拟地址相关联。在VFT360中,该虚拟地址可以被映射到闪存211~21m,……,2n1~2nm中的一个或多个闪存中的相应物理地址,在所述一个或多个闪存中存储了实际数据。
在一些实施例中,响应于删除虚拟存储器VS中的数据的请求,虚拟化管理模块330可以生成用于虚拟修整VTRIM命令,其用于实现在相应的闪存(与VS相对应的那个闪存)中擦除一个或多个存储器块。在一些实施例中,虚拟化管理模块330可以监视闪存211~21m,……,2n1~2nm的状态,并在相应的闪存处于空闲状态(或就绪状态)时,向相应的闪存提供擦除命令。例如,VTRIM命令可以导致将VS的一个或多个块表示为脏的(例如,通过更新RAM 160中的表)。在确定包含脏块的闪存装置(例如,闪存芯片、封装件或存储器模块)的空闲时间后,固件300的块管理模块320可以擦除VS的这些脏块。块管理模块320可以将VS的脏块与常规的脏块(诸如那些由更新数据块中的用户数据产生的块,如在此所描述的那样)分组在一起。这样,常规的无用存储单元收集处理可以被用来擦除VS的脏块并将这些VS的脏块转换为自由块(其可以不再与VS相关联)。
关于覆盖存储在闪存211~21m,……,2n1~2nm中的块中的数据,闪存211~21m,……,2n1~2nm会有一些限制。例如,为了覆盖闪存211~21m,……,2n1~2nm中的一个闪存中的数据,该闪存中的相应数据可能需要首先被擦除。在一些实施例中,此操作被称为写入之前擦除操作。在数据写入(程序)操作中,因为闪存211~21m,……,2n1~2nm会需要擦除块中的数据,在这些块中将要存储写入的数据,所以闪存211~21m,……,2n1~2nm会比DRAM需要更多的时间。不同于覆盖数据,系统可以跟踪自由块并将更新数据写入自由块中,将这样的自由块转换成新的数据块(并更新地址转换表以将该数据的虚拟或逻辑地址与所述新的数据块相关联),并将旧的数据块标记为脏块。在随后的某个时间(例如,闪存的空闲时间),可以擦除脏块。因此,更新数据的写入可以不需要等待擦除周期。
在示例性擦除操作中,将位于物理地址处的存储器单元重置到擦除状态。存储器单元可以作为擦除操作的部分被物理地初始化。擦除操作可以是无用存储单元收集操作的一部分,或者也可以与其分离地被初始化。擦除操作可以物理初始化存储器单元,但对与存储器单元相关联的逻辑地址可以没有影响。在没有更新映射表以去除存储器单元物理地址和相应的逻辑地址之间的关联的情况下,如果对该存储器单元执行擦除,则在尝试存取该逻辑地址处的数据时,用户会接收到不正确的信息。
可以在与待删除数据相对应的逻辑地址和物理地址两者上执行修整操作。在示例性修整操作中,位于物理地址处的存储器单元中的数据通过修整操作被物理初始化,并且删除逻辑地址和存储器单元所在的物理地址之间的关系。例如,从映射表中删除将VS数据的逻辑地址和物理地址相关联的映射表中的条目,并且位于该物理地址处的存储器单元被初始化。在一些实施例中,修整操作可以使映射表中的条目被标记为“脏的”或“待擦除的”,并且在下一次无用存储单元收集操作期间初始化该存储器单元,或者在相应闪存的下一段空闲时间期间执行擦除操作。
通过使用修整操作,闪存可以有能力提高在闪存单元中写入和读取操作的最大次数。在一些实施例中,在没有修整操作之后的另外的擦除操作或者不需要写入之前擦除操作的情况下,当数据能够被写入闪存单元中时,闪存能够提高在闪存单元中写入数据的速度。
在一些实施例中,主机50将存储装置100中的虚拟存储器VS认作虚拟映像文件。在这些实施例中,修整操作可以不能在虚拟存储器VS中执行。主机50可以只意识到已经被创建的、表示虚拟存储器VS的虚拟映像文件,但是没有认出闪存或实现虚拟存储器VS的底层架构。在这些实施例中,虚拟修整VTRIM命令可以用来删除在虚拟存储器VS中的数据。虚拟修整VTRIM命令是内部修整命令,内部修整命令在被设置为支持虚拟化存储器的存储装置中的虚拟化存储的区域上执行。虚拟化管理模块330可以生成用于擦除相应的闪存的存储器块的虚拟修整VTRIM命令,该相应的闪存被用于虚拟存储器VS,其中包括通过参照VFT 360来初始化在物理地址处的存储器单元,该物理地址与虚拟存储器VS中的待删除数据相对应。通过虚拟修整VTRIM命令,内部修整操作可以在虚拟存储器VS中的存储器单元上执行。
在一些实施例中,虚拟修整VTRIM命令被提供给相应的闪存而不考虑相应闪存的状态。在一些实施例中,当闪存处于空闲状态时,虚拟修整VTRIM命令可以在相应的闪存中执行。例如,虚拟修整VTRIM命令可以被提供给相应的闪存而不考虑相应闪存的状态,并且虚拟修整VTRIM命令可以被锁存在相应的闪存中直到相应的闪存转换到空闲状态为止。在另一个实施例中,虚拟修整VTRIM命令可以被提供给相应的闪存而不考虑相应闪存的状态,并且与数据相对应的逻辑地址可以被标记为“脏的”或“待擦除的”而不考虑闪存的状态。在该实施例中,与被标记的逻辑地址相对应的存储器单元的擦除操作可以被锁存在相应的闪存中直到该闪存处于空闲状态为止。
图4是根据一些示例实施例示出了包括在图2中的存储介质的多个闪存中的一个闪存的框图。
在图4中,描述闪存211。其它闪存可以具有与闪存211基本上相同的配置。
参照图4,闪存211可以包括命令/地址寄存器2111、行选择电路2112、存储器单元阵列2113、操作控制单元2114、页缓冲器2115、空闲控制单元2116、输入/输出(I/O)电路2117和选择单元2118。
存储器单元阵列2113可以包括以矩阵设置的多个存储器单元。每一个存储器单元可以存储1比特数据或M比特数据,其中,M是大于或等于2的整数。存储器单元阵列2113可以是三维结构或二维结构。行选择电路2112可以响应于从命令/地址寄存器2111接收的地址生成用于选择和驱动存储器单元的行的信号。命令/地址寄存器2111可经响应于由空闲控制单元2116生成的就绪/忙信号R/nB而被配置为接收命令和地址。虽然没有在图4中示出,但是命令/地址寄存器2111通过控制信号的组合(诸如/CE、/RE、/WE、CLE和ALE)可以在命令和地址之间进行区分。在各种实施例中,这些控制信号可以既被提供给命令/地址寄存器2111,又被提供给操作控制单元2114。
当就绪/忙信号R/nB指示闪存装置211处于空闲(就绪)状态时,命令/地址寄存器2111可以锁存接收的地址并将锁存的地址传送到行选择电路2112。在一些实施例中,虽然就绪/忙信号R/nB指示闪存装置211处于忙碌状态,但是命令/地址寄存器2111仍可以锁存地址但不将锁存的地址传送到行选择电路2112。在这些实施例中,在就绪/忙信号R/nB从忙碌状态改变到空闲状态之时或之后,锁存的地址可以从命令/地址寄存器2111发送到行选择电路2112。例如,命令/地址寄存器2111可以接收和锁存地址而不考虑闪存装置的状态,但可以基于就绪/忙信号R/nB将锁存的地址输出到行选择电路2112。
当就绪/忙信号R/nB指示闪存装置211处于空闲状态时,命令/地址寄存器2111可以锁存命令并将该命令传送到操作控制单元2114。在一些实施例中,虽然就绪/忙信号R/nB可以指示闪存装置211处于忙碌状态,但是命令/地址寄存器2111仍可以锁存命令但不将该命令传送到操作控制单元2114。在这些实施例中,在就绪/忙信号的指示从忙碌状态改变到空闲状态之时或之后,锁存的命令可以从命令/地址寄存器2111发送到操作控制单元2114。例如,命令/地址寄存器2111可以接收和锁存发出的命令而不考虑闪存装置的状态,但可以基于就绪/忙信号R/nB将锁存的命令输出到操作控制单元2114。
空闲控制单元2116可以在操作控制单元2114的控制下生成指示闪存211的忙碌状态或空闲状态的就绪/忙信号R/nB。就绪/忙信号R/nB可以通过选择单元2118和I/O电路2117发送到图2中的控制器105作为就绪/忙信号R/nB。就绪/忙信号R/nB也可以被提供给命令/地址寄存器2111和操作控制单元2114中的一个或它们两者。当就绪/忙信号R/nB指示空闲状态时,操作控制单元2114可以从命令/地址寄存器2111接收所锁存的命令。操作控制单元2114可以响应于接收的命令控制闪存211以执行操作,诸如程序操作、读取操作和擦除操作。页缓冲器2115可以临时存储将被写入存储器单元阵列2113的数据或将从存储器单元阵列2113读取的数据,且可以被操作控制单元2114控制。
在一些实施例中,当就绪/忙信号R/nB指示闪存装置211处于空闲状态时,操作控制单元2114可以从命令/地址寄存器2111接收锁存的命令,并且可以根据所接收的命令的种类向选择单元2118提供具有逻辑电平的选择信号SS。例如,当操作控制单元2114接收到不同于虚拟修整VTRIM命令的命令时,选择信号SS可以具有逻辑低电平。例如,当操作控制单元2114接收到与虚拟修整VTRIM命令相对应的命令时,选择信号SS可以具有逻辑高电平。在其它实施例中,当操作控制单元2114接收到不同于虚拟修整VTRIM命令的任何命令时,选择信号SS可以具有逻辑高电平,而当操作控制单元2114接收到虚拟修整VTRIM命令时,选择信号SS可以具有逻辑低电平。
选择单元2118可以包括变换器2118a和多路复用器2118b。多路复用器2118b可以响应于选择信号SS选择就绪/忙信号R/nB和就绪/忙信号R/nB的反转信号中的一个,并将这些信号中被选择的那个信号提供给I/O电路2117。变换器2118a可以将就绪/忙信号R/nB反转以向多路复用器2118b输出反转信号。当选择信号SS具有逻辑高电平时,多路复用器2118b可以选择将就绪/忙信号R/nB的反转信号提供给I/O电路2117。当选择信号SS具有逻辑低电平时,多路复用器2118b可以选择将就绪/忙信号R/nB提供给I/O电路2117。在其它实施例中,当选择信号SS具有逻辑高电平时,多路复用器2118b可以选择将就绪/忙信号R/nB提供给I/O电路2117,而当选择信号SS具有逻辑低电平时,多路复用器2118b可以选择将就绪/忙信号R/nB的反转信号提供给I/O电路2117。
图5是示出了图4中的存储器单元阵列的例子的框图。
参照图5,存储器单元阵列2113可以被分成用户区和保留区。用户区包括至少一个存储器块。可以根据用途对用户区中的存储器块进行分类。例如,在混合映射方案的情况下,存储器块可以被分成数据块、日志块和自由块。用户数据可以存储在数据块中。日志块可以用于修改存储在数据块中的数据。在写入操作期间,一些自由块可以被分配为与具有待更新数据的数据块相关联的日志块。随后,该新日志块可以被转换成与其相关联的数据块,或者,该日志块和该数据块可以被合并以从自由块创建新的数据块,并且旧的数据块和日志块可以被标记为脏的以便随后被改变为自由块。可以更新映射表以反映数据的逻辑地址和新数据块的新关联。对于示例性映射方案的进一步细节,参见专利美国专利No.6,938,116,其全部内容通过引用合并于此。用户区可以位于存储器单元阵列2113中的某个位置,或者可以与一定数量(例如,预定数量或由用户或主机选择的数量)的块相对应。用户区的块可以被重新指定为保留区的块,反之亦然,在此情况下,用户区和保留区的物理位置在存储器单元阵列2113中将不是固定的。例如,响应于磨损均衡算法,固件300可以切换用户区的块和保留区的块以在存储器单元阵列2113的各块之间均匀地分布擦除数量。
如上所述,由于数据块、日志块和自由块中的各种因素会出现缺陷。例如,来自列失效、干扰和/或磨损的缺陷会使块有缺陷。保留区可以包括能够用来替换用户区中有缺陷的块的至少一个保留数据块。将保留区配置为占存储器单元阵列的期望的(或可替换地,预定的)比例。
当存在有缺陷的数据块时,存储在有缺陷的数据块中的数据可能丢失。为了防止有缺陷的块中的数据的丢失,存储在有缺陷的数据块中的数据可以被存储在保留区的保留块中。保留块的指定可以被改变为数据块,并且有缺陷的块或另一个数据块的指定可以被改变为保留块。可以通过更新逻辑地址和物理地址之间的对应关系来执行这种改变。例如,与有缺陷的存储器块相对应的逻辑地址可以被改变为与正常的数据块相对应。正常的数据块可以是可用的自由数据块,该自由数据块已经被指定为保留块并且被用来存储已经存储在有缺陷的块中的数据。在此情况下,可用的自由数据块的指定被改变为用户区中的数据块。在一些实施例中,有缺陷的数据块的指定可以被改变为保留区中的保留块。当块的指定和存储在块中的数据的位置改变时,在映射表中对它们进行更新。当有来自外部装置(例如,主机)的存取请求时,闪存地址翻译器参照映射表以提供与所请求的逻辑块地址相对应的闪存中的物理块地址。
在一些实施例中,当在闪存中存在其中存储了VFT 360中的条目的有缺陷的存储器块时,当虚拟化管理模块330正在向主机50提供虚拟存储器VS时,存储在闪存中的有缺陷的存储器块中的数据可以被移动到保留块,使保留块存储VFT 360的条目。根据一些示例实施例,可以通过更新虚拟存储器VS(虚拟地址)中的数据和与虚拟存储器VS中的数据相对应的物理地址之间的关联来对VFT 360进行更新,以防止虚拟存储器VS中的数据的丢失。下面将参照例如图12来描述VFT 360的结构。
例如,当与存储在闪存中的一个或多个数据块处的虚拟存储器中的数据相对应地接收虚拟修整VTRIM命令时,自由块或保留块可以被用来更新闪存。在一些实施例中,包含有虚拟修整VTRIM命令所涉及的数据的一个或多个数据块可以被设置为“脏”块或“待擦除”块。当闪存处于空闲状态时,或者当闪存正在进行无用存储单元收集操作时,虚拟修整VTRIM命令所没有涉及的一个或多个数据块的块和/或部分块可以被复制到该闪存中的或另一个闪存中的一个或多个自由块或保留块。然后,包含有虚拟修整VTRIM命令所涉及的数据的一个或多个数据块中的一个或多个存储器单元可以被物理初始化,并且所述数据块可以被指定为自由块或保留块。在一些实施例中,已被移动的数据可以被复制回虚拟存储器中的那些之前包含该数据的自由块或保留块。然后,可以通过更新与虚拟存储器VS中已被移动的数据相关的条目和与虚拟存储器VS中的数据相对应的物理地址来对VFT360进行更新,以防止虚拟存储器VS中的数据的丢失。
图6和图7是根据一些示例实施例说明了使存储装置虚拟化的方法的流程图。在下文中,参照图1到图7,对使存储装置虚拟化的示例性方法进行详细描述。
在一些实施例中,固件300中的虚拟化管理模块330从主机50中的OS 60接收虚拟化请求V_REQUEST(S110)。此时,固件300中的闪存地址翻译器310可以接收与闪存211~21m,……,2n1~2nm的介入闪存相对应的逻辑地址。闪存地址翻译器310可以向虚拟化管理模块330提供与介入闪存的逻辑地址相对应的物理地址,并且虚拟化管理模块330可以在与该物理地址相对应的闪存中生成至少一个虚拟存储器VS1~VSk(S120)。当从主机50接收到向至少一个虚拟存储器VS1~VSk写入数据的请求时,虚拟化管理模块330可以生成VFT 360(或可替换地,如果VFT 360已经被创建,则对其进行更新)以将至少一个虚拟存储器VS1~VSk中的数据的逻辑地址和相应闪存的物理地址相关联(S130)。VFT 360可以被存储在闪存211~21m,……,2n1~2nm中的一个闪存中。在一些实施例中,VFT 360可以被存储在这样的闪存中,该闪存属于包括存储该至少一个虚拟存储器VS1~VSk的闪存的相同闪存组。在其它实施例中,VFT 360和该至少一个虚拟存储器VS1~VSk可以被存储在不同的闪存组中。
在一些实施例中,如图7所示,控制器105(或虚拟化管理模块330)接收涉及该至少一个虚拟存储器VS1~VSk中的数据的删除请求D_REQUEST(S210)。闪存地址翻译器310也可以接收与删除请求D_REQUEST所涉及的数据相对应的介入闪存的逻辑地址。闪存地址翻译器310可以向虚拟化管理模块330提供与介入闪存的逻辑地址相对应的物理地址。虚拟化管理模块330可以接收相应的物理地址,并确定介入闪存是否处于空闲(就绪)状态(S220)。
当介入闪存没有处于空闲状态时(S220中的“否”)(例如,在介入闪存正在执行程序操作、读取操作和擦除操作中的一个操作时),删除请求D_REQUEST被锁存。可以在虚拟化管理模块330中或者在命令/地址寄存器2111中执行删除请求D_REQUEST的锁存。当删除请求D_REQUEST被锁存在虚拟化管理模块330中时,在就绪/忙信号R/nB指示介入闪存处于忙碌状态时,删除请求D_REQUEST不会被发送到介入闪存中。当删除请求D_REQUEST被锁存在介入闪存中时,在就绪/忙信号R/nB指示介入闪存处于忙碌状态时,与删除请求D_REQUEST相对应的命令(例如虚拟修整VTRIM命令)不会从命令/地址寄存器2111发送到操作控制单元2114。
在一些实施例中,当介入闪存没有处于空闲状态时,虚拟修整VTRIM命令可以被从命令/地址寄存器2111发送到操作控制单元2114。虚拟修整VTRIM命令将使与虚拟存储器中的待删除数据相对应的数据块中的物理存储器位置被标记为“脏的”或“待擦除的”。在这些实施例中,在闪存处于空闲状态时,控制器可以将被标记或被标示的数据块擦除来作为正常的无用存储单元收集操作的一部分;或者,如果在数据块中有足够的存储器单元被标记为“脏的”或“待擦除的”,则控制器可以将被标记或被标示的数据块擦除来作为擦除操作的一部分。例如,当闪存处于忙碌状态时,如果1/5的存储器单元或者闪存中1/5的数据块包含被标记为“脏的”或“待擦除的”存储器单元,则控制器可以执行擦除操作,从而中断其它操作或其它排队的操作。启动擦除操作所需要的被标示或被标记的存储器单元的数量或者包含被标示或被标记的存储器单元的数据块的数量并不限于在此所描述的例子,该数量可以由用户设置,或者可以是基于闪存的性能和效率的考虑而确定的标准数量。
在一些实施例中,当介入闪存处于空闲状态时(S220中的“是”)(例如,在介入闪存没有执行程序操作、读取操作和擦除操作中的任何一个操作时),处理器110可以生成涉及删除请求D_REQUEST中的数据的虚拟修整VTRIM命令(S240)。虚拟化管理模块330可以响应于虚拟修整VTRIM命令搜索VFT 360(S250)。虚拟化管理模块330可以向命令/地址寄存器2111提供与介入闪存的一个或多个存储器块相对应的物理地址,该介入闪存包括虚拟修整VTRIM命令所涉及的、至少一个虚拟存储器VS1~VSk中的数据。在与虚拟存储器VS相对应的映射表中,与所提供的物理地址相对应的逻辑地址可以被标示或被标记为“脏的”或“待擦除的”。虚拟化管理模块330也可以对进入闪存的存储器块中被标记或被标示的存储器单元执行擦除操作(S260),该介入闪存包括虚拟修整VTRIM命令所涉及的被标记的物理地址。在一些实施例中,擦除操作是包括虚拟存储器的闪存的无用存储单元收集操作的一部分。不管是作为无用存储单元收集操作的一部分,还是与无用存储单元收集操作分开而独立启动,擦除操作都以同样的方式运行。
擦除操作可以包含将虚拟存储器中的、虚拟修整VTRIM命令没有涉及的数据复制到介入闪存中的自由块或保留块,或复制到闪存组中的另一个闪存。然后,通过更新至少一个虚拟存储器VS1~VSk中的数据和与虚拟存储器VS中的数据相对应的物理地址对VFT 360进行更新。然后,可以擦除包括含有虚拟修整VTRIM命令所涉及的数据的虚拟存储器VS的闪存。例如,可以对包括含有待删除数据的虚拟存储器VS的闪存的存储器块中的全部存储器单元物理地初始化。在一些实施例中,在更新VFT 360之前擦除包括具有待删除数据的虚拟存储器的闪存。在一些实施例中,不要被擦除的数据不是被存储在另一个闪存中,而是被复制到RAM 160中,然后被复制回原始存储该数据的闪存中。
在一些实施例中,根据对存储器块的存取频率,可以将介入闪存的存储器块分成热数据区和冷数据区。热数据区包括存取频率高于基准频率的存储器块,冷数据区包括存取频率低于基准频率的存储器块。可以在易失性存储器(例如,图2中的RAM 160)中存储关于热数据区的VFT,该VFT很容易地会被更新;可以在存储介质200中的多个闪存中的一个闪存中存储关于冷数据区的VFT。在存储介质200中的多个闪存中的一个闪存中的操作期间和/或断电步骤期间,可以备份在易失性存储器中存储的VFT。
图8是根据一些示例实施例用于对在闪存装置内执行无用存储单元收集进行解释的示图。
图9是示出了图8中的示例性页的图。
参照图8和图9,存储器单元阵列2113可以被分成多个块:BLK1、BLK3、BLK3和BLK4。BLK1、BLK3、BLK3和BLK4中的每一个可以被进一步分成多个页P1~P8。页PG可以被进一步分成一个或多个扇区。在图11中,一页PG中包括一个扇区,该扇区包括数据DATA和与数据DATA相关联的开销数据(overhead data)OHD。开销数据OHD可以存储在编程操作期间根据DATA计算出来的纠错码(ECC)、块已经被擦除和重新编程的次数计数、控制标记、操作电压电平以及与数据相关联的其它信息,诸如页PG有效或无效信息。包括在开销数据OHD中的信息类型不局限于在此所描述的例子。
当利用新数据更新闪存中的块时,写入有原始数据的页被认为是无效的,且分配新页以便能够在新页上写入新数据。如果闪存没有足够的可用存储空间来存储新数据,则可以通过执行无用存储单元收集来增加闪存的可用存储空间。
通常,通过生成和管理包括具有一个或多个无效页的块的块列表来执行无用存储单元收集。在一些实施例中,既管理包括具有一个或多个无效页的块的块列表,又管理包括只具有无效页的无用存储单元块的块列表。通过无用存储单元收集,可以解决用于存储数据的待分配块的短缺问题,并且可以减少具有无效页的块数。有效页可以包括还没有被更新的原始数据,或者可以是还没有被写入数据的自由块或保留块。
在图8中,块BLK1具有4个无效页P2、P4、P6和P8,块BLK2具有1个无效页P4,块BLK3具有2个无效页P2和P4,块BLK4具有3个无效页P2、P5和P7。在示例无用存储单元收集中,由于块BLK1具有最大数目的无效页,所以可以通过选择具有最小数目的无效页的块BLK2并将块BLK2分配给块BLK1,使得块BLK1中的有效页P1、P3、P5和P7可以被复制到块BLK2,来对块BLK1执行无用存储单元收集操作。然后,可以擦除块BLK1。在一些实施例中,块BLK1随后也可以被指定为自由块或保留块。
存储在被操作系统(OS)“删除”并认为是可用空间的闪存中的数据实际上仍然可以被保持在该闪存装置中。TRIM命令(操作)可以向闪存装置提供一种方式以指示闪存装置关于哪些逻辑地址该闪存装置对于它们不再需要维持从有效逻辑地址到物理地址的映射。当闪存支持TRIM操作时,可以物理地擦除操作系统(OS)“删除”并认为是可用空间的扇区(或页)。
图10和图11是根据一些示例实施例用于对虚拟存储器(或虚拟磁盘)进行解释的示图。
参照图10和图11,SSD 200a可以具有200GB的数据存储容量。SSD 200a可以被分成3个区:具有100GB的数据存储容量的目录C201、具有40GB的数据存储容量的目录D 203和具有20GB的数据存储容量的目录E 205。在一些实施例中,目录E 205可以包括20个闪存装置(诸如闪存装置2051),每个闪存装置具有1GB的数据存储容量。响应于来自用户或OS的虚拟化请求V_REQUEST,通过分配闪存装置2051的一些部分,可以在闪存装置2051中生成虚拟磁盘(或虚拟存储器)VS。在一些实施例中,闪存装置2051可以包括物理文件PF1~PF4。发送虚拟化请求V_REQUEST的用户或OS通过访问与数据相关联的虚拟地址将试图存取存储在虚拟存储器中的数据。虚拟地址可以是逻辑地址。虚拟存储器中的数据既和与闪存装置2051中的物理位置相对应的物理地址相关联,又和被主机或OS用来存取数据的虚拟地址相关联。在一些实施例中,虚拟磁盘VS中的数据的虚拟地址以及与各个虚拟地址相关联的并且指示数据在闪存装置2051中的位置的相应物理地址被存储在虚拟化文件表VFT 360中。
在一些实施例中,虚拟磁盘VS作为虚拟映像文件VF.vmx存储在闪存装置2051中。当要存取虚拟磁盘VS中的数据时,与虚拟磁盘VS中的数据相对应的虚拟地址被转换为与虚拟映像文件VF.vmx相对应的物理地址。当OS删除虚拟磁盘VS中的数据(或文件)时,在不支持虚拟修整VTRIM操作的情况下,虚拟磁盘VS中的该数据(或文件)被修改而不是在闪存装置2051中被删除。在一些实施例中,当数据(或文件)被写入虚拟磁盘VS中时,被写入虚拟磁盘VS中的数据的虚拟地址和闪存装置2051中与各个虚拟地址相关联的相应物理地址被存储在虚拟化文件表VFT 360中。术语“vmx”表示虚拟映像磁盘,诸如虚拟硬盘、虚拟机磁盘、等等。
图12是根据一些示例实施例示出了虚拟化文件表(VFT)的示图。
虚拟化文件表VFT可以提供从虚拟地址(例如,主机存取虚拟磁盘中的文件所使用的地址)到物理地址PA的相应组的地址转换。图12的VFT提供了针对包括3个文件a.TXT、b.TXT和c.TXT的示例性虚拟磁盘VS的映射信息。文件a.TXT、b.TXT和c.TXT与逻辑地址LA1、LA2和LA3相对应,并且分被存储在闪存装置2051的物理地址组PA1、PA2和PA3处。单个逻辑地址可以用来存取在多个物理地址处存储的文件。VFT可以将多个物理地址映射到单个逻辑地址,并且该单个逻辑地址可以是存取虚拟存储器VS的文件所必要的唯一标识符。存储在VFT中的每一个物理地址可以与存储器的页地址相对应。可替换地,每一个物理地址可以与页地址和(选择物理页的一部分的)列地址相对应,或可以与块地址相对应。为了描述方便,下面的描述限于文件a.TXT以及相关联的物理和逻辑地址,但应理解对于VFT的其它文件和其它部分也是同样适用的。图12的例子示出了存储在包括物理地址0420、0730等的物理地址组PA1的文件a.TXT。当主机试图存取文件a.TXT时,其发送请求以在逻辑地址LA1处存取虚拟磁盘VS。存储器的控制器105可以接收VS存取请求,并且作为相应,存取VFT以查找物理地址组PA1的物理地址以确定文件a.TXT的位置,并存取文件a.TXT。对于文件a.TXT的每个随后的部分,物理地址组PA1的物理地址的顺序不必为连续的顺序。一旦创建和/或移动文件a.TXT的一些部分(例如,通过存取自由块队列中的下一个可用自由块或下一个可用页),则可以由块管理模块320来选择物理地址。文件a.TXT的一些部分的物理位置可以被移动来作为闪存的正常的块管理的一部分,诸如为了避免意外的读取干扰错误的目的和/或为了达到磨损均衡的目的。例如,一旦确定了存储文件a.TXT的一部分的特定的物理地址已经被读取了一定的次数(该次数可以是预定次数或由算法生成的次数),则块管理模块可以将文件a.TXT的该部分移动到另一个物理地址并更新VFT以反映文件a.TXT的该部分的新物理地址位置。作为另一个例子,一旦确定了存储文件a.TXT的数据的第一块(其可以是自由块或数据块)与第二块相比已经擦除了更多的次数,则块管理模块可以将第二块的数据移动到该第一块并更新VFT以反映文件a.TXT在第一块中的该部分的新物理地址(也可以实现对于不是文件a.TXT的一部分的数据的其它地址转换)。在文件a.TXT的该部分的移动期间,系统也可以使用与文件a.TXT的该部分相关联的纠错码来检查文件a.TXT的该部分是否有错误,如果发现了可校正的错误,则系统可以校正有错误的比特,并将校正的数据存储在新位置中。文件a.TXT的该部分的全部或部分的移动可以导致文件a.TXT的各部分的序列从第一序列改变到不同的第二序列(例如,关于物理地址的寻址值,可以重新安排文件a.TXT的各部分的排序)。可以重新安排文件a.TXT的各部分的物理位置的排序(不管原来处于连续的顺序还是非连续的顺序)来作为闪存的正常的块管理的一部分。可以按照期望多次执行文件a.TXT的各部分的移动(和/或重新安排和/或重新排序)。虚拟化文件表VFT包括虚拟磁盘VS中的文件的逻辑地址LA和闪存装置2051中的物理地址PA。虚拟化文件表VFT可以存储在与闪存装置2051不同的闪存装置中,并且/或者可以存储在可以提供更快的存取和转换时间的易失性存储器(例如,RAM 160)中。在一些实施例中,虚拟化文件表VFT存储在与闪存装置2051相同的闪存组的闪存装置中。在其它实施例中,虚拟化文件表VFT可以存储在与闪存装置2051不同的闪存组的闪存装置中。
在一些实施例中,当主机50发送删除虚拟磁盘VS中的文件b.TXT的请求时,存取逻辑地址LA2以便删除虚拟磁盘VS中的文件b.TXT。虚拟化管理模块330可以查询虚拟化文件表VFT以存取闪存装置2051中的、与逻辑地址LA2相对应的物理地址PA2。然后,虚拟化管理模块330可以生成虚拟修整VTRIM命令以擦除存储在闪存装置2051中的物理地址PA2处的数据,并且擦除逻辑地址LA2和物理地址PA2之间的关联。下文将进一步解释虚拟修整VTRIM命令的操作。
图13根据一些示例实施例示出了存储装置在图1的存储系统中提供虚拟存储。
图14示出了根据一些示例实施例的虚拟化文件表(VFT)。
参照图13,主机50(或OS 60)将虚拟化请求V_REQUEST传送到虚拟化管理模块330。虚拟化管理模块330经由闪存211(例如,介入闪存)向主机提供虚拟存储器VS1。虚拟存储器VS1不可以被外部识别,在一些实施例中,虚拟存储器VS1是只可以通过主机50中的OS 60来识别或存取的存储区。可以将虚拟存储器VS1认作介入闪存211中的虚拟映像文件3611。在一些实施例中,虚拟化管理模块330可以生成用于将虚拟存储器VS1中的数据与介入闪存211的物理地址相关联的VFT 360,并且可以将该VFT存储在另一个闪存212中。
参照图14,在闪存212中存储示例性虚拟化文件表VFT 360。响应于来自主机的虚拟化请求V_REQUEST,VFT 360可以和虚拟存储器VS一起由虚拟化管理模块330创建。主机50(或OS 60)响应于其虚拟化请求V_REQUEST可以只看到虚拟映像文件VF.VMX。示例性VFT 360将由主机看到的虚拟映像文件VF.VMX与虚拟数据(在VFT 360中由逻辑地址表示)相关联。VFT 360还将表示存储在虚拟映像文件VF.VMX中的虚拟数据的逻辑地址与存储虚拟文件的第一数据处的物理地址相关联。例如,图14中的VFT 360将虚拟映像文件3611与包括在虚拟映像文件3611中的具有逻辑地址3612、3613和3614的若干个虚拟文件相关联,还分别将虚拟文件3612、3613和3614与物理地址组3615、3616和3617相关联。物理地址组3615、3616和3617中的每一组包括一个或多个物理地址。
VFT 360也可以包含针对表中每一个条目的元数据。例如,对于每一个虚拟文件,可以存储指示该文件的长度的元数据。在其它实施例中,可以将每一个虚拟文件与这样的物理地址相关联,该物理地址包括指向存储该文件的数据的下一个物理位置的指针。在该实施例中,虚拟存储器中的每一个虚拟文件也可以包括文件结束(EOF)标记以指示该文件的结束。在一些实施例中,存储文件的数据处的物理位置在闪存中可以是不连续的。通过将虚拟文件和存储该虚拟文件的第一数据处的物理地址相关联,VFT 360可以将与虚拟文件相对应的物理地址和该虚拟文件相关联。
关于虚拟映像文件3611的元数据也可以包括该文件的长度。可替换地,虚拟映像文件3611可以包括文件结束(EOF)标记以指示虚拟映像文件3611的结束。虚拟映像文件3611的EOF标记可以与虚拟文件的EOF标记不同或相同。
在一些实施例中,只有虚拟化管理模块330可以存取VFT 360。在一些实施例中,固件300的全部或大部分组件都可以存取VFT 360。例如,因为块管理模块可以执行或启动无用存储单元收集操作,而无用存储单元收集操作要考虑VFT 360中的物理地址或逻辑地址是否已被标记为“脏的”或“待擦除的”,所以虚拟化管理模块330和块管理模块320都可以存取VFT 360。
因为主机50通常不能存取物理地址组3615、3616和3617或相应的虚拟文件3612、3613和3614,所以在物理地址组3615、3616和3617处的数据不可以通过来自主机50的修整操作来初始化。然而,可以通过参考将虚拟存储器VS1中的数据与介入闪存211的物理地址关联起来的VFT 360以虚拟修整VTRIM命令对物理地址组3615、3616和3617处的数据进行初始化(例如,物理地擦除物理地址组3616处的存储器单元)。
图15根据一些示例实施例示出了对图1的存储系统中的虚拟存储器中的数据执行虚拟修整操作。
图16是示出了参照图14和图15的虚拟修整VTRIM命令的示例性操作的流程图。
参照图15,主机50(或OS 60)将涉及虚拟存储器VS1中的数据的删除请求D_REQUEST传送到处理器110。处理器110可以将删除请求D_REQUEST传送到虚拟化管理模块330。虚拟化管理模块330可以参考VFT 360以确定虚拟存储器VS1是由虚拟映像文件3611表示且存储在闪存211中。虚拟化管理模块330可以参考固件300的其它部分或闪存211以确定包括虚拟映像文件3611的闪存211是否处于空闲状态。当介入闪存211处于空闲状态时,处理器110可以生成虚拟修整VTRIM命令并将其发送到虚拟化管理模块330。作为虚拟修整VTRIM命令的结果,包括虚拟映像文件3611的介入闪存211的存储器块可以被擦除(即,介入闪存211的存储器块被物理地初始化),并且可以已经将删除请求D_REQUEST没有涉及的数据移动到另一个闪存中。
图16示出了解释使用虚拟修整VTRIM命令来删除虚拟数据的示例性过程的流程图。首先,将虚拟化请求V_REQUEST发送到主机50(或OS 60)中,并且虚拟化管理模块330在闪存211中创建虚拟存储器VS(S310)。将该闪存中的多个物理地址分配给虚拟存储器VS。主机50可以将虚拟存储器VS视为单个虚拟映像文件3611。虚拟化管理模块330还在虚拟存储器中存储一个或多个虚拟文件3612、3613和3614(S320)。这些文件中的每一个文件的数据被存储在位于物理地址组3615、3616和3617处的存储器单元中。虚拟化文件表VFT360也由虚拟化管理模块330创建以将虚拟映像文件3611与存储在虚拟存储器VS中的虚拟文件3612、3613和3614相关联,并且还将虚拟文件3612、3613和3614与分别存储这些文件中的每一个文件的第一数据的物理地址组3615、3616和3617相关联(S330)。物理地址组3615、3616和3617中的每一组包括一个或多个物理地址。
然后,虚拟化管理模块330可以接收删除虚拟存储器VS中的多个文件中的一个或多个、或全部文件的请求(S340)。虚拟化管理模块330可以参考VFT 360以确定删除请求所包括的数据与存储在闪存211中的虚拟存储器VS中的数据相对应,并且可以进一步参考VFT360以确定虚拟存储器VS中的哪个文件将被删除。例如,虚拟化管理模块330可以参考VFT 360以确定删除请求涉及存储在闪存211中的虚拟映像文件3611中的虚拟文件3613。
固件300可以生成涉及删除请求D_REQUEST所包括的数据的虚拟修整VTRIM命令(S350)。虚拟修整VTRIM命令可以操作以将关于VFT 360中的虚拟文件3613的条目标记为“脏的”或“待擦除的”(S360)。此时固件300不必擦除虚拟文件3613的任何部分。在随后的无用存储单元收集操作期间,虚拟存储器中已被标记为“脏的”或“待擦除的”虚拟文件的数据被移动到另一个闪存中,然后,存储了VFT 360中已被标记为“脏的”或“待擦除的”的文件的数据的存储器单元被物理地初始化(S370)。可以在存储器211的空闲状态期间执行这种无用存储单元收集操作(例如,当主机或其它外部源没有请求对存储器211进行存取时)。在一些实施例中,可以擦除存储了被标记的文件的数据的存储器单元(例如,物理地初始化)。在这些实施例中,包含存储了被标记为脏的数据的存储器单元的存储器块中的有效数据被复制到闪存211中的其它存储器块中,或全部被复制到另一个闪存中,然后,擦除包括含有被标记为脏的数据的存储器单元的存储器块(例如,那些存储器块中的存储器单元被物理地初始化)。当主机请求删除整个虚拟存储器VS时,可以在随后的一个或多个无用存储单元收集操作中擦除由虚拟映像文件3611所表示的、被分配给虚拟存储器VS的全部的存储器单元。此处所提到的无用存储单元收集操作在空闲时间期间可以延迟发生,以允许发生对闪存211的介入存取。待擦除块中的任何有效数据可以被移动到自由块中,其中包括作为虚拟存储器VS的一部分的有效数据。当虚拟存储器VS的数据的一些部分被移动到其它物理位置时,更新VFT 360以将新的物理位置与虚拟映像文件3611的适当的虚拟文件相关联(S380)。
图17是根据一些示例实施例用于示出存储装置的操作的时序图。
当数据将被编程到图2的存储装置100中的存储介质200中时,待编程数据从主机50传送到控制器105。从主机50传输出来的数据可以通过主机接口130临时存储在高速缓冲存储器140中。当从主机50传输出来的数据存储在高速缓冲存储器140中时,控制器105可以使用预定的时序通过通道CH1将串行数据输入命令71、地址72和传输的数据73发送到闪存211。图4中的命令/地址寄存器2111可以锁存输入命令71和地址72。数据73可以经由I/O电路2117装载到页缓冲器2115。当程序命令71从命令/地址寄存器2111传输到操作控制单元2114时,数据73可以在操作控制单元2114的控制下,被编程在存储器单元阵列2113中。当数据73被编程在存储器单元阵列2113中时,操作控制单元2114可以对空闲控制单元2116进行控制以生成具有指示忙碌状态(81,被标记为“程序忙”)的电平的就绪/忙信号R/nB。在一些实施例中,操作控制单元2114可以向选择单元2118提供具有逻辑低电平的选择信号SS,并且经由I/O电路2117将具有指示忙碌状态(81)的电平的就绪/忙信号R/nB传输到控制器105。
当闪存211处于忙碌状态时,虚拟化命令74可以被锁存在控制器105中。当闪存211的状态转变到空闲(就绪)状态时,虚拟化命令74、闪存211的地址75和将被存储在虚拟存储器中的数据76可以被传输到闪存211。这样,虚拟化管理模块330可以向主机50提供对虚拟存储器VS1的存取,并生成将被存储在闪存212中的VFT360。虚拟化管理模块330可以经由操作控制单元2114向主机50提供对虚拟存储器VS1的存取,操作控制单元2114可以对空闲控制单元2116进行控制以生成具有指示忙碌状态(82,被标记为“虚拟化忙”)的电平的就绪/忙信号R/nB。在虚拟化操作完成之后,当控制器105接收到涉及存储在虚拟存储器VS1中的数据的删除命令时,虚拟化管理模块330可以确定闪存211是否处于空闲状态。
虚拟化管理模块330(或处理器110)生成虚拟修整VTRIM命令并参考VFT 360以控制闪存211的操作控制单元2114,使得包括虚拟映像文件3611的闪存211的存储器块如参考图16所描述的那样被擦除。例如,包含虚拟映像文件3611的闪存211的存储器块被物理地初始化。在一些实施例中,虚拟修整VTRIM命令的生成可以包括更新数据记录(例如,表)以指示包括虚拟映像文件3611的页和/或块是脏的,并且在正常的无用存储单元收集步骤期间允许擦除这种包含虚拟映像文件3611的全部或部分的块(并由此创建相关联的自由块)。在一些实施例中,在闪存211的空闲状态期间,从虚拟化管理模块发出虚拟修整VTRIM命令,并发送到闪存211。在一些实施例中,当虚拟修整VTRIM命令从命令/地址寄存器2111传输到操作控制单元2114时,在操作控制单元2114的控制下擦除包括虚拟映像文件3611的闪存211的一个或多个存储器块。当擦除闪存211的存储器块时,操作控制单元2114对空闲控制单元2116进行控制以生成具有指示忙碌状态(84,被标记为“VTRIM OP”)的电平的就绪/忙信号R/nB。在一些实施例中,操作控制单元2114向选择单元2118提供具有逻辑高电平的选择信号SS,并且经由I/O电路2117将具有指示空闲状态(83)的电平的就绪/忙信号R/nB传输到控制器105。
在一些实施例中,当对包括虚拟映像文件3611的闪存211的一个或多个存储器块执行虚拟修整VTRIM操作时,命令/地址寄存器2111、操作控制单元2114、空闲控制单元2116和选择单元2118接收具有指示忙碌状态(84)的电平的就绪/忙信号R/nB,而控制器105接收具有指示空闲状态(83)的电平的就绪/忙信号R/nB。当命令78从控制器105传输到命令/地址寄存器2111时,可以传输的命令78锁存在命令/地址寄存器2111中,而没有传输到操作控制单元2114。
图18A和图18B根据一些示例实施例示出了在闪存中执行虚拟修整命令。
下文将参照图14来描述图18A和图18B。
参照图18A,数据块的块410包括区域411、412和413。区域411与虚拟存储器中待擦除的数据相对应,并且区域411与图14中的附图标记3613相对应。因此,区域411由物理地址组3616指定。另外,区域412与图14中的附图标记3612相对应,并且区域412由物理地址组3615指定。另外,区域413与图14中的附图标记3614相对应,并且区域413由物理地址组3617指定。当虚拟修整VTRIM操作对文件3613执行时,块410中与虚拟存储器中待擦除数据不对应的区域412和413可以被复制到自由块的区域422和423中,然后,如图18B所示,对块410执行擦除操作。
图19是根据一些示例实施例示出了实现虚拟化的计算机系统的框图。
参照图19,实现虚拟化的计算机系统20可以包括系统硬件平台500、至少一个虚拟机(VM)700和至少一个虚拟机监视器(VMM)600。VM 700和VMM 600可以连接到系统硬件平台500。计算机系统20还可以包括可选内核660(用于非主机系统)。计算机系统20可以包括另外的VM 700和VMM 600。在图19中,在该系统中作为“客户机”的VM 700安装在“主机平台”或简称为“主机”上,该“主机”包括系统硬件500和包括系统级软件的一个或多个层或同时驻留组件,诸如宿主操作系统(OS)640或类似内核660、VMM 600或它们的一些组合。作为软件,定义VM 700的代码最终可以在实际的系统硬件500上运行。
如在几乎所有的计算机中那样,系统硬件500通常可以包括一个或多个CPU 510、一些形式的存储器520(易失性的和/或非易失性的)、一个或多个存储装置530以及可以是集成或独立且可移动的一个或多个装置540。装置540的例子包括用户监视器和输入装置,诸如键盘、鼠标、轨迹球、触摸板、等等。
在一些实施例中,VM 700通常模仿物理计算机的总体结构,通常,同样地包括虚拟系统硬件730和客户机软件710两者。客户机软件710可以包括客户机OS 720和客户机应用程序705,或者可以只包括客户机OS 720。虚拟系统硬件730通常可以包括至少一个虚拟CPU 740、至少一个虚拟存储器750、至少一个虚拟存储装置760和一个或多个虚拟装置770。VM 700的全部虚拟硬件组件都可以以软件来实现以对相应的物理组件进行仿真。
运行在VM 700上的应用程序705好像在系统硬件500上运行一样起作用。客户机OS 720从虚拟存储器750或虚拟存储装置760存取可执行文件,虚拟存储装置760将是被分配给VM 700的实际物理存储装置530或物理存储器520的一些部分。
在一些实施例中,VMM 600包括虚拟化软件630,并且执行VM 700和系统硬件500之间的接口连接。例如,虚拟化软件630可以管理VM 700和存储装置530和/或存储器520之间的数据传输。虽然VM 700包括至少一个虚拟CPU 740、至少一个虚拟存储器750、至少一个虚拟存储装置760和一个或多个虚拟装置770,但是VMM 600所包括的虚拟化软件630也可以对至少一个虚拟CPU 740、至少一个虚拟存储器750、至少一个虚拟存储装置760和一个或多个虚拟装置770进行仿真。
虚拟化软件630可以在系统硬件500上运行,并且可以在存储装置530中存储运行虚拟化软件630的固件。例如,存储装置530可以采用图2的存储装置100,并且存储装置530可以包括控制器和具有多个非易失性存储器(闪存)的存储介质。图1的存储装置100所包括的虚拟化管理模块330可以作为虚拟化软件630的一部分来实现,并且可以管理VM 700上的虚拟系统硬件730。在一些实施例中,响应于来自主机(或系统OS 640)的虚拟化请求,虚拟化软件630可以经由存储装置530中的多个非易失性存储器中的一个向主机提供可以也包括虚拟存储装置760的VM 700。在一些实施例中,虚拟化软件630可以生成VFT,用于将虚拟存储装置760中的数据与介入非易失性存储器的物理地址相关联,并且可以在一个或多个应用程序存取虚拟存储装置760和/或将数据写入虚拟存储装置760中时,将该VFT存储在另一个非易失性存储器中。在一些实施例中,当应用程序705意图删除虚拟存储装置760中的数据时,虚拟化软件630可以使用虚拟修整VTRIM命令参考该VFT并擦除虚拟存储中的该数据,其中包括VFT中的条目,该条目将与虚拟存储760中的待删除数据相对应的虚拟地址、物理地址和位于该物理地址处的数据相关联。
图20是示出了根据一些示例实施例的在虚拟存储器中写入数据的方法的流程图。
图21是示出了根据一些示例实施例的在虚拟存储器中删除数据的方法的流程图。
虽然图20和图21的方法可以适用于支持虚拟存储的任何系统,但是下文将参照图19来描述图20和图21的方法。
参照图19和图20,OS 640可以从应用程序705接收虚拟化请求(S410)。响应于该虚拟化请求,虚拟化软件630可以经由存储装置530中的多个非易失性存储器中的一个在虚拟系统硬件730(或在VM 700)上生成虚拟存储器760(S420)。客户机OS 720可以从应用程序705接收向虚拟存储器760写入数据的数据写入请求,以向虚拟存储器760写入数据(S430)。虚拟化软件630可以生成用于将虚拟存储器760中的数据与介入非易失性存储器的物理地址相关联的VFT(S440)。在一些实施例中,该VFT可以存储在另一个非易失性存储器中。
参照图19和图21,VMM 600可以从应用程序705接收请求以删除虚拟存储器760中的数据(S510)。VMM 600可以确定介入非易失性存储器是否处于空闲状态(S520)。当介入非易失性存储器处于空闲状态时(S520中的“是”),虚拟化软件630可以生成虚拟修整VTRIM命令(S530)。虚拟化软件630可以参考VFT(S540),并擦除介入非易失性存储器的存储器块,其中包括与虚拟存储器760中的数据相对应的物理地址和将虚拟地址与待删除的数据相对应的物理地址相关联的VFT中的条目(S550)。当介入非易失性存储器处于忙碌状态时(S520中的“否”),虚拟修整VTRIM命令可以锁存直到介入非易失性存储器转变到空闲状态为止。
图22是根据一些示例实施例示出了使用存储装置的电子装置的框图。
参照图22,电子装置800可以包括具有处理器810、ROM 820、RAM 830和主机接口840的主机805。该电子装置也可以包括存储装置SSD 850。
处理器810可以存取RAM 830以执行固件代码或一些其它计算机代码。在一些实施例中,处理器810存取ROM 820以执行固定的命令序列,诸如初始化命令序列或BIOS序列。
主机接口840可以执行主机805和存储装置850之间的接口连接。主机接口840可以包括用于在主机805和存储装置850之间交换数据的协议。该协议可以是下列协议中的一个:USB协议、MMC协议、PCI协议、PCI-E协议、ATA协议、SATA协议、ESATA协议、并行ATA协议、SCSI协议、ESDI协议和IDE协议。协议的类型并不限于在此所描述的例子。
存储装置850可以附接到主机805。存储装置850可以采用图2的存储装置100,并且存储装置850可以包括控制器和具有多个非易失性存储器(闪存)的存储介质。存储装置850中包括的虚拟化管理模块860可以响应于来自主机805的虚拟化请求,经由存储装置850中的多个非易失性存储器中的一个向主机805提供虚拟存储器。在一些实施例中,虚拟化管理模块860可以生成用于将虚拟存储器中的数据与介入非易失性存储器的物理地址相关联的VFT。在一些实施例中,虚拟化管理模块860可以响应于删除虚拟存储器中的数据的请求,使用该VFT和虚拟修整VTRIM命令,擦除介入非易失性存储器的存储器块,其中包括与虚拟存储器中的数据相对应的物理地址和将虚拟地址和待删除数据的物理地址相关联的VFT中的条目。
图23是根据一些示例实施例示出了使用存储装置的存储服务器的例子的框图。
参照图23,存储服务器900可以包括服务器910、存储用于操作服务器910的数据的多个存储装置920和用于控制存储装置920的独立驱动器冗余阵列(RAID)控制器950。RAID技术主要用于数据服务器,在数据服务器上,重要数据能够复制到跨越多个存储装置的多于一个位置处。RAID控制器950可以根据RAID信息启用多个RAID级别中的一个,并且可以在服务器910和存储装置920之间接口连接数据。存储装置920中的每一个都可以采用图2的存储装置100。例如,存储装置920中的每一个都可以包括含有多个非易失性存储器(闪存)的存储介质940和用于控制该存储介质的控制器930。
控制器930中包括的虚拟化管理模块960可以响应于来自服务器910的虚拟化请求,经由存储介质940中的多个非易失性存储器中的一个向服务器910提供虚拟存储器。在一些实施例中,虚拟化管理模块960可以生成用于将虚拟存储器中的数据与介入非易失性存储器的物理地址相关联的VFT。在一些实施例中,虚拟化管理模块960可以响应于删除虚拟存储器中的数据的请求,使用该VFT和虚拟修整VTRIM命令,擦除介入非易失性存储器的存储器块,其中包括与虚拟存储器中的数据相对应的物理地址和将虚拟地址和待删除数据的物理地址相关联的VFT中的条目。
图24是示出了根据一些示例实施例的使用存储装置的服务器系统的例子的框图。
参照图24,服务器系统1000可以包括服务器1100和存储用于操作服务器1100的数据的存储装置SSD 1200。
服务器1100包括应用程序通信模块1110、数据处理模块1120、升级模块1130、调度中心1140、本地资源模块1150和修理信息模块1160。
应用程序通信模块1110可以被实现为在服务器1100和连接到网络的计算系统之间通信,或可以被实现为在服务器1100和存储装置1200之间通信。应用程序通信模块1110可以将通过用户接口接收到的数据或信息传送到数据处理模块1120。
数据处理模块1120链接到本地资源模块1150。本地资源模块1150可以基于输入到服务器1100的数据或信息向用户提供修理店、经销商和技术信息列表。
升级模块1130与数据处理模块1120接口连接。升级模块1130可以基于来自存储装置1200的数据或信息对固件、重置代码或装置的其它信息。
调度中心1140可以基于输入到服务器1100的数据或信息允许用户进行实时选择。
修理信息模块1160与数据处理模块1120接口连接。修理信息模块1160可以向用户提供与修理(例如,音频文件、视频文件或文本文件)相关联的信息。数据处理模块1120可以基于来自存储装置1200的信息将相关联的信息打包。打包的信息可以发送到存储装置1200或可以向用户显示。
存储装置1200可以采用图2的存储装置100,并且存储装置1200可以包括控制器和具有多个非易失性存储器(闪存)的存储介质。存储装置1200中包括的虚拟化管理模块1210可以响应于来自服务器1100的虚拟化请求,经由存储装置1200中的多个非易失性存储器中的一个向服务器1100提供虚拟存储器。在一些实施例中,虚拟化管理模块1210可以生成用于将虚拟存储器中的数据与介入非易失性存储器的物理地址相关联的VFT。在一些实施例中,虚拟化管理模块1210可以响应于删除虚拟存储器中的数据的请求,使用该VFT和虚拟修整VTRIM命令,擦除介入非易失性存储器的存储器块,其中包括与虚拟存储器中的数据相对应的物理地址和将虚拟地址和待删除数据的物理地址相关联的VFT中的条目。
图25是根据一些示例实施例示出了用于提供云计算服务的系统的例子的框图。
参照图25,系统1600包括客户端1610、管理服务器1700和服务器群1800。客户端1610、管理服务器1700和服务器群1800通过网络1620彼此相互连接。
客户端1610的例子可以包括能够访问网络的移动终端、数字电视、机顶盒、MP3播放器、便携式多媒体播放器(PMP)、笔记本电脑、等等。客户端1610并不限于在此所描述的示例装置。
管理服务器1700起到服务器群1800的网关或网络集线器的作用,并且可以管理一个或多个服务器的资源,例如,服务器1820、1830和/或1840。另外,管理服务器1700可以控制一个或多个服务器1820、1830和1840以运行使用存储在存储1810中的资源信息的计算服务。在图25所展示的例子中,虽然管理服务器1700被提供于服务器群1800的外部,但是管理服务器1700可以被配置为包括在服务器群1800中。
服务器群1800是多个集中式计算机服务器。在这个例子中,服务器群1800包括服务器1820、1830和1840以及存储1810,并且向客户端1610提供计算服务。服务器的数量并不限于三个,每一个服务器可以具有它自己的操作系统或这些服务器可以共享操作系统。
在云计算从企业对企业(B2B)扩展到企业对客户(B2C)的例子中,会希望响应计算服务的速度是的快速和高效的,否则,私人用户很可能会感到失望。另外,计算服务的收费应该合理。通常,在针对B2B的云计算服务的情况下,服务提供商检查在计算服务请求时刻处的可用服务。当计算服务所需要的虚拟机不存在时,可以运行新的虚拟机,并且运行的服务可以注册到使用中的计算服务的列表中。然而,由于从新的虚拟机激活直到能够提供客户端所请求的计算服务的响应时间较长,所以常规的云计算服务不适合于私人用户。
图25所示的云计算服务提供系统可以操作以便以高速和合理的成本向企业用户以及甚至是私人用户提供云计算服务。例如,云计算服务可以提供通过仿真虚拟机生成的、在虚拟机上运行的虚拟装置。该虚拟装置可以作为计算资源提供给客户端1610。
该虚拟机可以是虚拟计算机,该虚拟计算机多路复用物理硬件,使得多个不同的操作系统可以在单个硬件中运行。可以将该虚拟机提供给企业云计算服务。相比之下,该虚拟装置在私人用户通常使用的消费电子(CE)方面可以得到优化。为了复用虚拟机,可以通过仿真或模拟该虚拟机来生成该虚拟装置。例如,该虚拟装置可以包括针对CE的操作系统、开发平台、应用程序、等等。该虚拟装置可以被配置为在其上运行多个应用程序。对于客户端1610来说,该虚拟装置可以作为计算服务在运行。
再参照图25,第一服务器1820包括第一硬件1821、第一虚拟机1822、第一虚拟装置1823和第二虚拟装置1824。在这个例子中,第一虚拟装置1823和第二虚拟装置1824在第一虚拟机1822上运行。
第二服务器1830包括第二硬件1831、第二虚拟机1832、第三虚拟机1833、第一虚拟装置1834和第二虚拟装置1835。在这个例子中,第二虚拟机1832和第三虚拟机1833在第二硬件1831上运行。在一些实施例中,第一虚拟装置1834在第二虚拟机1832上运行,第二虚拟装置1835在第三虚拟机1833上运行。第三服务器1840包括第三硬件1841、第四虚拟机1842和第一到第n虚拟装置1843和1844。在这个例子中,第四虚拟机1842在第三硬件1841上运行,第一到第n虚拟装置1843和1844在第四虚拟机1842上运行。如上所述,向客户端提供虚拟装置的云计算服务可以称为装置即服务(DaaS)。
参照图25描述的服务器1820、1830和1840仅仅是为了举例的目的。应当理解,服务器群1800可以包括任何期望数量的服务器。同样,服务器可以包括任何期望数量的虚拟机和虚拟装置,并且每一个虚拟机可以具有任何期望数量的、在其上运行的虚拟装置。
管理服务器1700可以从客户端1610接收云计算服务请求。响应于云计算服务请求,管理服务器1700可以管理服务器1820、1830和1840中的一个或多个,使用之前准备的、运行在一个或多个服务器1820、1830和1840上的虚拟装置中的至少一个,来运行计算操作。例如,管理服务器1700可以分析包括使用服务器群1800的客户端1610在内的一个或多个客户端的计算服务使用信息。管理服务器1700可以预测对运行在服务器群1800中的计算资源的需求。该需求可以包括一个或多个虚拟装置和/或虚拟机。管理服务器1700可以基于预测结果为服务器群1800的服务器1820、1830和1840保留计算资源。
云计算可以基于“按使用支付”模型,该模型基于服务的使用来向用户收费。在一些实施例中,如果使用最少的资源来提供相同的服务,则成本可以减少。
图26是根据一些示例实施例示出了图25中的管理服务器的例子的框图。
参照图26,管理服务器1700包括请求处理器1710、预测单元1720、虚拟机(VM)管理器1730、虚拟装置(VD)管理器1740和资源池1750。
在一些实施例中,请求处理器1710控制预测单元1720、VM管理器1730、VD管理器1740和资源池1750的操作,以处理客户端1610的计算服务请求,并提供所请求的计算服务。
请求处理器1710可以基于资源池1750确定计算服务请求所请求的虚拟装置是否可用,资源池1750包括管理列表,其用于管理由服务器群(例如,服务器群1800)的各服务器操作的全部虚拟机和虚拟装置的。根据确定结果,请求处理器1710可以执行操作以向客户端1610提供所请求的虚拟装置。
预测单元1720预测要在服务器群1800的一个或多个服务器1820、1830和1840上运行的虚拟装置的类型和数量。预测单元1720可以分析客户端的计算服务请求的历史与模式以及计算服务的使用状态,从而保留虚拟机和虚拟装置,并且预测需要保留的虚拟机和虚拟装置的数量。
例如,预测单元1720可以对用于确保虚拟装置的预测类型和/或数量所须的虚拟机的最小数量进行预测,以便提高资源的使用效率。在另一个实施例中,预测单元1720可以预测虚拟机和虚拟装置的最大数量,以保证有可用的资源。
在收到客户端的请求之前,请求处理器1710可以控制VM管理器1730和VD管理器1740以保留虚拟装置的预测类型和/或数量以及虚拟机的预定类型和/或数量。在一些实施例中,因为请求处理器1710已经具有保留的虚拟装置和保留的虚拟机,所以一旦收到客户端的请求,请求处理器1710就能够在不发生延迟的情况下提供保留的虚拟装置。
VM管理器1730可以执行关于虚拟机的操作(例如,装载虚拟机映像、引导虚拟机映像、关闭虚拟机实例、等等)。虚拟机实例指的是被发起并对服务器来说是可用的虚拟机。在为客户端的计算服务请求进行准备时,VM管理器1730可以在至少一个服务器上部署(例如,引导和装载)至少一个虚拟机。VM管理器1730可以根据预测单元1720的预测结果在服务器群的可用服务器上部署所请求的虚拟机。
VD管理器1740可以执行关于虚拟装置的操作(例如,装载虚拟装置映像、引导虚拟装置映像、关闭虚拟装置实例、等等)。虚拟装置实例指的是被发起并对服务器来说是可用的虚拟装置。在为客户端的计算服务请求进行准备时,VD管理器1740可以在已部署的虚拟机上部署至少一个虚拟装置。VD管理器1740可以根据预测单元1720的预测结果在服务器群1800的可用服务器上部署所请求的虚拟装置。
资源池1750可以存储管理列表并对其进行管理,管理列表用于管理在服务器群的一个或多个服务器上运行的虚拟机和虚拟装置。管理列表可以包括关于虚拟机和虚拟装置的状态信息、性能信息、用户访问信息、计算服务信息、等等。
存储1810可以存储虚拟机映像1811、虚拟装置映像1812和作为文件的用户特定数据1813。虽然存储1810在图25中被提供在与管理服务器1700分开的服务器群1800中,但是存储1810也可以被提供于服务器群1800的外部或被配置为与管理服务器1700集成。存储1810可以采用多个图2的存储装置,并且存储1810可以向管理服务器1700或一个或多个服务器1820、1830和1840提供虚拟存储器。在一些实施例中,存储1810可以监视对虚拟存储器的删除请求,并且存储1810可以响应于删除请求,使用虚拟修整VTRIM命令,擦除非易失性存储器装置的存储器块,其中包括与虚拟存储器中的数据相对应的物理地址处的数据。在一些实施例中,存储1810可以通过提供虚拟机和虚拟装置所请求的虚拟存储器来提高虚拟机和虚拟装置的效用。
虚拟机映像1811是在服务器上运行虚拟机时使用的映像。虚拟装置映像1812是在服务器上运行虚拟装置时使用的映像。用户特定数据1813指的是由客户端使用计算服务并且响应于客户端请求生成和修改的全部数据。
请求处理器1710可以存储用户特定数据1813,用户特定数据1813是在存储1810中关于客户端1610所使用的计算服务而生成和存储的。当客户端1610针对之前使用的计算服务发出请求时,存储的用户特定数据可以重新存储到与该计算服务请求相对应的虚拟装置中,并且可以将重新存储的虚拟装置提供给客户端1610。可以提供用户特定数据1813作为计算服务而重新存储的虚拟装置,使得可以使用处于与用户之前已经使用的相同状态的虚拟装置向客户端1610提供计算服务。
如上所述,通过支持虚拟化、提供虚拟存储器并支持用于擦除介入非易失性存储器的存储器块(根据一些示例实施例,其中包括与虚拟存储器中的数据相对应的物理地址处的数据)的虚拟修整VTRIM命令,包括多个非易失性存储器的存储装置可以增强在虚拟化环境中的性能。在一些实施例中,在没有开发另外的硬件的情况下,通过利用固件实现虚拟化和虚拟修整命令,可以增强存储装置的性能。在一些实施例中,因为在相应的非易失性存储器处于空闲状态的同时可以执行虚拟修整命令,所以虚拟修整命令的执行可以不影响其它操作。
各种示例实施例可以适用于支持各种操作系统的虚拟化环境。
上述公开的主题应当被认为是说明性而非限制性的,所附权利要求书旨在涵盖落入所公开的实施例的真实精神和范围的所有这些修改、增强和其它实施例。因而,本发明应当理解为权利要求书和其等同物的可允许的最宽泛的解释,而不应当受到前述具体描述限制或局限。
Claims (20)
1.一种操作包括控制器和非易失性存储器的固态驱动器的方法,所述方法包括步骤:
利用所述非易失性存储器创建虚拟存储器驱动器,所述虚拟存储器驱动器包括多个物理地址;
将计算机文件存储在所述虚拟存储器驱动器中的与所述多个物理地址的第一组相对应的第一组位置处;
将所述多个物理地址的所述第一组关联到表中的单个逻辑地址;
将所述虚拟存储器驱动器中的所述计算机文件移动到与所述多个物理地址的第二组相对应的第二组位置;以及
将所述多个物理地址的所述第二组关联到所述表中的所述单个逻辑地址。
2.如权利要求1所述的方法,其中,所述多个物理地址具有连续的顺序,
其中,将所述计算机文件存储在所述虚拟存储器驱动器中的步骤包括以各部分的第一序列存储所述计算机文件;并且
其中,对所述虚拟存储器驱动器中的所述计算机文件进行移动的步骤包括重新安排所述计算机文件的各部分的所述第一序列,以便以各部分的第二序列存储所述计算机文件,所述第二序列与所述第一序列不同。
3.如权利要求2所述的方法,其中,对所述计算机文件进行移动的步骤包括只移动所述计算机文件的各部分中的一些部分。
4.如权利要求3所述的方法,还包括步骤:
执行与所述计算机文件的已被移动的那些部分相关联的无用存储单元收集操作。
5.如权利要求4所述的方法,还包括步骤:
由所述控制器为所述计算机文件的已被移动的那些部分生成内部TRIM命令,
其中,所述内部TRIM命令被配置为使所述控制器在所述无用存储单元收集操作模式期间擦除所述计算机文件。
6.如权利要求4所述的方法,其中,所述控制器判断所述计算机文件的哪些部分将被移动,以便为擦除操作释放NAND闪存的块。
7.如权利要求3所述的方法,其中,对所述虚拟存储器驱动器中的所述计算机文件进行移动的步骤包括将所述计算机文件的各部分中的一些部分从NAND闪存的第一块移动到NAND闪存的第二块,并且其中所述方法还包括步骤:
擦除NAND闪存的所述第一块。
8.如权利要求3所述的方法,还包括步骤:
重新安排所述计算机文件的各部分的所述第二序列,以便以各部分的第三序列存储所述计算机文件,所述第三序列与所述第二序列不同。
9.如权利要求8所述的方法,其中,以各部分的第三序列存储所述计算机文件的步骤包括在NAND闪存的第一块中存储所述计算机文件的各部分中的至少一些部分。
10.一种存储装置,其包括:
多个非易失性存储器;
控制器,其被配置为控制所述多个非易失性存储器,所述控制器被配置为使用所述多个非易失性存储器中的至少第一非易失性存储器来向外部主机提供虚拟存储器,并且所述控制器被配置为响应于对存储在所述虚拟存储器中的第一数据的删除请求,擦除所述第一非易失性存储器的第一存储器块,所述第一非易失性存储器的所述第一存储器块包括存储在所述虚拟存储器中的所述第一数据;
其中,所述控制器响应于对存储在所述虚拟存储器中的所述第一数据的删除请求,通过生成内部TRIM命令来擦除所述第一非易失性存储器的所述第一存储器块。
11.如权利要求10所述的存储装置,其中,所述控制器被配置为生成虚拟化文件表(VFT)以将所述虚拟存储器中的所述第一数据与对所述虚拟存储器中的所述第一数据进行存储的存储器位置的第一组物理地址相关联。
12.如权利要求11所述的存储装置,其中,所述VFT存储在所述多个非易失性存储器中的一个非易失性存储器中。
13.如权利要求11所述的存储装置,其中,所述VFT存储在所述控制器的易失性存储器中。
14.如权利要求11所述的存储装置,还包括包含由软件配置的所述控制器的固件,所述固件包括:
虚拟化管理模块,其被配置为生成所述虚拟化文件表;
闪存地址翻译器,其被配置为将来自所述外部主机的逻辑地址转换成所述多个非易失性存储器的物理地址;以及
块管理模块,其被配置为管理所述多个非易失性存储器的存储器块,
其中,所述块管理模块被配置为记录坏块地址,并用保留块来替换所述坏块。
15.如权利要求14所述的存储装置,其中,所述固件的软件存储在与所述控制器进行通信的ROM中。
16.如权利要求11所述的存储装置,其中,所述控制器被配置为响应于对所述虚拟存储器中的所述第一数据的删除请求、并参考所述VFT来擦除所述第一非易失性存储器的所述第一存储器块。
17.如权利要求16所述的存储装置,其中,所述控制器被配置为在所述第一非易失性存储器处于空闲状态时开始擦除所述第一非易失性存储器的所述第一存储器块。
18.如权利要求16所述的存储装置,其中,所述控制器被配置为延迟所述内部TRIM命令的启动,直到所述第一非易失性存储器从忙碌状态转变到空闲状态为止。
19.如权利要求16所述的存储装置,其中,所述控制器被配置为启动将所述第一非易失性存储器的所述第一存储器块的数据移动到第二存储器块,并且所述控制器被配置为在将所述第一存储器块中的数据移动到第二存储器块之后,擦除所述第一非易失性存储器的所述第一存储器块,其中,所述第二存储器块的、在启动将所述第一存储器块中的数据移动到所述第二存储器块之前与所述虚拟存储器不相关联的所有物理地址都被擦除。
20.一种操作包括控制器和非易失性存储器的固态驱动器的方法,所述方法包括步骤:
利用所述非易失性存储器创建虚拟存储器驱动器,所述虚拟存储器驱动器具有与多个物理地址相对应的多个逻辑地址;
将计算机文件存储在所述虚拟存储器驱动器中的所述多个物理地址的第一组处;
将所述虚拟存储器驱动器中的所述计算机文件移动到所述多个物理地址的第二组;以及
执行与所述多个物理地址的所述第一组的至少一部分相关联的非易失性存储器的无用存储单元收集操作,所述多个物理地址的所述第一组的所述至少一部分与所述计算机文件的已被移动的那些部分相对应,
其中,将所述计算机文件存储在所述虚拟存储器驱动器中的步骤包括以各部分的第一序列存储所述计算机文件;并且
所述控制器为与所述多个物理地址的所述第一组的至少一部分相关联的非易失性存储器生成内部TRIM命令,所述多个物理地址的所述第一组的所述至少一部分与所述计算机文件的已被移动的那些部分相对应;
其中,对所述虚拟存储器驱动器中的所述计算机文件进行移动的步骤包括重新安排所述计算机文件的各部分的所述第一序列,以便以各部分的第二序列存储所述计算机文件,所述第二序列与所述第一序列不同。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2011-0051178 | 2011-05-30 | ||
KR1020110051178A KR20120132820A (ko) | 2011-05-30 | 2011-05-30 | 스토리지 디바이스, 스토리지 시스템 및 스토리지 디바이스의 가상화 방법 |
US201161513014P | 2011-07-29 | 2011-07-29 | |
US61/513,014 | 2011-07-29 | ||
US13/429,329 | 2012-03-24 | ||
US13/429,329 US20120311237A1 (en) | 2011-05-30 | 2012-03-24 | Storage device, storage system and method of virtualizing a storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102810068A true CN102810068A (zh) | 2012-12-05 |
Family
ID=47262585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012101749973A Pending CN102810068A (zh) | 2011-05-30 | 2012-05-30 | 存储装置、存储系统和使存储装置虚拟化的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120311237A1 (zh) |
KR (1) | KR20120132820A (zh) |
CN (1) | CN102810068A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412727A (zh) * | 2013-07-17 | 2013-11-27 | 记忆科技(深圳)有限公司 | 优化固态硬盘的删减命令的方法及其固态硬盘 |
CN104007937A (zh) * | 2013-02-26 | 2014-08-27 | 希捷科技有限公司 | 云计算环境中的数据更新管理 |
CN105608015A (zh) * | 2014-11-17 | 2016-05-25 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN106294210A (zh) * | 2015-06-26 | 2017-01-04 | 伊姆西公司 | 用于处理物理驱动器的移动的方法及装置 |
CN106462510A (zh) * | 2014-03-06 | 2017-02-22 | 伊姆西公司 | 具有独立直接接入大量固态存储资源的多处理器系统 |
CN106802768A (zh) * | 2015-11-25 | 2017-06-06 | 旺宏电子股份有限公司 | 存储器装置的抹除方法 |
CN107665094A (zh) * | 2016-07-29 | 2018-02-06 | 西部数据技术公司 | 自适应损耗均衡 |
CN107870869A (zh) * | 2016-09-28 | 2018-04-03 | 三星电子株式会社 | 包括由主机控制的存储装置的计算系统 |
CN109840049A (zh) * | 2017-11-24 | 2019-06-04 | 三星电子株式会社 | 数据管理方法和执行其的操作的储存设备 |
TWI662419B (zh) * | 2017-04-12 | 2019-06-11 | 廣達電腦股份有限公司 | 具有儲存實體資源的本地磁碟的網路系統 |
CN109933283A (zh) * | 2017-12-19 | 2019-06-25 | 西部数据技术公司 | 直接主机访问存储装置存储空间 |
CN110147332A (zh) * | 2018-02-13 | 2019-08-20 | 纬颖科技服务股份有限公司 | 目录数据的管理方法与存储器装置 |
WO2020015126A1 (zh) * | 2018-07-20 | 2020-01-23 | 江苏华存电子科技有限公司 | 一种便携式多功能手摇切割机及使用方法 |
CN110780809A (zh) * | 2018-07-31 | 2020-02-11 | 爱思开海力士有限公司 | 针对多个存储器系统的接合管理元数据的设备和方法 |
CN111124305A (zh) * | 2019-12-20 | 2020-05-08 | 浪潮电子信息产业股份有限公司 | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 |
CN111176585A (zh) * | 2013-11-07 | 2020-05-19 | 奈特力斯股份有限公司 | 混合内存模块以及操作混合内存模块的系统和方法 |
CN111459400A (zh) * | 2019-01-18 | 2020-07-28 | 香港商希瑞科技股份有限公司 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
CN112540720A (zh) * | 2019-09-23 | 2021-03-23 | 深圳宏芯宇电子股份有限公司 | 闪存设备及闪存控制方法 |
CN113867642A (zh) * | 2021-09-29 | 2021-12-31 | 杭州海康存储科技有限公司 | 数据处理方法、装置及存储设备 |
US11340794B2 (en) | 2013-04-09 | 2022-05-24 | EMC IP Holding Company LLC | Multiprocessor system with independent direct access to bulk solid state memory resources |
CN115373909A (zh) * | 2021-04-27 | 2022-11-22 | 美光科技公司 | 存储器系统中的故障管理技术 |
US11720283B2 (en) | 2017-12-19 | 2023-08-08 | Western Digital Technologies, Inc. | Coherent access to persistent memory region range |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10095616B2 (en) | 2012-03-28 | 2018-10-09 | Quantum Corporation | Garbage collection for virtual environments |
US20130282676A1 (en) * | 2012-03-28 | 2013-10-24 | Quantum Corporation | Garbage collection-driven block thinning |
US9141533B2 (en) * | 2012-05-31 | 2015-09-22 | Silicon Motion, Inc. | Data storage device and flash memory control method for performing garbage collection |
US9390020B2 (en) | 2012-07-06 | 2016-07-12 | Seagate Technology Llc | Hybrid memory with associative cache |
US9594685B2 (en) | 2012-07-06 | 2017-03-14 | Seagate Technology Llc | Criteria for selection of data for a secondary cache |
US9477591B2 (en) | 2012-07-06 | 2016-10-25 | Seagate Technology Llc | Memory access requests in hybrid memory system |
US9772948B2 (en) | 2012-07-06 | 2017-09-26 | Seagate Technology Llc | Determining a criterion for movement of data from a primary cache to a secondary cache |
US9529724B2 (en) | 2012-07-06 | 2016-12-27 | Seagate Technology Llc | Layered architecture for hybrid controller |
KR20140015857A (ko) * | 2012-07-26 | 2014-02-07 | 삼성전자주식회사 | 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법 |
US8799561B2 (en) * | 2012-07-27 | 2014-08-05 | International Business Machines Corporation | Valid page threshold based garbage collection for solid state drive |
US9442854B2 (en) * | 2012-11-15 | 2016-09-13 | Elwha Llc | Memory circuitry including computational circuitry for performing supplemental functions |
US9582465B2 (en) | 2012-11-15 | 2017-02-28 | Elwha Llc | Flexible processors and flexible memory |
US9323499B2 (en) | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
WO2014077918A1 (en) * | 2012-11-19 | 2014-05-22 | Board Of Regents, The University Of Texas System | Robustness in a scalable block storage system |
US10910025B2 (en) * | 2012-12-20 | 2021-02-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Flexible utilization of block storage in a computing system |
US9323662B2 (en) * | 2012-12-31 | 2016-04-26 | SanDisk Technologies, Inc. | Flash memory using virtual physical addresses |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9734050B2 (en) * | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9378135B2 (en) * | 2013-01-08 | 2016-06-28 | Violin Memory Inc. | Method and system for data storage |
US9195585B2 (en) * | 2013-01-23 | 2015-11-24 | Vmware, Inc. | Techniques for allocating and surfacing host-side storage capacity to virtual machines |
DE102013100820B4 (de) | 2013-01-28 | 2018-05-30 | Fujitsu Technology Solutions Intellectual Property Gmbh | Verfahren zum sicheren Löschen eines nichtflüchtigen Halbleiter-Massenspeichers, Computersystem sowie Computerprogrammprodukt |
KR101698707B1 (ko) * | 2013-03-14 | 2017-01-20 | 인텔 코포레이션 | 가상 pci 장치 및 가상 mmio 장치를 형성하기 위한 일반적인 방법 |
US9015409B2 (en) * | 2013-03-15 | 2015-04-21 | Advanced Digital Broadcast Sa | Apparatus and methods for prolonging service life of solid-state memory device in a digital video recorder |
US20150378886A1 (en) * | 2013-04-08 | 2015-12-31 | Avalanche Technology, Inc. | Software-defined ssd and system using the same |
US9983992B2 (en) | 2013-04-30 | 2018-05-29 | WMware Inc. | Trim support for a solid-state drive in a virtualized environment |
US9785564B2 (en) | 2013-08-20 | 2017-10-10 | Seagate Technology Llc | Hybrid memory with associative cache |
US9507719B2 (en) | 2013-08-20 | 2016-11-29 | Seagate Technology Llc | Garbage collection in hybrid memory system |
US9069474B2 (en) | 2013-08-20 | 2015-06-30 | Seagate Technology Llc | Retention based defecting in a hybrid memory system |
US9367247B2 (en) | 2013-08-20 | 2016-06-14 | Seagate Technology Llc | Memory access requests in hybrid memory system |
US9195590B2 (en) | 2013-08-29 | 2015-11-24 | Micron Technology, Inc. | Sub-sector wear leveling in memories |
US9658799B2 (en) | 2013-09-25 | 2017-05-23 | International Business Machines Corporation | Data storage device deferred secure delete |
US20150193439A1 (en) * | 2014-01-08 | 2015-07-09 | International Business Machines Corporation | Schemaless data access management |
RU2658886C1 (ru) | 2014-08-12 | 2018-06-25 | Хуавэй Текнолоджиз Ко., Лтд. | Способ управления файлами, распределенная система хранения и узел управления |
US9990467B2 (en) * | 2014-10-24 | 2018-06-05 | Samsung Electronics Co., Ltd. | Electronic system with health monitoring mechanism and method of operation thereof |
US9830087B2 (en) * | 2014-11-13 | 2017-11-28 | Micron Technology, Inc. | Memory wear leveling |
KR20160070920A (ko) * | 2014-12-10 | 2016-06-21 | 에스케이하이닉스 주식회사 | 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법 |
US9986569B2 (en) * | 2015-03-18 | 2018-05-29 | Microsoft Technology Licensing, Llc | Battery-backed RAM for wearable devices |
US20180165037A1 (en) * | 2015-04-23 | 2018-06-14 | Hewlett Packard Enterprise Development Lp | Storage Reclamation in a Thin Provisioned Storage Device |
KR20160136002A (ko) | 2015-05-19 | 2016-11-29 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그것의 동작 방법 |
CN106326133B (zh) * | 2015-06-29 | 2020-06-16 | 华为技术有限公司 | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 |
US10523537B2 (en) | 2015-06-30 | 2019-12-31 | Amazon Technologies, Inc. | Device state management |
US10958648B2 (en) | 2015-06-30 | 2021-03-23 | Amazon Technologies, Inc. | Device communication environment |
US10075422B2 (en) | 2015-06-30 | 2018-09-11 | Amazon Technologies, Inc. | Device communication environment |
US10091329B2 (en) | 2015-06-30 | 2018-10-02 | Amazon Technologies, Inc. | Device gateway |
US9973593B2 (en) | 2015-06-30 | 2018-05-15 | Amazon Technologies, Inc. | Device gateway |
US10097534B2 (en) * | 2015-08-28 | 2018-10-09 | Dell Products L.P. | System and method to redirect hardware secure USB storage devices in high latency VDI environments |
US9760730B2 (en) | 2015-08-28 | 2017-09-12 | Dell Products L.P. | System and method to redirect and unlock software secure disk devices in a high latency environment |
KR102501751B1 (ko) * | 2015-09-22 | 2023-02-20 | 삼성전자주식회사 | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US10425484B2 (en) * | 2015-12-16 | 2019-09-24 | Toshiba Memory Corporation | Just a bunch of flash (JBOF) appliance with physical access application program interface (API) |
CN107506135B (zh) * | 2016-06-14 | 2022-05-06 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及系统 |
WO2019105029A1 (zh) * | 2017-11-29 | 2019-06-06 | 北京忆恒创源科技有限公司 | 去分配命令处理方法及其存储设备 |
KR20190093370A (ko) | 2018-02-01 | 2019-08-09 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 동작 방법 |
US10534551B1 (en) | 2018-06-22 | 2020-01-14 | Micron Technology, Inc. | Managing write operations during a power loss |
KR102612918B1 (ko) * | 2018-07-27 | 2023-12-13 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
CN114175000A (zh) * | 2019-07-31 | 2022-03-11 | 惠普发展公司,有限责任合伙企业 | 基于要擦除的比特的确定而对闪速存储器的更新 |
CN111597066B (zh) * | 2020-05-14 | 2023-06-06 | 深圳忆联信息系统有限公司 | Ssd修复方法、装置、计算机设备及存储介质 |
WO2022223108A1 (en) * | 2021-04-21 | 2022-10-27 | NEC Laboratories Europe GmbH | Method and system for supporting memory deduplication for unikernel images |
JP7104843B1 (ja) * | 2021-08-31 | 2022-07-21 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7617359B2 (en) * | 2004-06-10 | 2009-11-10 | Marvell World Trade Ltd. | Adaptive storage system including hard disk drive with flash interface |
JP4192129B2 (ja) * | 2004-09-13 | 2008-12-03 | 株式会社東芝 | メモリ管理装置 |
US20080282024A1 (en) * | 2007-05-09 | 2008-11-13 | Sudeep Biswas | Management of erase operations in storage devices based on flash memories |
US8386740B2 (en) * | 2010-03-29 | 2013-02-26 | International Business Machines Corporation | Modeling memory compression |
-
2011
- 2011-05-30 KR KR1020110051178A patent/KR20120132820A/ko not_active Application Discontinuation
-
2012
- 2012-03-24 US US13/429,329 patent/US20120311237A1/en not_active Abandoned
- 2012-05-30 CN CN2012101749973A patent/CN102810068A/zh active Pending
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104007937A (zh) * | 2013-02-26 | 2014-08-27 | 希捷科技有限公司 | 云计算环境中的数据更新管理 |
US11687292B2 (en) | 2013-02-26 | 2023-06-27 | Seagate Technology Llc | Data update management in a cloud computing environment |
US11340794B2 (en) | 2013-04-09 | 2022-05-24 | EMC IP Holding Company LLC | Multiprocessor system with independent direct access to bulk solid state memory resources |
CN103412727B (zh) * | 2013-07-17 | 2016-12-28 | 记忆科技(深圳)有限公司 | 优化固态硬盘的删减命令的方法及其固态硬盘 |
CN103412727A (zh) * | 2013-07-17 | 2013-11-27 | 记忆科技(深圳)有限公司 | 优化固态硬盘的删减命令的方法及其固态硬盘 |
CN111208951A (zh) * | 2013-11-07 | 2020-05-29 | 奈特力斯股份有限公司 | 混合内存模块以及操作混合内存模块的系统和方法 |
CN111176585A (zh) * | 2013-11-07 | 2020-05-19 | 奈特力斯股份有限公司 | 混合内存模块以及操作混合内存模块的系统和方法 |
CN106462510B (zh) * | 2014-03-06 | 2019-12-13 | 伊姆西公司 | 具有独立直接接入大量固态存储资源的多处理器系统 |
CN106462510A (zh) * | 2014-03-06 | 2017-02-22 | 伊姆西公司 | 具有独立直接接入大量固态存储资源的多处理器系统 |
CN105608015A (zh) * | 2014-11-17 | 2016-05-25 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN105608015B (zh) * | 2014-11-17 | 2020-10-02 | 爱思开海力士有限公司 | 存储系统及其操作方法 |
CN106294210B (zh) * | 2015-06-26 | 2019-06-11 | 伊姆西公司 | 用于处理物理驱动器的移动的方法及装置 |
CN106294210A (zh) * | 2015-06-26 | 2017-01-04 | 伊姆西公司 | 用于处理物理驱动器的移动的方法及装置 |
CN106802768B (zh) * | 2015-11-25 | 2020-02-21 | 旺宏电子股份有限公司 | 存储器装置的抹除方法 |
CN106802768A (zh) * | 2015-11-25 | 2017-06-06 | 旺宏电子股份有限公司 | 存储器装置的抹除方法 |
CN107665094A (zh) * | 2016-07-29 | 2018-02-06 | 西部数据技术公司 | 自适应损耗均衡 |
CN107665094B (zh) * | 2016-07-29 | 2020-06-23 | 西部数据技术公司 | 自适应损耗均衡 |
CN107870869B (zh) * | 2016-09-28 | 2023-11-03 | 三星电子株式会社 | 包括由主机控制的存储装置的计算系统 |
US11579779B2 (en) | 2016-09-28 | 2023-02-14 | Samsung Electronics Co., Ltd. | Computing systems including storage devices controlled by hosts |
CN107870869A (zh) * | 2016-09-28 | 2018-04-03 | 三星电子株式会社 | 包括由主机控制的存储装置的计算系统 |
TWI662419B (zh) * | 2017-04-12 | 2019-06-11 | 廣達電腦股份有限公司 | 具有儲存實體資源的本地磁碟的網路系統 |
CN109840049B (zh) * | 2017-11-24 | 2024-04-12 | 三星电子株式会社 | 数据管理方法和执行其的操作的储存设备 |
CN109840049A (zh) * | 2017-11-24 | 2019-06-04 | 三星电子株式会社 | 数据管理方法和执行其的操作的储存设备 |
US11681634B2 (en) | 2017-12-19 | 2023-06-20 | Western Digital Technologies, Inc. | Direct host access to storage device memory space |
CN109933283A (zh) * | 2017-12-19 | 2019-06-25 | 西部数据技术公司 | 直接主机访问存储装置存储空间 |
US11720283B2 (en) | 2017-12-19 | 2023-08-08 | Western Digital Technologies, Inc. | Coherent access to persistent memory region range |
CN109933283B (zh) * | 2017-12-19 | 2022-06-28 | 西部数据技术公司 | 直接主机访问存储装置存储空间 |
CN110147332A (zh) * | 2018-02-13 | 2019-08-20 | 纬颖科技服务股份有限公司 | 目录数据的管理方法与存储器装置 |
CN110147332B (zh) * | 2018-02-13 | 2021-09-14 | 纬颖科技服务股份有限公司 | 目录数据的管理方法与存储器装置 |
WO2020015126A1 (zh) * | 2018-07-20 | 2020-01-23 | 江苏华存电子科技有限公司 | 一种便携式多功能手摇切割机及使用方法 |
CN110780809A (zh) * | 2018-07-31 | 2020-02-11 | 爱思开海力士有限公司 | 针对多个存储器系统的接合管理元数据的设备和方法 |
CN111459400A (zh) * | 2019-01-18 | 2020-07-28 | 香港商希瑞科技股份有限公司 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
CN111459400B (zh) * | 2019-01-18 | 2023-03-28 | 香港商希瑞科技股份有限公司 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
CN112540720A (zh) * | 2019-09-23 | 2021-03-23 | 深圳宏芯宇电子股份有限公司 | 闪存设备及闪存控制方法 |
CN112540720B (zh) * | 2019-09-23 | 2023-11-10 | 深圳宏芯宇电子股份有限公司 | 闪存设备及闪存控制方法 |
CN111124305A (zh) * | 2019-12-20 | 2020-05-08 | 浪潮电子信息产业股份有限公司 | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 |
CN111124305B (zh) * | 2019-12-20 | 2021-08-31 | 浪潮电子信息产业股份有限公司 | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 |
CN115373909A (zh) * | 2021-04-27 | 2022-11-22 | 美光科技公司 | 存储器系统中的故障管理技术 |
CN113867642B (zh) * | 2021-09-29 | 2023-08-04 | 杭州海康存储科技有限公司 | 数据处理方法、装置及存储设备 |
CN113867642A (zh) * | 2021-09-29 | 2021-12-31 | 杭州海康存储科技有限公司 | 数据处理方法、装置及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20120132820A (ko) | 2012-12-10 |
US20120311237A1 (en) | 2012-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102810068A (zh) | 存储装置、存储系统和使存储装置虚拟化的方法 | |
CN111240586B (zh) | 存储器系统及其操作方法 | |
CN109144888B (zh) | 存储器系统 | |
US8166233B2 (en) | Garbage collection for solid state disks | |
TWI418980B (zh) | 記憶體控制器、用於格式化記憶體系統中之記憶體陣列和固態驅動器之方法及固態記憶體系統 | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
US8924659B2 (en) | Performance improvement in flash memory accesses | |
US20130145076A1 (en) | System and method for memory storage | |
US20060179212A1 (en) | Flash memory control devices that support multiple memory mapping schemes and methods of operating same | |
KR20120037786A (ko) | 저장 장치, 그것의 락 모드 관리 방법, 및 그것을 포함하는 메모리 시스템 | |
WO2014074449A2 (en) | Wear leveling in flash memory devices with trim commands | |
CN103999060A (zh) | 固态存储管理 | |
CN103270500A (zh) | 事务日志恢复 | |
CN103294604A (zh) | 闪存器件和使用闪存器件的电子设备 | |
US8433847B2 (en) | Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive | |
CN113785278A (zh) | 用于避免并发写入流之间冲突的动态数据放置 | |
CN110968522B (zh) | 存储器系统及其操作方法、包括存储器系统的数据库系统 | |
US8898414B2 (en) | Storage devices and methods of driving storage devices | |
KR20200068941A (ko) | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 | |
CN102708058A (zh) | 执行ftl功能的非易失性存储装置及其控制方法 | |
EP3926451B1 (en) | Communication of data relocation information by storage device to host to improve system performance | |
CN110781023A (zh) | 用于在存储器系统中处理数据的设备和方法 | |
KR20200032527A (ko) | 메모리 시스템의 동작 방법 및 메모리 시스템 | |
CN111435334B (zh) | 在存储器系统中检查有效数据的设备和方法 | |
JP2009503740A (ja) | データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121205 |