CN103080911B - 存储器块的先占式垃圾回收 - Google Patents
存储器块的先占式垃圾回收 Download PDFInfo
- Publication number
- CN103080911B CN103080911B CN201180041989.5A CN201180041989A CN103080911B CN 103080911 B CN103080911 B CN 103080911B CN 201180041989 A CN201180041989 A CN 201180041989A CN 103080911 B CN103080911 B CN 103080911B
- Authority
- CN
- China
- Prior art keywords
- block
- data
- predetermined threshold
- garbage reclamation
- renewal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种对存储器器件中的更新块以先占式方式进行强制量的垃圾回收操作的方法和系统。视需要监视并调整某个数据写入所需的垃圾回收量以匹配该强制量。可以基于更新块的最近使用或者所需的垃圾回收量来选择更新块。另一方法和系统可以将关于更新块的控制信息存储在临时存储区域中以便利用较大数量的更新块。通过使用此方法和系统,可以优化通过速度等级测试所测量的顺序写入性能。
Description
本申请要求于2010年6月30日提交的美国申请No.12/828,241的优先权,美国申请No.12/828,241的全部通过引用合并于此。
技术领域
本申请一般涉及存储器器件。更具体地,本申请涉及在可重新编程非易失性半导体闪存中的块的垃圾回收(garbage collection)。
背景技术
已经广泛采用诸如闪存的非易失性存储器系统来用在消费产品中。可以发现不同形式的闪存,例如可以在主机设备之间携带的可携式存储卡的形式或者作为嵌入在主机设备中的固态盘(SSD)的形式。当向传统的闪存系统写数据时,主机通常向存储器系统的逻辑地址空间内的地址写数据并从其读取数据。然后存储器系统经常在逻辑地址空间和存储器的物理块或元块(metablock)之间映射数据,其中数据被存储在与逻辑地址空间中的范围对应的固定逻辑组中。通常,每个固定的逻辑组被存储在存储器系统的单独物理块中。存储器系统追踪逻辑地址空间如何被映射到物理存储器中,但是主机对此并不知晓。主机追踪在逻辑地址空间内的其数据文件的地址,但是存储器系统通常在不了解此映射的情况下进行操作。
在逻辑地址空间中操作的存储器系统的缺点是碎片性(fragmentation)。由主机文件系统写入的数据可能通常在逻辑地址空间中被分片,其中许多固定的逻辑组仅部分地用新数据更新。由于主机文件系统的空闲空间的累积的碎片性,且甚至可能由于主机文件系统的各个文件的固有碎片性,可能发生碎片性。由于删除,先前写入的数据可能变为弃用,并且导致进一步的碎片性。分片的逻辑组将需要全部重写在不同的物理块中。重写分片的逻辑组可能涉及从逻辑组的先前位置复制不相关的数据,即已知为垃圾回收的处理。随着碎片性增加,存储器系统的传送速度可能降低。
为了提供存储器系统度量的量测,可以向存储器系统应用测试以测定存储器系统的写性能。例如,存储器系统可能具有可以由诸如例如来自SD协会的速度等级规范的协议而设定的传送速度规范。该速度等级规范包括速度等级2、4、6,它们分别表示存储器系统的保证最小传送速度:2MB/s、4MB/s和6MB/s。运行在存储器系统上的速度等级测试测量诸如如下度量:可寻址单元的顺序写性能(Pw)、对于文件分配表(FAT)写入的时间(Tfw)和对于多个FAT写入的时间的滚动平均(Tfw(avg))。速度等级测试运行还可以测量具有碎片的存储器系统的性能(Pc),这包括相应的读取性能测量。在速度等级测试期间发生的垃圾回收活动可能不利地影响测试结果。
发明内容
为了克服上述问题,公开了用于控制存储器器件中的垃圾回收的方法和系统、
根据本发明的第一方面,公开了用于优化包括控制器的存储器器件的性能的方法。该方法包括:接收要写入到逻辑可寻址单元的到来数据;确定对于垃圾回收操作要进行的垃圾回收量;以及如果确定的垃圾回收量小于预定阈值,则开始垃圾回收操作以实现该预定阈值。该方法还包括向与该逻辑可寻址单元对应的至少一个物理元块写入到来数据。以此方式,控制器可以以先占式方式进行垃圾回收,即使当前不需要垃圾回收。还公开了包括多个存储器块以及实现此方法的存储器控制器的系统。
根据另一方面,公开了当要在存储器器件中进行垃圾回收操作时确定操作的模式的方法,存储器器件包括控制器,该控制器确定用于进行垃圾回收操作的操作模式并且以确定的模式进行垃圾回收操作。该存储器器件可以具有不同的操作模式。该存储器器件在一个模式中可以比在另一个模式中更有效地进行垃圾回收。该控制器可以通过分析垃圾回收性能的至少一个指示符(比如在操作模式中垃圾回收的最大量)来分析哪个操作模式更有效地进行垃圾回收。依赖于该分析,该控制器可以在确定的模式中进行垃圾回收。例如,该控制器可以在确定的模式中以先占式方式执行垃圾回收以便有效地进行垃圾回收。还公开了包括多个存储器块以及实现此方法的存储器控制器的系统。
附图说明
图1是与具有非易失性存储器的存储器系统连接的主机的框图。
图2例示图1的系统的示例物理存储器组织。
图3示出图2的物理存储器的一部分的展开图。
图4例示逻辑可寻址单元和物理元块的对准。
图5例示在向存储器系统写数据之后物理元块的可能状态。
图6是例示涉及存储器块的先占式垃圾回收的优化存储器器件的性能的方法的流程图。
图7例示经历了根据图6的方法的性能优化的存储器块的第一例子。
图8例示经历了根据图6的方法的性能优化的存储器块的第二例子。
图9例示经历了根据图6的方法的性能优化的存储器块的第三例子。
图10例示经历了根据图6的方法的性能优化的存储器块的第四例子。
图11是例示涉及图12的状态机的优化存储器器件的性能的替换方法的流程图。
图12例示与用于优化存储器器件的性能的图11的替换方法有关的状态机。
图13是例示涉及将控制信息复制到随机存取存储器的优化存储器器件的性能的方法的流程图。
图14是例示涉及监视垃圾回收量的优化存储器器件的性能的方法的流程图。
具体实施方式
适合于在实现本发明的方面时使用的闪存系统示出在图1-3中。图1的主机系统100将数据存储到闪存102中并从闪存102取得数据。闪存可以嵌入在主机内,比如以安装在个人计算机中的固态盘(SSD)驱动器的形式。或者,存储器102可以是通过如图1所示的机械和电连接器的配合部分104和106可移除地连接到主机的卡的形式。配置为用作内部或嵌入的SSD驱动器的闪存可能看起来类似于图1的示意图,主要差别是存储器系统102的位置位于主机内部。SSD驱动器可以是作为对于旋转的磁盘驱动器的简易(drop-in)替代的离散模块的形式。
商业上可获得的SSD驱动器的一个例子是由SanDisk公司生产的32吉比特SSD。商业上可获得的可移除闪存卡的例子包括紧凑快闪(CF)、多媒体卡(MMC)、安全数字(SD)、迷你SD、记忆棒、智能媒体、TransFlash和微SD卡。尽管这些卡的每个具有根据其标准化规范的唯一的机械和/或电接口,但是其每个中所包括的闪存系统类似。这些卡全部可从SanDisk公司、即本申请的受让人获得。SanDisk还以其Cruzer商标提供一系列快闪驱动器,它们是小包装形式的手持存储器系统,其具有用于通过插入到主机的USB插槽中而与主机连接的通用串行总线(USB)插头。这些存储卡和快闪驱动器的每个包括与主机相接口并控制它们之中的闪存的操作的控制器。
可以使用SSD、存储卡和快闪驱动器的主机系统数量众多并且多种多样。它们包括诸如桌上型或者膝上型以及其他可携式计算机的个人计算机、蜂窝电话、个人数字助理(PDA)、数字相机、数字摄像机和可携式音频播放器。对于可携式存储卡应用,主机可以包括对于一种或多种类型的存储卡或快闪驱动器的内置插槽,或者主机可能需要存储卡被插入到其中的适配器。存储器系统通常包含其自己的存储器控制器以及驱动器,但是也可以存在一些唯存储器系统,其替代地由通过存储器所连接到的主机执行的软件来控制。在包含控制器的一些存储器系统中,尤其是嵌入在主机内的存储器系统中,存储器、控制器和驱动器通常在单个集成电路芯片上形成。
就存储器102而言,图1的主机系统100可视为具有两个主要部分,其由电路和软件的组合构成。它们是应用部分108以及与存储器102相接口的驱动器部分110。在PC中,例如,应用部分108可以包括处理器(比如微处理器)或者其他类型的运行字处理、图形、控制或者其他流行应用软件的控制器。在主要专用于进行单组功能的相机、蜂窝电话或者其他主机系统中,应用部分108包括处理器或者其他类型的运行操作相机以拍摄和存储照片、操作蜂窝电话以进行呼叫和接收呼叫等等的软件的控制器。
图1的存储器系统102包括闪存112和电路114,两者皆与卡所连接到的主机相接口,用于来回传递数据,并控制存储器112。控制器114通常在数据编程和读取期间在由主机110使用的数据的逻辑地址和存储器112的物理地址之间转换。控制器114可以包括处理器、微控制器、专用集成电路(ASIC)、场可编程门阵列、逻辑数字电路或者其他现在已知的或者以后开发的逻辑处理能力。
图2概念性地例示用作以下进一步描述的例子的闪存单元阵列112(图1)的组织。闪存单元阵列112可以包括多个存储器单元阵列,每个分别由单个或者多个存储器控制器控制。存储器单元的四个平面或者子阵列202、204、206和208可以位于单个集成存储器单元芯片上、位于两个芯片上(每个芯片上两个平面)或者位于四个单独芯片上。具体布置对于以下的讨论并不重要。当然,系统中可以存在其他数量的平面,比如1个、2个、8个、16个或者更多。平面各自被划分为存储器单元的组,存储器单元的组形成擦除的最小单位,下文中称为块。在图2中,存储器单元的块由矩形示出,诸如位于各个平面202、204、206和208中的块210、212、214和216。每个平面中可以存在数十个或者数百个块。
如上所述,存储器单元的块是擦除的单位,即物理上可一起擦除的最少数量的存储器单元。但是,为增加并行性,以更大的元块单位来操作块。来自每个平面的一个块逻辑上链接在一起以形成元块。四个块210、212、214和216被示出为形成一个元块218。元块内的所有单元通常一起被擦除。用于形成元块的块无需被限制为在其各自平面内相同的相对位置,如由块222、224、226和228构成的第二元块220中所示。尽管通常优选跨过所有平面延伸元块,但是为了高系统性能,可以操作存储器系统由不同平面中的一个、两个或三个块中的任一个或全部动态地形成元块的能力。这允许元块的尺寸与在一个编程操作中可用于存储的数据量更紧密地匹配。
为了操作目的,各个块又被划分为存储器单元的页,如图3所示。例如,每个块210、212、214和216的存储器单元每个被划分为八页P0-P7。或者,在每个块内可以存在16、32或者更多页的存储器单元。页是块内的数据编程和读取的单位,包含一次编程或读取的最小数据量。但是,为了增加存储器系统操作并行性,可以将在两个或多个块内的如此页逻辑地链接成元页。元页302例示在图3中,由来自四个块210、212、214和216的每个的一个物理页形成。例如,元页302包括在四个块的每个中的页P2,但是元页的页不是一定要具有在每个块内的相同相对位置。元页是编程的最大单位。
图4例示逻辑可寻址单元和每单元三位的存储器(D3存储器)中的物理元块的对准。例如,存储器可以是总容量2-32GB的SanDisk公司的32nm或43nm D3闪存。图4意图例示逻辑可寻址单元和物理元块之间的未对准(misalignment),并且并不一定暗示按照图中所示的顺序进行可寻址单元写入。
在一个例子中,安全数字(SD)存储器的逻辑可寻址单元大小是4MB,如由单元402、404和406所示。但是,D3存储器中的物理元块大小是3MB,如由元块408、410、412和414所示。在图4中,虚线每个表示1MB的大小。因此,逻辑可寻址单元的边界之一或两者不与物理元块边界对准。由于此未对准,如果数据被写入到具体的逻辑可寻址单元,则数据物理上被写入到两个元块,如图5中所示,导致元块之一或两者中的未用空间(图5中的交叉阴影的区域表示被写入了数据的元块中的空间,并且空白区域表示未用空间)。如果需要多个垃圾回收操作来恢复未用空间,则未用空间会导致存储器系统的顺序写入性能Pw不是最佳的。4MB的逻辑可寻址单元大小和3MB的物理元块大小的当前例子仅仅用于例示目的。预料到其他值。
具体地,首先,如果数据被写入到可寻址单元402,则元块408的全部以及元块410的1MB被写入了到来数据,并且被称为图5中的类型A可寻址单元502。元块408已满并且关闭,而元块410具有2MB的未用空间。其次,如果数据被写入到可寻址单元404,则元块410的2MB以及元块412的2MB被写入有到来数据。可寻址单元404被称为类型B可寻址单元504。在此情况下,元块410和412未满并且每个元块具有1MB的未用空间。最后,如果数据被写入到可寻址单元406,则元块412的1MB以及元块414的全部被写入有到来数据。可寻址单元406被称为类型C可寻址单元506。元块412具有2MB的未用空间,并且在此情况下元块414已满并且被关闭。
具有写入其处的到来数据的元块也可以称为更新块。如果当到来数据要被写入时没有未用的更新块可用,则需要一个或多个垃圾回收操作以创建用于存储到来数据的更新块。如以下进一步详述的,由于类型A或者类型C写入所导致的开放更新块将需要2MB的未来垃圾回收。类型B写入将得到两个开放更新块,每个将需要1MB的未来垃圾回收。在类型B写入的情况下,如果要仅创建一个更新块,则仅需要1MB的未来垃圾回收。因此,平均地,任一写入类型将导致最多2MB的垃圾回收。
但是,在一些情况下,可能需要大于2MB的垃圾回收操作以在D3存储器中创建未用更新块。第一种情况发生在所有开放更新块每个具有1MB的数据时。如果发生类型B写入,则需要两个未用的更新块来写入到来数据。因而,将需要两个每个2MB的垃圾回收,总共4MB的垃圾回收。第二种情况发生在存在一个具有2MB的数据的开放更新块并且其余的开放更新块每个具有1MB的数据时。同样,如果发生类型B写入,则需要两个未用的更新块来写入到来数据。在此情况下,将需要最小分别是1MB和2MB的两个垃圾回收,总共3MB的垃圾回收。
在速度等级操作期间,对于可寻址单元的每个写入,到来数据的写入被写入到构成可寻址单元的记录单元。在传统的存储器系统中,当更新块已满时触发垃圾回收操作。但是,如果垃圾回收操作发生在速度等级操作的测量段期间,则Pw度量(可寻址单元的顺序写入性能)可能受到负面影响,并且可能不能达到由速度等级规范指示的期望的最小传送速度。如上所述,最差情况的情形将需要每个2MB的两个垃圾回收操作,总共4MB。D3存储器中的4MB垃圾回收操作将负面影响Pw度量。
图6是例示涉及存储器块的先占式(pre-emptive)垃圾回收的优化存储器器件的性能的方法600的流程图。为了避免上述的最差情况的情形,当存在到来数据的写入时(比如每次存在到来数据的写入时)方法600进行预定量的先占式垃圾回收操作。在D3存储器中,先占式垃圾回收的量可以是例如2MB。方法600允许存储器器件在速度操作期间满足进行诸如垃圾回收操作的工作的预算。方法600可以作为忙时处理(比如在主机命令期间操作)或者闲时处理(比如在主机命令之间操作)来进行。例如,存储器系统102中的存储器控制器114可以实现方法600。对于方法600的图6中所述的每个步骤可以单独进行或者与其他步骤组合进行。
在步骤602,要被写入到逻辑可寻址单元的到来数据被存储器器件接收。可以将任意类型的数据(包括FAT和非FAT数据)写入到存储器。方法600可以不一定知道速度等级操作是否已经开始,而是可以一直操作。在步骤604,确定由于数据写入而需要的垃圾回收量。如上所述,如果在数据写入时没有未用的更新块可用,则一个或多个开放更新块经历垃圾回收操作以创建未用更新块。如果未用更新块可用,则可能在步骤604不需要任何量的垃圾回收。
在步骤606,将在步骤602确定的垃圾回收量与预定阈值相比较。对于D3存储器,例如阈值可以是2MB,或者可以是另一量。可以选择2MB阈值用于D3存储器以便在速度等级操作期间存储器的顺序写入性能Pw不受负面影响。如果在步骤606垃圾回收量小于或等于阈值,则在步骤608基于算法选择一个或多个块用于垃圾回收操作。或者,步骤606可以确定垃圾回收量是否小于或等于第一阈值并大于或等于第二阈值。如果是,则在步骤608可以基于算法选择一个或多个块用于垃圾回收操作。
在步骤608可以使用一个或多个算法来选择块。一个示例算法可以包括做最少工作(或者复制最少量)算法。做最少工作算法可以分析一个或多个更新块中的数据以确定要合并(consolidate)的具有最少数据量的更新块。做最少工作算法可以检查更新块资源中的写入指针作为填满更新块所需的空间量的指示符。另一示例算法可以包括最近最少使用(LRU)算法,用于选择最近最少使用的更新块。该LRU算法可以在为了选择一个或多个最近最少使用的更新块时追踪哪些块曾被使用。另一示例算法可以包括最近最常使用(MRU)算法,用于选择最近最常使用的更新块。该MRU算法可以在为了选择一个或多个最近最常使用的更新块时最终哪些块曾被使用。
即使在步骤604确定的量小于阈值量,也通过方法66强制该阈值量的垃圾回收(比如步骤606中的阈值)。其中确定的垃圾回收量小于阈值的情况可能发生于存储器器件处于稳定状态时,例如当存储器器件中的所有更新块都是数据写入的结果时。在步骤610,通过将数据从其他块复制到在步骤608处所选择的更新块来进行所强制的阈值量的垃圾回收操作。作为该垃圾回收操作的结果,创建了一个或多个未用更新块。最后,在步骤612,将到来数据写入到创建的未用更新块,并且方法600完成。
图7示出当存储器器件处于稳定状态时经历图6中所示的方法600的更新块的例子。顶部行的更新块702-708示出在类型C数据写入之前的开放更新块,并且底部行的更新块710-718示出在类型C数据写入之后的更新块。在顶部行,更新块702和704是先前的类型B数据写入的结果,更新块706是先前的类型C数据写入的结果,并且更新块708是先前的类型A数据写入的结果。
到来数据的类型C写入需要两个更新块来存储数据,如上所述。对于向D3存储器的类型C写入,用3MB的数据完全填充一个更新块,并且第二更新块被填充了1MB的数据并且保持开放。例如,在图7的底部行中的更新块718示出在类型C写入之后的开放更新块。如果在数据写入时没有未用的更新块可用,则更新块702被选择用于垃圾回收,因为其是最近最少使用的开放更新块。更新块702经历1MB的垃圾回收,在写入之后得到完整的更新块710。但是,因为当使用方法600时强制阈值量(2MB)的垃圾回收,所以更新块704被选择用于垃圾回收操作。更新块704经历1MB的先占式垃圾回收并且在写入之后得到完整的更新块712。更新块714和716在写入之后仍分别处于具有与更新块706和708相同的数据的相同状态。
图8示出当存储器器件处于稳定状态时经历图6所示的方法600的更新块的另一例子。类似于图7,顶部行的更新块802-806示出在类型C数据写入之前的开放更新块,并且底部行的更新块808-814示出在类型C数据写入之后的更新块。在顶部行中,更新块802是先前的类型B数据写入的结果,并且块804和806是先前的类型C数据写入的结果。
在图8所示的例子中,对于D3存储器的到来数据的类型C写入用3MB的数据完全填充一个更新块,并且用1MB的数据填充第二更新块。第二更新块、例如更新块814在数据写入之后保持开放。如果在数据写入时未用更新块可用,则在传统的存储器器件中将不需要垃圾回收操作来创建用于数据写入的更新块。但是,根据方法600,更新块802和804被选择用于先占式垃圾回收,因为它们是最近最少使用的更新块。每个更新块802和804经历1MB的垃圾回收。因而,更新块802在数据写入之后得到完整的更新块808。从更新块804垃圾回收另外的1MB,得到更新块810。更新块810保持开放,因为仍存在MB的可用空间。更新块812在写入之后仍处于具有与更新块806相同的数据的相同状态。在此例子中,更新块802和804两者都通过方法600被以先占式方式执行垃圾回收,因为不是必须需要垃圾回收量。例如,对块804仅进行部分垃圾回收。
图9示出当存储器器件处于稳定状态时经历图6所示的方法600的更新块的进一步的例子。顶部行的更新块902-906示出在类型C数据写入之前的开放更新块,并且底部行的更新块908-914示出在类型C数据写入之后的更新块。在顶部行中,更新块902和906是先前的类型C数据写入的结果,并且更新块904是先前的类型A数据写入的结果。
对于D3存储器的到来数据的类型C写入用3MB的数据完全填充一个更新块并且用1MB的数据填充第二更新块。第二更新块、例如更新块914在类型C数据写入之后保持开放。如果未用更新块可用,则在传统的存储器器件中将不需要垃圾回收来创建用于数据写入的未用更新块。但是,根据方法600,更新块902被选择用于垃圾回收,因为其是最近最少使用的更新块。更新块902经历2MB的垃圾回收,从在数据写入之后得到完整的更新块908。更新块910和912在写入之后仍分别处于具有与更新块906和906相同的数据的相同状态。在此例子中对更新块902以先占式方式执行垃圾回收,因为类型C写入不需要垃圾回收量。
回去参考图6,如果在步骤606中在步骤604确定的垃圾回收量大于阈值,则方法600继续到步骤614。在步骤614,一个或多个替换的更新块(不是一定是最近最少使用的更新块)被选择用于垃圾回收操作。此情况发生在存储器器件处于初始条件状态时,例如当存储器器件中的更新块不都是数据写入的结果时。最近最少使用的更新块如果被选择则可能需要经历多于阈值量的垃圾回收,从而导致对于速度等级操作的负面影响。通过选择替换的更新块,仍可以进行所需的垃圾回收而不会不利地影响速度等级操作的顺序写入性能。
在步骤614选择替换的更新块依赖于在步骤602的数据写入的类型。如果发生类型A或者类型C写入,则在步骤614选择具有最少量的所需垃圾回收的开放更新块用于垃圾回收操作。如果在步骤616所选的开放更新块不需要多于阈值量的垃圾回收,则通过将数据从其他块复制到所选的开放更新块在步骤610进行垃圾回收操作。然后在步骤612,将到来数据写入到创建的未用更新块。但是,如果在步骤616所选的开放更新块需要多于阈值量的垃圾回收,则在步骤618将到来数据写入到非易失性存储区域,比如被写入到二进制高速缓存(cache)或者随机存取存储器。在步骤620仍进行阈值量的垃圾回收操作。例如,数据可以被写入到缓冲随机存取存储器(BRAM)。数据可以被保持在BRAM中直到垃圾回收完成释放更新块的处理。
如果在步骤602发生类型B写入,则在步骤614处选择一个或多个替换的开放更新块用于垃圾回收操作。如果不存在未用的更新块,则在步骤614选择一个或多个开放更新块。例如,在第一2MB的写入期间可以选择第一开放更新块,并且当写入第二2MB时可以选择第二开放更新块。作为另一例子,可以同时选择多个更新块。如果在步骤616对两个所选的更新块进行垃圾回收所需的总数据量大于阈值量,则在步骤618将到来数据写入到临时存储区域。在步骤620仍进行阈值量的垃圾回收。但是,如果在步骤616对这两个所选的更新块进行垃圾回收所需的总数据量小于或等于阈值量,则在步骤610进行垃圾回收操作。在此情况下,首先对具有少于或等于阈值量的一半的所选更新块进行垃圾回收,之后是对其他所选更新块的垃圾回收操作。在步骤612将到来数据写入到创建的未用更新块。
图10示出当存储器器件处于初始条件状态时经历图6所示的方法600的更新块的例子。顶部行的更新块1002-1006示出在类型B数据写入之前的开放更新块,并且底部行的更新块1008-1014示出在类型B数据写入之后的更新块。在顶部行中,更新块1002是先前的类型C数据写入的结果。更新块1004被填充了1.5MB的数据并且更新块1006被填充了2.5MB的数据。因此,更新块1004将需要1.5MB的未来垃圾回收并且更新块1006将需要0.5MB的未来垃圾回收。
对于D3存储器的到来数据的类型B写入将用每个2MB的数据填充两个更新块,使得这两个更新块在写入之后开放,具有1MB的可用空间。例如,更新块1014和1016示出在此情况下在类型B写入之后的得到的开放更新块。因为类型B写入得到两个开放更新块,两个当前开放更新块需要被垃圾回收以便创建两个未用更新块。在此例子中,例如,如果两个最近最少使用的更新块被选择,则多余2MB的阈值量将被垃圾回收。具体地,更新块1002将经历2MB的垃圾回收并且更新块1004将经历1.5MB的垃圾回收,得到总共3.5MB的垃圾回收。
因为垃圾回收量超过了阈值,所以选择替换的更新块而不是最近最少使用的更新块用于垃圾回收。在此例子中,更新块1004和1006被选择用于垃圾回收,更新块1006首先被垃圾回收,因为其是具有小于或等于阈值的一半例如0.5M的块,并且更新块1006的垃圾回收在数据写入之后得到完整的更新块1012。更新块1004经历具有1.5MB的量的垃圾回收,在数据写入之后得到完整的更新块1010。更新块1008在数据写入之后仍与更新块1002相同。通过在此情况下选择替换的更新块而不是最近最少使用的更新块,仍以先占式方式进行阈值量的垃圾回收。
图11是例示涉及图12的状态机的优化存储器器件的性能的替换方法1100的流程图。不是诸如以上关于图6的方法600的步骤608所述的选择最近最少使用的更新块用于垃圾回收,方法1100描述用于选择开放更新块用于垃圾回收的替换算法。当存储器器件处于稳定状态时,例如当存储器器件中的所有更新块都是数据写入的结果时,可以使用方法1100。方法1100允许存储器器件在速度等级操作期间满足进行诸如垃圾回收操作的工作的预算。方法1100可以作为忙时处理或者闲时处理而进行。例如,存储器系统102中的存储器控制器114可以实现方法1100。图11中所述的方法1100的每个步骤可以单独进行或者与其他步骤组合进行。
在方法1100中,总是选择两个更新块用于垃圾回收操作。这两个更新块处于两个状态之一,状态A或状态B,如图12所示。在状态A,更新块1202未使用,并且更新块1204由于先前的类型A或者类型C数据写入而是开放更新块。更新块1202不包含数据并且不需要未来垃圾回收,而更新块1204具有1MB的数据并且将需要2MB的未来垃圾回收。状态B包括更新块1206和1208,它们由于先前的类型B数据写入而是开放更新块。每个更新块1206和1208包含2MB的数据,并且将需要1MB的未来垃圾回收。一旦两个更新块被发现处于状态A或者状态B,存储器器件就可以利用方法1100。当存储器器件处于初始条件状态时,可以利用在方法600的步骤614-618中所述的替换的更新块选择,以便达到使用方法1100所需的稳定状态。
在状态A和状态B之间以及在状态A和状态B内的转变需要D3存储器中的2MB的垃圾回收。因为为了状态之间以及状态内转变而总是进行2MB的垃圾回收,所以满足垃圾回收预算并且不负面影响速度等级操作。在方法1100的步骤1102,存储器器件接收要写入到逻辑可寻址单元的到来数据。可以将任意类型的数据(包括FAT和非FAT数据)写入到存储器。方法1100不知道速度等级操作是否已经开始,而是可以一直操作。
在步骤1104,确定两个所选的更新块处于状态A还是状态B,如图12中所述。如果更新块处于状态A,则方法1100继续到步骤1106,在那里确定在步骤1102发生哪种类型的数据写入。如果数据写入是类型A或者类型C数据写入,则在步骤1110更新块1202和1204被垃圾回收以便更新块仍处于状态A。具体地,更新块1202和1204仍处于状态A是因为类型A或者类型C数据写入得到包含1MB的数据和2MB的可用空间的开放更新块。但是,如果在步骤1106数据写入的类型是类型B写入,则在步骤1112更新块1202和1204经历垃圾回收以便更新块转变到状态B并且更新块变为更新块1206和1208。在此情况下,更新块1202和1204转变到状态B因为类型B数据写入得到每个包含2MB的数据和1MB的可用空间的两个开放更新块。在步骤1110和1112,也将要写入的到来数据存储在一个或多个更新块中。
另一方面,在步骤1104,如果确定两个所选的更新块处于状态B,则方法1100继续到步骤1108。在步骤1108,确定在步骤1102发生哪种类型的数据写入。如果数据写入是类型A或者类型C数据写入,则在步骤1114更新块1206和1208被垃圾回收以便更新块转变到状态A,并且变为更新块1202和1204。具体地,更新块1206和1208转变到状态A是因为类型A或者类型C数据写入得到包含1MB数据和2MB可用空间的开放更新块。但是,如果在步骤1108的数据写入的类型是类型B写入,则在步骤1116更新块1206和1208被垃圾回收以便更新块仍处于状态B。在此情况下,更新块1206和1208仍处于状态B因为类型B数据写入得到每个包含2MB数据和1MB可用空间的两个开放更新块。如之前那样,在步骤1114和1116中,要写入的到来数据被存储在一个或多个更新块中。
图13是例示涉及将与垃圾回收有关的数据的至少一部分复制到易失性存储器的优化存储器器件的性能的方法1300的流程图。在一个实施例中,可以将用于更新块的控制信息的一些或全部复制到随机存取存储器或者其他类型的易失性存储器。在另一实施例中,可以将经历垃圾回收的碎片的数据的一些或全部复制到随机存取存储器或者其他类型的易失性存储器。此后,可以将复制的碎片数据复制到非易失性存储器中。在另一实施例中,可以将控制信息的一些或全部以及经历垃圾回收的碎片的数据的一些或全部复制到随机存取存储器或者其他类型的易失性存储器。
使用诸如随机存取存储器的易失性存储器来临时存储诸如控制信息的信息的一部分可以在速度等级操作期间改进存储器器件的性能。方法1300可以作为忙时处理或者闲时处理来进行。例如存储器控制器114可以实现方法1300。图13中所述的方法1300的每个步骤可以单独进行或者组合进行。
在步骤1302,存储器器件接收要写入到逻辑可寻址单元的到来数据。在步骤1304,将已经接收的到来数据的数量与阈值相比较。数据的数量的检测可以限制于当依记录单元的长度接收数据的开始时。当依记录单元的长度接收要写入到逻辑可寻址单元的数据时,可能已经开始了速度等级操作。如果可寻址单元具有4MB的长度,则记录单元具有例如16kB的长度。如果在步骤1304检测到的数据的数量在阈值以下,则方法1300返回到步骤1302以接收更多到来数据。
但是,如果在步骤1304处数据的数量处于阈值或者在阈值以上,则方法1300继续到步骤1306。阈值可以是逻辑可寻址单元的80%,或者可以是另一数量或者百分比。在步骤1306,将到来数据写入到存储器器件的物理块。在步骤1308,进行存储器器件中的任何开放更新块的垃圾回收。如需要,可以在步骤1308进行任意量的垃圾回收而不会负面影响速度等级操作。对速度等级操作没有负面影响,这是因为不使用速度等级操作的第一可寻址单元写入来测量顺序写入性能Pw。
在一个实施例中,在步骤1308进行的垃圾回收操作之后,标识要写入的下一数据的写入类型,如步骤1310所示。可以通过检查正被写入的可寻址单元的逻辑开始地址来确定写入类型,如之前所述的写入类型A、B或C。
在一个实施例中,可以将与垃圾回收有关的数据的一些或部分自动写入到易失性存储器。在替换实施例中,可以依赖于垃圾回收的一个或多个特性将与垃圾回收有关的数据的一些或部分写入到易失性存储器。例如,对是否写入与垃圾回收有关的数据的一部分的确定可以依赖于写入类型。具体地,可以依赖于标识的写入类型,将关于更新块的控制信息存储在随机存取存储器中或者闪存中。作为另一例子,对是否写入与垃圾回收有关的数据的一部分的确定可以依赖于该写入是否填充(fill)更新块。具体地,确定是否将信息的一部分写入到易失性存储器。例如,该确定可以基于分析下一到来数据。具体地,在步骤1312,确定所标识的写入类型的下一到来数据是否将填充更新块并且创建完整块。如果该写入类型的下一到来数据将完全填充更新块,则在步骤1316,将信息的一部分存储在易失性存储器中,比如将控制信息存储在随机存取存储器(RAM)中。该控制信息可以包括逻辑可寻址单元到物理元块的映射信息或者其他信息。控制信息的例子包括但不限于逻辑组、元块号、写入指针和页标签。
通过将控制信息存储在RAM中而不是闪存中,存储器器件中的可用的更新块的最大数量可以扩大,导致由于资源缺乏引起的强制的垃圾回收操作的减少。但是,如果在步骤1312处该写入类型的下一到来数据将不完全填充更新块,则在步骤1314,将该逻辑可寻址单元的控制信息存储在闪存中。
如果将控制信息存储在RAM中,则可以在闪存中设置与逻辑可寻址单元对应的电力循环标志或者其他指示符。通过使用电力循环标志,如果在具有存储在RAM中的控制信息的更新块关闭之前发生至存储器器件的掉电,则在存储器器件的重新初始化时可以发生控制信息的恢复。在重新初始化开始之后,如果设置了电力循环标志,则可以重构控制信息(即使先前存储在RAM中的控制信息丢失)。重构控制信息的一种方式是通过使用空闲(free)更新块列表,这是空闲的更新块的列表。具体地,空闲更新块列表可以用于确定空闲的更新块,并且可以分析与那些空闲更新块相关联的数据的至少一部分。例如,可以分析头部信息(比如第一页中的头部信息),以便可以确定更新块中包含的数据。一旦确定更新块中包含的数据,就可以构建控制信息。在存储器器件的重新初始化之后,可随后在另一更新块的垃圾回收之后将此更新块的重构的控制信息存储在闪存中。或者,可以将此更新块的重构的控制信息再次存储在易失性存储器(比如RAM)中。
图14例示选择进行垃圾回收(比如先占式垃圾回收)的操作模式的流程图。具体的存储器器件可以在不同的操作模式中不同地进行垃圾回收。一个操作模式可以比另一操作模式更有效地进行垃圾回收。例如,32纳米闪存可以操作在第一操作模式(比如在忙碌时段中的垃圾回收)以及操作在第二操作模式(比如在逻辑可寻址单元的写入期间的垃圾回收)。可以在第一操作模式中进行的32纳米闪存的垃圾回收量可以不同于可以第二操作模式进行的垃圾回收量。作为另一例子,70纳米闪存可以在第一操作模式(比如在忙碌时段中的垃圾回收)中与第二操作模式(比如在逻辑可寻址单元的写入期间的垃圾回收)中不同地进行垃圾回收。
以前,当由于存储器约束而需要进行垃圾回收时,进行了垃圾回收。相对照,当闪存进行垃圾回收更高效时,可以以所选的操作模式进行垃圾回收,比如图14中所示。如上所述,可以以先占式方式进行垃圾回收(比如关于图6所述)。在以先占式方式进行垃圾回收时,闪存可以确定对于进行垃圾回收更佳(或最佳)的操作模式。例如,闪存可以确定垃圾回收如果在忙碌时段期间进行则更有效。如果这样,闪存可以在忙碌时段期间进行先占式垃圾回收。作为另一例子,闪存可以确定垃圾回收如果在逻辑可寻址单元的写入期间进行则更有效。如果这样,闪存可以在逻辑可寻址单元的写入期间进行先占式垃圾回收。
图14是例示示出了选择用于进行垃圾回收的模式的具体例子、即通过监视垃圾回收量优化存储器器件的性能的方法1400的流程图。存储器可以基于一个或多个指示符、比如基于不同操作时段中垃圾回收的最大量的指示符来确定用以进行垃圾回收的模式。具体地,方法1400监视存储器器件的单个忙碌时段中的垃圾回收的最大量以及在逻辑可寻址单元的写入期间复制的垃圾回收的最大量。通过使用方法1400,可以以先占式方式进行忙碌时段中的垃圾回收的最大量,即使不需要这样。方法1400可以作为忙时处理或者闲时处理而进行。例如,存储器控制器114可以实现方法1400。图14中所述的方法1400的每个步骤可以单独进行或者组合进行。
在步骤1402,存储器器件接收要写入到逻辑可寻址单元的到来数据。在接收到来数据之后在步骤1404访问两个参数。第一参数是在存储器器件的单个忙碌时段中可以进行的垃圾回收的最大量。忙碌时段可以包括从存储器器件读取数据以及向存储器器件写入数据的期间。第二参数是在逻辑可寻址单元的写入期间可以进行的垃圾回收的最大量。可能这两个参数可以相等,但更可能第二参数将高于第一参数。可以将这两个参数存储在RAM中。如图14所示,将这两个参数彼此相比较以确定哪个模式存储器器件在垃圾回收时更有效。在替换实施例中,存储器器件可以包括不同的指示符以指示哪个模式对于垃圾回收更有效。例如,存储器器件可以包括指示哪个模式在垃圾回收时更有效的垃圾回收模式标志(garbage_collection_mode_flag)。以此方式,存储器器件不需要确定哪个模式更有效(比如通过访问最大量),并且可以简单地访问该标志来确定更有效的模式。
在步骤1406,如果第二参数高于第一参数,则方法1400继续到步骤1408。在步骤1408,开始更新块的垃圾回收达第二参数的量。通过步骤1408和1410进行垃圾回收操作直到垃圾回收量达到第二参数的量。如果在步骤1406第二参数不高于第一参数,则在步骤1412开始更新块的垃圾回收达第一参数的量。在此情况下,通过步骤1412和1414进行垃圾回收操作直到垃圾回收量达到第一参数的量。当使用方法1400时,使在向单个逻辑可寻址单元的写入器件的垃圾回收操作期间复制的数据量最大化。具体地,即使将逻辑可寻址单元完全写入到更新块,然后垃圾回收仍对该更新块继续,直到达到根据第一或第二参数的最大量。
意图以上详细描述被当作是例示而不是限制,并且应理解意图以下权利要求、包括所有等效物来定义本发明的精神和范围。
Claims (19)
1.一种存储器器件中的垃圾回收的方法,该方法包括:
利用存储器器件中的控制器:
接收要写入到逻辑可寻址单元的到来数据;
确定对于由于到来数据的写入而需要的垃圾回收操作要进行的垃圾回收量;
如果确定的垃圾回收量小于预定阈值,则开始垃圾回收操作以实现该预定阈值;以及
向与该逻辑可寻址单元对应的至少一个物理元块写入到来数据。
2.如权利要求1的方法,其中开始垃圾回收操作包括:
选择最近最少使用的更新块用于垃圾回收操作;以及
将等于该预定阈值的数量的数据从完整块复制到该最近最少使用的更新块,其中该预定阈值包括该确定的垃圾回收量。
3.如权利要求1的方法,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是3兆字节;以及
所述预定阈值包括两兆字节。
4.如权利要求1的方法,其中开始垃圾回收操作包括:
选择第一最近最少使用的更新块用于垃圾回收操作;
将第一数量的数据从该第一最近最少使用的更新块复制到开放更新块,其中数据的该第一数量小于所述预定阈值;
选择第二最近最少使用的更新块用于垃圾回收操作;以及
将第二数量的数据从另一完整块复制到该第二最近最少使用的更新块,其中数据的该第二数量等于从所述预定阈值减去数据的该第一数量;
其中该预定阈值包括该确定的垃圾回收量。
5.如权利要求4的方法,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是三兆字节;
数据的该第一数量包括一兆字节;以及
所述预定阈值包括两兆字节。
6.如权利要求1的方法,还包括:
利用存储器器件中的控制器:
选择最近最少使用的更新块用于垃圾回收操作;
如果对于该最近最少使用的更新块的所确定的垃圾回收量大于所述预定阈值,则:
选择替换的更新块而不是所选的最近最少使用的更新块用于垃圾回收操作;
(A)如果对于替换的更新块的所确定的垃圾回收量大于所述预定阈值,则:
(1)将到来数据写入到临时存储空间;以及
(2)将第一数量的数据从完整块复制到该替换的更新块,其中数据的该第一数量等于所述预定阈值;以及
(B)如果对于所述替换的更新块的所确定的垃圾回收量小于所述预定阈值,则将第二数量的数据从所述替换的更新块复制到开放更新块,其中数据的该第二数量小于所述预定阈值。
7.如权利要求6的方法,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是三兆字节;以及
所述预定阈值包括两兆字节。
8.如权利要求6的方法,其中所述临时存储空间包括二进制高速缓存。
9.如权利要求6的方法,还包括:
利用所述存储器器件中的控制器:
将到来数据从所述临时存储空间复制到开放更新块。
10.如权利要求1的方法,其中该预定阈值是第一阈值;
还包括确定垃圾回收量是否大于第二阈值;以及
其中如果垃圾回收量小于第一阈值并大于第二阈值,则开始垃圾回收操作。
11.一种存储器器件,包括:
存储器;以及
与所述存储器通信的控制器,该控制器配置为:
接收要写入到逻辑可寻址单元的到来数据;
确定对于由于到来数据的写入而需要的垃圾回收操作要进行的垃圾回收量;
如果确定的垃圾回收量小于预定阈值,则开始垃圾回收操作以实现该预定阈值;以及
向与该逻辑可寻址单元对应的至少一个物理元块写入到来数据。
12.如权利要求11的存储器器件,其中所述控制器配置为通过以下步骤来开始垃圾回收操作:
选择最近最少使用的更新块用于垃圾回收操作;以及
将等于该预定阈值的数量的数据从完整块复制到该最近最少使用的更新块,其中该预定阈值包括该确定的垃圾回收量。
13.如权利要求11的存储器器件,其中所述控制器配置为通过以下步骤来开始垃圾回收操作:
选择第一最近最少使用的更新块用于垃圾回收操作;
将第一数量的数据从该第一最近最少使用的更新块复制到开放更新块,其中数据的该第一数量小于所述预定阈值;
选择第二最近最少使用的更新块用于垃圾回收操作;以及
将第二数量的数据从另一完整块复制到该第二最近最少使用的更新块,其中数据的该第二数量等于从所述预定阈值减去数据的该第一数量;
其中该预定阈值包括该确定的垃圾回收量。
14.如权利要求11的存储器器件,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是三兆字节;以及
所述预定阈值包括两兆字节。
15.如权利要求13的存储器器件,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是三兆字节;
数据的该第一数量包括一兆字节;以及
所述预定阈值包括两兆字节。
16.如权利要求11的存储器器件,其中控制器还配置为:
选择最近最少使用的更新块用于垃圾回收操作;
如果对于该最近最少使用的更新块的所确定的垃圾回收量大于所述预定阈值,则:
选择替换的更新块而不是所选的最近最少使用的更新块用于垃圾回收操作;
(A)如果对于替换的更新块的所确定的垃圾回收量大于所述预定阈值,则:
(1)将到来数据写入到临时存储空间;以及
(2)将第一数量的数据从完整块复制到该替换的更新块,其中数据的该第一数量等于所述预定阈值;以及
(B)如果对于所述替换的更新块的所确定的垃圾回收量小于所述预定阈值,则将第二数量的数据从所述替换的更新块复制到开放更新块,其中数据的该第二数量小于所述预定阈值。
17.如权利要求16的存储器器件,其中:
所述逻辑可寻址单元的大小是四兆字节;
所述物理元块的大小是三兆字节;以及
所述预定阈值包括两兆字节。
18.如权利要求17的存储器器件,其中所述临时存储空间包括二进制高速缓存。
19.如权利要求16的存储器器件,其中所述控制器还配置为:
将到来数据从所述临时存储空间复制到开放更新块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/828,241 | 2010-06-30 | ||
US12/828,241 US8626986B2 (en) | 2010-06-30 | 2010-06-30 | Pre-emptive garbage collection of memory blocks |
PCT/US2011/041647 WO2012012085A2 (en) | 2010-06-30 | 2011-06-23 | Pre-emptive garbage collection of memory blocks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103080911A CN103080911A (zh) | 2013-05-01 |
CN103080911B true CN103080911B (zh) | 2016-11-23 |
Family
ID=44628234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180041989.5A Active CN103080911B (zh) | 2010-06-30 | 2011-06-23 | 存储器块的先占式垃圾回收 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8626986B2 (zh) |
EP (1) | EP2588962B1 (zh) |
KR (1) | KR20130142103A (zh) |
CN (1) | CN103080911B (zh) |
TW (1) | TWI536163B (zh) |
WO (1) | WO2012012085A2 (zh) |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US20110119462A1 (en) * | 2009-11-19 | 2011-05-19 | Ocz Technology Group, Inc. | Method for restoring and maintaining solid-state drive performance |
US8677203B1 (en) | 2010-01-11 | 2014-03-18 | Apple Inc. | Redundant data storage schemes for multi-die memory systems |
US10049040B2 (en) * | 2011-01-21 | 2018-08-14 | Seagate Technology Llc | Just in time garbage collection |
US8874872B2 (en) | 2011-01-21 | 2014-10-28 | Seagate Technology Llc | Garbage collection management in memories |
JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
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 |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer 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 |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
TWI524183B (zh) * | 2014-01-09 | 2016-03-01 | 群聯電子股份有限公司 | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 |
CN104793891B (zh) * | 2014-01-17 | 2018-01-12 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US9996303B2 (en) * | 2014-05-08 | 2018-06-12 | Kabushiki Kaisha Toshiba | Hybrid-HDD that gives up old NAND data at the last moment |
KR102317599B1 (ko) | 2014-05-26 | 2021-10-26 | 삼성전자 주식회사 | 전자 장치 및 전자 장치의 단편화 분석 방법 |
KR20160024550A (ko) * | 2014-08-26 | 2016-03-07 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10127157B2 (en) * | 2014-10-06 | 2018-11-13 | SK Hynix Inc. | Sizing a cache while taking into account a total bytes written requirement |
US9798657B2 (en) | 2014-10-15 | 2017-10-24 | Samsung Electronics Co., Ltd. | Data storage device including nonvolatile memory device and operating method thereof |
KR102211868B1 (ko) | 2014-12-15 | 2021-02-04 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN106445397B (zh) * | 2015-07-28 | 2019-07-09 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元及存储器存储装置 |
US10705745B2 (en) | 2015-09-30 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Using a memory controller to mange access to a memory based on a memory initialization state indicator |
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 |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
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 |
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 |
CN107025063B (zh) * | 2016-01-29 | 2020-04-14 | 深圳大心电子科技有限公司 | 内存管理方法、内存储存装置及内存控制电路单元 |
US10467394B2 (en) * | 2016-07-11 | 2019-11-05 | International Business Machines Corporation | Pointing device biometrics for continuous user authentication |
KR102475798B1 (ko) | 2016-07-14 | 2022-12-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11188456B2 (en) * | 2017-03-21 | 2021-11-30 | Western Digital Technologies Inc. | Storage system and method for predictive block allocation for efficient garbage collection |
US11269764B2 (en) | 2017-03-21 | 2022-03-08 | Western Digital Technologies, Inc. | Storage system and method for adaptive scheduling of background operations |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US10353628B2 (en) | 2017-04-13 | 2019-07-16 | Samsung Electronics Co., Ltd. | Opportunity window hints for background operations in SSD |
KR20180135188A (ko) | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20190078134A (ko) | 2017-12-26 | 2019-07-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20190102790A (ko) * | 2018-02-27 | 2019-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템 |
US11593262B1 (en) * | 2018-04-25 | 2023-02-28 | Seagate Technology Llc | Garbage collection command scheduling |
CN108874682A (zh) * | 2018-04-27 | 2018-11-23 | 江苏华存电子科技有限公司 | 一种提升闪存垃圾数据回收方法 |
TW202001565A (zh) * | 2018-06-21 | 2020-01-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置 |
US11030094B2 (en) | 2018-07-31 | 2021-06-08 | SK Hynix Inc. | Apparatus and method for performing garbage collection by predicting required time |
KR20200033459A (ko) | 2018-09-20 | 2020-03-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR102620731B1 (ko) | 2018-09-27 | 2024-01-05 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200064567A (ko) | 2018-11-29 | 2020-06-08 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그것의 동작방법 |
KR20200073017A (ko) | 2018-12-13 | 2020-06-23 | 에스케이하이닉스 주식회사 | 데이터 저장 장치와, 그것의 동작 방법 |
US11693596B2 (en) | 2020-08-13 | 2023-07-04 | Seagate Technology Llc | Pre-emptive storage strategies to reduce host command collisions |
US11467942B2 (en) | 2020-12-16 | 2022-10-11 | Western Digital Technologies, Inc. | Predictive performance indicator for storage devices |
US11507502B2 (en) | 2021-02-23 | 2022-11-22 | Western Digital Technologies, Inc. | Data storage device performance prediction based on valid fragment count |
US20210216239A1 (en) * | 2021-03-27 | 2021-07-15 | Intel Corporation | Host controlled garbage collection in a solid state drive |
US11556275B2 (en) * | 2021-05-18 | 2023-01-17 | Micron Technology, Inc. | Techniques for page line filler data |
US11894060B2 (en) | 2022-03-25 | 2024-02-06 | Western Digital Technologies, Inc. | Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability |
CN116841453A (zh) * | 2022-03-25 | 2023-10-03 | 中移(苏州)软件技术有限公司 | 一种数据回收方法、系统、装置及计算机可读存储介质 |
CN115756331B (zh) * | 2022-11-23 | 2023-08-04 | 东土科技(宜昌)有限公司 | 充电数据的高效存储方法、装置、存储介质以及电子设备 |
CN116610597B (zh) * | 2023-07-20 | 2023-10-17 | 合肥康芯威存储技术有限公司 | 一种存储器件及其垃圾回收的控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924831A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 非易失性存储器系统及操作非易失性存储器系统的方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3967121B2 (ja) | 2001-12-11 | 2007-08-29 | 株式会社ルネサステクノロジ | ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム |
US20080082736A1 (en) | 2004-03-11 | 2008-04-03 | Chow David Q | Managing bad blocks in various flash memory cells for electronic data flash card |
US7386655B2 (en) | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US20060161724A1 (en) * | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20060184719A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
US7594067B2 (en) | 2005-10-20 | 2009-09-22 | Stec, Inc. | Enhanced data access in a storage device |
US7451265B2 (en) | 2006-08-04 | 2008-11-11 | Sandisk Corporation | Non-volatile memory storage systems for phased garbage collection |
US7515500B2 (en) | 2006-12-20 | 2009-04-07 | Nokia Corporation | Memory device performance enhancement through pre-erase mechanism |
US7774389B2 (en) * | 2007-01-17 | 2010-08-10 | Microsoft Corporation | Optimized garbage collection techniques |
US8370562B2 (en) | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
US7743203B2 (en) | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
US20090006720A1 (en) | 2007-06-27 | 2009-01-01 | Shai Traister | Scheduling phased garbage collection and house keeping operations in a flash memory system |
US8706983B2 (en) * | 2010-06-30 | 2014-04-22 | Sandisk Technologies Inc. | Garbage collection of memory blocks using volatile memory |
-
2010
- 2010-06-30 US US12/828,241 patent/US8626986B2/en active Active
-
2011
- 2011-06-23 KR KR1020137002426A patent/KR20130142103A/ko not_active Application Discontinuation
- 2011-06-23 WO PCT/US2011/041647 patent/WO2012012085A2/en active Application Filing
- 2011-06-23 EP EP11730808.0A patent/EP2588962B1/en active Active
- 2011-06-23 CN CN201180041989.5A patent/CN103080911B/zh active Active
- 2011-06-30 TW TW100123168A patent/TWI536163B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924831A (zh) * | 2001-01-19 | 2007-03-07 | 三因迪斯克公司 | 非易失性存储器系统及操作非易失性存储器系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103080911A (zh) | 2013-05-01 |
WO2012012085A3 (en) | 2012-03-15 |
US20120005405A1 (en) | 2012-01-05 |
TWI536163B (zh) | 2016-06-01 |
EP2588962A2 (en) | 2013-05-08 |
WO2012012085A2 (en) | 2012-01-26 |
US8626986B2 (en) | 2014-01-07 |
EP2588962B1 (en) | 2020-03-18 |
KR20130142103A (ko) | 2013-12-27 |
TW201216059A (en) | 2012-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080911B (zh) | 存储器块的先占式垃圾回收 | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
CN107608908B (zh) | 用于数据储存装置的磨损平均方法 | |
US7984084B2 (en) | Non-volatile memory with scheduled reclaim operations | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
EP2519880B1 (en) | Micro-update architecture for address tables | |
TWI437441B (zh) | 多庫記憶體裝置之儲存位址重映射之方法及系統 | |
US8452940B2 (en) | Optimized memory management for random and sequential data writing | |
US20140089564A1 (en) | Method of data collection in a non-volatile memory | |
CN110058796A (zh) | 数据储存装置 | |
TWI514137B (zh) | 使用揮發性記憶體的記憶體區塊之廢棄項目收集 | |
US9582416B2 (en) | Data erasing method, memory control circuit unit and memory storage apparatus | |
JP4977703B2 (ja) | 予定再生操作を伴う不揮発性メモリ | |
US11194737B2 (en) | Storage device, controller and method for operating the controller for pattern determination | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
CN110531927B (zh) | 一种基于块分级的垃圾回收方法及非易失性的存储设备 | |
US20240069775A1 (en) | Compaction of a Logical-to-Physical Table for Zoned Namespace Nonvolatile Memory | |
US11921641B1 (en) | Address translation for zoned namespace nonvolatile memory using a compacted logical-to-physical table | |
CN104951241B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
Dayan et al. | Garbage collection techniques for flash-resident page-mapping FTLs | |
KR101791855B1 (ko) | 스토리지 장치 및 이의 공간 재수거 방법 | |
KR100844406B1 (ko) | Nor 플래시 메모리와 nand 플래시 메모리를 이용한하이브리드 파일 시스템 및 데이터 연산 방법 | |
CN112148645A (zh) | 去分配命令处理方法及其存储设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: texas Applicant after: DELPHI INT OPERATIONS LUX SRL Address before: texas Applicant before: Sandisk Corp. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |