减少基于闪存的存储系统中的存取争用的制作方法

文档序号:6351468阅读:109来源:国知局
专利名称:减少基于闪存的存储系统中的存取争用的制作方法
技术领域
本发明涉及基于闪存的存储系统,具体而言,涉及用于减少基于闪存的存储系统中的或与基于闪存的存储系统具有类似属性的其它存储系统中的存取争用的方法和系统 。
背景技术
闪存是能够被电擦除和重新编程的非易失性计算机存储器。诸如固态驱动器 (SSD)之类的基于闪存的存储设备具有以下硬件特征其中,通常以页面大小的字节片来执行读和写,该字节片通常大小为2到4KB。擦除通常以完整的块执行,其中,一个块通常包括64到128个页面。闪存包括NOR类型和NAND类型。一般而言,存在两种不同类型的 NAND闪存芯片基于单电平单元(SLC)的类型存储一个比特,以及基于多电平单元的类型保持多个电压电平以便存储多于一个的比特。基于SLC的闪存芯片中的4KB页面分别具有典型的25和600 μ s的读取和写入时间。擦除一个完整的块要花费显著较长的时间量,并且在企业级闪存芯片中要花费7ms。这些读取/写入/擦除特征不管工作负荷如何都是有效的。相比之下,在基于硬盘驱动器(HDD)的存储系统中,寻道时间限制了随机存取性能。 然而,在基于闪存的存储设备中,在单元能够被编程(例如,写入)之前必须首先擦除它们。 因此,用来隐藏块擦除等待时间的常见技术是始终错位地写入数据,并推迟对块的擦除,直到启动无用存储单元收集。当发出擦除命令时,芯片忙碌直到操作完成,并且没有办法在此时间期间对此芯片读取或写入,这被称为“阻止擦除”。错位写入策略要求被叫做闪存转换层(FTL, Flash Translation Layer)的一个特殊层,该层保持闪存中的逻辑块地址(LBA, logical block address)和实际物理页面 / 块地址(PBA, physical page/block address) 之间的映射。对基于闪存的存储设备的存取时间仍能够受到延迟变化。图I示出了模拟的现有技术系统的概率密度函数相对于等待时间的图100。图2示出了模拟的现有技术系统的累积分布函数相对于等待时间的图200。图I和2示出了高负荷情况下的闪存模拟器。在示例中,当一个块正被擦除时,对同一个芯片的后续读取请求可能必须等待7ms才能被服务。 类似地,读取请求可被正在进行的写入请求延迟高达600 μ S。这样显著的延迟在某些环境下是不可接受的。另外,某些国家(例如,日本)对于特定IT应用甚至强制最大延迟范围 r5-10ms)。因此,潜在的总延迟可能会超出所要求的延迟范围。此外,传统的DRAM存储技术没有与闪存相同的限制,因此,提供显著的、更加均匀的存取延迟。闪存高速缓存解决方案试图用闪存来替换昂贵的有后备电池的DRAM存储器(被叫做NVRAM)。因此,这样的闪存高速缓存的特征类似于那些存储技术的特征。因此,利用基于闪存的存储技术来提供这样的特征是有益的,但不普通。

发明内容
示例性实施例包括一种用于减少基于闪存的存储系统中的或与基于闪存的存储系统具有类似属性的存储系统中的存取争用的方法,该方法包括从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面;将所述芯片带设置为写入状态;设置所述多个通道的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入;以及响应于所述页面写入,递增所述写队列头。另外的示例性实施例包括一种用于減少基于闪存的存储系统中的存取争用的计算机程序产品,该计算机程序产品包括用于使计算机实现ー种方法的指令,该方法包括:从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个块,以及块包括多个页面;将芯片带设置为写入状态;设置多个通道的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入;以及响应于所述页面写入,递增所述写队列头。进ー步的示例性实施例包括ー种存储设备,包括具有写入分配调度器的多个通 道、可通信地耦接到多个通道的每个通道的至少ー个芯片带,所述至少ー个芯片带具有空闲状态、写入状态、在线状态和擦除状态,其中,所述至少ー个芯片带被配置成被从所述空闲状态设置为所述写入状态以分配写入请求,并进一歩被配置成被从所述写入状态设置为所述在线状态以服务读取请求。另外的功能和优点通过本发明的技术来实现。此处将详细描述本发明的其它实施例和方面,它们被视为所要求保护的发明的一部分。为了更好地理解具有这些优点和功能的本发明,请參阅说明和附图。


在本说明书结尾时在权利要求书中特别指出了并明确声明了被视为本发明的主题。通过下面的结合附图对本发明进行的详细说明,可以更好地理解本发明的前述和其它 特征和优点,其中图I示出了模拟的现有技术系统的概率密度函数相对于等待时间的图;图2示出了模拟的现有技术系统的累积分布函数相对于等待时间的图;图3示出了其中能够实现示例性存取争用減少方法的示例性闪存体系结构;图4示出了显示这里所述的示例性四种状态和相应的转变的示例性状态图;图5示出了根据示例性实施例的用于减少基于闪存的存储系统中的存取争用的方法的流程图;图6示出了示例性无用存储单元收集方法的流程图;以及图7示出了显示图6的进ー步细节的示例性无用存储单元收集方法的流程图。
具体实施例方式在各示例性实施例中,这里所描述的系统和方法減少/消除由基于闪存的存储系统的擦除和写入延迟引起的存取争用。这里所描述的示例性实施例作为说明性示例讨论了基于闪存的存储系统。应当理解,在其它示例性实施例中,这里所描述的方法可被应用于在存取时间和阻止写入或擦除操作方面与基于闪存的存储系统具有类似属性的任何存储系统。在各示例性实施例中,基于闪存的存储设备体系结构能够提供针对读取和写入请求的严格延迟范围。另外,该体系结构提供有效的无用存储单元收集和磨损平衡,特别是对于闪存高速缓存解决方案。在各示例性实施例中,此处所描述的系统和方法通过分离读取、写入以及擦除操作,来完全隐藏来自对同一芯片的在先操作的附加延迟。为了使得对芯片的读取和写入免于由对同一个芯片的在先擦除操作引起的附加延迟,读取和写入操作只对没有发生擦除而仍提供对存储的所有信息的存取的芯片执行(即,设备的完全LBA空间)。类似地,能够实现此处所描述的方法,以保护读取操作免受对同一个芯片的在先请求的擦除和写入延迟的不利影响。在各示例性实施例中,使读取操作免受不利影响,实现了其中闪存芯片被附接到通道总线并被分组到通道之中的芯片带的体系结构。此体系结构与利用写入页面分配器和无用存储单元收集算法的基于每通道空闲块队列的写入策略组合。诸如闪存高速缓存或SSD之类的基于闪存的存储设备包括闪存芯片被附接到的若干通道。每个通道具有管理对芯片的所有请求的低复杂度通道控制器。通道被专用通道控制器控制,所述通道控制器对芯片执行读取、写入以及擦除操作,并可能执行诸如添加或验证纠错信息的其它操作。通道控制器由主控制器控制,该主控制器执行诸如LBA到PBA 映射、无用存储单元收集、空闲块和坏块管理之类的主要任务。图3示出了其中可以实现示例性存取争用减少方法的示例性闪存体系结构300。如此处所描述的,该体系结构300包括用于多个较低复杂度通道控制器310、315、320、325的主控制器305。在各示例性实施例中, 主控制器305为每个通道保持一个空闲块队列和写队列头。所述空闲块队列保留能够被用于写入的所有块。所述写队列头指向当前正被写入数据的块中的第一空闲页面。如此处进一步所描述的,预先已从通道的空闲块队列中获取所述空闲块。在各示例性实施例中,每个通道控制器310、315、320、325都包括芯片的相应通道。如图所示,作为示例,控制器310控制通道1,控制器315控制通道2,控制器320控制通道C-I,而控制器325控制通道C。另夕卜,每个通道控制器310、315、320、325都通过通道总线311、316、321、326可通信地耦接到其相应通道。每个通道还包括芯片,这些芯片被概括地示为“芯片”。在各示例性实施例中, 写入模式带(例如,芯片带η)可包括写入头芯片。另外,GC带(例如,芯片带η+2)可包括无用存储单元收 集器头芯片。除通道结构之外,芯片被虚拟地分组到所谓的芯片带中,被示为芯片带I、芯片带 2、芯片带η、芯片带η+1、芯片带η+2、芯片带Ν-1、芯片带N。如此,每个通道中的第一芯片都属于第一芯片带,依此类推。在各示例性实施例中,芯片带处于四种状态之一在线、无用存储单元收集(GC, garbage collection)、空闲或写入状态。图4示出了示例性状态图400, 示出了如此处所描述的示例性四种状态以及相应的转变。在图3所示出的示例中,芯片带 I、芯片带2、芯片带N-I以及芯片带N是为读取请求实现的“在线”,芯片带η是写入模式带, 芯片带η+1是空闲,而芯片带η+2处于GC状态。这些状态是说明性的,并且在其它示例性实施例中,可以预期其它状态。在各示例性实施例中,当芯片带处于在线状态时,能够从所有其芯片中读取数据。 空闲状态的芯片带保留具有所有新被擦除并准备好被写入的块的芯片。处于写入状态的芯片带包括当前正在对其写入数据的芯片。在优选实施例中,在任何时间,只有一个芯片带处于写入状态。然而,在某些情况下,如此处进一步描述的,让多于一个的芯片带处于写入状态是有意义的。
在各示例性实施例中,处于无用存储单元收集状态(GC状态)的芯片带包括当前正在被清理以便准备它们用于写入的芯片。优选地,没有多于ー个的芯片带处于GC状态。因而,在任何时间,GC能够在每个通道中的单个芯片中发生。另外,可以有多于ー个的芯片带处于GC状态,如果加速GC,这是期望的。处于GC状态的芯片带的数量也可以是动态的(即,自适应于工作负荷)。大量的存储空间被预留在GC状态,因此,在GC期间无法被用来存储实际数据。在各示例性实施例中,GC状态可以具有子状态,诸如“清理”和“擦除”状态。清理状态表示仍然有效的页面被移动到写入带中的新位置的状态,以及擦除状态表示在所有有效页面都被移动到新位置之后块正在被实际擦除的状态。在清理状态下,用户读取请求仍能够从芯片带服务。一旦芯片带改变为擦除状态,该芯片带上的所有数据都已被移出,以及必须从新位置供应。期望防止从处于擦除状态的带服务用户读取请求。因而,可从新位置服务读取请求。在各示例性实施例中,可在单个芯片上中断擦除,但在整个带上继续。图5示出了根据示例性实施例的用于减少基于闪存的存储系统中的存取争用的方法500的流程图。在各示例性实施例中,当方法500开始时,所有块都是空闲的,因此,在框505,所有芯片带都处于空闲状态。在框510,在数据能够被写入设备之前,选择空闲芯片带,并设置为写入模式。例如,在框510,可以选择闪存芯片上的第一空闲芯片带,但是可以选择任何其它空闲芯片带。在框515,对于每个通道,从相应的空闲块队列中选择空闲块。在各示例性实施例中,选择每个通道的给定芯片带中的第一空闲块,但是,也可以选择给定芯片带和通道中的任何其它空闲块。在框520,对于每个通道,写队列头被设置到来自处于写入模式的芯片带的属于该通道的芯片中的第一空闲页面。在框525,方法500检查设备是否已经停止。倘若如此,则结束方法500。如果设备仍在运行,则在框530,根据写入分配调度器,在各通道间分配写入请求。在各示例性实施例中,可以实现循环调度器,该调度器在所有可用通道间均匀地分配写入工作负荷。根据期望的属性,在其它示例性实施例中,可以预见其它调度器。在框535,一旦写入了ー个页面,就递增写队列头,以便将它设置到块中的下ー个空闲页面。在框540,方法500检查芯片带是否已满。在芯片带已满的情况下,框545根据预先配置的值来确定是否有足够的空闲带可用。如果在框545有足够的剩余芯片带,那么,方法继续到框555。如果在框545没有足够的剩余芯片带,那么,在框550触发无用存储单元收集方法600 (參见图6),以便从先前已被写入的块中的失效页面回收空间,并且方法500在框555继续。请注意,在优选实施例中,无用存储单元收集方法600独立地并与方法500并行地运行。在框555,已知当前带已满并且它被设置为在线状态。然后,在框510中,方法500选择空闲的下一个较高的芯片带。在其它示例性实施例中,对下ー个写入芯片带的选择可以根据某一策略来执行。在芯片带还没有满的情况下,框560检查当前块是否已满。在块还没有满的情况下,方法500在框525继续。当块已满时,在框565,在没有足够的空闲块的情况下,在框570中,根据预定义的值触发无用存储单元收集,以及在框575,从与此通道相关联的空闲块队列中获取下ー个空闲块。在各示例性实施例中,能够通过以与芯片中的块的地址相同的顺序在空闲块队列中保持块(同时去除所有的坏块),来保持空闲块队列。在各示例性实施例中,可在最后ー个空闲芯片带被改变为写入状态时触发GC,或更早地基于可配置的阈值(即,基于空闲块的总数)、系统中应当可用的空闲芯片带的数量 来触发GC。在各示例性实施例中,阈值越大,储存备用的预留存储空间越高,因此,减小了可用于读取和写入的总容量。阈值可被设置为大于零,以更好地适应写入脉冲串。类似地,可在有足够的空闲页面可用时停止GC。在各示例性实施例中,可根据需要重新启动方法500。图6示出了示例性无用存储单元收集方法600的流程图。由方法500在框550和 570 (参见上面的图5)中触发方法600。它首先检查GC是否已经运行。在GC已经运行的情况下,已经运行的GC方法600释放足够的空间,以及没有必要开始方法600的另一个实例。在GC没有运行的情况下,无用存储单元收集在框610开始,以及在框615停止。在方法 700中描述了详细的GC方法(参见此处的图7)。在框620,在方法700结束之后,方法600 检查是否有足够的空闲块和芯片带可用。如果情况不是这样的,则方法600触发另一个GC 循环,方法600停止。图7详细示出了示例性无用存储单元收集方法700的流程图。在各示例性实施例中,GC方法700在启动时选择最旧的芯片带。在框705,方法700将所选芯片带设置为清理状态。然后,方法700对于所选芯片带中的所有页面执行一系列框。在框710,方法700读取页面元数据和LBA到PBA映射信息。在框715,方法700确定页面是否仍有效。如果页面元数据和LBA到PBA映射信息表示页面仍有效,那么页面被写入到新位置。如此,如果在框 715中页面仍有效,那么在框720,方法700读取完整的页面数据。在框725,方法700从写入分配调度器获取页面的目标位置。在各示例性实施例中,写入分配调度器可以分配同一个通道或另一个通道中的新位置。此外,如果通道控制器能够直接在通道中移动数据,那么优选通道控制器移动数据,因为它不消 耗其它总线的资源。在框730,方法700将页面写入到新位置。如果在框715中页面不再有效,则在方法700中,不采取动作,并且稍后自动回收无效页面所占用的空间,因为无效页面不被移动,并因而稍后被擦除。在框735,该方法确定是否有剩余的页面。如果在框735有剩余的页面,那么方法700在框710继续。如果在框735没有剩余的页面,那么在框740,方法700将芯片带设置为擦除状态。在框745,方法700擦除芯片带中的所有块。在各示例性实施例中,通道控制器能够并行地执行块的擦除操作。另外,每个通道控制器都能够在后台对芯片执行块擦除,使得当块正在被擦除的同时相应的通道不被阻止。在框750,方法700将芯片带的状态改变为空闲状态。在框755, 方法700确定下次将对哪个芯片带运行GC。在各示例性实施例中,根据给定通道上芯片的数量,芯片带可被拆分成子带。另夕卜,选择带的大小(即,同一个通道中属于同一个芯片带的芯片的数量)以影响通道带宽。当通道控制器支持对多个芯片的读取和写入操作的管线化时,特别期望带宽管理。因此,同一个通道上的多于一个的芯片可以与同一个写入带相关联。此外,对于每个芯片带状态,能够支持不同的带大小。在各示例性实施例中,能够使得用户读取请求免于由正在进行的对同一个芯片的擦除和写入操作引起的延迟。正在被写入到写入芯片带中的用户数据被保留在主控制器的写入高速缓存中,直到完整的芯片带已被写入。然后,从写入高速缓存服务对此新写入的数据的用户读取请求,因此,消除了由于在先写入导致的潜在延迟。然而,主控制器可能需要能够保持完整芯片带的巨大的写入高速缓存,以便执行这些操作。在各示例性实施例中,为了规避巨大的写入高速缓存,可以实现两个交替的写入带。当写入高速缓存转出数据 (de-stage)到闪存时,数据首先被写入到第一写入带,然后,此写入带被临时切换到在线状态,从这里,数据能够被存取。在专用映射块中保持LBA到PBA映射的更新。然后,相同数据被写入到第二写入帯,以及创建包含该变化的第二 LBA到PBA映射块。在写入完成之后,第二写入带被切換到在线状态(相应的LBA到PBA映射块被设置为活动)。第一芯片带被切换回写入状态,以及数据可被从写入高速缓存中转出等等。一旦写入芯片带已满,它们中的一个就被保持为在线状态,相应的LBA到PBA映射表也是如此。其它芯片带可被擦除并被设置为空闲状态或被用于冗余或并行读取(与RAID I同理)。这种类型的操作使闪存写入的总数翻倍。在ー些配置中,单个通道上可以只有几个芯片。保持用于GC的完整芯片带在不能被用来保持用户数据的预留存储容量方面变得昂贵。在这样的配置中,将多个通道分组为通道组并将芯片带拆分为子带是有益的。因此,一个子带只包括来自单个通道组的芯片。然后,可以对子带而不是对完整的芯片带应用此处所描述的相同算法。此方法降低了擦除速度,因为更少的芯片能够被并行地擦除。然而,如果写入工作负荷不高,则可以实现此方法。因而,能够根据观察到的写入工作负荷来动态地调整子带大小。在各示例性实施例中,如此处所描述的通道可以是物理通道,也可以是虚拟通道。若干物理通道可被分组到ー个虚拟通道中。因此,此处所描述的系统和方法适用于物理和虚拟通道两者。在各示例性实施例中,GC、空闲、在线、以及写入状态按顺序移动通过所有芯片带,这可被称为环形缓冲器。环形缓冲器体系结构具有在芯片粒度上均匀地分配块的磨损的优点,因此,由于不要求额外的磨损平衡方法而降低了方案的复杂性。在此处所描述的示例中,用于分配要被写入的页面的循环策略是能够在环形缓冲器中实现的解决方案。尽管如此,由于坏块,写队列头可能在不同通道之间变得不同歩。在这样的情况下,可在循环调度器中插入额外的循环,其中仅在最前面的写队列头的头后面的队列中分配页面。在各示例性实施例中,在可被分离成静态和动态数据的工作负荷的情况下,环形缓冲器体系结构可能导致数据在GC期间被不必要地来回移动。因而,可以实现的策略的另ー个示例是基于窗ロ的贪婪回收策略。可以通过动态地将芯片分组为芯片带以及根据由GC保持的信息来动态地修改芯片带的大小,来调适此处所描述的方法以适合这样的基于窗ロ的贪婪回收策略。技术效果包括通过分离读取、写入、以及擦除操作,来完全隐藏来自在先操作的附加延迟。此外,使得对ー个芯片的读取和写入操作免于由对同一个芯片的在先擦除操作引起的附加延迟。技术效果还包括确保读取和写入操作只对没有发生擦除而仍提供对存储的所有信息的存取的芯片执行。另外,还防止读取操作受到对同一个芯片的在先请求的擦除和写入延迟的不利影响。此处所使用的术语只是为了描述特定实施例,并不g在对本发明作出限制。如此处所使用的,単数形式“ー个”、“一”和“该”也包括复数形式,除非上下文明确地指出。还应当进ー步理解,本说明中所使用的术语“包括”和/或“包含”表示陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除ー个或多个其它特征、整数、步骤、操作、元件、组件或其组合的存在或添加。下面的权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作以及等效物g在包括用干与特别要求保护的其它要求保护的元件相结合地执行所述功能的任何结构、材料或动作。对本发明的描述是为了示出和描述的目的而呈现的,而不意欲是排外的或限于所公开的形式。本领域的技术人员将认识到,在不偏离本发明的范围和精神的情况下,可以进行各种修改和变化。所选择和所描述的实施例只是为了最好地说明本发明的原理和实际应用,并使本领域技术人员能够理解具有适合于预期的具体用途的各种修改的各实施例的发明。此处所描述的流程图只是ー个示例。在不偏离本发明的精神的情况下,对此处所描述的这些图或步骤(或操作)可以有许多更改。例如,可以以不同顺序执行各个步骤,也可以添加、删除或修改步骤。所有这些变化都被视为所要求保护的本发明的一部分。尽管已经描述了本发明的优选实施例,但是,可以理解,本领域的技术人员现在和将来都可以作出在随后的权利要求书的范围内的各种改进和增强。这些权利要求应该被 解释为维持对于首先描述的本发明的适当的保护。
权利要求
1.一种用于减少存储芯片中的存取争用的方法,所述方法包括 从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面; 将所述芯片带设置为写入状态; 设置所述多个通道中的每个通道中的写队列头; 对于所述芯片带中的所述多个通道中的每个通道, 将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面; 根据写入分配调度器,在所述通道间分配写入请求; 生成页面写入; 响应于所述页面写入,递增所述写队列头;以及 当所述芯片带已满时,将所述芯片带设置为在线状态。
2.如权利要求I所述的方法,进一步包括触发无用存储单元收集。
3.如权利要求I所述的方法,其中,所述多个存储块以与所述存储芯片上的所述多个存储块的相应地址相同的顺序,被保持在所述存储芯片上的空闲块队列中。
4.如权利要求2所述的方法,其中,响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带,触发无用存储单元收集。
5.如权利要求2所述的方法,其中,响应于达到所述存储芯片上的空闲状态芯片带的预定阈值,触发无用存储单元收集。
6.如权利要求2所述的方法,其中,响应于所述存储块变满,触发无用存储单元收集。
7.如权利要求2所述的方法,其中,无用存储单元收集包括 将所述芯片带设置为清理状态; 对于所述多个页面中的每个页面 读取页面元数据和LBA到PBA映射信息; 响应于所述页面有效, 读取完整的页面数据; 获取所述页面的目标位置; 将页面数据写入到新位置; 将所述芯片带设置为擦除状态; 擦除所述芯片带中的所有块; 将所述芯片带设置为空闲状态。
8.一种用于减少存储芯片中的存取争用的计算机程序产品,所述计算机程序产品包括用于使计算机实现一种方法的指令,所述方法包括 从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,所述芯片带包括多个页面; 将所述芯片带设置为写入状态; 设置所述多个通道中的每个通道中的写队列头; 对于所述芯片带中的所述多个通道中的每个通道, 将写队列头设置到来自所述芯片带的属于该通道的芯片中的第一空闲页面; 根据写入分配调度器,在所述通道间分配写入请求;生成页面写入; 响应于所述页面写入,递增所述写队列头;以及 当所述芯片带已满时,将它设置为在线状态。
9.如权利要求8所述的计算机程序产品,其中,递增所述写队列头包括将所述写队列头设置到来自所述多个存储块的存储块中的下一个空闲页面。
10.如权利要求8所述的计算机程序产品,其中,所述方法进一步包括触发无用存储单元收集。
11.如权利要求8所述的计算机程序产品,其中,所述多个存储块以与所述存储芯片上的所述多个存储块的相应地址相同的顺序,被保持在所述存储器芯片上的空闲块队列中。
12.如权利要求10所述的计算机程序产品,其中,响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带,触发无用存储单元收集。
13.如权利要求10所述的计算机程序产品,其中,响应于达到所述存储器设备上的空闲状态芯片带的预定阈值,触发无用存储单元收集。
14.如权利要求10所述的计算机程序产品,其中,响应于所述存储块变满,触发无用存储单元收集。
15.如权利要求10所述的计算机程序产品,其中,无用存储单元收集包括 将所述芯片带设置为清理状态; 对于所述多个页面中的每个页面 读取页面元数据和LBA到PBA映射信息; 响应于所述页面有效, 读取完整的页面数据; 获取所述页面的目标位置; 将页面数据写入到新位置; 将所述芯片带设置为擦除状态; 擦除所述芯片带中的所有块; 将所述芯片带设置为空闲状态。
16.—种存储系统,包括 具有写入分配调度器的多个通道;以及 可通信地耦接到所述多个通道中的每个通道的至少一个芯片带,所述至少一个芯片带具有空闲状态、与入状态、在线状态和擦除状态, 其中,所述至少一个芯片带被配置成被从所述空闲状态设置为所述写入状态以分配写入请求,并进一步被配置成当所述芯片带已满时被从所述写入状态设置为所述在线状态。
17.如权利要求16所述的存储系统,进一步包括位于所述多个通道中的每个通道上的写队列头, 其中,对于所述芯片带中的多个通道中的每个通道,所述系统被配置成 将所述写队列头设置到来自所述芯片带的属于相应通道的芯片中的第一空闲页面; 根据所述写入分配调度器,在所述多个通道间分配写入请求; 生成页面写入;以及 响应于所述页面写入,递增所述写队列头;以及当所述芯片带已满时,将它设置为在线状态。
18.如权利要求17所述的存储系统,其中,所述系统进一步被配置成响应于所述芯片带是被改变为所述写入状态的最后一个空闲芯片带以及达到所述系统中的空闲状态芯片带的预定阈值这两项中的至少一项,触发无用存储单元收集。
19.如权利要求18所述的存储系统,其中,当存储块已满并且达到所述存储系统上的空闲块的预定阈值时,触发无用存储单元收集。
20.如权利要求18所述的存储系统,其中,无用存储单元收集包括 将所述芯片带设置为清理状态; 对于所述多个页面中的每个页面 读取页面元数据和LBA到PBA映射信息; 响应于所述页面有效, 读取完整的页面数据; 获取所述页面的目标位置; 将页面数据写入到新位置; 将所述芯片带设置为所述擦除状态; 擦除所述芯片带中的所有块; 将所述芯片带设置为所述空闲状态。
全文摘要
示例性实施例包括一种用于减少基于闪存的存储系统中的存取争用的方法,该方法包括从具有多个通道和多个存储块的存储设备中选择空闲状态的芯片带,其中,该芯片带包括多个页面;将芯片带设置为写入状态;设置多个通道中的每个通道中的写队列头;对于闪存带中的多个通道的每个通道,将写队列头设置到来自芯片带的属于该通道的芯片中的第一空闲页面;根据写入分配调度器,在通道间分配写入请求;生成页面写入,以及响应于页面写入,递增写队列头;以及当芯片带已满时,将芯片带设置为在线状态。
文档编号G06F12/02GK102713866SQ201080057092
公开日2012年10月3日 申请日期2010年12月14日 优先权日2009年12月15日
发明者E·S·埃列夫特里奥, P·米勒, R·A·普莱卡, R·哈斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1